我正在尝试定义一些类似的东西$\frac\mathtt{A\_B}\mathtt{C\_D}$
来获取两个打字机字体变量的分数(首选内联数学),但我一直收到错误,例如
“缺失 } 插入”
结果肯定是错误的。我做错了什么?
答案1
不,\frac
除非你告诉它,否则它无法知道分子在哪里结束、分母在哪里开始,也无法知道分母何时结束恰恰。
该宏\frac
有两个参数,因此其语法是
\frac{<numerator>}{<denominator>}
最好记住这一点。
确实\mathtt
需要一个参数,这样人类读者才能清楚地知道分子和分母应该是什么
\frac\mathtt{A\_B}\mathtt{C\_D}
然而,TeX 是一个计算机程序,而不是人类,它需要精确的指令。
一般来说,宏是从左到右处理的,因此 TeX 看到的是\frac
并且它知道它应该接收两个参数。
当寻找时,确定参数的规则非常简单:
忽略空格,直到找到非空格的内容;
如果下一个标记是
{
,则参数是从{
到匹配 的任何内容}
;否则下一个标记就是参数。
当使用规则 2 时,在确定参数后将去掉括号。
根据规则 1 和 3,诸如 的输入\frac 1 2
会产生正确格式的分数。实际上,TeX 会查看1
并确定它是 的第一个参数\frac
,然后忽略空格并确定2
是第二个参数。
类似地,对于您的输入,\mathtt
确定为第一个参数,{A\_B}
为第二个参数!因此,您的输入完全等同于
\frac{\mathtt}{A\_B}\mathtt{C\_D}
这将导致分子格式不正确,从而产生奇怪的错误消息。
相反,
\frac{\mathtt{A\_B}}{\mathtt{C\_D}}
分数将被正确排版。
故事的道德启示:总是使用括号括住参数。如果您是经验丰富的 TeX 用户,您可能知道何时可以安全地省略括号。但要小心:
\frac 11 2
可能会让你大吃一惊!再读一遍规则 1 到 3,你会发现输入
\frac{11}{2}
是最好的策略。而且\frac{1}{2}
。