假设我想使用某个包中的命令,该命令\foo
需要一些参数,比如说#1
。我想 以可能涉及这些参数的方式#5
更改 的行为。\foo
例如,假设\foo
以某种方式格式化 5 个参数。我可能想要:
- 删除第一个出现的逗号
\foo
- 在所有内容前面输出参数 #5
- 交换参数
#1
和#2
#3
用以下语句括住参数的用法\emph{}
到目前为止,我已经能够使用 xpatch 完成 1. 如下:
\xpatchcmd\cventry{,}{}{}{}
但显然我不能在这里使用这样的论点
\xpatchcmd\cventry{#3}{\emph{#3}}{}{}
我怎样才能以一种美观、可读、通用且可重用的方式实现第 2 点至第 4 点?
笔记对于其他问题的解决方案应该允许类似以下的方法:
\xpatchcmd\cventry{,}{\cventrycomma}{}{}
\newcommand{\cventrycomma}{, }
where\cventrycomma
用于允许范围控制,因此在某个 \begingroup\endgroup 环境中\cventrycomma
可以重新定义为不同的行为(如果这不清楚,另请参阅临时修补命令(xpatchcmd))。