打开网易新闻 查看精彩图片

LaTeX 是一种基于 TeX 的排版系统,已经成为大多数科技领域(STEM)专业排版的标准。事实上,很多数学、物理和计算机科学相关的期刊和出版社,仅仅接收 LaTeX 排版文章。

和所见即所得( What You See Is What You Get:WYSIWYG)的 word 排版系统不同,LaTeX 需要编写代码,然后编译生成 PDF 文件。虽然学起来有一定的难度,但一旦掌握了 LaTeX,文章排版将会更加高效和灵活。

打开网易新闻 查看精彩图片

▲ TeX 开发者高德纳(上右),LaTeX 开发者莱斯利·兰伯特(上左)

关于 LaTeX 的介绍,网上已经有很多,但是我发现即便对于已经熟练掌握了 LaTeX 的写作者来说,也会忽略掉一些 LaTeX 的强大的功能。

本文主要聊聊一些能使得 LaTeX 排版更加有效和简洁的设计模式,以此有效避免错误的产生。这些模式只是建议,不一定要非得严格遵守。有时候在一个论文模板中合适的模式在另外一个模板中可能不合适,比如在博士论文模板中定义的某些符号的宏在另外的论文模板(如论文摘要)中可能行不通。我的这些建议都源于我在机器学习和计算机科学的论文准备过程中所积累起来的经验。具体应用场景,请遵循你所在学科的排版规范。

1. 从软件工程角度来看 LaTeX

1. 从软件工程角度来看 LaTeX

LaTeX 在日臻完善,有很多方便作者的自定义功能,因此可以把排版 LaTeX 文稿和软件工程相类比。这个类比不是非常完美:一个软件往往需要数十年的维护,但是我们的论文很快就可以发表了。但是无论如何,两者在设计模式上是类似的。

不要重复造轮子:为一些重复出现的模块,比如数学符号等操作,定义宏。你可能在刚开始写论文的时候,用 代表概率。但是有一天你希望让概率的符号更加清晰,就用查找和替换的方式把 换掉。这在实际操作中会产生很多错误,从而导致符号表示上的不一致。事实上我们如果在头文件中定义 \newcommand{\probability}{P},就可以很容易做到在正文中对 的替换。我们要时刻保持符号的一致,并按照自己的意愿随时更换符号。

另外可能会重复代码还有这样的场景,我们有时候会在正文陈述定理内容,但是其证明放在附录中,优雅的做法是应用上面方法来调用正文中的定理。同样,如果你有在图题中重复的模板(例如,相同的图例),考虑定义一个宏来整合它。

关注编译过程中的错误和警告:LaTeX 编译器会对各种常见的问题发出警告,如引用未定义的参考文献等等。我建议趁热打铁,立即修复这些警告。检查这些问题,如果确实如此,尽快移除该引用。

编译中出现的错误应立即更正,文档前面的错误会导致剩余部分不能正常编译,从而产生错误的或者不可预知的编译结果。所以错误一旦出现就要立即修正,避免后续反复调试,从而可以专心撰写论文。

不过一些优秀的编译器,比如基于云的协作式 LaTeX 编辑器,会执行模糊编译,这样即便有错误还是可以完成编译。

自动检查:执行自动检查可以发现一些常见错误。此处不必局限于代码,可以利用一些外部的开发工具进行自动检查。比如拼写检查,Matt Might 就写了一些 shell 脚本用来检查语态(被动语态)和一些模棱两可的词汇用法方面的问题。

掌握好至少一种 IDE:掌握好一款适用于自己的 LaTeX 集成开发环境。由于可以实时同步和注释,Overleaf 非常适合协同编辑,我很喜欢用它。但是它缺少某些功能,并且比本地编译器要慢一些,因此我一般会在 IntelliJ 中安装 IDEA 插件。当然还有很多其他优秀的 IDE,我们需要做的是选择至少一个适合自己的并掌握。

打开网易新闻 查看精彩图片

▲ Overleaf是基于云的协作式 LaTeX 编辑器

代码管理:毫无疑问,我们一般应用诸如 Git 的版本控制系统来管理代码,并适时推送更新。如果你的文件损坏或者被删除,你就会意识到代码管理的重要性。因为可以轻松恢复到早期的版本,我可以对论文进行大量的编辑。当同时需要一个论文的多个版本时,比如需要研讨会和学术会议两个版本,我们可以分别编辑多个部分,然后根据自己需要进行合并。这里还有提下 Overleaf,你会对它内置的版本控制系统比较满意。

2. 聚焦数学公式

2. 聚焦数学公式

LaTeX 有非常卓越的数学公式排版功能,因此在数学及其相关学科中应用非常广泛。

留意数学公式与标点:数学公式和文本要融为一体,因此需要适时断句。如果一个句子以公式结尾,公式后面必须要有句号。通常情况下,行内公式($…$)可以随时断句。不过公式环境($$…$$ 或者 \begin{equation}…\end{equation})也要注意加标点。关于这点,未来还会有单独文章做介绍。

打开网易新闻 查看精彩图片

▲ mathpix 工具

这里要介绍两个好用的工具:数学公式识别 mathpix Snip 和 识别手写出符号 Detexify。

前者可以对截图中的数学公式自动转化为 LaTeX 命令,甚至可以进行函数图形的绘制。

打开网易新闻 查看精彩图片

▲ Detexify 应用

而后者是,如一个符号你还不知道它对应的 LaTeX 命令,可以在 Detexify 中画个草图,它就会进行搜索给出一系列可能对应代码选项。

3. LaTeX 排版

3. LaTeX 排版

LaTeX 鼓励作者制定文章的结构,而把排版细节留给 LaTeX。这样操作一般都没有问题,但有时候会使得排版结果出错。

语义问题:如果想要强调一段文字,请用 \emph{},而不要用 \textit{}。虽然他们都可以输出斜体,但是 \emph{} 会自动在斜体和罗马体之间切换,如 \emph{emphasis \emph{nested} works} 生成 “emphasisnestedworks”,但是 textit{italics \textit{is} idempotent} 则生成“italics is idempotent”。\emph{} 这一功能定理这类环境中会很有用,可以让斜体单元的一部分是罗马体。

**在缩写的句点后面加空格:**LaTeX 会在句子后面自动加空格,以增加可读性。但如果碰到缩写中的句点,比如在 e.g. this 中, 会自动在 e.g. 后面加个空格。为了避免这一问题,可以在后面加一个\,即 e.g.\ this。

有时候 LaTeX 会错误地以为一些大写字母后面的句点不是一个句子的结尾,此时需要插入一个\@来结束整个句子,比如 LaTeX was invented in the US\@.

4. 认真对待插图

4. 认真对待插图

LaTeX 拥有非常优秀的图片处理功能,包括图像的浮动环境,插入外部图片的包,或者直接在文稿中生成矢量图。

采用矢量图:应该尽可能使用矢量图图形,比如 SVG 或 PDF 文件,而避免使用位图,如 PNG 或 JPG 格式。

矢量图能够可以在不丢失保真度的情况下以高分辨率展示图片,从而保证读者们可以任意缩放图片,并高质量地打印图片。同时在保存文件时矢量图更省空间,因此我们一般把平面图形和示意图存成矢量图。位图文件适合拍照或者屏幕截图。

匹配文章格式:虽然可以在 matplotlib 中生成外部图片,但是图片应该和文章格式相符,比如应该和文章其他部分的内容采用相同的字体和字号,应该保存成文章中所需要的尺寸。LaTeX 可以对图片进行放缩从而可以保证图片的尺寸与文字保持一致。很多和 matplotlib 类似的包可以调整图片的尺寸,使得当图片尺寸大的时候,可以增加一些坐标系标签将图片尺寸优化。

图片自成一体:读者们很可能会跳过文章的细节直接跳到图的部分,也可能会忘掉前面的相关介绍内容,甚至有些读者只看图的标题,并以此来寻找文章的核心内容。因此最好做到每个图自成一体,包含清晰的坐标轴、图例,并在图的标题中包含理解图的内容所需要的额外的信息。

5. 参考文献及其引用

LaTeX 最初是为学术论文写作而生,参考文献及其引用非常方便,只是还有一些细节应该特别关注。

尽量采用 :作为 的升级, 是 LaTeX 中最新的文献目录管理工具。 中加入了很多新的功能,比如新的条目 @online,以及一些语种的本地化。但如果你向某个杂志或者会议投稿,则必须使用规定的 LaTeX 模板,以及规定的文献管理工具。

使用正确的引用命令:要区分带方括号的引用和文内引用。如果是带方括号的引用,用命令 \parencite (BibLaTeX) 或者 \citep (BibTeX); 如果是文内引用,用 \textcite (BibLaTeX) 或者 \citet (BibTeX)。要尽量避免嵌套括号,比如 \citep[see][]{gleave2020} 会生成 “(see Gleave et al, 2020)”,而 (see~\citep{gleave2020}) 则生成 “(see (Gleave et al, 2020))”。我们尽量不要用后者。

不可断行空格的使用:引用的内容应该和引用它的句子或者词语处于同一行,因此要用到不可断行空格~,以避免孤立被引用的内容,比如 Knuth developed LaTeX~\citep{latex}。

文献目录管理:无论论文结果对错,如果所列参考文献比较草率,读者或者论文评阅人可能会认为整个论文都是如此。为保证所有文献条目的一致性,应注意参考文献题目的大小写。如果参考文献题目中包含首字母缩写时,比如 {DQN} 就必须用{ }括起来。选择正确的条目类型也很重要,比如 @inproceedings 代表会议论文,@article 表示期刊论文,@misc 表示预印本。最后,也是最基本的问题,要保证文献目录的一致性。作者名字和期刊名称要保持一致,即要么全部简写,要么都写全名,尤其要注意人名中的中间名。一般在文献目录中要么全加上文献的 DOI,要么全部不加。

1. 《How to Write a Scientific Abstract in Six Easy Steps》,Steve Easterbrook.

2. 《Basic Submission Checklist and one Approach to Writing》,Amy Tabb.

3. 《Responding to Peer Review》,Matt Might.


本文作者:[遇见数学翻译小组核心成员] jiahl 朋友