根据变量重新排序部分?

根据变量重新排序部分?

我有一份用 LaTeX 创建的简历(使用 moderncv 包)。

我正在尝试根据变量创建简历风格。我想要做的是以不同的顺序生成各个部分。

例如我目前有:

\section{Education}
\cventry{X}{Y}{Z}{}{}{}
\cventry{X}{Y}{Z}{}{}{}

\section{Experience}
\cventry{X}{Y}{Z}{}{}{}
\cventry{X}{Y}{Z}{}{}{}

\section{References}
\cventry{X}{Y}{Z}{}{}{}
\cventry{X}{Y}{Z}{}{}{}

因此,现在生成的 PDF 具有以下顺序:

  • 教育
  • 经验
  • 参考

我想将 flavor_A 呈现为:

  • 经验
  • 教育
  • 参考

并将 flavor_B 呈现为:

  • 经验
  • 教育

并将 flavor_C 呈现为:

  • 教育
  • 经验
  • 参考

这样的事可能吗?

答案1

无需探索更复杂的选项,您可以简单地将每个部分放在单独的文件中(例如education.texexperience.texreferences.tex),并将它们包含在主文件中(正如 Mariano 在他的评论中正确指出的那样,input最好使用include以避免分页符):

\input{education.tex}
\input{experience.tex}
\input{references.tex}

生成不同风格的简历只需重新排序这三行即可。要完全删除某个部分,只需用 注释该行即可%

您可以编写一个函数来自动根据变量进行重新排序(正如您的问题所建议的那样),但除非您真的要生成大量的风格(这可能意味着您应该重新考虑您的简历),否则它会比简单地交换线条效率更低input

答案2

如果将简历分成不同的文件不可行,那么可以这样做:我们将每个部分吸收到一个宏中,并在需要时使用它。

该示例取自 文档中的模板moderncv

\documentclass[11pt,a4paper,sans]{moderncv}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[scale=0.75]{geometry}
\setlength{\footskip}{40pt}
\moderncvstyle{casual}
\moderncvcolor{blue}

\usepackage{environ}
\makeatletter
% a helper macro
\def\g@addto@macroname@exp#1#2{%
  \expandafter\g@addto@macro\csname#1\expandafter\endcsname\expandafter{#2}}

% the main environment
\NewEnviron{cvsection}[2][]{%
  \if!#1!\def\cvsection@key{#2}\else\def\cvsection@key{#1}\fi
  \global\@namedef{thecvsection@\cvsection@key}{\section{#2}}
  \g@addto@macroname@exp{thecvsection@\cvsection@key}{\BODY}%
}

% the command for printing the information
\newcommand{\usecvsection}[1]{\@nameuse{thecvsection@#1}}
\makeatother

% personal data
\firstname{John}
\familyname{Doe}
\title{Resumé title}
\address{street and number}{postcode city}{country}
\mobile{+1~(234)~567~890}
\phone{+2~(345)~678~901}
\fax{+3~(456)~789~012}
\email{[email protected]}
\homepage{www.johndoe.com}
\extrainfo{additional information}
%\photo[64pt][0.4pt]{picture}
\quote{Some quote}

\begin{document}
\makecvtitle

\begin{cvsection}{Education}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\end{cvsection}

\begin{cvsection}[MT]{Master thesis}
\cvitem{title}{\emph{Title}}
\cvitem{supervisors}{Supervisors}
\cvitem{description}{Short thesis abstract}
\end{cvsection}

\begin{cvsection}{Experience}
\subsection{Vocational}
\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}%
Detailed achievements:%
\begin{itemize}%
\item Achievement 1;
\item Achievement 2, with sub-achievements:
  \begin{itemize}%
  \item Sub-achievement (a);
  \item Sub-achievement (b), with sub-sub-achievements (don't do this!);
    \begin{itemize}
    \item Sub-sub-achievement i;
    \item Sub-sub-achievement ii;
    \item Sub-sub-achievement iii;
    \end{itemize}
  \item Sub-achievement (c);
  \end{itemize}
\item Achievement 3.
\end{itemize}}
\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2}
\subsection{Miscellaneous}
\cventry{year--year}{Job title}{Employer}{City}{}{Description}
\end{cvsection}

\usecvsection{Education}
\usecvsection{Experience}
\usecvsection{MT}

\end{document}

每个部分都出现在一个cvsection环境中,该环境具有一个可选参数,当部分标题不完全由纯 ASCII 字符组成时,应使用该参数。我曾将其用于“硕士论文”,尽管在这种情况下没有必要。

定义各个部分之后,您可以按照您喜欢的顺序打印它们,使用部分标题或键(如果可选参数已用于特定部分)。

相关内容