如何折叠 moderncv 中未使用的参数?

如何折叠 moderncv 中未使用的参数?

我正在使用该软件包编写我的 CV moderncv。我已经调整了 CV 以满足我的需求。因此,我扩大了命令中可能的最大参数数量\cventry。但是,现在如果我不使用所有参数,就会出现一些难看的间距(请参阅\cventryMWE 中的第二个示例):在此处输入图片描述 如果并非所有参数都被占用,有什么建议可以使间距缩小?正如您从 MWE 中看到的那样,我已经调整了\ifthenelse命令。我使用 texlive 2014。

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{banking}
\moderncvcolor{blue}
\usepackage[scale=0.7]{geometry}
\name{John}{Doe}
\title{Resume title}
\address{street and number}{postcode city}{country}
\phone[mobile]{+1~(234)~567~890}

\renewcommand*{\cventry}[9][.4em]{% 
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}% 
\ifthenelse{\equal{\bfseries #4}{}}{}{{\bfseries #4}} & \ifthenelse{\equal{\bfseries #5}{}}{}{{\bfseries #5}} \\%  
\ifthenelse{\equal{\itshape #3}{}}{}{{\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}}} & \ifthenelse{\equal{\itshape #2}{}}{}{{\itshape #2}}\\% 
\ifthenelse{\equal{#7}{}}{}{{#7}} & \ifthenelse{\equal{#8}{}}{}{\\ {#8} & \\}%
\end{tabular*}% 
}

\begin{document}
\makecvtitle
\section{Education}
\cventry{Grade}{Degree}{Institution}{year--year}{M.Sc.}{Majors}{Majors}{}
\cventry{}{Degree}{Institution}{City}{}{}{}{}
\cventry{year--year}{Degree}{Institution}{City}{Grade}{Majors}{Majors}{}
\end{document}

答案1

我不确定你想要什么布局,但也许是这样的:

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{banking}
\moderncvcolor{blue}
\usepackage[scale=0.7]{geometry}
\name{John}{Doe}
\title{Resume title}
\address{street and number}{postcode city}{country}
\phone[mobile]{+1~(234)~567~890}

\renewcommand*{\cventry}[9][.4em]{% 
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}% 
\ifthenelse{\equal{#4}{}}{}{\bfseries #4} &
\ifthenelse{\equal{#5}{}}{}{\bfseries #5\\}  
\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6} &
\ifthenelse{\equal{#2}{}}{}{\itshape #2\\}
\ifthenelse{\equal{#7}{}}{}{#7\\}
\ifthenelse{\equal{#8}{}}{}{#8\\}%
\end{tabular*}%
}

\begin{document}
\makecvtitle
\section{Education}
\cventry{Grade}{Degree}{Institution}{year--year}{M.Sc.}{Majors}{Majors}{}
\cventry{}{Degree}{Institution}{City}{}{}{}{}
\cventry{year--year}{Degree}{Institution}{City}{Grade}{Majors}{Majors}{}
\end{document}

测试如

\equal{\itshape #3}{} 

永远不会是真的,所以我改成了

\equal{#3}{}

测试如

\ifthenelse{\equal{#7}{}}{}{{#7}}

说如果是空的就什么也不做#7,但是如果#7是空的,做这件事也没有坏处,而且表格单元格是一个组,所以{}不需要额外的内容,所以它简化为

#7

然而,需要进行测试来拉动\\测试内部,以便如果该行中的两个单元格都是空的,则不会抛出任何线。

答案2

我不知道ModernCV的源代码是什么样的,以及类似的功能和命令\cventry是如何定义的,但作为用户,你可以定义任何你需要的命令。

您可以通过在 LaTeX 代码中定义执行所需操作的新命令来轻松解决问题。为了删除该空白,我不知道如何\cventry改进现有代码以便删除您不满意的空白,因此我定义了一个新\cventryother命令,以便文档的编写者可以调整空白。

\newcommand{\cventryother}[3]{\textbf{#1}\hfill\textbf{#2}\\\textit{#3}\\[5pt]}

如果您需要额外的空白,只需在命令末尾添加值即可[5pt]。在下面的代码中,您可以轻松比较之前和新定义的代码。我在输出中画了一个绿色矩形,以便您找到应该查看代码的哪一部分来跟踪更改。(注意:我自己画了这个绿色矩形,所以如果您运行下面的 LaTeX 代码,您将看不到这样的形状。)

在此处输入图片描述

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{banking}
\moderncvcolor{blue}
\usepackage[scale=0.7]{geometry}
\name{John}{Doe}
\title{Resume title}
\address{street and number}{postcode city}{country}
\phone[mobile]{+1~(234)~567~890}

\renewcommand*{\cventry}[9][.4em]{% 
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}%
\ifthenelse{\equal{#4}{}}{}{\bfseries #4} & \ifthenelse{\equal{#5}{}}{}        {\bfseries #5\\} \itshape #3\ifthenelse{\equal{#6}{}}{}{, #6} & \ifthenelse{\equal{#2#7}{}}{\\}{\itshape #2\\} \ifthenelse{\equal{#7}{}}{}{#7\\}     \ifthenelse{\equal{#8}{}}{}{#8\\}% 
\end{tabular*}% 
\par\addvspace{#1}%
}

\newcommand{\cventryother}[3]{\textbf{#1}\hfill\textbf{#2}\\\textit{#3}\\[5pt]}

\begin{document}
\makecvtitle
\section{Education}
\cventry{Grade}{Degree}{Institution}{year--year}{M.Sc.}{Majors}{Majors}{}
\cventryother{Institution}{City}{Degree}
\cventry{}{Degree}{Institution}{City}{}{}{}{}
\cventry{year--year}{Degree}{Institution}{City}{Grade}{Majors}{Majors}{}
\end{document}

相关内容