想知道这里的人们是否想过这里的最佳做法是什么(如果重要的话)。
我曾经使用过 Baskerville(嗯,baskervald
包)作为我的主要字体,使用 charter 作为我的数学字体(因为 baskerville 没有数学字体)。由于斜体字体的样式略有不同,我会将所有作者定义的常量符号(例如,“让A是一个数字,使得....”)在内联数学模式环境中的文本中,以保持文本和方程式中该符号的出现外观一致。
现在我使用 Palatino(或任何你认为的 Palatino 等效项mathpazo
),因此不必担心字体匹配问题,在这种情况下,$a$ 和 \textit{a} 之间有什么区别吗?我想我还是更喜欢使用 $a$,因为它在语义上更有意义(数学模式下的数学常量......),但我想知道是否存在任何缺点或任何真正的区别。
斜体数学“a”与斜体文本“a”有什么不同吗?有什么理由更喜欢 \texit{a} 而不是 $a$?
附加问题(这对于要解决的答案来说很好,但不是强制性的):在哪里可以找到有关数学字体以及 LaTeX 如何调用它们的信息?
答案1
您绝对应该使用数学,$x$
或者对于多字母标识符$\mathit{foo}$
,即使字体是使用相同字形的虚拟字体(如这里的情况),对于 LaTeX 来说,它们是具有不同编码和度量的不同字体。即使您使用的字母恰好具有相同的度量,文档也会非常脆弱,如果您更改字体选项,文档就会出错。如果我没记错的话,Knuth 在某处写到他是如何被发现使用数字而不是1
在$1$
现代计算机(和大多数其他)字体设置中产生相同的输出,但在(我认为)具体的数学设置中却出现了问题,其中数学和文本数字的样式不同。
一个小例子mathpazo
\documentclass{article}
\usepackage{mathpazo}
\begin{document}
\showoutput
x \textit{a} x $\mathit{a}$ x $a$ x
x \textit{fi} x $\mathit{fi}$ x $fi$ x
x \textit{i} x $\mathit{i}$ x $i$ x
\end{document}
产生
或者可能更有用的是:
...\hbox(4.83499+0.09998)x345.0, glue set 295.24033fil
....\hbox(0.0+0.0)x15.0
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/it/10 a
....\kern 0.0
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\mathon
....\OML/zplm/m/it/10 a
....\mathoff
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 4.57007
...\hbox(7.32996+2.76498)x345.0, glue set 275.09068fil
....\hbox(0.0+0.0)x15.0
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/it/10 ^^L (ligature fi)
....\kern 0.0
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\mathon
....\hbox(7.32996+2.75987)x5.27989
.....\OT1/ppl/m/it/10 ^^L
....\mathoff
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\mathon
....\OML/zplm/m/it/10 f
....\kern1.09999
....\OML/zplm/m/it/10 i
....\kern0.06999
....\mathoff
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 2.12003
...\hbox(7.11499+0.09998)x345.0, glue set 285.77068fil
....\hbox(0.0+0.0)x15.0
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/it/10 i
....\kern 0.0
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\mathon
....\OT1/ppl/m/it/10 i
....\mathoff
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\glue 2.5 plus 1.49998 minus 0.59998
....\mathon
....\OML/zplm/m/it/10 i
....\kern0.06999
....\mathoff
....\glue 2.5 plus 1.49998 minus 0.59998
....\OT1/ppl/m/n/10 x
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
您可以看到数学字体没有fi
连字,并且在后面引入了小的字距,i
而文本字体中没有这个功能。
答案2
如果你看看 此链接,您将明白放置数学字符与放置斜体字母不同,因为度量标准不同:例如,必须考虑到字母可能具有指数或索引,因此侧边距不同。实际上,当 TeX 对文本字体使用 7 个参数时,数学字体至少需要 22 个参数(“fontdimens”)。
这主要是为什么不能只说“我将使用这种斜体文本字体作为数学字母”的原因——也是为什么没有很多数学字母字体的原因。
答案3
我在某个地方(我现在很沮丧地找不到!)读到 ISO(或类似的标准组)建议(强制?)物理学用斜体(即数学斜体或类似字体)书写变量,用直立(即数学罗马体)书写常数,特别是数学常数。因此,指数函数为$\mathrm{e}^x$
,光速写为$\mathrm{c}$
,时间通常用 表示$t$
。
不要假设正文和数学字体总是会匹配,有人将要过来把事情弄乱。
按照 LaTeX 的方式去做:说出你的意思,不要为了视觉效果而写作。生成的文档(源)将更加健壮(想想从不同风格的新文档中偷取几个段落)并且更容易理解。