\{
那么,使用和\}
与 使用\lbrace
和有什么区别\rbrace
?哪一个是首选,什么时候需要注意?
答案1
来自 LaTeX 内核 ( latex.ltx
):
\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
\DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
因此差异:
\{
并且\}
可在文本和数学模式下工作,\lbrace
但\rbrace
只能在数学模式下工作。后者宏在文本模式下会触发错误。\{
并且\}
更短(两个字符而不是七个)。\{
和是鲁棒命令。有关和\}
的鲁棒性的讨论 ,请参见下文。\lbrace
\rbrace
\{
并且\}
可能会得到编辑器更好的支持(匹配支持,参见jjdb的评论)。
相似之处:
在数学模式下,两种变体都会执行
\lbrace
和\rbrace
。相同的数学间距。
\lbrace
和\rbrace
在 中定义fontmath.ltx
,也是 LaTeX 内核的一部分(参见源2e.pdf):
\DeclareMathDelimiter{\lbrace}
{\mathopen}{symbols}{"66}{largesymbols}{"08}
\DeclareMathDelimiter{\rceil}
{\mathclose}{symbols}{"65}{largesymbols}{"07}
它们的定义如下(\show\lbrace
/ \show\rbrace
):
\def\lbrace{\delimiter "4266308 }
\def\rbrace{\delimiter "5267309 }
和\delimiter
是不可扩展的 TeX 基元。它后面跟着"
和 数字,两者都带有 catcode 12
(其他,不可扩展)。并且末尾的空格也不可扩展。如果重新读取字符(例如在目录中),则"
如果将引号字符用作活动字符,则可能会引起麻烦。例如,如果有人定义了babel
简写"4
或"5
。
回答egreg
引用的评论他的回答索引问题。引号字符对索引条目具有特殊含义。(如果索引中的"
默认含义为或"4
,则引号字符会丢失。)如果在另一个命令的参数中使用,则会发生这种情况。否则,使用逐字 catcodes 读取其参数,因此宏不会展开。"5
4
5
\index
\index