投稿时被要求使用的学术类——amsart、IEEEtran、elsarticle、revtex4-2、acmart——大概是 LaTeX 文档类里最容易被误解的一种。打开 TeX Live 2024 附带的 acmart.cls,中间有这样一行:\LoadClass[\ACM@fontsize, reqno]{amsart}。也就是说,计算机科学界 ACM 发布的投稿类,其实建立在美国数学会的类之上。投稿类不是「发给你的样式表」,而是把投稿规定写成了可执行的代码;而且它还会在你看不见的地方加载别的类和宏包。本页要讲的是:投稿类到底固定了什么、为什么跟它对着干只会浪费时间,以及那些被悄悄加载的宏包会在哪里咬人。
投稿类到底固定了什么
被固定的有六样:栏数、版面、字体、标题体裁、题名区结构、参考文献格式。留给作者的只有内容和它的逻辑结构。所以投稿目标发放的是一整套——.cls、配套的 .bst(BibTeX 样式)以及可填写的模板——而不是一份规则清单。稿件里只写含义,\section{...} 和 \cite{...},把外观上的一切判断交给类去做。结构与外观分离这条原则本身由「文档类与导言区」那一页负责,这里不再重复。投稿类新增的一点是:这种分离是被别人的规定强制的,而不是出于你的口味。
由此得出最实用的一条建议:不要跟类对着干。 页数上限是按该类的版面来计的,因此靠删 \vspace 或用 geometry 压边距抢来的页面,一到制作阶段重新排版就消失了。把双栏改成单栏、或替换字体的稿件,可能在送审前的格式检查环节就被退回。反过来,只要放手让类去做,同一份正文就能原封不动地换到另一个学会的类上。投稿类还给作者的是「不必操心版面的时间」,而不是「改动版面的自由」。
获取方面还有一个实际问题:这些类通常 不在最小 TeX 环境里。完整安装的 TeX Live 或 MiKTeX 会带上 amsart、IEEEtran、acmart、elsarticle、revtex,但最小环境需要逐个安装(tlmgr install ieeetran),或者从出版社的下载包里取出 .cls 放到稿件旁边——llncs 尤其常见本地放置。此外,务必从投稿目标的 author kit / author center 重新取回最新模板。沿用本地旧副本、在截止前一晚发现版面已经变样,这样的事故每年都在某处发生。
amsart — 美国数学会的类与定理环境
amsart 是美国数学会(AMS)的论文类,不仅是数学类投稿中使用最广的一种,还 被别的类当作地基——开头已经看到 acmart 会加载它。类本身会准备好 amsmath 和 amsfonts,所以数学相关的 \usepackage 大多可以省掉。题名区除 \title、\author 外,还用 \address{...}(通信地址)、\email{...}、\thanks{...}、\subjclass[2020]{...}(AMS 数学主题分类)和 \keywords{...};定理环境则由 \newtheorem 与 amsthm 的 \theoremstyle 搭建。
在 amsart 上第一次绊倒,通常是 摘要的位置。按 article 的习惯把 abstract 环境写在 \maketitle 之后,日志里就会出现:Class amsart Warning: Abstract should precede \maketitle in AMS document classes。由于文档照样能编译通过,很容易被忽略,结果得到一份摘要掉在题名区之外的 PDF。正确做法是把 abstract 放在 \maketitle 之前。这一作法被建立在 amsart 之上的 acmart 继承了下来,只不过在那里不是警告而是直接报错。
\documentclass[reqno]{amsart}
\newtheorem{theorem}{Theorem}[section]
\begin{document}
\title{On a Class of Analytical Engines}
\author{Ada Lovelace}
\address{Analytical Engine Lab, London, UK}
\email{[email protected]}
\subjclass[2020]{Primary 68N01; Secondary 01A55}
\keywords{analytical engine, program}
% the abstract must come BEFORE \maketitle in AMS classes
\begin{abstract}
This is the abstract.
\end{abstract}
\maketitle
\section{Introduction}
\begin{theorem}
Every engine has a program.
\end{theorem}
\end{document}IEEEtran — IEEE 期刊与会议
IEEEtran 的特点是 同一个类会因选项而变成完全不同的体裁。\documentclass[journal]{IEEEtran} 给出期刊双栏;\documentclass[conference]{IEEEtran} 给出会议论文集;此外还有短文用的 technote 和审稿用的 peerreview / peerreviewca。加上 compsoc(Computer Society)、comsoc(Communications Society)或 transmag,就切换到相应分会的体裁,并可与字号并写,如 \documentclass[10pt,journal,compsoc]{IEEEtran}。纸张默认为 letterpaper,另可选 a4paper 和 cspaper。
固有作法方面:摘要写在 abstract 环境里,关键词放进专用的 IEEEkeywords 环境,它在期刊模式下自动排成 “Index Terms”,在会议模式下排成 “Keywords”。作者与所属由 \IEEEauthorblockN{...} 和 \IEEEauthorblockA{...} 组合而成,参考文献标准使用 BibTeX 样式 IEEEtran.bst。还有一个不显眼却很关键的性质:IEEEtran.cls 默认几乎不加载外部宏包——在 TeX Live 2024 附带的版本里,出现 \RequirePackage 的地方只有面向 Computer / Communications Society 的数学字体探测。因此你自己加 hyperref 或 geometry 通常也不会冲突,这与下面的 acmart 正好相反。模板从 IEEE 的 Template Selector 重新取回最稳妥。
\documentclass[conference]{IEEEtran}
\begin{document}
\title{A Conference Paper}
\author{\IEEEauthorblockN{Ada Lovelace}
\IEEEauthorblockA{Analytical Engine Lab\\ London, UK}}
\maketitle
\begin{abstract}
This is the abstract.
\end{abstract}
\begin{IEEEkeywords}
broadband networks, quality of service
\end{IEEEkeywords}
\section{Introduction}
The conference option sets the proceedings layout.
\end{document}acmart — ACM 期刊与会议论文集
acmart 是 ACM 发布的统一类,取代了过去按会议和期刊分散的一组旧类。体裁通过 format= 选项 选择,而 format= 这部分本身可以省略。审稿投稿的默认值是单栏的 manuscript;多数期刊用 acmsmall;以书籍形式出版的会议论文集用 sigconf;SIGPLAN 系列用 sigplan。判别的经验规则是:以 acm 开头的格式面向期刊与 Transactions,以 sig 开头的格式面向会议论文集。 因此写作 \documentclass[sigconf]{acmart} 或 \documentclass[manuscript,review,anonymous]{acmart}。另外,SIGCHI 的 sigchi 和 SIGGRAPH 的 siggraph 都已废止:一旦指定,类会给出 Class acmart Warning: The format sigchi is now obsolete. I am switching to sigconf. 并自行切换过去。sigchi-a 仅为旧文档保留了选项,类自己也会警告 ACM 不会接受这种体裁的稿件。
acmart 的固有作法集中在 它索取的元数据量 上。期刊要用短名指定刊名,如 \acmJournal{TOMS};正式论文还要用 \begin{CCSXML}...\end{CCSXML} 和 \ccsdesc{...} 声明 CCS(ACM Computing Classification System)概念,并附 \keywords{...}。所属要拆成要素来写:\affiliation{\institution{...}\city{...}\country{...}}。参考文献使用基于 natbib 的 ACM-Reference-Format。而从 amsart 继承来的摘要作法在这里是强制的——把 abstract 放在 \maketitle 之后,编译会以 ! Class acmart Error: Abstract must be defined before maketitle command. Please move it! 中止。与只给警告的 amsart 不同,这里直接拒绝构建。
\documentclass[sigconf]{acmart}
\begin{document}
\title{A Proceedings Paper}
\author{Ada Lovelace}
\affiliation{\institution{Analytical Engine Lab}\city{London}\country{UK}}
% abstract before \maketitle, or acmart raises an error
\begin{abstract}
This is the abstract.
\end{abstract}
\ccsdesc[500]{Networks~Network reliability}
\keywords{broadband networks, quality of service}
\maketitle
\section{Introduction}
The sigconf format sets the ACM proceedings layout.
\end{document}llncs — Springer 的 LNCS
llncs 是 Springer 会议论文集系列 Lecture Notes in Computer Science(LNCS) 及姊妹系列 LNAI、LNBI 所用的类,直接按类名指定:\documentclass{llncs}。包括 ECCV、MICCAI 在内,众多通过 Springer 出版会议论文集的国际会议都采用这一体裁;版式是扩展自 article 的单栏。它的固有作法集中在作者与所属的写法上,类为此新增了标准 LaTeX 没有的 \institute 命令。用 \inst{n} 给每位作者加所属编号,如 \author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}},再用 \institute{first affiliation \and second affiliation} 列出所属,编号会自动生成。邮件地址写在 \institute 内部,形式为 \email{...}。参考文献样式为 splncs04(\bibliographystyle{splncs04})。runningheads 选项面向卷编辑,单篇投稿通常不需要。
\documentclass{llncs}
\begin{document}
\title{An LNCS Contribution}
\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}}
\institute{Paris-Dauphine University, Paris, France\\
\email{[email protected]}
\and Sorbonne University, Paris, France\\
\email{[email protected]}}
\maketitle
\begin{abstract}
The abstract follows the title block.
\end{abstract}
\section{Introduction}
Bibliography style: splncs04.
\end{document}elsarticle — Elsevier 期刊
elsarticle 是投往 Elsevier 各期刊的稿件所用的类,写作 \documentclass[preprint,12pt]{elsarticle}。默认选项为 a4paper,10pt,oneside,onecolumn,preprint,其中 preprint 给出投稿用的宽松单栏版式。1p、3p、5p 对应刊出时的版面(单栏、双栏、摘要通栏的双栏),最终刊面由出版社排。此外还有为审稿加大行距的 review、更接近印刷版的 final,以及用于匿名投稿的 doubleblind。它的固有作法是 frontmatter 环境:\title{...}、\author{...}、\affiliation{...}(旧写法 \address{...} 仍可用)、abstract 环境、keyword 环境全部放在其中,正文从 \end{frontmatter} 之后开始。作者与所属通过标签对应,写成 \author[a]{...} 与 \affiliation[a]{organization={...}, city={...}, country={...}}。
这里埋着整页最常被踩到的雷。elsarticle.cls 在接近末尾处执行了 \RequirePackage[\@biboptions]{natbib},也就是说 类已经替你加载了 natbib,默认引用形式是 numbers。若不知情而在导言区写 \usepackage[authoryear]{natbib},编译就会以 ! LaTeX Error: Option clash for package natbib. 中止。更容易迷惑的是:若恰好传入同样的 numbers,反而能通过,于是故障看起来时有时无。正确的做法有三种——用类选项指定,\documentclass[preprint,authoryear]{elsarticle};使用类自带的 \biboptions{...};或者用 nonatbib 选项彻底抑制加载。参考文献样式则从 elsarticle-num、elsarticle-num-names、elsarticle-harv 中选择。natbib 一侧的引用命令由 natbib 那一页负责。
% author-year is a CLASS option here -- do not reload natbib yourself
\documentclass[preprint,authoryear,12pt]{elsarticle}
\begin{document}
\begin{frontmatter}
\title{An Elsevier Manuscript}
\author[a]{Ada Lovelace}
\affiliation[a]{organization={Analytical Engine Lab},
city={London}, country={UK}}
\begin{abstract}
The abstract lives inside the front matter.
\end{abstract}
\begin{keyword}
broadband networks \sep quality of service
\end{keyword}
\end{frontmatter}
\section{Introduction}
Text begins after the front matter.
\bibliographystyle{elsarticle-harv}
\end{document}REVTeX — 物理领域(APS / AIP)
revtex4-2 是美国物理学会(APS)与美国物理联合会(AIP)期刊所用的类,版本号就写在类名里。指定时把三类选项组合起来——学会(aps / aip)、刊名(prl、prb、prx、prfluids 等)与版式(preprint / reprint / twocolumn)——例如 \documentclass[prl,aps,reprint]{revtex4-2}。所属的写法比较特别:把 \affiliation{...} 直接放在每个 \author{...} 之后,它就属于该作者;连续共享同一所属的作者会被自动合并。若想改用上标编号,使用类选项 superscriptaddress。参考文献样式为 apsrev4-2。
REVTeX 内部同样抱着 natbib,但传入的选项与 elsarticle 不同。revtex4-2.cls 执行的是 \RequirePackage[sort&compress]{natbib},也就是说 引用编号会自动升序排列,连续编号还会压缩成区间。因此即便写成 \cite{c,a,b},输出也会是 [1–3] 这样的形式。这是为配合物理领域惯例而设的默认行为,与你写键的顺序无关。同样地,不要再自己补上 \usepackage{natbib},交给类去做。
\documentclass[prl,aps,reprint]{revtex4-2}
\begin{document}
\title{A Physical Review Letter}
\author{Ada Lovelace}
\affiliation{Analytical Engine Lab, London, UK}
\author{Charles Babbage}
\affiliation{Analytical Engine Lab, London, UK}
% in REVTeX the abstract comes before the title block is typeset
\begin{abstract}
This is the abstract.
\end{abstract}
\maketitle
\section{Introduction}
% natbib is loaded by the class with sort&compress
Text.
\bibliographystyle{apsrev4-2}
\end{document}类已经悄悄加载的宏包与 Option clash
投稿类特有的错误大多只有一个来源:作者又一次带着选项加载了类已经加载过的宏包。 典型例子是 acmart:TeX Live 2024 附带的版本会自行加载 geometry、hyperref、fancyhdr、natbib、microtype、booktabs、caption、setspace、xcolor、graphicx 等。因此在 \documentclass[sigconf]{acmart} 之后写 \usepackage[margin=1in]{geometry},编译就会以 ! LaTeX Error: Option clash for package geometry. 中止。elsarticle 同样加载 graphicx,并在刊面版式选项下加载 geometry。「一改边距就报错」这种症状,几乎都是这个原因。
按顺序尝试三种应对。第一,先怀疑 这个选项能不能改由类选项传入——elsarticle 的 authoryear 正是此例。第二,若确实需要抢先一步,就在 \documentclass 之前 写 \PassOptionsToPackage{...}{geometry},类加载该宏包时这些选项就会合并进去。第三,改边距或改栏数本身往往就违反投稿规定,所以要先考虑 干脆不做 才是正解。想知道到底加载了哪些宏包,最快的办法是在导言区开头放 \listfiles,然后看日志末尾。
| 类 | 投稿目标 / 领域 | 要记住的一点 |
|---|---|---|
amsart | 美国数学会(数学) | abstract 要在 \maketitle 之前;也是 acmart 的地基 |
IEEEtran | IEEE 期刊与国际会议(电气、信息) | 用选项切换模式(journal、conference、technote);几乎不加载外部宏包 |
acmart | ACM 期刊与会议论文集(计算机科学) | 用 format= 选体裁;必须写 CCS 概念;内部加载大量宏包 |
llncs | Springer LNCS / LNAI / LNBI 会议论文集 | 用 \institute 与 \inst{n} 写所属;参考文献用 splncs04 |
elsarticle | Elsevier 期刊(各领域) | 前置部分放在 frontmatter 环境;类会加载 natbib,故用 \biboptions |
revtex4-2 | APS / AIP 期刊(物理) | \affiliation 紧跟在 \author 之后;natbib 以 sort&compress 加载 |
以上只是代表性的例子。Springer 还有较新的统一类 sn-jnl;数学领域有 amsart 的书籍版 amsbook 以及各出版社自有的类;生物医学领域则各家出版社自备模板。不论哪个领域,刚才看到的三条原则都同样适用:不改体裁、重新取回模板、不要重复加载类已经加载过的宏包。
投稿前要确认的六件事
投稿类上的失败,与其说源自 LaTeX 语法错误,不如说源自 一点一点偏离模板。为了不在截止前夜手忙脚乱,请机械地过一遍下面六点。
- 重读第一行。
\documentclass[...]的选项是否完全符合投稿规定?审稿版(review、preprint、manuscript、anonymous)与终稿(reprint、sigconf等)通常并不相同。 - 把题名区恢复成模板的样子。 各个类写
\author、所属、摘要、关键词的方式都不同。若你用自定义宏重新包过,请改回来;否则出版社检查和 XML 转换可能提取不到元数据。 - 单独跑通参考文献。 使用类指定的
.bst(IEEEtran、ACM-Reference-Format、splncs04、elsarticle-*、apsrev4-2),跑一遍 BibTeX 或 Biber,确认没有未定义引用。 - 把日志读到最后。
Option clash、Unused global option(s)、字体替换,以及由Overfull \hbox造成的段落溢出,只看 PDF 是发现不了的。 - 冻结整套模板。 不要把 CTAN 的
.cls、出版社 kit 的旧.bst和别的年份的骨架混在一起。在 README 里写一行获取来源和日期,可以省去与合著者的争论。 - 确认提交物的形式。 交源码还是 PDF、插图格式(EPS / PDF / PNG)、文件命名规则、是否需要匿名,这些是投稿系统的规定,不归类管。