现在弗罗多已经离开去与索伦作战,比尔博独自一人待在家里,寻找新的事情做。所以他想到可以申请一份工作。在申请中,他使用了 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
,应该对其进行测试以决定应使用哪种本地化。这在其他条目类型中确实可以正常工作(参见\cvitem
MWE 末尾的条目),但在命令中则不行\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&%
\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&%
\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}