我在官方上读过适用于课程和软件包编写者的 LaTeX2e指南(第 2.7.2 节“使其健壮”)指出,应尽可能多地使用 LaTeX 命令。
例如,他们建议使用newcommand
而不是。查看中描述def
的实现newcommand
来源2e很容易看出,这只是具有附加功能的newcommand
顶层。def
但是我该用什么来代替呢let
?有几个来源已经解决了 let 和 def 之间的区别,所以我的问题是,是否有一个 LaTeX 等效物可以在定义点将一个宏定义为另一个宏?换句话说,我想创建一个新的宏,存储另一个宏的源代码,使其独立。
考虑一下这个MWE:
\documentclass{article}
\begin{document}
\newcommand\A{A} % original A macro
\A
\let\B\A % B macro is the same as A macro
\renewcommand\A{} % A is now empty (but B is still the old A macro)
\A
\renewcommand\A{\B} % A is now original A again
\A
\end{document}
我想知道是否存在let
可以替代\let\B\A
MWE 的 LaTeX 替代品。类似于,但我不想成为宏,\newcommand\B{\A}
而是成为源代码,这样它就不会通过 被改变。\B
\A
\B
\A
\renewcommand
答案1
\let
您的示例中无需替换,因为您的示例\newcommands
很简单。但是如果您使用可选参数或强大的命令定义命令,则应该使用复制它们\NewCommandCopy
(需要较新的 LaTeX),因为这也会复制内部结构。