我想通过\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}
结果: