export interface CitationInput { publicId: string; title: string; year: number; month: number; versionNo: number; url: string; keywords: string[]; abstract?: string; } const MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; export function bibtexFor(c: CitationInput): string { const key = `autoscholar_${c.publicId.replace(/[^A-Za-z0-9]/g, "_").toLowerCase()}`; return [ `@techreport{${key},`, ` title = {${c.title.replace(/[{}]/g, "")}},`, ` author = {{AutoScholar}},`, ` institution = {AutoScholar.ai},`, ` type = {AutoScholar Working Paper},`, ` number = {${c.publicId}},`, ` year = {${c.year}},`, ` month = ${MONTHS[c.month - 1] ?? "jan"},`, ` note = {Version ${c.versionNo}. AI-generated working paper; not formally peer reviewed. Research computed on MacLustr.},`, ` url = {${c.url}}`, "}", "", ].join("\n"); } export function risFor(c: CitationInput): string { const lines = [ "TY - RPRT", `TI - ${c.title}`, "AU - AutoScholar", `PY - ${c.year}`, `DA - ${c.year}/${String(c.month).padStart(2, "0")}//`, "PB - AutoScholar.ai", `SN - ${c.publicId}`, `UR - ${c.url}`, `N1 - AutoScholar Working Paper ${c.publicId}, version ${c.versionNo}. AI-generated working paper; not formally peer reviewed.`, ]; for (const k of c.keywords) lines.push(`KW - ${k}`); if (c.abstract) lines.push(`AB - ${c.abstract.replace(/\s+/g, " ")}`); lines.push("ER - ", ""); return lines.join("\n"); } export function plainCitationFor(c: CitationInput): string { return `AutoScholar (${c.year}). ${c.title}. AutoScholar Working Paper ${c.publicId}, version ${c.versionNo}. ${c.url}`; }