整理一下LaTeX论文排版中的基本要素,从默认的article文档类开始,并不涉及具体的期刊模板。 关于数学公式、数学字体和参考文献等更具体的内容,由于比较复杂,对其单独整理。

这里主要关注技术性内容,不讨论英文论文写作等非技术性的内容。

页面布局

通常需要在使用文档时首先全局地规定一些排版参数,如字号、纸张大小、单双面等等。 比如调用 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指定是否单独成页。

文档结构

一个大型文档的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{reference.bib} % 使用 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开始。

这只是对于诸如毕业论文和书籍等大型文档的结构划分,对于一般的文档,没有必要使用完整的文档结构,例如通常都没有前言和后记,可能有附录。注意 article 文档类不支持 chapter,只有 section 以及更低的结构。各种文档都支持 part 结构,但是不常使用。

摘要

摘要环境是内置的,可以直接使用

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 % 插入中等的垂直间距

正文细节

交叉引用

在 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},它会自动给公式编号加上括号。

可以在草稿阶段使用 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{} 而不是引号。

关于图片和表格:

  • 图片尽量使用矢量图
  • 图片需要考虑到黑白打印情景,不能以颜色作为不同曲线的唯一特征,可以通过实线虚线和数据点形状等进一步区分
  • 示意图的字体大小与正文和Caption相当,不要过大或者过小
  • 习惯上把图片的标题放在图片下方,把表格的标题放在表格上方
  • 不要把图表的Caption在正文中重复,Caption是用来写“这个图表是什么”,正文对应部分是用来写“这个图表说明了什么”。

关于参考文献:

  • 不要重复引用一个论文的不同版本,例如 arXiv 和正式版本,并且需要及时更新
  • 保持期刊名称全称和缩写一致性,检查年份、卷号、页码等
  • 检查名称的大小写,确保正确和一致性
  • 不要完全依赖谷歌学术提供的信息(可能存在缺失或格式混乱)

Example

下面是一个示例文档

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
\documentclass{article}
\usepackage[letterpaper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{mathtools}
\usepackage{mathrsfs}
\usepackage{bm}
\usepackage{extarrows}
\usepackage{float}
\usepackage{indentfirst}
\usepackage{anyfontsize}
\usepackage{booktabs,multirow,multicol}
\usepackage{enumitem}
\usepackage{appendix}
\usepackage[dvipsnames]{xcolor}
\usepackage[ruled, lined, linesnumbered]{algorithm2e}
\usepackage{graphicx}
\graphicspath{
{./figure/}{./figures/}{./image/}{./images/}{./graphic/}
{./graphics/}{./picture/}{./pictures/}
}
\usepackage{subcaption}
\usepackage{epstopdf}
\usepackage[colorlinks=true,linkcolor=cyan,urlcolor=magenta,citecolor=violet]{hyperref}

\theoremstyle{plain}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{corollary}{Corollary}[theorem]
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}

\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\newtheorem{example}{Example}
\newtheorem{problem}{Problem}[section]

\theoremstyle{remark}
\newtheorem{remark}{Remark}[section]
\newtheorem{note}{Note}[section]
\newtheorem*{remark*}{Remark}
\newtheorem*{note*}{Note}

\newcommand{\keywords}[1]{\vskip 2ex\par\noindent\normalfont{\bfseries Keywords: } #1}

\title{Your Paper Title}
\author{Author-1
\thanks{xxx
E-mail: {\tt yyy}.}
\and Author-2
\thanks{xxx.
Email: {\tt yyy}.
Research supported by zzz.}}
\date{}

\begin{document}

\maketitle

\begin{abstract}
Your abstract.
\end{abstract}

\keywords{AAA, BBB, CCC}

\section{Introduction}


\section{Background review}


\section{Numerical method}


\section{Numerical results}


\section{Conclusions and future work}

\section*{Ethics declarations}
\noindent\textbf{Conflict of interest} \\
The authors declare that they have no conflict of interest.

\section*{Data Availability}
\noindent Data sets generated during the current study are available from the corresponding author on reasonable request.

\bibliographystyle{abbrv}
\bibliography{reference} % reference.bib

\end{document}

补充

arXiv 要求

把 LaTeX 源码提交到 arXiv 时需要注意,arXiv 有很多比较苛刻的限制:Uploading a paper to arXiv.org,建议生成副本进行合规处理,或者对于 Git 仓库创建一个独立的分支进行合规处理。

主要的要求/建议包括:

  • 移除源代码中的所有注释内容,因为源码会被公开;
  • 不要使用任何的子文件夹结构,例如figure/等;
  • 把不必要的内容删除,包括编译生成的pdf,LaTeX生成的杂项文件,.git/文件夹等;
  • arXiv 使用 pdflatex 进行编译;
  • 对于参考文献,arXiv 不需要.bib文件,它使用(通常在编译过程中产生的)更底层的.bbl文件,需要手动保留。

hyperref

使用 hyperref 宏包可以定制交叉引用和超链接样式。

1
\usepackage{hyperref}

这个宏包容易和其它宏包产生冲突,建议将其放在靠后的位置导入。

可以用下面的命令生成可点击的超链接

1
2
\url{url}
\url{https://www.baidu.com}

可以在添加超链接时,设置显示的文本内容

1
2
\href{url}{text}
\href{https://www.baidu.com}{Baidu}

可以用下面的命令设置样式

1
\hypersetup{colorlinks=true,linkcolor=,urlcolor=cyan}

也可以在宏包加载时直接传递样式选项

1
\usepackage[colorlinks=true,linkcolor=,urlcolor=cyan]{hyperref}

解释一下几个常见的选项:

选项 含义 说明
colorlinks 是否用颜色标记链接(若为 false,则显示彩色方框) 建议设为 true,避免方框,默认 false
linkcolor 内部链接颜色(章节、图表、公式等引用) 控制 \ref\autoref 等颜色
citecolor 文献引用颜色 控制 \cite 链接颜色
urlcolor URL 链接颜色 控制 \url\href 等外部链接
filecolor 文件链接颜色 用于指向本地文件的链接
hidelinks 隐藏所有颜色与边框 适合正式论文或投稿版本

水印

给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{todonotes}

在指定位置使用\todo{xxx}即可在页边加上备注,并且使用横线指向对应位置。 它还提供了一个命令可以生成默认图片在排版中起到占位的效果。

1
\missingfigure{xxx.}

可以给\todo{xxx}或者宏包传递颜色参数,例如

1
2
3
\usepackage[color=green]{todonotes}

\todo[color=green]{xxx}

\todo命令最好直接放在正文中,直接放在一些特殊环境中(例如图表环境的caption,定理环境等)容易导致编译错误,可以加上 inline 选项,例如

1
2
3
4
5
\begin{figure}[htbp]
\centering
\includegraphics{demo.png}
\caption{Title \todo[inline]{xxx.}}
\end{figure}

传递disable选项可以直接全局注释所有的标注

1
\usepackage[disable]{todonotes}

注意:todonotes 的颜色支持依赖 xcolor 包,如果需要在导入 xcolor 包时传递选项,最好在 todonotes 之前手动导入 xcolor 包。