\NeedsTeXFormat{LaTeX2e}% \ProvidesPackage{chronology}[2023/08/20 v2.0 - Horizontal Timeline]% \RequirePackage{calc}% \RequirePackage{tikz}% \RequirePackage{xparse}% % Defining counters and lengths \newcounter{step}\newcounter{stepstart}\newcounter{stepstop}% \newcounter{yearstart}\newcounter{yearstop}\newcounter{deltayears}% \newlength{\xstart}\newlength{\xstop}% \newlength{\unit}\newlength{\timelinewidth}% \newsavebox{\timelinebox}% % % Defining TikZ styles for labels and events % \tikzset{% ,chronevent/.style={fill=black,draw=none,opacity=0.5} ,chronlabel/.style={opacity=1} ,chrontickslabel/.style={chronlabel} ,chroneventlabel/.style={chronlabel} ,eventlabel/.style={chroneventlabel,anchor=south west,yshift=.2\unit,rotate=45} ,flippedeventlabel/.style={chroneventlabel,anchor=north west,yshift=-.2\unit,rotate=-45} ,eventlabelbottom/.style={chroneventlabel,anchor=south west,yshift=-1cm,rotate=0} % Bottom label } % % For compatibity with babel. Handling of active characters in TikZ. % \tikzset{ handle active characters in code, handle active characters in nodes } \makeatletter% \newif\ifchronology@star% \newenvironment{chronology}{% \@ifstar{\chronology@startrue\chronology@i*}{\chronology@starfalse\chronology@i*}% }{% \end{tikzpicture}% \end{lrbox}% \raisebox{2ex}{\resizebox{\timelinewidth}{!}{\usebox{\timelinebox}}}% }% \def\chronology@i*{% \@ifnextchar[{\chronology@ii*}{\chronology@ii*[{5}]}% }% \def\chronology@ii*[#1]#2#3#4{% \@ifnextchar[{\chronology@iii*[{#1}]{#2}{#3}{#4}}{\chronology@iii*[{#1}]{#2}{#3}{#4}[{#4}]}% }% \def\chronology@iii*[#1]#2#3#4[#5]{% \newif\ifflipped% \ifchronology@star% \flippedtrue% \else% \flippedfalse% \fi% \setcounter{step}{#1}% \setcounter{yearstart}{#2}\setcounter{yearstop}{#3}% \setcounter{deltayears}{\theyearstop-\theyearstart}% \setlength{\unit}{#5/\thedeltayears}% \setlength{\timelinewidth}{#4}% \pgfmathsetcounter{stepstart}{\theyearstart+\thestep-mod(\theyearstart,\thestep)}% \pgfmathsetcounter{stepstop}{\theyearstop-mod(\theyearstop,\thestep)}% \addtocounter{step}{\thestepstart}% \begin{lrbox}{\timelinebox}% \begin{tikzpicture}[baseline={(current bounding box.north)}]% \draw [|->] (0,0) -- (\thedeltayears*\unit+\unit, 0);% \foreach \x in {1,...,\thedeltayears}% \draw[xshift=\x*\unit] (0,-.1\unit) -- (0,.1\unit);% \addtocounter{deltayears}{1}% \foreach \x in {\thestepstart,\thestep,...,\thestepstop}{% \pgfmathsetlength\xstop{(\x-\theyearstart)*\unit}% \draw[xshift=\xstop] (0,-.3\unit) -- (0,.3\unit);% \ifflipped% \node[chrontickslabel] at (\xstop,0) [above=.2\unit] {\x};% \else% \node[chrontickslabel] at (\xstop,0) [below=.2\unit] {\x};% \fi% }% }% % % Event (legacy code for compatibility) % \makeatother% \DeclareDocumentCommand \event {o m m}{% [Startdate] Enddate Label \pgfmathsetlength\xstop{(#2-\theyearstart)*\unit}% \IfNoValueTF {#1} {% \ifflipped% \draw[chronevent]% (\xstop, 0) circle (.2\unit)% node[flippedeventlabel] {#3};% \else% \draw[chronevent]% (\xstop, 0) circle (.2\unit)% node[eventlabel] {#3};% \fi% }{% \pgfmathsetlength\xstart{(#1-\theyearstart)*\unit}% \ifflipped% \draw[chronevent,rounded corners=.2\unit]% (\xstart,-.2\unit) rectangle% node[flippedeventlabel] {#3} (\xstop,.2\unit);% \else% \draw[chronevent,rounded corners=.2\unit]% (\xstart,-.2\unit) rectangle% node[eventlabel] {#3} (\xstop,.2\unit);% \fi% }% } % % Eventspan % \DeclareDocumentCommand \eventspan {m m m O{black} O{0.3} O{0.2} o}{% Startdate Enddate Label Fill Opacity Height Bottom? \pgfmathsetlength\xstop{(#2-\theyearstart)*\unit}% \pgfmathsetlength\xstart{(#1-\theyearstart)*\unit}% \IfNoValueTF {#7} {% \draw[style={fill=#4,draw=none,opacity=#5},rounded corners=.05\unit]% (\xstart,-#6\unit) rectangle node[eventlabel] {#3} (\xstop,.2\unit);% }{% \draw[style={fill=#4,draw=none,opacity=#5},rounded corners=.05\unit]% Event, bottom label (\xstart,-#6\unit) rectangle node[eventlabelbottom, anchor=center]{#3} (\xstop,.2\unit);% }% } % % Eventpoint % \DeclareDocumentCommand \eventpoint {m m O{red} O{1} O{0.3}}{% Date Label Fill Opacity Height \pgfmathsetlength\xstop{(#1-\theyearstart)*\unit}% \draw[style={fill=#3,draw=none,opacity=#4},rounded corners=0\unit]% (\xstop, .1\unit) coordinate(A) -- (\xstop-.2*#5\unit,#5\unit) coordinate(B) -- (\xstop+.2*#5\unit,#5\unit)coordinate(C)% -- cycle node[eventlabel] {#2};% } % \newcommand{\decimaldate}[3]{(#1-1)/31/12+(#2-1)/12+#3}% % \endinput%