当前位置

7.6 怎样输入完美的TeX公式

主标签

怎样输入完美的TeX公式

不要以为有了 TeX 你的公式就完全无可挑剔,TeX 输入的公式虽然不假思索就可以比其它程序来的漂亮,但是我们的目的不是跟其它程序比较。我们的目的是用最优雅的方式来表达我们的思想。TeX 只是一个工具,用它能创造出一流的数学书,也能写出一堆漂亮的垃圾。我见到过的最好和最糟的讲义都是用 TeX 写的。

下面来看看为了得到无懈可及的公式,几个需要注意的细节。这些好主意都来自 "The TeXbook",我或多或少是在翻译,你有兴趣可以自己看看这本书。


  1. 手动调整公式中的字符间据

    在“TeX释疑”里我们遇到这个公式:

    我说是这样打出来的:

    $$\sum_{p\rm\;prime}f(p) = \int_{t>1}f(t)d\pi(t).$$
    

    其实为了避免引起不必要的复杂,我撒了一个谎 :) 你用这个方法输入的公式其实是这个样子:

    看不出区别吗?仔细看着 f(t) 和 dPi(t) 之间的间隔,是不是小了一点?

    上面的公式其实少了一个地方,它本来应该是:

    $$\sum_{p\rm\;prime}f(p) = \int_{t>1}f(t)\,d\pi(t).$$
    

    "\," 是一个 thinspace, 如果没有它 f(t) 和 dPi(t) 就会靠的太近,\, 的大小是 1/6 quad, 一个 quad 的长度跟字体大小有关系,是一个 "M" 的宽度(1em)。看到了?TeX 的公式是非常考究的,有时你必须自己手动调整公式里字符的间距,否则你的公式就只是 99% 的完美,而不是 100%.

    还有一种情况,双重积分号如果这样输入:

    $$\int\int_D dx\,dy$$
    

    就会变成这样:

    显然那两个弯离得太远。你应该这样输入:

    $$\int\!\!\!\int_D dx\,dy$$
    

    结果才会是你想要的:

    两个积分号之间距离减少了3个thinspace. 因为 \! 就是 -1/6 quad.

    另外,花括号也需要特别注意:
    如果表示一个序列,你可以这样写:

    $\{1,2,\ldots,n\}$
    

    结果是正确的:

    但是,如果你想把一个集合

    用这种方法打出来:

    $\{x\mid x>5\}$
    

    就会得到这种结果:

    因为中间的 "|" 两旁有比较大的间隙,花括号两端里面的空间显得小了点。用 \, 在两端加上 thinspace 就更加好看了。

    如果你想用

    $|-x|=|+x|$
    

    表示

    其实你得到的是

    因为 TeX 实际上不理解数学,它认为你想把 "|" 和 "x" 相加减,结果在它们之间插入了过多的空间。为了消除这个误解,你必须说:

    $\left|-x\right|=\left|+x\right|$
    

    \left 和 \right 告诉 TeX,"|" 是一个分界符而不是一个操作数。这是对付一台“试图变得聪明的电脑”的小窍门。

    看到这些你是不是觉得“怎么TeX并不是我想象中的那么聪明?”对。TeX 绝对没有你聪明,机器就是机器,它其实不理解数学。在这种时候只有人的判断才是正确的。

    其实这只是一个视觉才能感受到的东西,你不可能记住所有这些。开始时你不用过于专心于这些细节,当你发现一个公式看起来确实有问题时才去做这些细节的调整。久而久之你就会积累很多经验,直接就可以得到最好的效果。

    想一想应该怎样输入以下公式?特别注意间隔。

  2. 两种不同的逗号。

    一个 TeX 的初学者可能会打出这样的公式:

    for $x = a, b$, or $c$.
    

    这样的结果是图中上面那一个。

    比较一下下面的那个,它是这样打出来的:

    for $x = a$, $b$, or $c$.
    

    第一种作法中,逗号被作为了公式中的逗号,就像 "f(a,b)" 里的;而第二种写法中,逗号被作为了文章里的普通逗号,这两种逗号是不同的。公式里的逗号后面的间距比文章里的要小,这样第一个公式里出现两种不同大小的间隔,这是很不好看的。

    而且公式里的逗号处不可能被断行,因为你明显不希望 "f(a,b)" 这样的结构被自动分开。这样第一个公式的逗号处不可能被断开,这会影响断行的效果。在这个句子里,那个逗号明显应该是文章中的普通逗号,它不应该在数学公式里,所以第二种做法才是完全正确的。

    实际上 100% 完美的做法应该是这样:

    for $x = a$, $b$, or~$c$.
    

    加了一个 "~". "or" 和 "$c$" 在断行时不应该被分断,这样你的文章看起来逻辑才会联贯。要是那个 "$c$" 出现在一行的开头,读者的注意力很容易被分散。

  3. 不同的省略号。


    看到上面两行有什么不同吗?它们是分别用以下两行打出来的。

    $x_1+x_2+\cdots+x_n$\quad and \quad $x_1,\ldots, x_n$
    
    $x_1+x_2+\ldots+x_n$\quad and \quad $x_1,\cdots, x_n$
    

    哪一行好看一些?当然是上面的了,通常应该把 \cdots 用在 +,-,= 这类“高脚符号”之间,而把 \ldots 用在逗号这样的“矮子”符号之间。不幸的是我发现很多书籍错用了这两种符号,或者是因为它的作者使用的程序无法区分这两种符号。

    看看下面这些情况应该用哪个标点?

祝贺你看到了这里 :) 不过其实这页的标题根本就是错误的。知道这些“完美的细节”远远不够保证你写出“完美的公式”,虽然你很仔细的对你的公式精雕细琢,以至于没有一个书法家能对它的美观性有所异议,但是有可能你的思想要用完全不同的另一个公式写出来才能让人明白。