数学环境之外的数字

数学环境之外的数字

文本中的数字是否应该放在数学环境中?

例如,如果我正在写...indent code by 4 spaces...,我应该这样写还是...indent code by $4$ spaces...

也许输出相同,但语义上却不同,也许 LaTeX 在某些情况下可以对它们进行不同的处理。哪一个是正确的?

例如,LaTeX 如何处理用于对章节或页面等进行编号的计数器中的数字?它是将它们视为数学环境中的数字还是文本中的数字?

当然,如果在任何情况下输出都不会改变,那么,这并不重要。

答案1

您的问题的答案很大程度上取决于您使用的字体的数学模式数字是否(或多或少)与文本模式数字相同。 如果两组数字恰好完全相同,除非他们能够访问源代码,否则没人能分辨出来……

然而,如果它们在外观上明显不同——比如,因为在文本模式下使用了“旧式”数字,这通常应该不是用于数学表达式——显然你需要小心区分这两种类型的数字。

以下是 Knuth 文章的摘录《排版具体数学》(TUGBoat,1989)[附言:教科书具体数学被用作Concrete Roman文本字体和Euler数学字体排版]:

然而,打字稿与具体数学以及 计算机编程艺术,这是因为欧拉数字 0123456789 与普通文本中的数字 0123456789 截然不同。 [...] 这次经历......让我明白了文本数字和数学数字之间存在有用且有意义的区别。文本数字用于“1776”和“第 5 章”和“41 种方式”等语境中,其中数字本质上是英语的一部分;相比之下,数学数字用于“12 和 18 的最大公约数是 6”等语境中,其中数字是数学的一部分。 [...] 方程式数字向我们提出了最令人困惑的设计问题之一。这些数字应该用欧拉字体排版还是用 Concrete 字体排版?经过几次实验,我们找到了一个一定正确的解决方案,因为回想起来它似乎很明显:我们决定用 Concrete Roman 的“旧式”变体来设置方程式数字......

这一切的结果是什么?我想说的是:即使你现在使用的文本和数学字体的数字看起来相同,你仍然应该愿意今天付出额外的努力来在数学模式下设置那些作为数学表达式一部分的数字——只要有一个机会您可能希望有一天使用数学和文本模式数字不再相同的字体重新发布您的作品。

那么,在什么情况下应该使用文本模式数字呢?除了前面引用的例子之外,我还想列举以下例子:页码;章节、节等的编号;日期(12 月 25 日、8 月 1 日……)以及(视具体情况而定)方程式编号。显然,这个简短的列表并不详尽。

附录:我刚刚注意到,这个答案的前两次点赞让我在 TeX.SE 小组中获得了第 10,000 分。谢谢大家!!:-)

答案2

我总是\num{}使用希尼奇包。以下是手册中的一些示例:

\num 示例

答案3

  1. 数字应始终以 给出$$,这样做的唯一原因是,如果您稍后选择不同的字体,以不同的方式处理数字,您将看到非常明显的差异。(有些情况并非如此,例如日期,感谢 egreg)

  2. 计数器与数学模式无关。如果将它们用作输出标记,您还需要在数学模式下设置它们。

如果有特定的计数器,如\thepage\thesection等,您需要找出该命令的作用。您可以自行决定如何让它们按照您喜欢的方式运行。请参阅以下使用该kpfonts包的代码。

\documentclass{article}
\usepackage{kpfonts}
\begin{document}
\mathversion{boldsf}
\makeatletter
\meaning\thesection
\meaning\thepage
\meaning\@arabic
$2$
2
\thepage
\def\thepage{$\arabic{page}$}
\thepage
\meaning\thepage

\end{document}

在输出中您将看到命令扩展为什么,以及如何重新定义它。

答案4

我的理解是,只有在使用 Euler 等数学字体时才会出现这种情况,因为该字体自带一组数字,而不是从文本字体中“借用”数字。即便如此,重要的是保持一致:您不会希望文档中的一些页码使用 Euler,而另一些使用 Palatino 或您正在使用的任何文本字体。

相关内容