这两个宏\setminus
都\backslash
在数学模式中产生一个反斜杠,通常用于表示集合差异:$A\setminus B$,$A\backslash B$。
因为\backslash
还有一个\big
ger 版本,例如,,\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 backslash
,texdef -t latex setminus
你会得到
\backslash:
macro:->\delimiter "026E30F
\setminus:
\mathchar"226E
因此这两种情况并没有什么区别。
分隔符和数学字符之间存在实质性定义。前者类型将尊重\big
and 朋友或\left
and \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 格式。