也许我遗漏了一些非常简单的东西,但我无法从 moderncv 类访问变量。例如,如果我用 分配变量 email,我无法在文档内部调用它,尽管它是在 moderncv.cls 文件中定义的。但是,如果我发出,我会得到所需的结果。\email{[email protected]}
\@email
\newcommand*{\email}[1]{\def\@email{#1}}
\renewcommand{\email}[1]{\def\@email{#1}}
平均能量损失
\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{casual}
\moderncvcolor{blue}
\usepackage[scale=0.75]{geometry}
%\renewcommand{\email}[1]{\def\@email{#1}} % Activate to make email variable work
\name{John}{Doe}
\email{[email protected]}
\begin{document}
\makecvtitle
Email is: \@email
\end{document}
没有使用 renew 命令的结果:
使用 renew 命令的结果:
答案1
\@email
是一个隐藏命令(或者应该是隐藏的,因为它以 开头\@
。为了访问这样的\@....
命令,您需要一\makeatletter...\makeatother
对。)
在.sty
或.cls
文件中应该没有\makeatletter...\makeatother
对,\@....
等等命令可以直接在那里访问!
最好将这对包裹在访问宏中,\retrieveemail
而不是\@email
直接使用。
\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{casual}
\moderncvcolor{blue}
\usepackage[scale=0.75]{geometry}
%\renewcommand{\email}[1]{\def\@email{#1}} % Activate to make email variable work
\makeatletter
\newcommand{\retrieveemail}{\@email}
\makeatother
\name{John}{Doe}
\email{[email protected]}
\begin{document}
\makecvtitle
Email is: \retrieveemail
\end{document}