临时修补命令(xpatchcmd)

临时修补命令(xpatchcmd)

背景:我正在用 moderncv 写简历。我喜欢它的外观,但该软件包似乎不允许轻松自定义布局。

我想要实现的是以\section不同于其他命令的格式格式化某个命令。

特别是我正在使用

\xpatchcmd\cventry{,}{\newline}{}{}

用 替换逗号\newline。是否可以“限定”补丁的范围,使其仅在一个部分内应用?

答案1

我建议使用不同的补丁:

\xpatchcmd{\cventry}{,}{\cventrycomma}{}{}
\newcommand{\cventrycomma}{,}

然后你可以做

\renewcommand{\cventrycomma}{\newline}

当您想用新行代替逗号时。可以通过两种方式进行恢复:

  1. 将需要添加新行的部分(包括 )括\renewcommand在一\begingroup...\endgroup对中

  2. \renewcommand{\cventrycomma}{,}当您再次需要逗号时发出。

方法一可以隐藏在环境中:

\newenvironment{specialsection}
  {\renewcommand{\cventrycomma}{\newline}}
  {}

答案2

我会按照如下方式进行操作:

\let\originalcventry\cventry%        save a copy of \cventry
\xpatchcmd\cventry{,}{\newline}{}{}% create the patched version

...use the patched version...

\let\cventry\originalcventry%       restore the original

相关内容