强迫症的LaTeX学习笔记

Posted vast_w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强迫症的LaTeX学习笔记相关的知识,希望对你有一定的参考价值。

最近一段时间迷上了 (La)TeX,也看了不少资料。LaTeX 排版过程中有不少 de facto(约定俗成的)规则,它们不是必须,但是是区别「熟练掌握 LaTeX」与「会使用 LaTeX」的关键因素。我本身就是对细节有强迫症的人,比如修改了 WordPress 的 style.css 后我可以对所有文章的代码都修改一遍,仅仅只为了图片和图注之间的间隔更加美观一些…

过一段时间后也许我会不记得这些 LaTeX 的小细节,因此这里稍加记录,以作备忘。

• 严格区分文字和公式

这一条应该是 LaTeX 用于科学文章排版的最基本要求。在文本输入中应该严格避免出现 \\mathbf\\mathrm 等语句,同理,在公式的编辑中也应该严格避免出现 \\textbf\\textrm 等。当然,如果使用了 AMSMath 宏包,则\\text 是在公式中输入文本的一种很好的方法。虽然大部分情况下读者是无法分辨一个公式中 \\mathbf\\textbf 的区别,但是这毕竟是应该遵守的语法规则。

• 正确处理单词间距

这一条仅适用于英文排版,中文中水平间距的讲究要少得多,基本用一个 xeCJK 就都帮你搞定。

英文排版时 TeX 通常默认句号 . 表示一句话的结束,因此在处理句号时会留出稍宽一点的水平间距。但是有些情况下,句号并不代表句子的结尾,比如「i.e. a word」和「e.g. a word」。按照 TeX 默认规则,这里的宽度会比正常句中单词之间的间隔稍大一些,因此我们需要使用 \\ (即一个反斜杠 + 一个空格)来消除这个过大的间距:i.e.\\ a word以及 e.g.\\ a word

然而还有一种特殊情况下,TeX 并不会认为句号表示句子的结尾,那就是句号跟在一个大写字母的后面。此时 TeX 会认为这个句号表示人名缩写的间隔符,因此仍然按照正常间距来排版,比如 「A. Einstein」。然而这个看似贴心的规则在一些情况下会适得其反,比如一句话明明以缩略语结尾,TeX 反而认为这并不是一句话的结尾:「… in NBA. He…」。此时,排版出的「He」之前的空格会小于正常的句间间距。这种情况下,需要使用 \\@. (反斜杠 + @ + 句号 + 空格)来取代原先的句号,即 ... in NBA\\@. He...\\@ 用来强制告诉 TeX 这里的的确确是一个句子的结尾。

如下所示:

1 2 3 4 Two people i .e . you and me . . . Two people i .e . \\ you and me . . . . . . played in NBA . He was . . . . . . played in NBA \\@ . He was . . .

以上规则除句号外,同样适用于感叹号和问号。

● 公式中的间距设置

积分公式中被积分项前应该加入一个间距 \\, ,这个大多数人都知道。不仅如此,一条公式结尾处的标定符号和公式之间,也应该有一个间距 \\, 。另外,对于积分公式,积分符号  与被积项之间通常间距过大,这个时候可以利用\\! 来缩小这一间距。差别如下(上式为偷懒写法,下式为强迫症写法):

1 2 \\[\\int_a^bf(x)dx = \\alpha.\\] % \\[\\int_a^b\\!f(x)\\,dx = \\alpha\\,.\\]

• 连字符(Hyphens)、连接号(En-dashes)、破折号(Em-dashes)及减号(Minus signs)

连字符 - 通常用来连接复合词,比如 daughter-in-law

连接号 -- 通常用来表示范围,比如 see pages 5–-7。如果真的希望连续输入两个连字符,使用 --

破折号 --- 是一个正规的标点符号,用来表示转折或者承上启下。要注意的是,破折号与其前后的单词之间不应该存在空格,例如 A specter is haunting Europe---the specter of Communism.

排版中的减号应该比连字符要长,因此用来表示减号或者负号时,请严格使用数学模式 $-5$ 而不要使用文字模式-5

以上四种区别如下:

• 转置符号

我搜了一下好像转置符号并没有严格的规定,好几种都在普遍被使用。但是有一点是明确的,转置符号不能是斜体。常见的转置符号大概有四种(自定义的不算):

$\\mathbfA^\\mathrmT$
$\\mathbfA^\\top$
$\\mathbfA^\\mathsfT$
$\\mathbfA^\\intercal$

各自效果如下图所示:

我个人倾向于使用第三或者第四个。其中 \\intercal 符号需要使用 AMS 的字符包: \\usepackageamssymb

• 数学公式中的括号和斜除号

不要粗暴地使用 \\left(...\\right)\\left[...\\right]\\left\\...\\right\\ 同理),用\\big\\bigg\\Big\\Bigg 会更美观。在写单边括号时我个人还喜欢使用 \\bigl\\ 或 \\bigr\\ 这种。

对于一些需要用到斜除号的地方,如果斜除号两边的字符比较高,用常规的 / 会导致式子很不协调,这个时候可以使用 \\middle/ 来使得斜除号的高度与两侧字符高度相匹配。如下所示:

1 2 $x = a^\\frac12/b$ \\\\ $x = \\left.a^\\frac12\\middle/b\\right.$

• 序号

英文中的序号 1st、2nd、3rd 等,通常用文字模式输入就可以,但是在数学中,经常会涉及「nth element,第 n 个元素」等序号问题。一般会使用连字符来表示,比如 $n$-th。有的时候可能需要使用上标的方法,那么一般使用$n^\\textth$。如果再强迫症一点,可以使用 $n^\\text\\tiny th$ 使上标稍小一些。文字模式下,可以使用\\textsuperscriptth 来显示为上标。或者使用 nth 宏包来方便输入(需要使用 [super] 选项来输入上标)。

以上几种方式总结如下:

1 2 3 4 5 6 7 8 9 10 11 \\documentclass article \\usepackage [super ] nth \\usepackage amsmath \\begin document $n$th $n$-th $n^\\textth$ $n^\\text\\tiny th$ 1 \\textsuperscript st \\quad 2 \\textsuperscript nd \\quad n \\textsuperscript th \\nth 1 \\quad \\nth 2 \\quad \\nth 4 \\end document

各自效果如下图:

• 避免数字出现在行首

这个细节大部分人应该都了解,使用 ~ 来代替空格可以避免交叉引用或者输入人名时尴尬地被打破成两行,例如...如图~\\refFig1 所示...,或者 ...A.~Einstein said...

• 中英混排时空格的使用

对于中文排版或中英混排,推荐使用 xeCJK 而非古老的 CJK 或 CTeX。在 xeCJK 下(其他两个我没试过),中文与英文(或数字)之间,没有必要手动敲入一个空格,编译时会自动为中文与英文(或数字)之间添加合适的间距。但是有一个情况比较特殊,就是在交叉引用时,这个空格是需要手动敲入的,否则这个间距会消失。如下图所示:

1 2 3 4 5 6 7 8 9 10 11 12 13 \\documentclass article \\usepackage amsmath \\usepackage xeCJK \\begin document \\begin equation \\int_a^b \\!f (x ) \\,dx latex中插入的图形与文字间距太大,怎么缩小

LaTeX 中的脚注间距

latex 使用 enumitem 宏包调整上下左右缩进间距,标签样式

Latex公式图片间距

[原创][LaTex]LaTex学习笔记之框架及宏包

latex学习笔记 第一章 LATEX须知

(c)2006-2024 SYSTEM All Rights Reserved IT常识