此文用于分享一些用 LaTeX 写学术论文的一些小技巧,并会不断更新中 。。。
笔者安装的是 CTeX 和 TeXStudio 软件,这两个软件配合很好使用。尤其是 TeXStudio 使用起来很方便,撰写论文是效率很高。
字体
论文中正文都为模板默认的字体,但是其中也有一些特殊。
TeX | 显示 | 格式 |
---|---|---|
\emph{} | text | 强调 |
\textbf{} | text | 加粗 |
\mathbf{} | ABCD | 公式加粗 |
\mathrm{} | ABCD | 字母->文本 |
\mathbb{} | ABCD | 空心符号 |
\mathcal{} | ABCD | 花体符号 |
{\color{颜色} } | ABCD | 彩色字体 |
\hat{} | a^ | 三角 |
\bar{} | a¯ | 横线 |
\dot{} | a˙ | 点 |
\vec{} | a⃗ | 向量 |
公式编号
在论文中,公式一般都需要编号,latex 已经能自动对论文进行编号,给作者提供了方便。而一些公式不需要显示编号,仅需要在公式的每一行最后(换行之前),加入 \nonumber
或 \notag
\begin{equation}
A_{t+1} = \arg\min_A \ \mathcal{L}(A,E_t,\Delta\tau_t,W_t,b_t), \nonumber
\end{equation}
有时候,一个多行的公式,其实只需要一个编号。如果使用 align
环境,则会在每一行出现一个编号,又需要手动加\nonumber
去除编号。其实,只需要如下
\begin{equation}
\begin{aligned} \label{eq:***}
...
\end{aligned}
\end{equation}
如此,公式只有一个编号,而且其位置也在垂直居中的位置,而不是最后一行。
另外,有时候确实需要多行公式,每行一个编号,但是不需要对齐,默认居中即可,使用如下
\begin{equation}
\begin{gathered}
...
\end{gathered}
\end{equation}
表格
表格在论文中很常用。一般的表格很容易使用。但是其中一些自定的格式,跨行、跨列、列宽等。可能需要额外的工具包\usepackage{multirow}
和\usepackage{booktabs}
,
\begin{table}[htbp]
\caption{Title of table} \label{tab:table}
\centering
\addtolength{\tabcolsep}{-0mm} % 控制列间距
\begin{tabular}{ccccc}
\toprule[0.75pt] % package booktabs
\multicolumn{4}{c}{table head} \\
\midrule[0.5pt] % package booktabs
\multirow{4}{*}{text} & 1 & 2 & 3 & 4 \\ % package multirow
& 5 & 6 & 7 & 8 \\
\cmidrule[0.5pt]{2-4} % package booktabs
& 9 & 10 & 11 & 12 \\
& 13 & 14 & 15 & 16 \\
\bottomrule[0.75pt] % package booktabs
\end{tabular}
\end{table}
图片格式
latex 最初是只支持 eps 格式的矢量图片,但是目前已经发展得比较完善,可以兼容许多格式,jpg, png, pdf 等格式的图片均可,可惜需要 pdflatex 编译才能完成。但是 pdflatex 编译时又不支持 eps 格式的矢量图。其实,只要在导言区加入
\usepackage{epstopdf}
\usepackage{epsfig}
这样一来,pdflatex 可以编译所有格式的图片导入,而且即使是 eps 图,也会被转化为 ***-eps-converted-to.pdf,然后在导入论文中显示。
超链接·书签
latex 编译之后,默认是没有书签的,而且一些引用(公式、图片、参考文献)都只是数字,并没有超链接。但是,有时候有超链接的话,查看论文内容比较方便,这也是电子版的论文查阅的优势,相比于纸质的论文。
使用如下包
\usepackage{color}
\usepackage{hyperref}
\hypersetup{colorlinks, bookmarks, unicode} $ 彩色的链接显示,带书签
默认的引用颜色,图片,公式都为红色;参考文献为绿色。
算法
学术论文中有时需要用一个表格,总结算法的步骤,所以需要在 *.tex 文件 导言区加入
\usepackage{algorithm}
\usepackage{algorithmic}
\renewcommand{\algorithmicrequire}{ \textbf{Input:}} % Input 代替 Require
\renewcommand{\algorithmicensure}{ \textbf{Initialize:}} % Initialize 代替 Ensure
\renewcommand{\algorithmicreturn}{ \textbf{Output:}} % Output 代替 Return
而在正文中,则使用如下语句定义一个算法表格
\begin{algorithm}
\caption{Title of the Algorithm}
\label{algo:ref}
\begin{algorithmic}[1]
\REQUIRE some words. % this command shows "Input"
\ENSURE ~\\ % this command shows "Initialized"
some text goes here ...\\
\WHILE {\emph{not converged}}
\STATE ... \\ % line number at left side
\ENDWHILE
\RETURN this is the lat part. % this command shows "Output"
\end{algorithmic}
\end{algorithm}
参考文献
参考文献导入使用 bibtex 进行编译。首先需要到学术网站上,比如 Google Scholar,IEEE,Springer,Elsevier,ScienceDirect,Wiley,Web of Science 等,下载对应论文的引用(一般有按钮直接导出参考文献export citation),可以选择不同的格式(比如 Bibtex,Endnote,NoteExpress,RefMan,RefWorks 等)。
我最喜欢用 bibtex,因为可以直接复制引用的元数据文本,然后直接粘贴到 *.bib 文件中,或是导入到 NoteExpress 或 EndNote 参考文献维护软件中,进行管理。
当一篇论文需要几十篇的引用时,如果再用手动一个一个添加引用到 *.bib 文件中的方式就不方便了;尤其在修改论文是需要删除其中某一篇引用,或是需要删除其中重复添加的引用(会引起编译错误)的情况下,操作会很麻烦。所以,建议先将论文的引用全部导入到 NoteExpress 或 EndNote 中,统一进行管理(可以排序,避免冲重复添加),之后再一起导出参考文献引用数据到 *.bib 文件中,进行编译。
这样做的好处是,可以在软件(比如 NoteExpress)中直接找到需要的引用标识 \cite{},而不再需要手动查找。
复制 bib 引用之后,在 LaTeX 编辑器中直接粘贴,即可完成参考文献的引用。
另外,参考文献在论文的最后一页通常是不满页的,所以需要平衡一下左右两栏(一般论文为双栏格式)的参考文献数量,使用工具包
\usepackage{balance}
在 *.tex 中定义参考文献的部分,加入
\balance % balance the reference layout in last page manually
\bibliographystyle{spmpsci} % style of reference
\bibliography{reference} % name your bibtex file
用 LaTeX 进行论文的批注
Word 可以很方便地进行文章的批注,特别是多人写作修改论文时,其功能非常方便。而 LaTeX 貌似只能在 pdf 上手动添加批注,并没有 Word 便捷。其实已经开发好的宏包 changes 供我们使用(网上可以直接下载,系统的 tex 安装包也自带)。Changes 包可以自定义一些添加批注(增、删、改)的格式,如果对 latex 的熟练度要求也不高,可以推荐使用。
%% if you want to remove all changes commands in tex file, use "delcmdchanges.bash [-i] [-h] <inputfile> <outputfile>"
\usepackage[draft]{changes} % draft or final
\definechangesauthor[name={Xue Shengke}, color=orange]{XSK}
\begin{document}
...
This is \added[XSK]{new} text.
This is \deleted[XSK]{unnecessary}text.
This is \replaced[XSK]{normal}{bad} text.
\listofchanges
...
\end{document}
如果是 draft 格式,会显示批注样式;但是如果是 final 格式,会接受批注的所有修改。
draft
final
\listofchanges
会生成一个表格,说明某个作者,修改了多少处(需要编译两次,显示才正常)。
如果到了论文最后定稿的阶段,想把 changes 的命令全部从 tex 源文件中移除,只要在命令行使用
delcmdchanges.bash [-i] [-h] <inputfile> <outputfile>
即可生成删去所有批注命令的 tex 文件。
\begin{document}
...
This is new text.
This is unnecessary text.
This is normal text.
...
\end{document}