强迫症玩转 LaTeX

Dr HowDr How

相比@李阿玲小姐,我在 LaTeX 方面绝对是菜鸟。这次终于忍不住在这个专栏下发文,是因为在「我大三,学计算机,写了一篇paper,并上传到arxiv上面,但是为什么老师说先把paper在arxiv上删掉?」这个问答中看到两篇论文。题主的那篇,内容和语言都让人无法直视,不过这里我只说格式。@余天升的答案里也贴出一篇他觉得「格式结构完全正确」的论文,点开一看,也是满满的槽点。

很久以前我回答过「毕业论文的格式要求合理么?」其中提到打磨格式要半年,很少有人会相信。我不敢说自己的论文格式有多么标准,但是想到我改文章时一直在纠结的那些细枝末节,再看看上面那两篇文章……如果这也叫做「写论文」,那我一定是强迫症晚期……

我写论文用的是 LaTeX,相比 Word 来说,已经不需要那么关心格式了。但我还是列出一些自己及周围同事平时改文章时会在意的细节。其中可能会暴露出我使用 LaTeX 时的一些坏习惯或错误理解,还请各位高手能够指出。

  • 数学符号不可以出现在行首。但是 LaTeX 的自动排版免不了出现下面的情况:
    此时,需要把 rank $3$ 换成 rank~$3$,用 ~ 代替空格,禁止 LaTeX 在空格处换行。行文时,以一个数学符号开始一个句子,也是不好的。但是,把所有 $ 前面的空格换成 ~,听说也不是什么好办法。
  • 交叉引用和参考文献的编号不能在行首。比如 Theorem 1 或者 See [Knu90] 的空格处,不可以换行。方法如上,用 ~ 代替空格。如 I. Newton 这样的姓名缩写,也应该写成 I.~Newton。
  • 对于 i.e.,etc.,e.g. 这样的缩写,小写字母后的句点会被当作句子的结束,之后的空格会变成较大的句间空格。评论中盛文博指出,此处应该用 i.e.\ ,etc.\ ,e.g.\ (斜杠+空格),不是 ~,因为这里可以换行。
  • 注意调整括号的大小。对于很高的公式,比如分式,直接用 ( ) 不能将内容括起来。我以前会用 \left( 和 \right),后来被导师纠正了:这种简单粗暴的手段,效果并不好。现在,我基本会把 \big \bigg \Big \Bigg 都试试,看哪个舒服。
  • 数字用数学环境,哪怕只是一个 1 或者 0,只要是数字就用数学环境。如果没有养成这个习惯,碰到 -1 这样的东西,很多人一眼看出这里你用错了。如果这个数字在 12 以内,又没有数学意义,最好用文字(one two three)代替。
  • 字母 L 的小写区分度不高,经常用 \ell 代替。还有许多其他类似的 trick。
  • 数学符号是斜体,文字是正体。如果你用一个单词,比如 eff 做下标,那么这个单词应该是正体,用 \text 就可以了。
  • 定理是斜体,如果你在定理里写了一个公式,其中用单词做了下标,那么 \text 会把这个单词变成斜体。这是不可以的,你需要在 \text 里再用 \textrm,把他强制为正体。
  • 特殊数学函数,比如 sin cos log exp 之类是正体,且与变量间有间距。为此你需要用 \sin 而不是 sin。自己定义的数学函数用 \DeclareMathOperator 声明。
  • 数学公式是一个语法成分,有标点符号,什么地方断行有讲究。具体参考 在用LaTeX排版的数学公式中,有时公式后面会跟一个逗号,有时不用,这是为什么呢?(如下图所示)是不同模板自己的规定吗?还是跟不跟逗号是一件无关紧要的事
  • 数学公式的对齐,eqnarray 的效果是这样的
    这是不可以的。PracTeX Journal 有文章专门讨论这个问题:Avoid eqnarray!一般用 amsmath 的 align 环境来替代。ams 还有许多应对跨行公式的神器。
  • 多重下标尽量避免,哪怕影响行文也要尽量避免。实在不行的,也要注意哪些字母适合缩小,哪些字母缩小就没法看了。
  • 积分的正确写法是 \int_0^1 f(x) \, dx ,这里的「\,」加入了一个很小很小的空格,区别如下图所示。许多人会忽略,但是许多人一眼就能看出来。
    其他不同大小的空格还有 \; \quad 等,用法各不相同。我见过的最强迫症的,会写出 D.\,E.~Knuth,我还没到这级别。
  • 评论中郝运等病友指出,上面的微分符号「d」应该用正体。像之前提到的那样,用 \DeclareMathOperator 声明。@赵永峰指出,数学常数应该用正体。这些都是 ISO 标准的要求。但是美国数学学会的官方指南中也没有这样,Knuth 本人的 TeXbook 也没有这样,所以这里纯属个人喜好。
  • 从强迫症更严重的人那里学到的:映射用 f \colon A \to B,\colon 处不用「:」。描述性的集合写成 \{ \, x \mid x<0 \, \},\mid 处不用「|」。两边的小空格 \, 我也不太用。这里的区别也是细微的空格间距。
  • 评论中@赵永峰指出,我也经常看到别人犯的错误:数学的一些内积符号,及量子力学的 bra ket 符号,用 \langle 和 \rangle,不是大小于号 < >。后者真心丑。
  • 有三种长短不一的横线,也许初看起来差别不大,但也有许多人一眼可以看出来。短的用「 -」,用于复合词,比如 counter-intuitive。长一点的用「--」,用来表示范围,或者连接两个人名,比如 Euler--Lagrange。最长的是「---」,用在句子中当破折号。
  • 参考文献如果用 BibTeX,那么注意大小写。BibTeX 不会保留你输入的大小写,你需要用 { } 括起来强制他保留。
  • 不要完全相信网上下载的 bib entry。编译后一定要看看参考文献列表。你需要知道特定的 bibliography style 是什么格式。比如文章标题应该是斜体的他弄成正体,那就是你下载的 bib entry 写错了。我经常碰到的问题是副标题和主标题写在一起。
  • 一些欧洲名字的缩写特别变态,你需要对这些小语种有一定了解。
  • 如果用 alpha 这样显示年份的引用格式,引用时按年代顺序排列,不要写成 [BB90, New63, CL13] 这样的乱序。
  • ……

一时就想到这些。如果有一些细节我没有提到,但你觉得特别重要的,欢迎在评论中补充。

我们不妨看看@葛巾是怎么评价一件好的正装的:

为什么说它有点品质,注意看一下衬衫露出领口的高度,看看衬衫领口的伏贴,衬衫的法式袖剪裁,面料在灯光下的质感,手抬起时西装肩部的滑顺度,一件好的正装不要求多贵,要的是你看起来没有违和感。

体会一下,其实论文也是一样。也许有许多细节你觉得无关紧要,但这就是专业与业余的区别。我在改论文的时候,对行首符号、数学字体、括号大小、空格间距之类的细节会特别敏感。如此强迫重症之下,如果长时间改同一篇论文,绝对会疯。因此总要先放下来去做点别的事,过段时间再回来改。所以花个半年修格式,真是常有的事。于是,当我看到本文开头的那两篇文章时,就好像看见有人一丝不挂,真的不敢直视……

已经离开的 @Clerk Ma 向我推荐过一本 Mathematics into Type,让我受益匪浅。如果你需要用 LaTeX 写比较数学的论文,我建议也购入一本这样的格式手册。

话说……上面用做反例的两个截图竟然来自合作者刚给我的草稿……明天我骂死他!

文章被以下专栏收录
60 条评论
推荐阅读