我一直在寻找 LaTeX 的替代品,但似乎我已经陷入困境很长时间了,我正在尝试看到它的光明的一面。
前几天我突然想到,我认为 LaTeX 缺少许多合理的默认值,尤其是数学环境。例如,您不太可能同时拥有三个名为 和 的变量l
,o
并且您按该顺序编写这三个变量的乘积。但您仍然必须写来表明您指的是函数。换句话说,当有人写 时,他们(几乎)总是指函数。g
\log
log()
log
log
括号和大括号也是如此,在数学环境中,当再次使用括号时,它们很可能意味着\left(
。我知道,我可以引入自己的\(
命令,但它们不是默认的。
因为我主要使用 LaTeX 进行数学排版,所以我只知道那些非默认设置。我的问题是,为什么这些最基本、最根本的东西没有被默认处理?我读到 Knuth 被认为是数学排版专家,我认为他在使用 TeX 时应该注意到了这些负担。
答案1
好吧,回答你的问题。这种行为是合理的,因为它持续的。此外,我还使用、、、、等\log
函数。如果您将“最常用”的函数设置为“无反斜杠”,那么您就不知道哪些函数有反斜杠,哪些没有。此外,我们中的一些人会生成自动 LaTeX 代码,这样的异常会让我们的工作变成真正的地狱。\det
\tr
\tg
\inv
\abs
对于括号,您会遇到严重的麻烦,例如[0,1[
半开区间,甚至[0,1)
是那样。
请记住,LaTeX 是好的因为它是持续的因此可预测,一旦你学会了基础知识。
答案2
扮演魔鬼代言人,相反的情况也可能发生:如果你实际上有三个变量l
,o
并且g
你想将它们分开,而 (La)TeX 要求你将它们用作,那会怎样\separate{l}\separate{o}\separate{g}
?当然,我夸大了某些“非常特殊”函数的使用\separate
。不总是无论出于什么原因,\left(
当您键入时都会想要。(
因此,无需做任何假设,让最终用户可以自由地进行最精细的操作。
这nath
包裹是一个可能支持您“假设一些基本默认值”概念的示例。如 CTAN 上的软件包描述所述,
[
nath
] 在相当粗略的上下文无关符号的基础上提供特定的上下文相关表示。突出的特点 [包括]:根据上下文,该命令\frac
会生成组合分数、格分数或斜线分数,并在需要时添加括号以保留数学含义;分隔符的大小会根据所包含的内容进行调整,从而\left
几乎\right
过时。
因此,它为你的数学应用提供了一些“假设”,这样你就不必再担心或思考它了。但它可能并不总是完美的,那又怎么样呢?
答案3
在设计通用用途的字体时,假设要log
使用正罗马字体(而不是数学模式中使用的默认斜体)是没有意义的。如果是这样的话,那么其他人就需要一种方法来指定 、 和 的乘积l
。o
而且g
函数实在是太多了,而且不时还会添加新的函数。
有明确的规则并保持一致比有太多特殊情况更重要。大概意思是left(
当你(
写可能不足以假设这就是你的意思。同样,这种假设将需要说类似这样的话:\paren
当一个人只想要一个普通的 时(
,其他人会抱怨为什么 不能(
只是一个(
。
基本上,它归结为指定您的真正意思,以便在TeX
执行工作时尽量减少混淆。
答案4
在 Knuth 最初TEXDR.AFT
描述他所提议的新系统时,他没有使用反斜杠作为“关键词”,而是依赖于它们是“选择与英语单词匹配,因为它们可能与正常文本混合出现”在下一个草案中,TEX.ONE
斜线被引入作为转义字符“指示控制模式而不是文本模式”,这个变化没有得到解释(尽管下一稿中有一条注释,如果你看过第一稿的话,可以忘记第一稿),大概他觉得保留关键字的想法不太好,但至少我们知道他没有忽略它:)