moderncv 中 \photo{} 下的图表标题

moderncv 中 \photo{} 下的图表标题

我想通过\photo{}modercv 模板中的命令在照片下获取图形标题。

通常,我会在 Latex 中添加如下图形标题:

\begin{figure}
    \caption{My caption}
    \includegraphics{MyPhoto}
\end{figure}

然而,这显然在 moderncv 中不起作用,因为您不能将命令放在\photo{}图形环境中。

有人能指出我的解决办法吗?

答案1

您可以更改的内部代码以moderncv向照片添加文本。可以使用etoolbox包来更改内部代码,该包提供了一个\patchcmd带有五个参数的命令。第一个参数是您要修改的命令的名称,第二个参数是您要替换的命令部分,第三个参数是将插入到第二个参数位置的替换文本(如果找到),第四个和第五个参数分别在替换成功或失败时执行(这些可以留空)。

在这种情况下,您可以用添加文本的相同代码替换显示照片的代码。照片放在 内\framebox,不允许换行,因此您还应该\parbox在 内添加一个额外的\framebox行,以便将标题放在新行上。

最后,由于代码包含符号,因此您应该用和@括住修补代码。\makeatletter\makeatother

梅威瑟:

\documentclass[10pt,a4paper,sans]{moderncv}
\usepackage{etoolbox}
\moderncvstyle{classic}
\makeatletter
\patchcmd{\makecvhead}
% search for this code
{\framebox{\includegraphics[width=\@photowidth]{\@photo}}}
% replace with this code
{\framebox{\parbox{\@photowidth}{\includegraphics[width=\@photowidth]{\@photo}\newline\centering This is me}}}
% fourth and fifth argument empty
{}{}
\makeatother
\name{Short}{LongName}
\email{[email protected]}
\phone[mobile]{+1123456789}
\homepage{www.johndoe.com}
\photo{example-grid-100x100bp}

\begin{document}
    \makecvtitle
\end{document}

结果:

在此处输入图片描述

相关内容