spb/autoscholar
Public
1export interface CitationInput {2 publicId: string;3 title: string;4 year: number;5 month: number;6 versionNo: number;7 url: string;8 keywords: string[];9 abstract?: string;10}1112const MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];1314export function bibtexFor(c: CitationInput): string {15 const key = `autoscholar_${c.publicId.replace(/[^A-Za-z0-9]/g, "_").toLowerCase()}`;16 return [17 `@techreport{${key},`,18 ` title = {${c.title.replace(/[{}]/g, "")}},`,19 ` author = {{AutoScholar}},`,20 ` institution = {AutoScholar.ai},`,21 ` type = {AutoScholar Working Paper},`,22 ` number = {${c.publicId}},`,23 ` year = {${c.year}},`,24 ` month = ${MONTHS[c.month - 1] ?? "jan"},`,25 ` note = {Version ${c.versionNo}. AI-generated working paper; not formally peer reviewed. Research computed on MacLustr.},`,26 ` url = {${c.url}}`,27 "}",28 "",29 ].join("\n");30}3132export function risFor(c: CitationInput): string {33 const lines = [34 "TY - RPRT",35 `TI - ${c.title}`,36 "AU - AutoScholar",37 `PY - ${c.year}`,38 `DA - ${c.year}/${String(c.month).padStart(2, "0")}//`,39 "PB - AutoScholar.ai",40 `SN - ${c.publicId}`,41 `UR - ${c.url}`,42 `N1 - AutoScholar Working Paper ${c.publicId}, version ${c.versionNo}. AI-generated working paper; not formally peer reviewed.`,43 ];44 for (const k of c.keywords) lines.push(`KW - ${k}`);45 if (c.abstract) lines.push(`AB - ${c.abstract.replace(/\s+/g, " ")}`);46 lines.push("ER - ", "");47 return lines.join("\n");48}4950export function plainCitationFor(c: CitationInput): string {51 return `AutoScholar (${c.year}). ${c.title}. AutoScholar Working Paper ${c.publicId}, version ${c.versionNo}. ${c.url}`;52}53