LaTeX
写文本的主要目的是将思想、信息或知识传达给读者。如果这些思想结构良好,读者会更容易理解文本,并且如果排版形式能够反映内容的逻辑和语义结构,读者将更好地感知到这种结构。
仅凭文本的逻辑和语义结构,LaTeX 会根据文档类文件和各种样式文件中给定的“规则”推导出文本的排版形式。LaTeX 允许用户使用多种层级结构来组织文档,包括章节、节、小节和段落。
全局结构
当 LaTeX 处理输入文件时,它期望文件遵循一定的结构。因此,每个输入文件必须包含以下命令:
\documentclass{...}
\begin{document}
...
\end{document}
\documentclass{...}
和 \begin{document}
之间的区域称为前言部分。通常,它包含影响整个文档的命令。
在前言之后,文档的内容被两个命令包围,这些命令标识实际文档的开始和结束:
\begin{document}
...
\end{document}
你将在省略号处插入你的文本。标记文本开始的位置的原因是,LaTeX 允许你在这之前插入额外的设置说明(如上面示例中的空行,我们很快会用到它)。标记文本结束的原因是为 LaTeX 提供一个位置,用于在文档末尾自动执行一些额外的操作,比如制作索引。
标记文档结束的一个有用副作用是,你可以将注释或临时文本存放在 \end{document}
下面,因为 LaTeX 永远不会试图排版这些内容:
\end{document}
...
前言部分
文档类
在处理输入文件时,LaTeX 需要知道使用哪种布局标准。布局标准包含在“类文件”中,这些文件的扩展名为 .cls
。
\documentclass[options]{class}
在这里,\documentclass
命令的类参数指定了要为文档使用的 .cls
文件。建议将此声明放在文档的最开始。LaTeX 分发版提供了其他类,用于其他布局,包括信件和幻灯片。你也可以创建自己的类,正如期刊出版商通常做的那样,他们会为你提供自己的类文件,告诉 LaTeX 如何格式化你的内容。但现在我们暂时使用标准的文章类。options
参数自定义文档类的行为。选项必须用逗号分隔。
例如,LaTeX 文档的输入文件可能以以下行开始:
\documentclass[11pt,twoside,a4paper]{article}
这指示 LaTeX 将文档格式化为文章,基本字体大小为 11 磅,并生成适合双面打印的 A4 纸布局。
以下是一些可以与 LaTeX 一起使用的文档类:
文档类
-
article
:用于科学期刊文章、演示文稿、简短报告、程序文档、邀请函等。 -
IEEEtran
:用于 IEEE Transactions 格式的文章。 -
proc
:基于文章类的会议论文集。 -
minimal
:尽可能小,仅设置页面大小和基本字体,主要用于调试。 -
report
:用于包含多个章节的长报告、小册子、论文等。 -
book
:用于书籍。 -
slides
:用于幻灯片,该类使用大号无衬线字体。 -
memoir
:用于合理地更改文档输出,基于书籍类,但可以创建任何类型的文档。 -
letter
:用于写信。 -
beamer
:用于编写演示文稿(参见 LaTeX/演示文稿)。
文档类选项
LaTeX 提供了一些文档类,它们有一些常见的布局选项。非通用类(如大学部门或出版公司提供的类)可能具有与下列选项不同的选项,或者根本没有选项。通常,第三方类会附带自己的文档。以下是通用文档类的最常见选项:
文档类选项 | 说明 |
---|---|
10pt, 11pt, 12pt | 设置文档的主要字体大小。如果未指定选项,默认为 10pt。 |
a4paper, letterpaper,... | 定义纸张大小。默认大小是 letterpaper;然而,许多欧洲 TeX 发行版现在预设为 A4,而不是 Letter,这对于所有 pdfLaTeX 发行版也是如此。还可以指定 a5paper、b5paper、executivepaper 和 legalpaper。 |
fleqn | 将显示公式左对齐,而不是居中对齐。 |
leqno | 将公式编号放在左侧,而不是右侧。 |
titlepage, notitlepage | 指定文档标题后是否应开始新的一页。文章类默认不开始新的一页,而报告和书籍类默认开始新的一页。 |
twocolumn | 指示 LaTeX 将文档排版为双栏,而不是单栏。 |
twoside, oneside | 指定生成双面或单面输出。文章和报告类是单面输出,书籍类默认是双面输出。请注意,这个选项只影响文档的样式,twoside 选项不会告诉你使用的打印机需要进行双面打印。 |
landscape | 更改文档布局为横向打印模式。 |
openright, openany | 使章节仅在右页开始,或在下一个可用页面开始。这不适用于文章类,因为它不处理章节。报告类默认在下一个可用页面开始章节,书籍类在右页开始。 |
draft, final | final 是默认值,draft 会使 LaTeX 在右侧边距显示一个小方块,指示单词断开和对齐问题,这样可以快速定位问题行。它还会抑制图像的插入,只显示图像所在位置的框架。 |
这些选项提供了不同的排版方式,以适应不同的文档需求。
例如,如果你想要报告以 12pt 字体排版,使用 A4 纸,并且采用单面打印的草稿模式,你可以使用以下命令:
\documentclass[12pt,a4paper,oneside,draft]{report}
包
在编写文档时,你可能会发现有些问题是基本的 LaTeX 无法解决的。如果你想在文档中包含图形、彩色文本或从文件中导入源代码,你需要增强 LaTeX 的功能。这些增强功能被称为“包”。一些包是随 LaTeX 基础分发版一起提供的,其他包则是单独提供的。现代的 TeX 发行版预安装了大量的包。使用包的命令非常简单:\usepackage
:
\usepackage[options]{package}
其中 package
是包的名称,options
是一组触发包中特殊功能的关键词。例如,要使用 color
包,它允许你进行彩色排版,你可以输入:
\documentclass{report}
\usepackage{color}
\begin{document}
...
\end{document}
你可以向一个包传递多个选项,每个选项之间用逗号分隔:
\usepackage[option1,option2,option3]{''package_name''}
文档环境
头部信息
在大多数文档的开始部分,你会看到关于文档本身的信息,例如标题、日期,以及关于作者的信息,如姓名、地址、电子邮件等。LaTeX 中这些信息统称为“头部信息”。尽管没有显式的 \topmatter
命令,你可能会在 LaTeX 文档中遇到这个术语。
一个简单的示例:
\documentclass[11pt,a4paper]{report}
\begin{document}
\title{How to Structure a LaTeX Document}
\author{Andrew Roberts}
\date{December 2004}
\maketitle
\end{document}
\title
、\author
和 \date
命令的意思不言自明。你只需要在相关命令后用大括号括起来放入标题、作者名和日期。标题和作者通常是必须的(至少如果你希望 LaTeX 自动写标题的话);如果你省略了 \date
命令,LaTeX 会默认使用今天的日期。你总是需要在头部信息后使用 \maketitle
命令,告诉 LaTeX 头部信息已完成,并且可以根据你提供的信息和所使用的文档类(样式)排版标题。如果省略了 \maketitle
,标题将不会被排版。
通过这种方式,你只能创建一个固定布局的标题。如果你想自由创建标题,参见标题创建部分。然而,你应该记住,LaTeX 的目标是将格式化交给文档类设计者,如果你希望将工作提交给多个出版商,你应该避免设计自定义标题。
摘要
由于大多数研究论文都有摘要,LaTeX 提供了预定义的命令来告诉 LaTeX 哪一部分内容是摘要。摘要应按照其逻辑顺序出现,因此应该在头部信息之后、文档正文的主要部分之前。该命令在 article
和 report
文档类中可用,但在 book
文档类中不可用。
\documentclass{article}
\begin{document}
\begin{abstract}
Your abstract goes here...
...
\end{abstract}
...
\end{document}
默认情况下,LaTeX 会使用“Abstract”作为摘要的标题。如果你想将其改为其他内容,例如“Executive Summary”,可以在开始摘要环境之前添加以下行:
\renewcommand{\abstractname}{Executive Summary}
部分命令
插入章节的命令非常直观。当然,某些命令适用于不同的文档类。例如,书籍有章节,而文章没有。以下是 simple.tex
中找到的一些结构命令。
\chapter{Introduction}
This chapter's content...
\section{Structure}
This section's content...
\subsection{Top Matter}
This subsection's content...
\subsubsection{Article Information}
This subsubsection's content...
注意,你不需要指定章节编号;LaTeX 会为你处理这一点。并且,对于章节,你不需要使用 \begin
和 \end
命令来指示哪些内容属于某个特定的块。
LaTeX 提供了 7 个级别的章节定义(见下表)。每个章节在此表中是其上级的子章节。
命令 | 级别 | 说明 |
---|---|---|
\part{''part''} |
-1 | 不适用于信件 |
\chapter{''chapter''} |
0 | 仅适用于书籍和报告 |
\section{''section''} |
1 | 不适用于信件 |
\subsection{''subsection''} |
2 | 不适用于信件 |
\subsubsection{''subsubsection''} |
3 | 不适用于信件 |
\paragraph{''paragraph''} |
4 | 不适用于信件 |
\subparagraph{''subparagraph''} |
5 | 不适用于信件 |
所有章节标题会自动添加到目录中(如果你决定插入目录的话)。但是,如果你手动更改了标题的样式,比如标题过长,或者使用了特殊的换行符或不寻常的字体效果,这些也会出现在目录中,而你几乎肯定不希望这样。LaTeX 允许你提供一个可选的标题版本,这个版本仅用于目录和运行头(如果启用了运行头)。这个可选的替代标题应该放在大括号之前,用方括号包围:
\section[Effect on staff turnover]{An analysis of the
effect of the revised recruitment policies on staff
turnover at divisional headquarters}
章节编号
章节的编号由 LaTeX 自动执行,因此不需要显式添加编号,只需在大括号之间插入你想要的标题即可。部分会使用罗马数字(Part I、Part II 等);章节和小节会使用十进制编号,如本文件所示;附录(它只是章节的一个特殊形式,结构与章节相同)会使用字母编号(A、B、C 等)。
你可以改变章节编号的深度,从而选择性地关闭某些编号。默认情况下,编号深度设置为 3。如果你只想对部分、章节和小节进行编号,而不对更小的层级(如子小节或子子小节等)进行编号,可以通过 \setcounter
命令更改 secnumdepth
计数器的值,指定你希望的深度。例如,如果你想将其更改为“1”:
\setcounter{secnumdepth}{1}
一个相关的计数器是 tocdepth
,它指定目录的深度。它可以像 secnumdepth
一样进行重置。例如:
\setcounter{tocdepth}{3}
如果你希望某个没有编号的章节标题不出现在目录中,可以在命令名称后加上一个星号,在大括号之前:
\subsection*{Introduction}
所有从 \part*
到 \subparagraph*
的命令都有这个“星号”版本,可以在特殊场合下用于没有编号的标题,即使设置了 secnumdepth
也不会编号。
如果你希望无编号的章节仍然出现在目录中,可以使用 unnumberedtotoc
包。它提供了以下命令:
\addsec{Introduction}
这个命令会处理正确的标题。\addpart
和 \addchap
也可以使用。KOMA 类默认提供这些命令。
如果你不想使用 unnumberedtotoc
包,你需要手动完成所有操作,使用 \addcontentsline
和 \markright{}
(甚至 \markboth{}{}
):
\section*{Introduction}
\markright{}
\addcontentsline{toc}{section}{Introduction}
需要注意的是,如果你使用 PDF 书签,你需要添加一个虚拟章节,以确保超链接指向文档中的正确位置。\phantomsection
命令定义在 hyperref
包中,通常如下使用:
\phantomsection
\addcontentsline{toc}{section}{Introduction}
\section*{Introduction}
对于章节,你还需要清除页面(这也会修正目录中的页面编号):
\clearpage % 或 \cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
章节编号样式
参见计数器。
普通段落
文本段落紧随章节标题之后。只需输入文本,并在段落之间留一个空行。空行表示“从这里开始一个新段落”:它并不意味着排版输出中会出现一个空行。有关段落缩进和段落之间的间距格式,请参阅“段落格式”部分。
目录
所有自动编号的标题会自动添加到目录中。你不必打印目录,但如果你想要打印,只需在想要打印的位置插入命令 \tableofcontents
(通常在摘要或总结之后)。
目录条目在你每次处理文档时都会记录,并在下次处理时重新生成,因此你需要再次运行 LaTeX,以确保所有目录中的页面编号引用被正确计算。我们已经看到如何使用章节命令的可选参数来向目录中添加与文档正文中略有不同的文本。还可以向目录中添加额外的行,强制包括额外的或无编号的章节标题。
\listoffigures
和 \listoftables
命令与 \tableofcontents
命令的作用完全相同,自动列出文档中的所有表格和图形。如果你使用这些命令,它们通常会出现在 \tableofcontents
命令之后。\tableofcontents
命令通常只显示编号的章节标题,并且只显示到由 tocdepth
计数器定义的级别,但你可以使用 \addcontentsline
命令添加额外的条目。例如,如果你使用一个无编号的章节命令来开始一段前言或序言类的文本,你可以写:
\subsection*{Preface}
\addcontentsline{toc}{subsection}{Preface}
这将在目录中为“Preface”创建一个无编号的条目,且采用“subsection”样式。你可以使用相同的机制通过将 lof
或 lot
替换为 toc
来向图形目录或表格目录添加条目。如果使用了 hyperref
包,并且链接没有指向正确的章节,可以使用 \phantomsection
命令,并结合 \clearpage
或 \cleardoublepage
使用(参见标签和交叉引用):
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
更改目录标题
要更改目录的标题,你需要在文档前言部分粘贴以下命令:
\renewcommand{\contentsname}{<New table of contents title>}
图形目录(LoF)和表格目录(LoT)的名称可以通过将 \contentsname
替换为 \listfigurename
(对于图形目录)和 \listtablename
(对于表格目录)来改变。
深度
默认情况下,目录将列出三级及以上的标题。要更改目录自动显示的深度,可以在前言部分使用以下命令:
\setcounter{tocdepth}{4}
这将使目录包含到段落级别。级别在上面已定义。注意,这个解决方案不允许动态改变深度。
你可以更改特定章节类型的深度,这在 PDF 书签中可能非常有用(如果你使用 hyperref
包):
\makeatletter
\renewcommand*{\toclevel@chapter}{-1} % 将章节深度设置为与 \part 相同的级别
\chapter{Epilogue}
\renewcommand*{\toclevel@chapter}{0} % 将章节深度恢复为默认值
\makeatother
为了进一步调整目录的显示或编号,比如如果附录应更简略显示,你可以使用 tocvsec2
包(CTAN,文档)。
书籍结构
标准的 LaTeX 书籍类遵循上述相同的布局,并做了一些扩展。默认情况下,书籍会采用双面打印,即左右页的边距会根据页码的奇偶性变化。此外,当前章节和小节会被打印在页眉中。
如果你不使用章节,使用书籍类几乎没有意义。
此外,该类提供了宏来更改文档某些位置的格式。我们将提供一些如何正确使用这些宏的建议。
\begin{document}
\frontmatter
\maketitle
% 引言章节
\chapter{Preface}
% ...
\mainmatter
\chapter{First chapter}
% ...
\appendix
\chapter{First Appendix}
\backmatter
\chapter{Last note}
前言章节不会编号,页码将以罗马数字打印。前言不应包含小节,因此它们的编号将是 0.n,因为没有章节编号。请参阅计数器章节以获取解决方法。
正文章节按常规工作。该命令会重置页码,页码将以阿拉伯数字打印。
\appendix
宏可用于指示接下来的章节或小节应按附录编号。附录在文章类中也可以使用:
\appendix
\section{First Appendix}
只应为所有附录使用一次 \appendix
宏。
后记部分的行为与前言部分类似。它也有小节编号的问题。
作为一般规则,你应该避免混合命令顺序。尽管如此,所有命令都是可选的,因此你可以考虑仅使用其中一些。
请注意,诸如目录之类的特殊内容被视为无编号章节。
页面顺序
这是书籍的传统页面顺序:
-
前言部分
-
半标题页
-
空白页
-
标题页
-
信息页(版权声明、ISBN 等)
-
致谢(如果有的话,否则为空)
-
目录
-
图表目录(也可以放在后记部分)
-
序言章节
-
-
正文部分
-
主要主题
-
附录(附属章节)
-
-
后记部分
-
参考文献
-
术语表 / 索引
-
特殊页面
综合性的论文通常在末尾有特殊页面,如索引、术语表和参考文献。由于这是一个相对复杂的话题,我们将在专门的“特殊页面”部分为你提供详细信息。
参考文献
任何好的研究论文都应包括完整的参考文献列表。LaTeX 有两种方法可以将参考文献插入到文档中:
-
你可以将参考文献嵌入到文档中。这种方法更简单,但如果你经常写关于相似主题的多篇论文,可能会导致重复引用同一本书。
-
你可以将参考文献存储在外部的 BibTeX 文件中,然后通过命令将其链接到当前文档,并使用 BibTeX 样式定义其显示方式。这样你可以创建一个小型的参考文献数据库,并简单地链接它们,让 LaTeX 为你工作。
要了解如何将参考文献添加到文档中,请参阅“参考文献管理”部分。