标题中的 Moderncv 简写 URL

标题中的 Moderncv 简写 URL

我使用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}

相关内容