1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{chronology}[2015/03/27 v1.1.1 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}
}
% 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%
}%
}%
\makeatother%
\DeclareDocumentCommand \event {o m m}{%
\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%
}%
}
\newcommand{\decimaldate}[3]{(#1-1)/31/12+(#2-1)/12+#3}%
\endinput%
|