mtpro2 中的特殊字符 \{ 和 \}

mtpro2 中的特殊字符 \{ 和 \}

我最近刚刚开始遇到花括号的特殊字符错误,如下例中的 { 和 }:

 \documentclass{article}
 \usepackage{times}
 \usepackage[complete,subscriptcorrection,mtpcal,mtphrb]{mtpro2} 
 \usepackage{amsmath}
 \begin{document}

       \{ 1 \}

 \end{document}

错误信息如下:

! Missing $ inserted.
<inserted text> 
                $
l.11 \{
        1 \}
? 

答案1

mtpro2包将\{和重新定义\}为:

\def\curlybraces{\def\lbrace{\delimiter"4266308 }\let\{=\lbrace
  \def\rbrace{\delimiter"5267309 }\let\}=\rbrace}

其中\delimiter是 TeX 基元,"4266308表示类 4 ( \mathopen),小形式是数学家族 2,槽"66(十六进制),大形式是数学家族 3,槽"08,类 5 中的结束分隔符也是如此。

这里与您相关的是,这是数学模式的定义,并且仅适用于数学模式。因此,当您尝试在文本模式下使用它时,您会收到一条错误消息,提示您忘记了某处$

LaTeX 内核确实定义了文本模式命令\textbraceleft\textbraceright\DeclareTextSymbol这些应该仍然有效,但您可以根据需要\UndeclareTextCommand将它们重新定义为:

\DeclareTextSymbol{\textbraceleft}{T1}{"7B}
\DeclareTextSymbol{\textbraceright}{T1}{"7D}
\DeclareTextSymbol{\textbraceleft}{\UnicodeEncodingName}{"78}
\DeclareTextSymbol{\textbraceright}{\UnicodeEncodingName}{"7D}
\DeclareTextCommandDefault{\textbraceleft}{T1}
\DeclareTextCommandDefault{\textbraceright}{T1}

因此,您可以使用以下解决方法:

\def\{{\ifmmode\lbrace\else\textbraceleft\fi}
\def\}{\ifmmode\rbrace\else\textbraceright\fi}

在数学模式或文本模式下使用正确的命令。我不知道该软件包是否仍在积极维护,但在文本模式下中断\{\}被视为错误。

相关内容