moderncv:定义与现有命令相同的新命令,但结果不同

moderncv:定义与现有命令相同的新命令,但结果不同

moderncv通过尝试扩展文件在包中定义新命令moderncv.cls,我注意到了以下情况:

有一个现有命令定义为

\newcommand*{\cvitem}[3][.25em]{}

现在,如果我自己在同一个文件中定义一个命令,比如

\newcommand*{\cvitemtwo}[3][.25em]{}

然后,在我的 CV 文档中使用它,它的行为与命令不同\cvitem。事实上,我甚至不明白为什么根据评论使用,

% 制作带有标题和相应文本的简历行
% 用法:\cvitem[spacing]{header}{text}

成立。必须有其他定义,要么在同一个文件中,要么在某个其他文件中,以精确名称指定命令\cvitem。您有什么想法吗?

答案1

moderncv\cvitem在内定义moderncv.cls重新定义这取决于您选择的样式(bankingcasualclassicemptyfancyoldstyle。这允许样式内的代码保持一致(尽管还有其他方法可以实现这一点),因为重新定义的宏在加载时将始终存在。

例如,这是\cvitemmoderncvbodyi.sty- 定义加载时的“主体”的宏casual

\renewcommand*{\cvitem}[3][.25em]{%
  \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
    \raggedleft\hintstyle{#2} &{#3}%
  \end{tabular}%
  \par\addvspace{#1}}

如果您想要制作类似这样的内容,则必须在加载样式(加载正文格式宏)后复制它。您可以使用letltxmacro\NewCommandCopy(自 LaTeX 2020 年 10 月内核更新以来)。

相关内容