LaTeX 排版基础笔记
整理一下 LaTeX 排版中的基本要素,从默认的article文档类着手。
关于数学公式、数学字体和参考文献等更具体的内容,由于比较复杂,对其单独整理。
这里主要关注 LaTeX 排版的技术性内容,不讨论非技术性内容。
页面布局
通常需要在使用文档时首先全局地规定一些排版参数,如字号、纸张大小、单双面等等。
比如调用 article 文档类排版文章,指定基本字号为 11pt,双面排版,纸张为 A4 大小:
1 | \documentclass[10pt,twoside,a4paper]{article} |
常用的参数如下:
- 指定字号,例如10pt,11pt,12pt,默认10pt
- 指定纸张大小,默认为美式信纸 letterpaper(大约 21.6 cm × 28.0 cm)。可指定选项还包括 a4paper,b5paper,executivepaper 和 legalpaper等。有关纸张大小页边距的更多细节主要通过geometry包设置,当然在这里设置也可以
- 单面/双面排版,twoside,oneside。双面排版时,奇偶页的页眉页脚、页边距不同。article和report默认为oneside,book默认为twoside。
- 指定单栏/双栏排版,onecolumn, twocolumn。默认为 onecolum。
- 指定横向排版,landscape,默认为纵向。
geometry推荐设置之一
1 | \usepackage[left=2.5cm, right=2.5cm, top=3cm, bottom=3cm]{geometry} |
推荐设置之二:A4纸,宽度:210 mm,高度:297 mm。(8.27 x 11.69 英寸)
1 | \usepackage[a4paper,margin=1in]{geometry} |
标题页与基本信息
需要在导言区提供基本信息
1 | \title{<title>} |
作者可以有多个,不同作者之间使用\and命令相连,并且可以使用\thanks命令附带联系方式(联系方式会依次出现在脚注中)
1 | \author{ Mary\thanks{E-mail:****@***.com} |
对于在网上分享的非正式文档,可以在作者下面直接加上URL,例如
1 | \author{Author \\ |
日期可以直接使用当前日期(英文),也可使用任意格式来指定日期,此时显示内容与输入的是完全一致的
1 | \date{\today} |
如果需要中文的日期和格式,可以使用zhnumber宏包(需要在中文文档中,否则缺字体等),使用如下
1 | \date{\zhtoday} |
此时zhnumber会自动调整日期的显示格式。
如果需要禁用日期,可以留空 \date{},但是这和省略是不一样的,省略时视作自动使用当前日期。
使用如下命令生成标题页
1 | \maketitle |
注意:对于article默认不会为标题部分单独成页,report和book则会单独成页,也可以在文档类引入时通过选项titlepage/notitlepage指定是否单独成页。
文档结构
一个大型文档的main.tex正文部分结构如下,各个部分的详细内容会拆分为单独的.tex文件
1 | \begin{document} |
其中用下面的命令将文档分成三部分
1 | \frontmatter % 前言 |
使用下面的命令生成目录以及图表的单独目录
1 | \tableofcontents % 目录 |
使用下面的命令划分后面的部分为附录
1 | \appendix |
此后的章节编号改用拉丁字母,从A开始。
这只是对于诸如毕业论文和书籍等大型文档的结构划分,对于一般的文档,没有必要使用完整的文档结构,例如通常都没有前言和后记,可能有附录。注意 article 文档类不支持 chapter,只有 section 以及更低的结构。各种文档都支持 part 结构,但是不常使用。
摘要
期刊或者论文都需要在正文之前的摘要环境,对于 article 和 report 文档类,摘要环境是内置的(但是 book 文档类没有),可以直接使用
1 | \begin{abstract} |
注意:默认情况下abstract环境只在article和report中可用,摘要一般紧跟着\maketitle使用,如果标题页单独成页,则摘要也会单独成页。
关键词的使用在不同的模板中有不同的实现,有的模板直接提供了独立命令,例如
1 | \begin{abstract} |
可以简单定义一个\keywords命令
1 | \newcommand{\keywords}[1]{\vskip 2ex\par\noindent\normalfont{\bfseries Keywords: } #1} |
使用例如
1 | \begin{abstract} |
也可以定义一个 keywords 环境
1 | \newenvironment{keywords}{\par\vskip 2ex\textbf{Keywords:}\enspace}{\par} |
使用例如
1 | \begin{abstract} |
各个期刊对于关键词其实并没有形成统一的样式:
- 有的使用
Keywords,有的使用Key words; - 有的使用正体加粗,有的使用斜体;
- 有的缩进,有的不缩进。
正文细节
交叉引用
在 LaTeX 中往往需要给各种类型的元素(方程、章节、图表)添加标签以方便引用,在打标签的时候最好遵循一个统一的格式:
- 方程:
\label{eq:xxx} - 章:
\label{chap:xxx} - 节:
\label{sec:xxx} - 图:
\label{fig:xxx} - 表:
\label{tab:xxx}
在引用时通常使用\ref{xxx:xxx},例如Section~\ref{sec:xxx},注意这里最好使用~连接而不是空格,这样可以避免排版时在引导词和标签之间进行换行。
在引用公式时可以使用 \eqref{xxx:xxx},它会自动给公式编号加上括号。
对于数学公式和图表,默认使用全局编号,可以用下面的做法改成按照 section 编号
1 | \numberwithin{equation}{section} |
可以在草稿阶段使用
refcheck宏包来检查标签信息,它会直接把标签显示在PDF中,而且对未打标签但带编号的公式和未使用的标签等会警告,在正式发布时必须移除并重新编译。
空格与换行
整理一下关于LaTeX中空格相关的排版细节:
- 在 LaTeX 中的空格是有意义的,在行末的单个换行符也被视为空格。多个连续空格会被视为一个空格。
~在插入空格的同时不允许在空格处换行,通常用于人名之间,避免在名字和姓氏之间换行。- 使用
\进行强制空格插入,通常用在需要明显分隔的字符之间,例如在两个字母之间插入额外的空格,a\ b。 - 除了标准空格长度,还有一些命令可以更精细地控制排版间隙:
\!:一个负空格,缩小间距,常用于多重积分号之间,例如\int\!\int f(x,y)\,dx\,dy,当然也可以直接使用\iint\,:一个细小的空格(小于普通空格),常用于积分号中的dx之前,例如\int_a^b f(x)\,dx\::中等大小的空格(大于\,)\;:比\:更大的空格\quad和\qquad:相对较大的空格,分别是当前字体中一个字宽和两个字宽。
- 在数学公式中,空格通常会被忽略,LaTeX 会自动调整数学公式中的间距,也可以使用上面提到的
\,、\:等命令来手动调节空格。
整理一下关于LaTeX中换行相关的排版细节:
- 在 LaTeX 中连续两个换行符(即产生一个空行)会将文字分段,这是最常见的用法。多个连续空行仍然被视作一个空行。
\par命令可以用于结束当前段落并开始新段落,与空行的效果是一样的。(但是不建议使用,\par更适合用于宏定义中)- 使用
\\或\newline可以强制当前行结束并开始新的一行。两者并不等价,例如\\可以加参数:使用\\[length]可以在换行的同时调整行间距,例如\\[1cm]。 \\*在强制换行的同时不允许在换行处分页。- 在数学公式和表格中的换行有专门的机制,通常使用
\\。
首行缩进
- LaTeX 默认会对段落首行进行缩进(
\parindent的默认值为 15pt 或 1em,视文档类而定);但是存在一个例外:在\section、\subsection等章节命令之后的首段,不会缩进。这个行为是英文排版中的传统风格:章节首段顶格写,其余段落缩进。 - 通常加上
indentfirst宏包确保所有段落都应用首行缩进。 ctexart等中文文档类已经默认对所有段落设置首行缩进,以符合中文排版习惯。
字体与标点符号
- 关于字体:
- 在正文中引用一句话或者一段话应该使用斜体
\textit{}而不是引号。
- 在正文中引用一句话或者一段话应该使用斜体
- 对于引号的处理:
- 对于英文文档,通常使用 pdflatex 编译,此时不要使用常见的引号和双引号,应该使用 LaTeX 特殊的单双引号(
``和'');如果使用 xelatex 编译,有些标点符号的错误可能很难发现。 - 对于中文文档,通常使用 xelatex 编译,支持直接使用单引号和双引号标点符号
- 对于英文文档,通常使用 pdflatex 编译,此时不要使用常见的引号和双引号,应该使用 LaTeX 特殊的单双引号(
- 关于各种横线/破折号的细节比引号更加复杂,xelatex 和 lualatex 直接支持 UTF8 编码的横线/破折号,但是 pdflatex 的支持较差。最好使用 LaTeX 支持的原始方案:使用1/2/3个连续的 ASCII 字符
−:- 在数学环境中:
-(U+002D=0x2D)被自动渲染为减号−(U+2212) - 在文本环境中:
--被渲染为 En Dash–(U+2013)---被渲染为 Em Dash—(U+2014)
- 在数学环境中:
注释
LaTeX 使用 % 作为单行注释,对于多行注释则没有原生语法,除了直接使用单行注释,还有如下几种方案:
第一种方案是使用条件逻辑判断跳过大段内容,例如
1 | \iffalse |
第二种方案是使用 comment 宏包提供的专用 comment 环境,例如
1 | \usepackage{comment} |
示例文档
下面是一个单文件版本的示例文档
1 | \documentclass{article} |