moderncv
通过尝试扩展文件在包中定义新命令moderncv.cls
,我注意到了以下情况:
有一个现有命令定义为
\newcommand*{\cvitem}[3][.25em]{}
现在,如果我自己在同一个文件中定义一个命令,比如
\newcommand*{\cvitemtwo}[3][.25em]{}
然后,在我的 CV 文档中使用它,它的行为与命令不同\cvitem
。事实上,我甚至不明白为什么根据评论使用,
% 制作带有标题和相应文本的简历行
% 用法:\cvitem[spacing]{header}{text}
成立。必须有其他定义,要么在同一个文件中,要么在某个其他文件中,以精确名称指定命令\cvitem
。您有什么想法吗?
答案1
moderncv
\cvitem
在内定义moderncv.cls
但重新定义这取决于您选择的样式(banking
、casual
、classic
、empty
或fancy
)oldstyle
。这允许样式内的代码保持一致(尽管还有其他方法可以实现这一点),因为重新定义的宏在加载时将始终存在。
例如,这是\cvitem
在moderncvbodyi.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 月内核更新以来)。