diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/chronology/chronology.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/chronology/chronology.sty')
-rw-r--r-- | macros/latex/contrib/chronology/chronology.sty | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/macros/latex/contrib/chronology/chronology.sty b/macros/latex/contrib/chronology/chronology.sty new file mode 100644 index 0000000000..46c06c5746 --- /dev/null +++ b/macros/latex/contrib/chronology/chronology.sty @@ -0,0 +1,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% + |