LaTeX 论文排版笔记
整理一下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}
还有一种适合Ipad阅读的布局 1
2
3
4
5
6\usepackage{geometry}
\geometry{
paperwidth=7in,
paperheight=10in,
includefoot,
margin=8mm}
标题页
需要在导言区提供基本信息 1
2
3\title{<title>} % 必选,缺失会报错
\author{<author>} % 可选,缺失会警告
\date{<date>} % 可选
作者可以有多个,不同作者之间使用\and
命令相连,并且可以使用\thanks
命令附带联系方式(联系方式会出现在脚注中)
1
2
3\author{ Mary\thanks{E-mail:****@***.com}
\and Ted\thanks{Corresponding author}
\and Louis}
日期可以直接使用当前日期(英文),也可使用任意格式来指定日期,此时显示内容与输入的是完全一致的
1
2
3
4
5\date{\today}
\date{October 1, 2020}
\date{Dec. 31, 2022}
\date{2022/12/31}
如果需要中文的日期和格式,可以使用zhnumber宏包(需要在中文文档中,否则缺字体等),使用如下
1
2
3\date{\zhtoday}
\date{\zhdate{2019/10/11}}
此时zhnumber会自动调整日期的显示格式。
使用如下命令生成标题页 1
\maketitle
注意:对于article默认不会为标题部分单独成页,report和book则会单独成页,也可以在文档类引入时通过选项titlepage/notitlepage
指定是否单独成页。
摘要
摘要环境是内置的,可以直接使用 1
2
3\begin{abstract}
...
\end{abstract}
注意,默认情况下abstract环境只在article和report中可用,摘要一般紧跟着\maketitle
使用,如果标题页单独成页,则摘要也会单独成页。
关键词的使用在不同的模板中有不同的实现,有的模板直接提供了独立命令,例如
1
2
3
4
5
6
7\begin{abstract}
The abstract goes here.
\end{abstract}
\begin{IEEEkeywords}
IEEEtran, journal, \LaTeX, paper, template.
\end{IEEEkeywords}
可以简单定义一个\keywords
命令 1
\newcommand{\keywords}[1]{\vskip 2ex\par\noindent\normalfont{\bfseries Keywords: } #1}
使用时例如 1
2
3
4\begin{abstract}
The abstract goes here.
\keywords{IEEEtran, journal, \LaTeX, paper, template}
\end{abstract}
完全不使用模板和自定义样式,也可以如下简单粗暴地实现
1
2
3
4
5
6
7
8
9
10
11\noindent
\textbf{Abstract:}
The abstract goes here.
\bigskip % 插入大的垂直间距
\noindent
\textbf{Key words:}
IEEEtran; journal; \LaTeX; paper; template.
\medskip % 插入中等的垂直间距
文档结构
一个大型文档的main.tex正文部分结构如下,各个部分的详细内容会拆分为单独的.tex文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35\begin{document}
\maketitle
\frontmatter % 前言
\input{chapters/abstract.tex}
\tableofcontents
% \listoffigures
% \listoftables
\input{chapters/chapter0.tex}
\mainmatter % 正文
\input{chapters/chapter1.tex}
\input{chapters/chapter2.tex}
\input{chapters/chapter3.tex}
\input{chapters/chapter4.tex}
% 参考文献
\bibliography{bib/ustc} % 使用 BibTeX
% \printbibliography % 使用 BibLaTeX
\appendix % 附录
\input{chapters/complementary.tex}
\backmatter % 后记
\input{chapters/acknowledgements.tex}
\input{chapters/publications.tex}
\end{document}
其中用下面的命令将文档分成三部分 1
2
3
4
5\frontmatter % 前言
\mainmatter % 正文
\backmatter % 后记
使用下面的命令生成目录以及图表的单独目录 1
2
3
4
5\tableofcontents % 目录
\listoffigures % 图表目录
\listoftables % 表格目录
使用下面的命令划分后面的部分为附录
1 | \appendix |
此后的章节编号改用拉丁字母,从A开始。
这只是对于诸如毕业论文和书籍等大型文档的结构划分,对于一般的文档,并没有必要使用完整的文档结构,例如通常都没有前言和后记,可能有附录。
参考文献
这部分内容比较多,将其拆分为一个单独的笔记了。
补充
交叉引用
在 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}
,它会自动给公式编号加上括号。
空格与换行
整理一下关于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]
。 \\*
在强制换行的同时不允许在换行处分页。- 在数学公式和表格中的换行有专门的机制,通常使用
\\
。
水印
给PDF文件加上水印也是一个常见的需求,比如标记文档的来源,或者标记当前版本为草稿等。
可以使用下面的宏包和代码实现 1
2
3
4
5\usepackage{draftwatermark}
\SetWatermarkText{Draft} % 设置水印内容
\SetWatermarkLightness{0.9} % 设置水印透明度 0-1, 1为透明看不见
\SetWatermarkScale{0.6} % 设置水印字体大小 0-1
注意:
- 默认给所有页加水印,导入宏包时加参数firstpage则只有第一页添加水印;
- 水印的文字只会在页面中央出现一次,不会循环出现;
- 这个宏包提供的水印在图片上不会出现,图片会覆盖水印,如果需要保证在顶层的水印,也可以通过tikz实现。
例如可以在水印中添加作者(标注来源),编译日期(区别版本)等信息
1
2
3
4
5
6
7\usepackage{draftwatermark}
\usepackage{datetime}
\newdateformat{tmpdate}{\THEYEAR-\twodigit{\THEMONTH}-\twodigit{\THEDAY}}
\SetWatermarkText{<Author> \\ \texttt{\tmpdate\today}}
\SetWatermarkLightness{0.9}
\SetWatermarkScale{0.6}
待办
LaTeX有一个todonotes宏包,可以用来进行一些标注 1
\usepackage[color=green]{todonotes}
在指定位置使用\todo{xxx}
或\todo[color=green]{xxx}
即可在页边加上备注,并且使用横线指向对应位置。
它还提供了一个命令可以生成默认图片在排版中起到占位的效果。
1
\missingfigure{xxx.}
需要注意的是,\todo
命令最好不要放在一些特殊环境中(例如图表环境的caption),否则很容易导致编译错误。
arxiv要求
把Latex源码提交到arxiv时需要注意,arxiv有很多比较苛刻的限制:arxiv的LaTeX要求,建议生成副本进行合规处理,或者对于git仓库创建一个独立分支进行合规处理。
主要的要求/建议包括:
- 移除源代码中的所有注释内容,因为源码会被公开;
- 不要使用任何的子文件夹结构,例如
figure/
等; - 把不必要的内容删除,包括编译生成的pdf,Latex生成的杂项文件,
.git/
文件夹等; - arxiv使用
pdflatex
进行编译; - 对于参考文献,arxiv不需要
.bib
文件,它使用(通常在编译过程中产生的)更底层的.bbl
文件,需要保留。