在 moderncv 中设置日期时间轴

在 moderncv 中设置日期时间轴

这个问题导致了一个新的方案的出现:
moderntimeline

我刚刚想到使用时间轴来指定简历中的日期。我在 Inkscape 中制作了一个模型:

小样

如您所见,这个想法是在时间线上显示体验日期,而不仅仅是排版它们。我认为这在某种程度上让它变得更美观、更容易理解。当位置仍然保持时,我想在线的末尾使用渐变。由于我正在使用moderncv并且它使用线条来表示部分(例如“体验”前面的橙色线),我想校准这条线上的时间线,设置与部分线的末端相对应的开始和结束日期。在我的示例中,部分线从 2000 年到 2011 年。

我认为使用 TiKz 可以做到。你建议如何实现这一点?是否有现有的软件包几乎可以做到这一点?

答案1

为了记录在案,我已经改编了 Jake 的代码并开始开发一个名为现代时间线

\usepackage{moderntimeline}

% Set the scale.
% I go up to 2013 otherwise some late dates overflow on the entry
\tlmaxdates{1999}{2013}
% Set the line width.
% This automatically sets the space under the top label to be 1pt more
\tlwidth{0.8ex}
% Set the labels text size
\tltext{\tiny}

下面举几个例子:

\section{Experience}
\subsection{IT Experience}
\tlcventry[blue]{2006}{0}{Systems Engineer}{\href{http://www.orness.com}{ORNESS} then \href{http://www.alten.fr}{Alten}}{Sophia Antipolis}{}
{Consultant at France T\'el\'ecom
\begin{itemize}
 \item Administration of Cfengine, FAI and the software package repository;
 \item Renewal and industrialization of the software deployment system for Debian/Ubuntu;
 \item Management of the Gforge (collaborative development web interface) platform;
 \item Monitoring of the fleet of servers;
 \item Writing of technical documentation.
\end{itemize}}

tl1

\tllabelcventry[purple]{1999}{2000}{1999--2000}{Paramedic}
  {\href{http://www.croix-rouge.fr/}{French Red Cross}}{Paris Suburbs}{}
  {Served in several volunteer missions as a paramedic}

tl2

\tldatelabelcventry[red]{2004}{July 2004}{Blue Collar Internship}
  {\href{http://www.snecma.com}{SNECMA}}{Moissy-Cramayel}{}
  {Assembled and equilibrated turbo reactors for planes}

tl3

\tldatecventry[green]{2005}{Student in Pedagogy (`Gestion Mentale')}
  {\href{http://www.ifgm.org/}{IFGM}}{Bordeaux}{}
  {Pedagogy, Didacticism, Cognitive Psychology}

tl4

编辑:由于moderncv将左列与右列对齐,日期会出现一些奇怪的问题,所以我决定在每个条目上都放一个白色矩形,以确保整个空间都得到利用。之后,我的妻子建议我在每个条目上都使用一条细线,使事情更清晰,所以现在它看起来像这样(细线的颜色和宽度可以设置):

tl5

完整示例可见在我更新的简历中

答案2

此代码不适用于 2012 年以后的 moderncv 版本。请使用 ℝaphink 的现代时间线而不是包装

这是让它与 一起工作的一种方法moderncv。我定义了一个新的宏,\funkycventry它采用开始和结束年份,然后采用与 相同的所有参数cventry,并使用它以与节标题相同的颜色和宽度绘制时间轴栏。如果结束年份是0,则栏会淡出,并且不会打印结束年份。

\documentclass[]{moderncv}
\usepackage{tikz}
\moderncvtheme[blue]{casual}

\usepackage[scale=0.8]{geometry}
\firstname{John}
\familyname{Doe}


\begin{document}
\maketitle

\tikzset{
    startyear/.style={
        font=\scriptsize,
        name=startyear,
        above=3pt,
        inner xsep=0pt,
        anchor=base west,
    },
    endyear/.style={
        font=\scriptsize,
        name=endyear,
        below,
        inner xsep=0pt,
        anchor=north east,
    }
}

\def\firstyear{2000}
\def\lastyear{2011}
\pgfmathsetmacro\yearrange{\lastyear-\firstyear}

\newcommand{\funkycventry}[7]{%
\pgfmathsetmacro\endyear{ifthenelse(#2==0,\lastyear,#2)}
\pgfmathsetmacro\startfraction{(#1-\firstyear)/(\lastyear-\firstyear)}%
\pgfmathsetmacro\endfraction{(\endyear-\firstyear)/(\lastyear-\firstyear)}%
\pgfmathsetmacro\ongoing{!(#2==0)}
 \cventry{\tikz[baseline=(endyear.north)]{
    \fill [sectionrectanglecolor] (0,0) 
        ++(\startfraction*\hintscolumnwidth,0pt)
        node [startyear] {#1}
        rectangle (\endfraction*\hintscolumnwidth,0.5ex)
        node [endyear] {\pgfmathparse{ifthenelse(#2==0,,#2)}\pgfmathresult}
        (\hintscolumnwidth,0pt) ;
    \ifnum #2=0
        \shade [left color=sectionrectanglecolor]
        (\endfraction*\hintscolumnwidth-1em,0pt) rectangle ++(1em,0.5ex);
    \fi}
}
{#3}{#4}{#5}{#6}{#7}
}

\section{Experience}
\subsection{Vocational}
\funkycventry{2002}{2007}{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:
\item Achievement 3.
\end{itemize}}
\funkycventry{2000}{2011}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2}
\subsection{Miscellaneous}
\funkycventry{2005}{0}{Job title}{Employer}{City}{}{Description}


\end{document}

答案3

如果我正确理解了你的描述,这可能就是你所需要的:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}[ultra thick]
\def\timelineunfinished#1#2{\node (refnode) at (0,0) {};%
                   \shade [left color=#1,right color=white] (${#2-2000}*(1,0)$) rectangle ++(${2011-#2}*(1,0)+1*(0,-0.5)$) node [pos=0, label=#2] (startdate) {};}

\timelineunfinished{red}{2005}
\end{tikzpicture}

\begin{tikzpicture}
\def\timelinefinished#1#2#3{\node (refnode) at (0,0) {};%
                   \path [fill=#1] (${#2-2000}*(1,0)$) rectangle ++(${#3-#2}*(1,0)+1*(0,-0.5)$) node [pos=0, label=#2] (startdate) {} node [label=#3] (enddate) at ++(0,0.5) {};}

\timelinefinished{red}{2003}{2007}
\end{tikzpicture}
\end{document}

我所做的是定义两个新命令,一个用于具有开始和结束日期的时间线(这些时间线不会使用渐变呈现,而是使用实心填充),另一个用于“进行中”的时间线。时间线最早可以在 2000 年开始,最晚可以在 2011 年结束。要更改限制,只需相应地替换代码中的数字即可。

代码可能需要清理,可以包括错误检查以避免结束早于开始等等。但对于入门来说,我希望这样就可以了。

相关内容