最近,一家杂志要求我删除\def
我的个人宏定义中的 。事实证明这并不容易,而且简单的替换\def
并不\newcommand
总是有效。有没有标准方法可以做到这一点?
我举两个例子:
(1)\def\res{\texttt{Res}\left(#1\right)}
我无法用 newcommand 替换 def
(2)\def\io{\infty}
我可以用 newcommand 替换 def
答案1
在提交的内容中应该不 \def
因为文字编辑担心用户会做出如下行为
\def\c{\gamma}
因此无法排版一位名字中包含“Ş”的土耳其合著者的论文。这确实发生了。
你可能使用一些\renewcommand
说明,但要清楚地标记它们。我正在考虑一些相当安全的方法,比如
\renewcommand{\epsilon}{\varepsilon}
但你应该肯定不要修改重要命令。
无论如何,你的定义\res
是错误的,因为你在替换文本中使用了一个参数而没有声明它。可能
\newcommand{\res}[1]{\operatorname{\mathtt{Res}}(#1)}
我不鼓励你
\newcommand{\io}{\infty}
因为标准命令是语义的,而你的命令不是,而且所得的收益确实不值得记住另一个命令的痛苦。
在任何情况下,如果使用\newcommand
返回有关命令已定义的错误,请避免切换到,\renewcommand
除非你恰恰知道自己在做什么(就像这个\epsilon
案例一样,但是不是在这种\c
情况下)。