为什么 TeX/LaTeX 默认在数学模式下不将多字母序列解释为函数/括号为 \left/\right?

为什么 TeX/LaTeX 默认在数学模式下不将多字母序列解释为函数/括号为 \left/\right?

我一直在寻找 LaTeX 的替代品,但似乎我已经陷入困境很长时间了,我正在尝试看到它的光明的一面。

前几天我突然想到,我认为 LaTeX 缺少许多合理的默认值,尤其是数学环境。例如,您不太可能同时拥有三个名为 和 的变量lo并且您按该顺序编写这三个变量的乘积。但您仍然必须写来表明您指的是函数。换句话说,当有人写 时,他们(几乎)总是指函数。g\loglog()loglog

括号和大括号也是如此,在数学环境中,当再次使用括号时,它们很可能意味着\left(。我知道,我可以引入自己的\(命令,但它们不是默认的。

因为我主要使用 LaTeX 进行数学排版,所以我只知道那些非默认设置。我的问题是,为什么这些最基本、最根本的东西没有被默认处理?我读到 Knuth 被认为是数学排版专家,我认为他在使用 TeX 时应该注意到了这些负担。

答案1

好吧,回答你的问题。这种行为是合理的,因为它持续的。此外,我还使用、、、、等\log函数。如果您将“最常用”的函数设置为“无反斜杠”,那么您就不知道哪些函数有反斜杠,哪些没有。此外,我们中的一些人会生成自动 LaTeX 代码,这样的异常会让我们的工作变成真正的地狱。\det\tr\tg\inv\abs

对于括号,您会遇到严重的麻烦,例如[0,1[半开区间,甚至[0,1)是那样。

请记住,LaTeX 是好的因为它是持续的因此可预测,一旦你学会了基础知识。

答案2

扮演魔鬼代言人,相反的情况也可能发生:如果你实际上有三个变量lo并且g你想将它们分开,而 (La)TeX 要求你将它们用作,那会怎样\separate{l}\separate{o}\separate{g}?当然,我夸大了某些“非常特殊”函数的使用\separate。不总是无论出于什么原因,\left(当您键入时都会想要。(

因此,无需做任何假设,让最终用户可以自由地进行最精细的操作。

nath包裹是一个可能支持您“假设一些基本默认值”概念的示例。如 CTAN 上的软件包描述所述,

[ nath] 在相当粗略的上下文无关符号的基础上提供特定的上下文相关表示。突出的特点 [包括]:根据上下文,该命令\frac 会生成组合分数、格分数或斜线分数,并在需要时添加括号以保留数学含义;分隔符的大小会根据所包含的内容进行调整,从而\left几乎\right过时。

因此,它为你的数学应用提供了一些“假设”,这样你就不必再担心或思考它了。但它可能并不总是完美的,那又怎么样呢?

答案3

在设计通用用途的字体时,假设要log使用正罗马字体(而不是数学模式中使用的默认斜体)是没有意义的。如果是这样的话,那么其他人就需要一种方法来指定 、 和 的乘积lo而且g函数实在是太多了,而且不时还会添加新的函数。

有明确的规则并保持一致比有太多特殊情况更重要。大概意思是left(当你(可能不足以假设这就是你的意思。同样,这种假设将需要说类似这样的话:\paren当一个人只想要一个普通的 时(,其他人会抱怨为什么 不能(只是一个(

基本上,它归结为指定您的真正意思,以便在TeX执行工作时尽量减少混淆。

答案4

在 Knuth 最初TEXDR.AFT描述他所提议的新系统时,他没有使用反斜杠作为“关键词”,而是依赖于它们是“选择与英语单词匹配,因为它们可能与正常文本混合出现”在下一个草案中,TEX.ONE斜线被引入作为转义字符“指示控制模式而不是文本模式”,这个变化没有得到解释(尽管下一稿中有一条注释,如果你看过第一稿的话,可以忘记第一稿),大概他觉得保留关键字的想法不太好,但至少我们知道他没有忽略它:)

相关内容