第三章 文档元素
本章了解一个结构化的文档所依赖的各种元素——章节、目录、列表、图表、交叉引用、脚注等等。
3.1 章节和目录
3.1.1 章节标题
一篇结构化的、条理清晰文档一定是层次分明的,通过不同的命令分割为章、节、小节。LATEX的三个标准文档类article、report和book提供了一系列命令,用以划分章节、生成章节并自动编号:
\section{<title>} \sunsection{<title>} \subsubsection{<titile>} \paragraph{<title>} \subparagraph{<title>}
\part命令用以将整个文档分割为大的分块,但不影响\section等编号:
\part{<title>}
book和report提供了章一级的结构:
\chapter{<title>}
上述命令除了生成带编号的标题之外,还向目录中添加条目,并影响页眉页脚的内容。
3.1.2 目录
在LATEX中生成目录非常容易,只需在合适的地方使用命令:
\tableofcontents
正确生成目录项,一般需要多次编译源代码。
有时候使用了\chapter*或\section*这样不生成目录项的命令,而又想手动生成该章节的目录,可以在标题命令后面使用:
\addcontentsline{toc}{<level>}{<title>}
其中<level>为章节层次chapter或section等,<title>为需要生成目录项的章节标题。
3.1.3 文档结构的划分
所有文档类都提供了一个\appendix命令将正文和附录分开。
3.2 标题页
3.3 交叉引用
交叉引用是LATEX强大的自动排版功能的体现之一。在能够被交叉引用的地方,如章节、公式、图标、定理等位置使用\label命令:
\label{<label-name>}
之后可以在别处使用\ref或\pageref命令,分别生成交叉引用的编号和页码:
\ref{<label-name>} \pageref{<label-name>}
为了生成正确的交叉引用,一般也需要多次编译源代码
3.4 脚注
3.5 特殊环境
3.5.1 列表
LATEX提供了基本的有序和无序列表环境enumerate和itemize,两者的用法很类似,都用\item表明每个列表项。enumerate环境会自动对列表项标号。
\begin {enumerate} \item.. \end {enumerate]
其中\item可带一个可选参数,将有序列表的技术或者无序列表的符号替换成自定义的符号。列表可以嵌套,最多嵌套四层。
3.5.2 对齐环境
center、flushleft和flushright环境分别用于生成居中、左对齐和右对齐的文本环境。
\begin{center} ...\end{center}
3.5.3 引用环境
LATEX提供了两种引用的环境:quote用于引用较短的文字、首行不缩进;quotation用于引用若干段文字,首行缩进。引用环境较一般文字有额外的左右缩进。
3.5.4 摘要环境
摘要环境abstract只在article和report文档类可用,一般用于紧跟\maketitle命令之后介绍文档的摘要。如果文档给定了titlepage选项,则单独成页;反之相当于一个小标题加一个qutation环境。
3.5.5 代码环境
3.6 表格
LATEX里排版表格不如Word等所见即所得的工具简便和*,不过对于不太复杂的表格来讲,完全能够胜任。
排版表格最基本的tabular环境用法为:
\begin{tabular}{<column-spec>} <item1>&<item2>&...\\ \hline <item1>&<item2>&...\\ \end{tabular}
其中<column-spec>是列格式标记;&用来分割单元格;\\用来换行;\hline用来在行与行之间绘制横线。
直接使用tabular环境的话,会和周围的文字混排。tabular环境可带一个可选参数控制垂直对齐(默认是垂直居中)。
3.6.1 列格式
LATEX表格中基本的列格式如下表:
3.6.2 列宽
tabularx宏包提供了方便的解决方案。它引入了一个X格式,类似于p格式,不过会根据表格宽度自动计算列宽,多个X格式平局分配列宽。X格式也可以用array里的辅助格式修饰对其方式:
3.6.3 横线
在科技论文排版中广泛应用的表格形式是三线表,形式干净简明。三线表由booktabs宏包支持,它提供了\toprule、\midrule和\bottomrule命令用以排版三线表的三条线,除此之外,最好不好用其它横线以及竖线:
3.6.4 合并单元格
3.6.5 行距控制
LATEX生成的表格看起来通常比较紧凑。修改参数\arraystretch可以得到行距更加宽松的表格。
另一种增加间距的办法是诶换行命令\\添加可选参数,在这一行下面加额外的间距,适合用于在行间不加横线的表格:
3.7 图片
LATEX本身不支持插图功能,需要由graphicx红包辅助支持。
在调用了graphicx宏包以后,就可以使用\includegraphics命令加载图片了:
\includegraphics[<options>]{<filename>}
其中<filename>为图片文件名,与使用\include命令类似,文件名有时需要使用相对路径或绝对路径。图片文件的扩展名可写可不写。
3.8 盒子
盒子是LATEX排版的基础单元,虽然解释上去有些抽象:每一行是一个盒子,里面的文字从左到右一次排列;每一页也是一个盒子,各行文字从上到下一次排布。
3.8.1 水平盒子
生成水平盒子的命令如下:
\mbox{...} \makebox{[<width>][<align>]}{...}
3.9 浮动体
内容丰富的文章或者书籍往往包含丰富的图片和表格等内容。这些内容的尺寸往往太大、导致分页困难。LATEX为此引入了浮动体的机制,令大块的内容可以脱离上下文,放置在合适的位置。
LATEX预定义了两类浮动体环境figure和table。习惯上figure里放图片,table里放表格,但并没有严格限制,可以在任何一个浮动体里放置表格,文字、列表等等任意内容。以table环境的用法为例,figure同理:
\begin {table}[<placement>] .... \end {table}
<placement>参数提供了一些符号用来浮动体用来表示排版的位置。