\{ & \} 与 \lbrace & \rbrace

\{ & \} 与 \lbrace & \rbrace

\{那么,使用和\}与 使用\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 读取其参数,因此宏不会展开。"545\index\index

相关内容