moderncv 的 cventry 中的 ifthenelse 条件

moderncv 的 cventry 中的 ifthenelse 条件

现在弗罗多已经离开去与索伦作战,比尔博独自一人待在家里,寻找新的事情做。所以他想到可以申请一份工作。在申请中,他使用了 documentclassmoderncv以及其中\cventry代表他人生教育阶段的命令,典型条目为\cventry[spacing]{years}{degree/job title}{institution/employer}{localization}{optionnal: grade/...}{optional: comment/job description}

由于他申请了多个职位,并且工作效率很高,因此他在不同的申请中重复使用了简历中的某些部分。但是,他希望简历中的某些信息只在特定条件下显示。由于他计划申请夏尔以及中土世界其他地方的工作,因此条件之一是,对于夏尔以外的工作,他希望在地名中添加“夏尔”。他不想在夏尔境内的申请中添加该词,因为他希望人们熟悉这些地方。

不幸的是,关于“机构”和“本地化”字段,\cventy有两种不同的情况,可以在下面的 MWE 中看到:在某些情况下,机构的名称已经包含位置名称,例如“Bag's End Hobbit School”,而其他机构则不包含这样的本地化名称。在前一种情况下,“本地化”字段应该仅有的遏制国家和仅有的,如果申请的是夏尔以外的雇主。在后一种情况下,“本地化”应包含夏尔境内申请的城市名称,以及中土世界其他地区的申请“城市,夏尔”。

为了实现这一点,Bilbo 定义了一个布尔变量international,应该对其进行测试以决定应使用哪种本地化。这在其他条目类型中确实可以正常工作(参见\cvitemMWE 末尾的条目),但在命令中则不行\cventry,因为在命令中将\ifthenelse语句放入其中一个参数会导致“!\boolean 的参数有一个额外的 }。”错误。

对我来说,关键似乎在于\cventry命令的解析方式(相应的原始代码在\makeatletter ... \makeatother部分中)。但是,我不知道要更改什么才能使其正常工作或如何解决它。

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}

\makeatletter
\renewcommand*{\cventry}[7][.25em]{%
  \cvitem[#1]{#2}{%
    {\bfseries#3}%
    \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
    \ifthenelse{\equal{#5}{}}{}{, #5}%
    \ifthenelse{\equal{#6}{}}{}{, #6}%
    .\strut%
    \ifx&#7&%
    \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
\makeatother

\newboolean{international}
\setboolean{international}{true}

% personal data
\name{Bilbo}{Baggins}
\address{A house in}{Bag's End}{The Shire}

\begin{document}
\makecvtitle
\section{Education}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{The Shire}{}{}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{\ifthenelse{\boolean{international}}{}{The Shire}}{}{}
\cventry{2126--2130}{Small Hobbit}{"The smallest Ones" Primary School}{Bag's End\ifthenelse{\boolean{international}}{}{, The Shire}}{}{}

\section{Master thesis}
\cvitem{title}{\emph{There and back again}}
\cvitem{supervisor}{Gandalf the Grey}
\cvitem{description}{How I fought the Dragon\ifthenelse{\boolean{international}}{}{ and found a ring}.}
%Not everyone has to know that I have this ring...
\end{document}

答案1

我不会重新定义,\cventry但会执行以下操作:

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}
\usepackage{etoolbox}

\newbool{international}
%\setbool{international}{true}
\setbool{international}{false}

\newcommand*{\mytoggle}[2]{\ifbool{international}{#1}{#2}}

% personal data
\name{Bilbo}{Baggins}
\address{A house in}{Bag's End}{The Shire}

\begin{document}
\makecvtitle
\section{Education}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{The Shire}{}{}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{\mytoggle{}{The Shire}}{}{}
\cventry{2126--2130}{Small Hobbit}{"The smallest Ones" Primary School}{Bag's End\mytoggle{}{, The Shire}}{}{}

\section{Master thesis}
\cvitem{title}{\emph{There and back again}}
\cvitem{supervisor}{Gandalf the Grey}
\cvitem{description}{How I fought the Dragon\mytoggle{}{ and found a ring}.}
%Not everyone has to know that I have this ring...
\end{document}

答案2

我认为etoolbox布尔特征在某种程度上更安全​​——这是一种混合方法。我会在收到反馈后更新

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}

\usepackage{etoolbox}

\newbool{international}
\setbool{international}{false}

\makeatletter
\renewcommand*{\cventry}[7][.25em]{%
  \cvitem[#1]{#2}{%
    {\bfseries#3}%
    \ifblank{#4}{Nope}{, {\slshape#4}}%
    \ifblank{#5}{}{, #5}%
    \ifblank{#6}{}{, #6}%
    .\strut%
    \ifx&#7&%
    \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}%
\makeatother

%\newboolean{international}
%\setboolean{international}{true}

% personal data
\name{Bilbo}{Baggins}
\address{A house in}{Bag's End}{The Shire}

\begin{document}
\makecvtitle
\section{Education}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{The Shire}{}{}
\cventry{2130--2135}{Hobbit}{Bag's End Hobbit School}{{\ifbool{international}{}{The Shire}}}{}{}
\cventry{2126--2130}{Small Hobbit}{"The smallest Ones" Primary School}{Bag's End\ifbool{international}{}{, The Shire}}{}{}

\section{Master thesis}
\cvitem{title}{\emph{There and back again}}
\cvitem{supervisor}{Gandalf the Grey}
\cvitem{description}{How I fought the Dragon\ifbool{international}{}{ and found a ring}.}
%Not everyone has to know that I have this ring...
\end{document}

在此处输入图片描述

相关内容