最近几个月一直在忙着跑实验,写论文,博客确实也是好久没有更新了,乘着最近论文搞得差不多了,碰巧也是在排版,来记录一下使用 LaTeX 进行论文写作的一些东西。
有许多网站提供了 LaTeX 的在线练习使用,个人比较推荐 Overleaf,使用的人也比较多,不需要再下载安装。
一个 LaTeX 文档是一个以
.tex
结尾的文本文件,可以使用任意的文本编辑器编辑,完成后你可以进行编译,转化为最常见的 PDF 格式。
我们通过一个简单的示例开始:首先在 Overleaf 上创建一个新的项目,名为 hello world
,接着系统就自动创建了一个名为 main.tex
的文件并生成以下内容:
\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\title{hello world}
\author{EmoryHuang}
\date{March 2023}
\begin{document}
\maketitle
\section{Introduction}
\end{document}
第 1
行 \documentclass{article}
指明文章的类型,花括号内的文本说明此文章的类型为 article
,需要注意的是 \documentclass
命令必须出现在每个 LaTeX 文档的开头。
除了 article
其他的类型还有 report
, book
等等。
此外,我们还可以通过
[]
添加选项来进一步完善文档信息,例如 \documentclassa4paper,12pt{article}:设置纸张大小为 A4,主要文字大小为 12pt
第 2
行 \usepackage{graphicx}
添加了一个名为 graphicx
的宏包,就和 python 中的 import xx
一样。
需要注意的是,%
代表评论,之后同一行的字都不会被输出,类似地,可以使用 Ctrl+/
来批量注释或批量取消注释。
此外,声明使用包的位置应该放置在文档的前导命令的位置,即
\documentclass{article}
与\begin{document}
之间,并使用\usepackage[options]{package}
来引用包。
第 4,5,6
行添加了标题、作者、日期信息,并通过第 10
行的 \maketitle
展现在文章中。
各位可以试试看在花括号内添加不同空格时的编译结果,观察实际输出结果。
% 下面两个编译结果是一样的
\title{hello world}
\title{hello world}
第 8
行和第 14
行分别使用\begin{document}
和 \end{document}
命令将你的文本内容包裹起来。任何在 \begin{documnet}
之前的文本都被视为前导命令,会影响整个文档。任何在 \end{document}
之后的文本都会被忽视。
第 12
行定义了一个名为 Introduction 的章节名。
如果需要的话,你可能想将你的文档分为章(Chatpers)、节(Sections)和小节(Subsections)。下列分节命令适用于 article 类型的文档:
\section{...}
\subsection{...}
\subsubsection{...}
\paragraph{...}
\subparagraph{...}
我们添加类似下面的章节:
\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\title{hello world}
\author{EmoryHuang }
\date{March 2023}
\begin{document}
\maketitle
\section{Introduction}
This is the introduction.
\section{Methods}
\subsection{Stage 1}
The first part of the methods.
\subsection{Stage 2}
The second part of the methods.
\section{Results}
Here are my results.
\end{document}
这时你的文档应该是这个样子:
如图所示,你并不需要手动添加章节号。但是如果你不想要章节号,可以使用
\section*{}
。
摘要同样需要使用 \begin{abstract}
和 \end{abstract}
命令将你的内容包裹起来
\maketitle
\begin{abstract}
This is the abstract
\end{abstract}
LaTeX 默认每个章节第一段首行顶格,之后的段落首行缩进。如果想要段落顶格,在要顶格的段落前加 \noindent
命令即可。如果希望全局所有段落都顶格,在文档的某一位置使用 \setlength{\parindent}{0pt}
命令,之后的所有段落都会顶格。
在排版时,另起一页的方式是
\newpage
此外,多个连续空格在 LaTeX 中被视为一个空格。多个连续空行被视为一个空行。空行的主要功能是开始一个新的段落。通常来说,LaTeX 忽略空行和其他空白字符,两个反斜杠(\\
)可以被用来换行。
\documentclass{article}
\usepackage{graphicx} % Required for inserting images
\title{hello world}
\author{EmoryHuang}
\date{March 2023}
\begin{document}
\maketitle
\begin{abstract}
This is the abstract
\end{abstract}
\section{Introduction}
This is the first paragraph.
This is the second paragraph.
\section{Methods}
\subsection{Stage 1}
The first part of the methods.
\noindent The first part of the methods.
\subsection{Stage 2}
Multiple consecutive spaces are treated as one space in LaTeX.
\section{Results}
Here are my results.
\end{document}
LaTeX 中同样支持有序列表和无序列表:
\begin{itemize}
和 \end{itemize}
\begin{enumerate}
和 \end{enumerate}
\begin{enumerate}
\item First thing
\item Second thing
\begin{itemize}
\item A sub-thing
\item Another sub-thing
\end{itemize}
\item Third thing
\end{enumerate}
如果你需要中文,可以使用 CTeX 宏包。只需要在文档的前导命令部分添加:
\usepackage[UTF8]{ctex}
\textit{words in italics}
\textsl{words slanted}
\textsc{words in smallcaps}
\textbf{words in bold}
\texttt{words in teletype}
\textsf{sans serif words}
\textrm{roman words}
\underline{underlined words}
normal size words
{\tiny tiny words}
{\scriptsize scriptsize words}
{\footnotesize footnotesize words}
{\small small words}
{\large large words}
{\Large Large words}
{\LARGE LARGE words}
{\huge huge words}
关于使用 LaTeX 写数学公式的部分这里就不再详细介绍了,如果你想了解更多可以去看我的另一篇文章 使用 LaTeX 写数学公式 或者也可以在 这里 进行查询。
目前有许多生成 LaTeX 表格的在线工具,这里推荐一个:
我们只需要把在 Excel 里面创建好的表格直接粘贴到里面就行。
尽管这样很方方便,但个人建议还是应当对表格的语法有所了解,以便做出针对性修改。
下面还是通过一个示例来说明:
\begin{table}[]
\begin{tabular}{llr}
\hline
\multicolumn{2}{c}{Item} & \\ \cline{1-2}
Animal & Description & Price (\$) \\ \hline
Gnat & per gram & 13.65 \\
& each & 0.01 \\
Gnu & stuffed & 92.50 \\
Emu & stuffed & 33.33 \\
Armadillo & frozen & 8.99 \\ \hline
\end{tabular}
\end{table}
\begin{tabular}{...}
一般来说,我们需要再定义表格时的花括号中指定表格的列及其对齐方式:
l,r,c
分别表示左、右、居中对齐|
表示列的竖线例如,{lll}
会生成一个三列的表格,并且保存向左对齐,没有显式的竖线;{|l|l|r|}
会生成一个三列表格,前两列左对齐,最后一列右对齐,并且相邻两列之间有显式的竖线。
在表格中一般存在以下标记:
&
用于分割列;\\
用于换行;\hline
表示插入一个贯穿所有列的横着的分割线;\cline{1-2}
会在第一列和第二列插入一个横着的分割线。个人更喜欢使用 booktabs
来写表格,感觉整体上会更美观,间距也更舒服。
你只需要把 \hline
和 \cline
替换成 \toprule
,\midrule
,cmidrule
和 \bottomrule
即可。
\usepackage{booktabs}
\begin{table}[]
\begin{tabular}{llr}
\toprule
\multicolumn{2}{c}{Item} & \\ \cmidrule{1-2}
Animal & Description & Price (\$) \\ \midrule
Gnat & per gram & 13.65 \\
& each & 0.01 \\
Gnu & stuffed & 92.50 \\
Emu & stuffed & 33.33 \\
Armadillo & frozen & 8.99 \\ \bottomrule
\end{tabular}
\end{table}
单张图片
在导入图片之前,我们需要引入 graphicx 包
\usepackage{graphicx}
\begin{figure}[htbp]
\centering
\includegraphics[scale=0.2]{Figure 1.png}
\caption{A simple example.}
\label{fig:fig1}
\end{figure}
htbp 是位置参数:
\centering 将图片放置在页面的中央。如果没有该命令会默认左对齐。
\includegraphics{...} 命令可以自动将图放置到你的文档中,花括号中写入图片的相对位置。
scale=0.2 是可选参数,scale 能够将图片按比例缩小。当然你也可以使用 width=5cm 来控制。
\caption{...} 命令定义了图片的标题,同样的,你不需要手动写入编号。
\label{fig:fig1} 命令创建了一个可以供引用的标签。
多张图片也是类似的,需要导入 subfigure 包,并使用 \subfigure:
\usepackage{graphicx}
\usepackage{subfigure}
\begin{figure}[tb]
\centering
\subfigure[subfigure 1]{
\includegraphics[scale=0.2]{Figure 1.png}}
\subfigure[subfigure 2]{
\includegraphics[scale=0.2]{Figure 1.png}}
\caption{An example of subfigure}
\label{fig:fig2}
\end{figure}
在论文写作过程中,我们经常会使用引用,当然在 LaTeX 中也非常方便。例如,在前面的例子中,我们在插入图片时为其定义了一个标签 fig:fig1,之后,我们就可以在任何地方引用它:
% use \ref{...}
As shown in Figure \ref{fig:fig1}
当然,不只是图片,应用场景同样还有表格、公式等,只要你使用 \label{...} 创建标签并使用 \ref{...} 引用即可。
在引用参考文献之前,我们通常都会常见一个 bibTex 文献库用来引用,它通常是长这个样子的,包含标题、作者、会议、年份等信息:
% my_example.bib
@inproceedings{huang2023example,
title = {this is title},
booktitle = {Proceedings of the 28th {{ACM SIGKDD Conference}} on {{Knowledge Discovery}} and {{Data Mining}}},
author = {Zhang, San and Li, Si},
year = {2022},
pages = {1463--1471},
publisher = {{ACM}},
address = {{Washington DC USA}},
doi = {...},
isbn = {...}
}
在创建了自己的文献库之后,就可以在正文中使用 \cite{...} 引用,花括号中的内容为 Citation Key,在这里是 huang2023example,和我们在文献库中的第一相同。
According to \cite{huang2023example}
...
\bibliographystyle{ACM-Reference-Format}
\bibliography{my_example}
在列举最后的参考文献时,只需要使用 \bibliographystyle{...} 定义样式并使用 \bibliography{...} 连接到你的文献库即可。
上面介绍了那么多其实只是了解一个使用大概而已,真正写论文的时候我们肯定还是需要使用对应期刊的模版,这里以 ACM 模版为例,你可以在这里下载:https://www.acm.org/publications/proceedings-template。
下载完成之后,进入 samples 文件夹,里面提供了很多模版以及对应的 PDF 阅览文件,这里我们常用的其实就是两个:
sample-acmsmall:单列模版
sample-sigconf:双列模版
找到你需要的 .tex 文件,直接放到编辑器编辑即可。