引用与参考文献#
给演示一份参考文献,在正文提到文献的地方引用它,FrameSeq 就会给引用编号、在每一页底部列出这一页引用的条目,并生成参考文献表。
import bibliography from "./references.bib";
presentation({ title: "Diffusion Language Models", bibliography });
slide("Background");
text(`Attention replaced recurrence ${cite("vaswani2017")}.`);
slide("References");
references();
参考文献#
导入一个 BibTeX 文件,就是 Zotero、Mendeley 或 JabRef 这类文献管理软件导出的那种:
import bibliography from "./references.bib";
FrameSeq 在构建时读取这些条目:@string 缩写、花括号和引号里的值,以及 {\"o} 这样的 LaTeX 重音符号,都会变成纯文本。保存文件的修改后,预览会随之更新。
导入的名字请用 bibliography,不要用 references:那会遮住 references() 命令。
没有 BibTeX 文件的演示,也可以按键名把条目直接写出来:
presentation({
title: "Literate slides",
bibliography: {
knuth1984: "Knuth, D. E. (1984). Literate programming. The Computer Journal, 27(2).",
vaswani2017: {
author: "Vaswani, Ashish and Shazeer, Noam",
title: "Attention Is All You Need",
booktitle: "NeurIPS",
year: "2017",
},
},
});
字符串会原样作为参考文献使用。对象使用 BibTeX 的字段名,格式和 .bib 条目一样。
引用#
cite(...keys) 返回要写进正文的引用标记:
text(`Attention replaced recurrence ${cite("vaswani2017")}.`);
bullets(`Earlier work ${cite("bahdanau2015", "graves2013")}`, "Our approach");
条目按第一次被引用的顺序编号,贯穿整场演示:[1],然后是 [2, 3],再次引用的条目保持原来的编号。因为标记就是普通文字,凡是能放文字的地方都能用:text()、bullets()、card()、表格单元格和图形标签。要把它放进句子中间,请用反引号写模板字符串。
参考文献里没有的键名会让文档报错停下,错误指出所在的行,如果有相近的键名,还会给出建议。
每一页的底部#
每一页都在内容下方,按引用的顺序列出这一页引用的条目:
[1] Vaswani, A., Shazeer, N., Parmar, N., & Uszkoreit, J. (2017). Attention Is All You Need. In NeurIPS.
这份列表和其他对象一样占用页面空间,所以上面的内容会收缩,而不会滑到它下面去,布局检查也能同时看到两者。如果引用时不想要每页的列表:
presentation({ bibliography, citations: { footnotes: false } });
脚注#
footnote(text) 在页面底部加一条注释,并返回它的标记,一个上标数字:
text(`Measured on one GPU${footnote("An NVIDIA A100 with batch size 32.")}.`);
脚注在每一页都从 ¹ 开始编号,和这一页引用的条目共用页面底部。
参考文献表#
references() 加入所有被引用过的条目,编号和 cite() 给的一致:
slide("References");
references();
它在整个文档运行完之后才填充,所以在它之后才出现的引用也会被列进去。references({ all: true }) 还会在被引用的条目之后,加上参考文献里有、但这场讲演没有引用过的条目。列表太长时,可以用 .fit() 缩到一页之内:
references().fit();
作者与年份#
想把引用写成作者和年份而不是数字:
presentation({ bibliography, citations: { style: "author-year" } });
text(`Attention replaced recurrence ${cite("vaswani2017")}.`);
// Attention replaced recurrence (Vaswani et al., 2017).
这时参考文献表按字母顺序排列。以纯字符串给出的条目没有作者可显示,所以仍然使用编号。
导出#
引用标记、脚注和参考文献表都是文字,所以 PDF、PowerPoint 和 Typst 都会照浏览器里的样子带上它们,PowerPoint 里它们仍可编辑。