LaTeX 的 \maketitle 在完成工作后会毁掉自己。标题块排完的那一刻,\maketitle、\title、\author、\date 都会被替换成什么也不做的命令——这不是比喻,article 类的定义里就是这么写的。于是第二次调用 \maketitle 毫无反应,而写在 \maketitle 之后的 \title{新标题} 不会报错,却会把那串文字直接倒进正文里。本页以这种「只此一次」的设计为主线,依次讲解 \title、\author、\date、\thanks、\and,abstract 环境在哪些类里存在、在哪个类里不存在,以及用来做独立封面的 titlepage。
先声明:\title、\author、\date
这三个命令只是把信息存起来,在书写位置什么也不输出。 把标题交给 \title{...}、作者名交给 \author{...}、日期交给 \date{...},它们会分别被存入内部容器;真正落到纸面上的时刻,是后面调用 \maketitle 的那一刻。按惯例这些命令放在导言区(\begin{document} 之前),但只要位于 \maketitle 之前,写在正文里也能工作。正是这种「先声明、后排版」的两段式安排,让标题既出现在文档开头,同一份信息又能被页眉、PDF 书签等别处引用。
三者之中只有 \title 是必需的。省略它,编译会以 ! LaTeX Error: No \title given. 停下。省略 \author 则不会中断,只会给出警告 LaTeX Warning: No \author given.,排版继续,所以不看日志就会漏掉。\date 的默认值需要留意:不写它的话,会自动填入编译当天的日期。 这是因为 LaTeX 内部的 \@date 一开始就被设为 \today,于是稿子搁置一阵再重新编译,日期就变了。若不想显示日期,写空内容 \date{};若要把版本固定下来,就写成字面形式,例如 \date{30 May 2026}。明确写出 \today,只适合「每次都用当天日期」的草稿。
\documentclass{article}
\title{Measuring heat flux with everyday materials}
\author{Ada Lovelace}
\date{30 May 2026} % omit this line entirely and you get the compile date
\begin{document}
\maketitle
The body starts here.
\end{document}\maketitle 只此一次:第二次为何无效
\maketitle 把存下的信息排完之后,会连同自己和原材料一起收拾干净。 article 类定义的末尾排着一串语句,把 \maketitle 本身以及 \title、\author、\date、\and、\thanks 全都替换成什么也不做的命令。由此产生两个后果。其一,第二次 \maketitle 既不报错也不警告,什么都不发生。 其二更麻烦:在 \maketitle 之后写 \title{新标题},被废掉的 \title 不会接收参数而直接掠过,剩下的 {新标题} 就会被当作普通正文排出来。「改了标题却没生效,而且正文里莫名多出一段词」——这个症状的真身正是它。请务必把所有声明放在 \maketitle 之前。
按惯例,这一调用放在 \begin{document} 之后立刻进行,而这不只是习惯问题。在 article 中,\maketitle 在排任何东西之前会先执行 \newpage,所以如果先写了几行正文再放 \maketitle,页面会在那里分页,标题出现在下一页顶部。 若在文档最开头调用,此时还什么都没排,分页看不出来,也就永远注意不到这个行为。最终决定东西落在哪里的是文档类:article 默认不新开一页,把标题放在第 1 页顶部;report 与 book 默认生成没有页码的独立标题页。若想调整细节外观,Peter Wilson 的 titling 宏包 提供了调整字体、位置以及 \thanks 处理方式的工具。
多位作者用 \and,脚注用 \thanks
在 \author 内部,\\ 表示「同一位作者的下一行」,\and 表示「下一位作者」。 要永远不混淆这两者,最可靠的办法就是弄清 \and 到底是什么。在 LaTeX 的定义中,它不过是 \end{tabular} 后接 \begin{tabular}[t]{c},中间塞进一段可略微伸缩的空白。换句话说,作者栏本来就是一个居中的单列表格:\\ 让该表格换行,\and 则先关闭表格、再在旁边立起一个新表格。这正是为什么用 \\ 时所属会挂在姓名下方,用 \and 时作者会并排排列——可见的结果与定义完全吻合。
若想把所属、联系方式或经费致谢做成脚注,就把 \thanks{...} 放进 \title 或 \author 里。这里同样有玄机。普通的 \footnote 在表格内部并不能正常工作,而 \thanks 只在当场打上脚注标记,把注文本身存进另一个容器,等标题块排完之后再一并倒出来。正因如此,它可以安全地在作者栏的表格内使用。顺带一提,在 \maketitle 内部 \footnote 会被改读为 \thanks,所以即便顺手写成 \footnote,结果也一样。
成品脚注的外观,在标准类里也自有一套道理。\thanks 打出的标记不是数字,而是 ∗ † ‡ § 等,并且标题块排完之后脚注计数器会被重置为 0。因此正文中第一个 \footnote 会理直气壮地从「1」开始。标题上的致谢与正文第一个注不会同时是「1」而撞车,原因正在于此。反过来说,若遇到要求全部使用数字的投稿规范,你就得在明白这两层结构的前提下,再动手调整 titling 之类的工具。
| 命令 | 作用 | 注意 |
|---|---|---|
\title{...} | 声明标题(必需) | 省略会得到 ! LaTeX Error: No \title given.;内部可用 \\ 与 \thanks |
\author{...} | 声明作者(可选) | 省略只会给出 LaTeX Warning: No \author given. 并继续 |
\date{...} | 声明日期(可选) | 不写=编译日期;\date{}=无日期;写字面值=固定版本 |
\and | 在 \author 内分隔作者 | 内部动作是关闭一个表格并在旁边新建一个;\\ 是同一作者内的换行 |
\thanks{...} | 在 \title/\author 内生成脚注 | 标记为 ∗ † ‡ §;排完后脚注计数器会重置 |
\maketitle | 真正排出已声明的信息 | 只此一次:第二次毫无反应,此后 \title 等会流入正文 |
哪些文档类里有 abstract 环境
abstract 环境在 article 和 report 中存在,但在 book 中不存在。 「不存在」不是样式不同的意思,而是真的没有定义:在 book 类下写 \begin{abstract},会得到 ! LaTeX Error: Environment abstract undefined.。而且未定义的环境依然会开启分组,所以后面还会接着出现 ! LaTeX Error: \begin{document} ended by \end{abstract}.。这反映了书籍通常不附摘要的惯例,但用 book 排学位论文又需要摘要,这种情形其实很常见。遇到时,可以加载 abstract 宏包,或者自己排出摘要页。
标准位置是 \maketitle 之后立刻,在正文开始之前。呈现方式则分三种。在单栏的 article 中,会以较小的字号把「Abstract」标题居中,正文从左右缩进,形如引用。改成双栏后行为就变了:它被当作 \section* 处理,只占据其中一栏——不少人在需要摘要横跨整页宽度的论文里栽在这里,此时的办法是使用 \twocolumn 的可选参数,或者交给 abstract 宏包。而 report 默认就是生成标题页的类,所以摘要会被排成独立的一页。另外,标题用词由 \abstractname 决定,用 babel 之类切换文档语言时,该词也会随之改变。
独立封面:titlepage 选项与 titlepage 环境
titlepage 这个名字有两副面孔:类选项与环境。 写下 \documentclass[titlepage]{article},\maketitle 就会在 titlepage 环境中排出标题,生成一张没有页码的独立封面。report 与 book 一开始就以此为默认,因此无需写这个选项(反之,若想要 article 的行为,则传入 notitlepage)。这个选项还会改变摘要的外观:当 titlepage 生效时,abstract 环境的定义本身会被替换,摘要变成上下居中的专属一页。对于要求封面与摘要各占独立页面的提交物,往往仅凭这一个词就能满足要求。
另一副面孔——titlepage 环境——是一个容器,用来完全不借助 \maketitle 而自行排出整张封面。其内容就是普通的 LaTeX,放徽标、画横线都可以。代价是:它与 \title 中所存信息之间的联系被切断了。封面上的题名与 \title 的题名不一致却照样提交,这类事故正源于此。因此若要自制封面,最好一开始就决定信息只保存在一个地方。
把全部内容合在一起的示例
\title 通过 \thanks 带上经费致谢;\author 用 \and 分隔两位作者,用 \\ 把各自所属挂在姓名下方,并用 \thanks 为其中一位加上邮箱脚注。\date 被固定为某个版本,abstract 环境紧接在 \maketitle 之后。排出来后,大标题下方是并排的两位作者,再下面是日期;标题和其中一位作者带有 ∗ 与 † 标记,页面底部依次列出致谢与邮箱。其下是「Abstract」标题和摘要段落,接着正文以「1 Introduction」开始。
\documentclass{article}
\title{Measuring heat flux with everyday materials%
\thanks{Supported by the Example Foundation.}}
\author{
Ada Lovelace\thanks{[email protected]} \\
Analytical Engine Laboratory
\and
Alan Turing \\
National Physical Laboratory
}
\date{30 May 2026}
\begin{document}
\maketitle
\begin{abstract}
This paper describes a procedure for measuring heat flux with
readily available materials, and discusses the treatment of error.
\end{abstract}
\section{Introduction}
The body starts here.
\end{document}提交前只需确认这几点
标题区域是正文写完之后最后才动的地方,也因此最容易在截止前被弄坏。首先要确认的,是投稿规范或作业要求有没有指定文档类。 如果指定了类,那么把信息交给该类提供的命令,显然比手工改造 \maketitle 的输出更安全。会议和研究生院的模板往往为封面准备了自己的声明命令,如 \studentid、\supervisor;一旦退回标准的 \maketitle,评审所需的信息就会丢失。
- 标题 — 长标题需要换行时,
\\只放在语义边界,绝不要在单词或公式中间断开。 - 作者信息 — 姓名与所属集中放在
\author,只有真正属于脚注的内容才移到\thanks;不要混淆\\与\and。 - 日期 — 版本固定的提交物写字面日期;只有日期可变的草稿才使用
\today。 - 摘要 — 简短说明目的、方法、结果与结论,不要塞入正文尚未引入的缩写或记号。
- 最后检查 — 确认
\maketitle之后没有残留的\title或\author;若有,其内容会被直接排进正文。