我使用moderncv
来编写我的简历,我想在简历标题中使用简写链接。该命令\httplink
有一个可选参数可以执行此操作,但此参数未传递给\homepage
。
我怎样才能重新定义\homepage
将简写链接作为可选参数传递给\httplink
命令\maketitle
而不弄乱一切?
我想到的一个例子是
\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\renewcommand*{\homepage}[2]{\def\@homepage[#1]{#2}}
\firstname{John}
\lastname{Doe}
\homepage[shorthand]{long link that I'd like to mask}
\begin{document}
\maketitle
\end{document}
除了我不知道这是否是重新定义的正确方法homepage
,并且此代码没有重新定义第 265 行moderncvclassic.sty
,据我所知,的参数homepage
传递给了httplink
。
答案1
你必须修补\makecvhead
后classic
使用类似的方式来加载样式etoolbox
(已经被班级加载)。
下面我已经这样做了,通过更新,用\httpslink{\@homepage}
一个基于您是否提供了简写参数的条件替换该部分:<desc>
\homepage[<desc>]{<URL>}
\documentclass{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\makeatletter
\patchcmd{\makecvhead}% <cmd>
{\httpslink{\@homepage}}% <search>
{{\ifx\@homepage@shorthand\relax
\httpslink{\@homepage}% Used \homepage{<URL>}
\else
\httpslink[\@homepage@shorthand]{\@homepage}% Used \homepage[<desc>]{<URL>}
\fi}}% <replace>
{}{}% <success><failure>
\RenewDocumentCommand{\homepage}{o m}{%
\let\@homepage@shorthand\relax%
\providecommand\@homepage{#2}%
\IfValueT{#1}{\def\@homepage@shorthand{#1}}%
}
\makeatother
\firstname{John}
\lastname{Doe}
\homepage[shorthand]{long_link_that_id_like_to_mask}
\begin{document}
\maketitle
\end{document}