moderncv,经典风格:如何将地址框向右移动?

moderncv,经典风格:如何将地址框向右移动?

我正在使用包的经典样式moderncv,并且我想将地址框的右边距与所有其他内容的右边距对齐,并摆脱此图中标记的偏移量:

在此处输入图片描述

我当然可以使用该geometry包来完全更改边距,但无论我尝试什么,地址框的右边距与我的 cv 条目的右边距相比都会继续移动。

通过搜索这个论坛,我已经发现我很可能必须重新配置命令\makecvtitle,但如果没有进一步的帮助,我还不够了解该如何去做...:-/

下面是用于生成附图的最小示例(为了清晰起见,垂直线是手动绘制的):

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\usepackage[utf8]{inputenc}

%%%% adjust the page margins
\usepackage[scale=0.78, top=2.5cm, bottom=2.5cm, footskip=1cm]{geometry}

% personal data
\name{My}{Name}
\title{My title}
\address{Street}{City}{Country}
\phone[mobile]{1234567890}
\email{[email protected]}

\usepackage{eurosym}

\begin{document}

\makecvtitle

\section{Education}
\cventry{from -- to}{Student}{This is a very long description of my education and what I have done with the only purpose to completely fill up the lane}{}{}{}

\end{document}

答案1

CV 标题的构造(在内部完成\makecvhead)将其大部分内容存储在框中:

  • \makecvheaddetailsbox: 地址信息

  • \makecvheadpicturebox:图片(如有提供)

  • \makecvheadnamebox:姓名和职务

的构造\makecvheaddetailbox有一个虚假空格,它位于tabular包含地址的右侧 - 这是包中的一个错误。通常,如果不复制整个宏并%在需要的地方插入相应的空格,虚假空格很难删除。但是,在这种情况下,我们可以在后面插入一个非参数宏\end{tabular}

在此处输入图片描述

\documentclass[sans]{moderncv}

\moderncvstyle{classic}
\moderncvcolor{blue}

% personal data
\name{My}{Name}
\title{My title}
\address{Street}{City}{Country}
\phone[mobile]{1234567890}
\email{[email protected]}

\usepackage{etoolbox}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\makecvhead}{\end{tabular}}{\end{tabular}\relax}{}{}

\begin{document}

\makecvtitle

\section{Education}
\cventry{from -- to}{Student}{This is a very long description of my education and 
  what I have done with the only purpose to completely fill up the lane}{}{}{}

\end{document}

答案2

我查看了代码,没有发现这种转变的直接原因。一种解决方法是复制一份moderncvheadi.sty到本地 TeXMF 根目录(如果您还没有,则必须创建它),然后将其放入 LocalTeXMF\tex\latex\moderncv\并以以下方式修改此文件:替换第 77 行:

\if@left\begin{tabular}[b]{@{}r@{}}\fi%

\if@left\begin{tabular}[b]{@{}r@{\hspace{-0.25em}}}\fi%

在此处输入图片描述

相关内容