## 编译环境 操作系统 * [x ] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [x ] TexLive `2019` * [ ] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 假如已经有了命令A,该命令有一个必选参数 我该如何重定义该命令呢? ps:本来是想这么写\renewcommand{\A}[1]{\A{#1}},但是会报错,就不知道怎么办了

2 回答2

1
也可以用其他名字替换旧命令,再重新定义,例如: ``` \let\oldA\A \renewcommand{\A}[1]{\textbf{\oldA{#1}}} ``` 参考 [Can I redefine a command to contain itself?](https://tex.stackexchange.com/questions/47351/can-i-redefine-a-command-to-contain-itself "Can I redefine a command to contain itself?"),使用 `letltxmacro` 宏包可以规避一些潜在的问题: ``` \usepackage{letltxmacro} \LetLtxMacro{\oldemph}{\emph} \renewcommand{\emph}[1]{\textbf{\oldemph{#1}}} ```
  • 非常感谢! – ,,Ծ‸Ծ,, 2020-09-13 16:54 回复
0
重定义里面又出现 \A 这是不对的,你要拿到 \A 原始定义内容,再加参数即可。 比如 ``` \newcommand{\A}{\textbf{A}} ``` 重定义应该是 ``` \renewcommand{\A}[#1]{\textbf{#1}} ```

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。