这个问题导致了一个新的方案的出现:
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}}
\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}
\tldatelabelcventry[red]{2004}{July 2004}{Blue Collar Internship}
{\href{http://www.snecma.com}{SNECMA}}{Moissy-Cramayel}{}
{Assembled and equilibrated turbo reactors for planes}
\tldatecventry[green]{2005}{Student in Pedagogy (`Gestion Mentale')}
{\href{http://www.ifgm.org/}{IFGM}}{Bordeaux}{}
{Pedagogy, Didacticism, Cognitive Psychology}
编辑:由于moderncv
将左列与右列对齐,日期会出现一些奇怪的问题,所以我决定在每个条目上都放一个白色矩形,以确保整个空间都得到利用。之后,我的妻子建议我在每个条目上都使用一条细线,使事情更清晰,所以现在它看起来像这样(细线的颜色和宽度可以设置):
完整示例可见在我更新的简历中。
答案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 年结束。要更改限制,只需相应地替换代码中的数字即可。
代码可能需要清理,可以包括错误检查以避免结束早于开始等等。但对于入门来说,我希望这样就可以了。