我绝不使用\(
\)
。我该如何重新定义它们以表示\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}}