摘要
本课讲授如何把一份完成的文档送到它的目的地:期刊、知识库或档案库。它说明期刊为什么分发自己的文档类,其中哪些已随 TeX Live 提供,以及如何让自己的源文件适应这些文档类:保留内容和有意义的命令,放弃自己的版式设计;它展示这种适配在日志中暴露出的、与引擎和参考文献系统之间的冲突;给出准备投稿的检查清单;说明 arXiv 如何自行编译源文件、提供哪些引擎、文档用 LuaLaTeX 排版时该怎么办、什么时候只需 .bib、什么时候要上传 .bbl;介绍用于长期保存的 PDF/A,包括 \DocumentMetadata 接口和 pdfx 宏包;说明带标签的 PDF 和图片替代文本的现状;最后介绍用于共享文档及其源文件的知识共享(Creative Commons)许可协议。
学习目标
- 说明期刊的文档类决定什么,并让自己的源文件适应它,区分哪些保留、哪些放弃、哪些必须修改。
- 在日志中解读模板与自己的源文件之间、与引擎或与参考文献系统之间的冲突。
- 准备一个能独立编译的投稿文件夹,不含多余文件,参考文献的形式符合目的地的要求。
- 根据 arXiv 文档对引擎和参考文献的说明,决定如何把用 LuaLaTeX 排版的文档提交到 arXiv。
- 用
\DocumentMetadata或 pdfx 生成 PDF/A,并修正前者产生的版本警告。 - 启用 PDF 标签,为图片提供替代文本,设定文档的语言和元数据,同时清楚标签功能仍在开发之中。
期刊的文档类
在关于文档类与页面的一课中我们看到,文档类决定文档的整体形式:版心、标题、标题页、摘要。期刊希望它的所有文章具有同一种形式,而且这种形式不取决于每位作者的喜好。由此产生了用 LaTeX 写作的学科中最普遍的做法:期刊或出版社分发自己的文档类,作者只提交内容。期刊得到统一的版式,编辑工作也更少;作者则不必手工模仿别人的设计。
已经安装的文档类
这些文档类有很多随 TeX Live 提供。要知道某个文档类是否已经安装,只需用 kpsewhich 查询它的文件在哪里,这是发行版查找自身文件的命令:如果它回答一个路径,文档类就在;如果什么也不回答,就是缺少,可以按照工作环境一课所讲的方法安装。
$ kpsewhich elsarticle.cls # Elsevier 出版社的期刊$ kpsewhich revtex4-2.cls # American Physical Society 的期刊$ kpsewhich IEEEtran.cls # Institute of Electrical and Electronics Engineers 的出版物$ kpsewhich amsart.cls # American Mathematical Society 的论文$ kpsewhich llncs.cls # Springer 的 Lecture Notes in Computer Science在完整安装的 TeX Live 2025 中,这五个都会回答一个路径,而且都能用 LuaLaTeX 编译一个带 fontspec 和 babel 的最小文档。日志在以“Document Class”开头的那一行说明加载的是哪个版本,例如“elsarticle 2026/01/09, 3.5”或“amsart 2020/05/29 v2.20.6”。值得看一看,因为期刊可能要求比发行版更新的版本,这时就使用期刊在作者须知页面上提供的版本。
文档类能编译,并不意味着它在任何引擎下都表现一样。其中许多是为 pdfLaTeX 编写的,用该引擎的编码来选择字体。以 IEEEtran 为例,最小文档可以用 LuaLaTeX 和 fontspec 编译,但日志警告说,文档类要求的字体在 fontspec 的编码中不存在,并用 Latin Modern 代替:文章不再是期刊期望的样子。
LaTeX Font Warning: Font shape `TU/ptm/m/n' undefined(Font) using `TU/lmr/m/n' instead on input line 503.由此得出的规则很简单:在做任何适配之前,先阅读期刊的作者须知,它会说明使用哪个文档类、用哪个引擎编译、采用哪种参考文献系统。如果期刊用 pdfLaTeX 编译,源文件就必须能用 pdfLaTeX 编译。
让源文件适应模板
让一篇文章适应期刊的文档类,首先是删除。如果文章是按本课程所教的方式写的,即把含义与外观分开,那么这项工作几乎是机械的,可以归结为三个决定。
- 保留内容:章节、正文、公式、带题注的图、标签和交叉引用。
- 放弃自己的设计:文档类及其选项、geometry 的页边距、页眉、正文字体、用粗体伪造的标题以及手工加入的间距。这些现在都由期刊决定。
- 保留有意义的命令:即在有意义的格式和宏与自己的导言区两课中定义的命令,例如
\obra或\gainian。它们命名的是功能而不是外观,因此在任何文档类下都仍然有效;如果期刊想要别的形式,只需修改它们的定义。
下面是一篇按自己的形式写成的短文,使用 KOMA-Script、手工设定的页边距、伪造的标题和摘要,以及 biblatex 处理的参考文献。
\documentclass[11pt]{scrartcl}\usepackage[match]{luatexja-fontspec}\setmainjfont{Noto Serif CJK SC}\setsansjfont{Noto Sans CJK SC} % KOMA-Script 的无衬线标题\usepackage[margin=2.5cm]{geometry}\usepackage{csquotes}\usepackage[style=authoryear]{biblatex}\addbibresource{fuentes.bib}\newcommand{\obra}[1]{\emph{#1}}\begin{document}\begin{center}\Large\textbf{作为方法的慢读}\end{center}\vspace{1em}\noindent\textbf{摘要。}本文考察作为一种方法的慢读。\section{问题的提出}这一方法可以追溯到语文学传统\parencite{eco1977},\obra{Come si fa una tesi di laurea}一书也推荐它。\printbibliography[title={参考文献}]\end{document}在这个例子中,期刊要求使用 elsarticle 文档类及出版社的“作者–年份”样式。期刊的须知还说了一件自己的源文件无法预见的事:参考文献用 BibTeX 和 natbib 宏包处理,natbib 由文档类自行加载,而不是用 biblatex。如果在导言区留下 \usepackage{biblatex},编译就会停止,因为这两个宏包不能共存。
! Package biblatex Error: Incompatible package 'natbib'.文献数据库则不变:文献数据库一单元中的同一个 .bib 文件,既可供 BibTeX 使用,也可供 biber 使用。
@book{eco1977, author = {Eco, Umberto}, title = {Come si fa una tesi di laurea}, publisher = {Bompiani}, address = {Milano}, year = {1977}}\documentclass[preprint,12pt,authoryear]{elsarticle}\usepackage{luatexja-fontspec}\setmainjfont{Noto Serif CJK SC}\usepackage{babel}\babelprovide[import,main]{chinese}\babeladjust{linebreak.cjk=off}\newcommand{\obra}[1]{\emph{#1}} % 保留:它命名的是功能\journal{阅读研究学报}\begin{document}\begin{frontmatter}\title{作为方法的慢读}\author{李明}\affiliation{organization={中文系}, city={南京}, country={中国}}\begin{abstract}本文考察作为一种方法的慢读。\end{abstract}\begin{keyword}阅读 \sep 方法 \sep 研究\end{keyword}\end{frontmatter}\section{问题的提出}这一方法可以追溯到语文学传统\citep{eco1977},\obra{Come si fa una tesi di laurea}一书也推荐它。\bibliographystyle{elsarticle-harv}\bibliography{fuentes}\end{document}geometry、伪造的标题、手工间距和那行粗体都不见了:标题、作者、单位、摘要和关键词都用文档类的命令声明,由文档类按自己的方式排版。引用命令改了名字,从 \parencite 变成 \citep,这是 natbib 中把引用放在括号里的命令;文献列表用 \bibliographystyle 和 \bibliography 生成。\obra 没有变。还要注意,即使文档是中文的,文档类也用英文写出“Abstract”和“Keywords”:这些标签由期刊决定,而不是由文档的语言决定。文献列表的标题“参考文献”则来自 babel:luatexja 不翻译这些自动生成的名称,所以导言区用 \babelprovide[import,main]{chinese} 加载了中文的 babel。
如果期刊的模板不加载 natbib,biblatex 就可以保留;唯一的办法是阅读期刊的须知,然后阅读日志。
学位论文模板
许多大学为学位论文提供模板,规定封面、装订所需的页边距、前置部分的顺序,有时还规定引用格式。它的逻辑与期刊相同,另有两点需要特别注意。第一,应从大学的官方来源(图书馆或研究生院)获取模板,并确认是现行版本,因为流传着许多旧副本。第二,应在开始时而不是结束时检查它用哪个引擎编译、假定哪种参考文献系统。按照长文档一课所讲的方式组织的论文,有一个主文件,每章一个文件,换模板时只需更换主文件。
正在加载内容…
已完成
登录账户以保存您的进度