不!

不!

绝不使用\( \)。我该如何重新定义它们以表示\begin{equation} \end{equation}

(我知道很多人会认为这是一个坏主意。)

答案1

不!


如果你这么做了,不要怪我;-)

TeX 宏可以(在正常情况下,不\csname涉及\catcode)分为两种基本类型:控制序列和控制字符。控制序列由转义符(通常为\)后跟一系列“字母”标记(通常a-z为和A-Z)组成,例如\begin。控制字符由转义符和一个非字母标记(每个不适合作为“字母”的其他字符)组成。TeX 允许您以相同的方式定义/访问控制序列和控制字符,因此\def\mymacro{something}与一样有效\def\({something}

在 中latex.ltx\(\)定义为:

\DeclareRobustCommand\({%
  \relax\ifmmode\@badmath\else$\fi}%
\DeclareRobustCommand\){%
  \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%

额外的代码检查 的嵌套使用\(...\),这是无效的。您可以$用适当的环境分隔符替换(并将 移至的分支\end{equation}):\else\ifinner

\makeatletter
\DeclareRobustCommand\({%
  \relax\ifmmode\@badmath\else\begin{equation}\fi}%
\DeclareRobustCommand\){%
  \relax\ifmmode\ifinner\@badmath\else\end{equation}\fi\else\@badmath\fi}%
\makeatother

正如 egreg 在下面的评论中所说,如果您加载amsmath(通常应该这样做),那么您可以将嵌套检查留给equation

\DeclareRobustCommand\({\begin{equation}}
\DeclareRobustCommand\){\end{equation}}

相关内容