为什么 \big\setminus 不起作用?

为什么 \big\setminus 不起作用?

这两个宏\setminus\backslash在数学模式中产生一个反斜杠,通常用于表示集合差异:$A\setminus B$,$A\backslash B$。

因为\backslash还有一个\bigger 版本,例如,,\big\backslash\big\setminus会产生错误。

为什么会这样?我们不应该认为这是一个错误吗\setminus

答案1

不同之处在于它们的定义fontmath.ltx

\DeclareMathDelimiter{\backslash}    % for double coset G\backslash H
   {\mathord}{symbols}{"6E}{largesymbols}{"0F}

\DeclareMathSymbol{\setminus}{\mathbin}{symbols}{"6E}

或者,plain.tex

\def\backslash{\delimiter"26E30F } % for double coset G\backslash H

\mathchardef\setminus="226E % for set difference A\setminus B

请注意,如果你这样做texdef -t latex backslashtexdef -t latex setminus你会得到

\backslash:
macro:->\delimiter "026E30F 

\setminus:
\mathchar"226E

因此这两种情况并没有什么区别。

分隔符和数学字符之间存在实质性定义。前者类型将尊重\bigand 朋友或\leftand \right,而后者则不会。

请注意,\backslash单独使用时定义为类 0(普通符号),而\setminus属于类 2(二进制运算符号);这会影响间距。

如果你需要“更大\setminus”,你可以这样做

\mathbin{\big\backslash}

但这样做\big\setminus\big+行不通的,因为\big 需求其后的分隔符,即非零的字符\delcode或扩展为的宏\delimiter<27 bit number>

的用法\setminus与 非常不同/,传统上, 两边没有空格,因此 TeX 将其视为普通符号,并为其分配一个非零值\delcode

\DeclareMathDelimiter{/}{\mathord}{operators}{"2F}{largesymbols}{"0E}
\DeclareMathSymbol{/}{\mathord}{letters}{"3D}

在 LaTeX 中,以及

\mathcode`\/="013D
\delcode`\/="02F30E

以纯 TeX 格式。

相关内容