使用 DeclareRobustCommand 重新定义命令

使用 DeclareRobustCommand 重新定义命令

我正在尝试创建以下命令。我想\exp用一个接受输入和输出的命令替换\exp(#1)。为了复制之前显示的内容,我尝试了以下

\let\EXP\relax
\DeclareRobustCommand{\EXP}{\exp}
\rewnewcommand{\exp}[1]{\EXP(#1)}

但是,编译时出现TeX capacity exceeded, sorry错误。如果我不重新定义exp,而是将其命名为 之类的名称expm,则不会出现问题。但我更愿意重新定义它。我该如何解决这个问题?

答案1

你不应该这样做:我认为输入 没有任何\exp{3}好处\exp(3)除非您想要做更多的事情,即增加调整括号大小的可能性。

这可以通过 来完成mathtools

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiter{\paren}{(}{)}
\let\originalexp\exp

\renewcommand\exp{\originalexp\paren}

\begin{document}

\begin{equation*}
\exp{x}\quad\exp[\big]{x}\quad\exp*{\frac{\pi}{2}}
\end{equation*}

\end{document}

在此处输入图片描述

不过,我会避免这种情况,而是定义\expp

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiter{\paren}{(}{)}
\newcommand\expp{\exp\paren}

\begin{document}

\begin{equation*}
\expp{x}\quad\expp[\big]{x}\quad\expp*{\frac{\pi}{2}}
\end{equation*}

\end{document}

你的定义出了什么问题?

一旦调用\exp{1},TeX 将会执行\EXP(1),哪个变成\exp(()1)哪个变成\EXP(()1),哪个变成\exp(()()(1)

相关内容