在一些软件包中tabularx
,我在很多地方发现了以下语法
{\ifnum0=`}\fi
甚至
\ifnum0=`{\fi}
但我不明白这有什么用?是`
某种寄存器吗?还是在特定场合产生错误的 TeX-hack?
答案1
啊,\ifnum
TeX 程序员们最爱的时髦括号组\halign
:-)
`
是语法的一部分数字在 TeX 中。
125
是小数
"7D
是十六进制,并且
`}
是指定字符的字符代码(碰巧也是 125)。
所以....
{\ifnum0=`}\fi
内部\ifnum
测试 0=125 是否为假,因此当展开时 这相当于{
开始一个括号组。但是,如果标记没有被扩展,而 TeX 只是在寻找匹配{}
对,那么它会将其视为匹配对,因此你可以
\def\foo{ {\ifnum0=`}\fi }
但
\def\foo{ { }
是一个错误(或者至少不会就此停止}
。
通常,您可以使用隐式括号组\bgroup
并\egroup
使用不匹配的{
,但某些构造需要明确的{
标记,因此这个技巧(由 Knuth 在 TeXBook 中解释)很有用。
通常,如果您发现用于分隔对齐单元格的环境&
在嵌套对齐中不起作用,那是因为作者忘记在定义中使用这些组。