对于像基本文章这样的文档,\maketitle 的输出通常是足够的,但较长的文档(如书籍和报告)通常需要更复杂的格式。在这里,我们将详细介绍这一过程。

有几种情况,你可能想要创建一个自定义格式的标题,而不是使用 LaTeX 类原生支持的格式。虽然可以更改 \maketitle 的输出,即使是对标题进行一些微小的修改,也可能会很复杂。在这种情况下,通常更好的做法是从头开始创建标题,本节将展示如何实现这一点。

标准标题

大多数文档类提供了一个简单的接口,用来存储在标题中显示的详细息并排版实际的标题。标准类只提供了四个存储命令(\title\author\thanks\date)。你可以存储任何想要显示在标题中的息,包括格式设置。

实际的标题将通过执行命令 \maketitle 来排版。布局由正在使用的文档类定义。

\documentclass{article} % 使用 titlepage 选项使标题出现在单独的页面上
\usepackage{blindtext}
\title{The Triangulation of Titling Data in Non-Linear Gaussian Fashion via $\rho$ Series\thanks{No procrastination}}
\date{2017\\ December}
\author{John Doe\\ Magic Department\thanks{I am no longer a member of this department}, Richard Miles University
\and Richard Row, \LaTeX\ Academy}
\begin{document}
\maketitle
\section{Introduction}
\blindtext
\end{document}

\thanks 命令会存储内容,并在标题旁边生成一个脚注。正如其名称所示,它可以用来表示感谢,或者只是打印一个电子邮件地址等作为脚注。

作者之间通过命令 \and 分隔,允许作者块并排输出。在上面的示例中,由于没有足够的水平空间,两个作者没有被放在同一行。

如果没有定义 \date,LaTeX 将打印当前日期。如果你想完全省略日期,可以使用 \date{},这将存储一个空字符串。

存储标题数据的命令可以在导言区使用。由于 \maketitle 是实际输出命令,它需要在 \begin{document} 后使用。通常,标题是文档中的第一部分。

请查看 KOMA-script 和 memoir 类的示例。两者都提供(不同的)命令来更改标题的外观。稍后你将学习如何完全设计自己的标题页。

\documentclass{scrbook}
\setkomafont{author}{\scshape}
\usepackage{blindtext}
\title{How hard would it be to build a spaceship from scrap}
\author{Carl Capybara\thanks{I never procrastinate} \and Walter Wombat}
\subtitle{A closer look at the expenses}
\subject{a funny paper}
\begin{document}
\maketitle
\addchap{Introduction}
\blindtext
\end{document}
\documentclass{memoir} % 使用 titlepage 选项使标题出现在单独的页面上
\usepackage{blindtext}
\title{The influence of colour on the floating velocity of rubber ducks}
\author{Peter Piranha}
\renewcommand{\maketitlehookb}{\centering You won't expect the results}
\begin{document}
\maketitle
\chapter{Introduction}
\blindtext
\end{document}

如同往常一样,类文档中揭示了更多有关可能命令的细节。

期刊提交的标题

期刊通常遵循特定的布局格式。为了确保这一点,它们通常会提供一个模板,定义标题的布局。标题中可用的内容(例如电子邮件、单位名称、关键词等)取决于模板,并且在不同的期刊之间差异很大。如果期刊提供了模板,请遵循它。如果没有提供模板,您应该使用上述描述的 LaTeX 标题的最基本概念。

为报告或书籍创建自定义标题

书籍或报告的标题页是读者首先看到的内容。在准备标题页时,请牢记这一点。

要使您的标题页完美,您需要了解一些基本的 LaTeX 布局命令。通常,自定义的标题页不包含任何语义标记,所有内容都是手动设置的。以下是一些最常用的内容:

对齐

如果你想让某些文本居中,只需使用 \centering。如果您想以不同的方式对齐,可以使用 \raggedleft(右对齐)和 \raggedright(左对齐)环境。

图片

插入图片的命令(例如插入一个logo)如下:\includegraphics[width=0.15\textwidth]{./logo}。不像通常使用的 \begin{figure} 环境,因为你不希望图片浮动,只是希望它精确地出现在你希望的位置。在处理时,请记住,它被视为一个大的框。

文本大小

如果你想改变某些文本的大小,只需将其放在大括号中 {like this},然后使用以下命令(按大小顺序):\Huge\huge\LARGE\Large\large\normalsize\small\footnotesize\tiny。例如:

{\large this text is slightly bigger than normal}, this one is not.

请记住,如果你有一块不同大小的文本,即使它只是单行文本,也要以 \par 结束。

填充页面

命令 \vfill 作为内容的最后一项,会添加空白直到页面填满。如果你将它放在页面内部,它会确保后续的所有文本都位于页面底部。

实用示例

所有这些建议可能让你感到困惑。下面是一个可编译的实用示例。使用的图片来自 mwe 包,并且应该在每个完整的 LaTeX 安装中都可以找到。你可以立即开始测试。

\documentclass[12pt,a4paper]{report}
\usepackage{mwe}
\begin{document}
\begin{titlepage}
	\centering
	\includegraphics[width=0.15\textwidth]{example-image-1x1}\par\vspace{1cm}
	{\LARGE \textsc{Columbidae University}\par}
	\vspace{1cm}
	{\Large \textsc{Final year project}\par}
	\vspace{1.5cm}
	{\huge\bfseries Pigeons love doves\par}
	\vspace{2cm}
	{\Large\itshape John Birdwatch\par}
	\vfill
	supervised by\par
	Dr.~Mark \textsc{Brown}

	\vfill

% Bottom of the page
	{\large \today\par}
\end{titlepage}
\end{document}

如你所见,代码比标准的 LaTeX 源码“显得更凌乱”,因为你必须同时处理输出。如果你开始更改字体,情况会变得更复杂,但你可以做到:这仅适用于标题,而你的复杂代码会与文档中的其他部分隔离。

集成标题页

书籍或报告的标题页通常是静态的,它不会随着时间变化。你可以将标题页准备为一个单独的小文档,然后将其作为一页 PDF 文件包括进你的实际文档中。如果标题页需要与文档其他部分不同的边距,这种方式特别有用。它还节省了编译时间,尽管节省的不多。

假设你已经在另一个文档中完成了报告的标题页,假设它的文件名是 reportTitlepage2016.pdf,你可以很简单地将其包含进来。以下是一个简短的文档设置:

\documentclass{report}
\usepackage{pdfpages}
\begin{document}
\includepdf{reportTitlepage2016}
\tableofcontents
\chapter{Introducing birds}
\end{document}

多次重用的标题

一些大学、部门和公司有严格的规定,报告的标题页应该是什么样子。为了确保所有报告输出一致,建议重定义 \maketitle 命令。

这最好由经验丰富的 LaTeX 用户完成。下面是一个简单的示例,通常,复杂性没有真正的限制。

首先,生成一个名为 columbidaeTitle.sty 的 LaTeX 包,定义完整的标题内容。以后它将对最终用户隐藏。理想情况下,创建此包的人应该长期维护它,创建附带的文档,并确保用户支持。

% Copyright note: This package defines how titles should
% be typeset at the columbidae University
% Please check for updates
\ProvidesPackage{columbidaeTitle}[2015/08/10 v.01 an
example package^^J for wikibooks]
\RequirePackage{graphicx}
\newcommand*{\project}[1]{\gdef\@project{#1}%
}
\newcommand*{\@project}{Final Year Project}
\newcommand*{\supervisor}[1]{\gdef\@supervisor{#1}%
}
\newcommand*{\@supervisor}{\texttt{\string\supervisor} currently
not set. Please fix this.}
\renewcommand*{\maketitle}{%
\begin{titlepage}
{\raggedleft%
	\includegraphics[width=3cm]{example-image-16x9}\par
}\vspace{1cm}
	\centering
{\scshape\LARGE Columbidae University \par}
\vspace{1cm}
{\scshape\Large\@project\unskip\strut\par}
\vspace{1.5cm}
{\huge\bfseries\@title\unskip\strut\par}
\vspace{2cm}
{\Large\itshape\@author\unskip\strut\par}
\vfill
supervised by\par
\@supervisor\unskip\strut\par

\vfill

{\large \@date\par}
\end{titlepage}
}
\endinput

这个包可以在常规文档中加载。用户可以设置标题和类似内容的变量。实际上可用的命令以及哪些可以省略,应该写在与包一起提供的文档中。

\documentclass{book}
\usepackage{columbidaeTitle}
%\supervisor{Dr. James Miller}
\project{Bachelor Thesis}
\author{A LaTeX enthusiast}
\title{Why I want to be a duck}
\begin{document}
\maketitle
\tableofcontents
\chapter{Ducks are awesome}
\end{document}

自定义标题包

titling 包[1] 提供对 \maketitle\thanks 命令的排版控制。它对于对标准输出做小幅修改非常有用。

意大利用户也许想使用 frontespizio 包[2]。它定义了意大利使用的封面。

authblk 包[3] 提供了新的作者排版方式。这对于没有可用模板的期刊提交非常有帮助。

更多标题页示例

titlepages 包提供了多种不同风格的标题页。

TeX.SE 上有一个标题页的集合。

另一个小集合可以在 Github 上找到。

注意和参考


Last modified: Sunday, 20 April 2025, 11:31 AM