summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/chronosys/chronosyschr.tex
blob: 26ac5aab5861ce89bc6065f6dcb5eb03164177eb (plain)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
% This is is the main file of the `chronosys' package, with all the principal code.
%
% The maintener of this work is Mathieu Long.
% email : mlong.tex@hotmail.fr
% the `chronosys' package consists in the 9 files :
%  -- `docchronosys_en.tex' and `docchronosys_en.pdf' (english manual)
%  -- `docchronosys_fr.tex' and `docchronosys_fr.pdf' (french manual)
%  -- README
%  -- `chronosys.tex' (file for plain TeX)
%  -- `chronosyschr.tex' (main file of the `chronosys' package)
%  -- `chronosys.sty' (file for LaTeX)
%  -- `x-chronosys.tex' (file for ConTeXt)
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is Mathieu Long.
%
\expandafter\ifx\csname chronosys @\endcsname\relax\else\immediate\write16{Le fichier a deja ete charge}\endinput\fi
\ifx\numexpr\UNDEFINED\immediate\write16{Desole, mais ce fichier utilise les primitives E-TeX, vous ne pouvez pas utiliser le moteur TeX.}\endinput\fi
\expandafter\edef\csname chronosys @\endcsname{\the\catcode`\@}
\def\chron@sysversion{1.15}
\catcode`\@=11
\catcode`\!=11

\newhelp\chrhelpmessage{Contactez l'auteur par mail.}
\newhelp\chrerrormessage{La commande a deja ete definie.}
\def\error!message{\errhelp{\the\chrhelpmessage}\errmessage{\the\chrerrormessage}} %
%
\def\!chrverif#1#2{\ifdefined#2\expandafter\error!message \fi #1#2} %
%
\def\!gobblethree#1#2#3{}
\def\!gobble#1{}
\ifdefined\@ifnextchar \def\:{\let\ifnexttoken\@ifnextchar}\expandafter\:\else 
\ifdefined\doifnextcharelse \def\:{\let\ifnexttoken\doifnextcharelse}\expandafter\:\else
\long\def\@ifnextchar#1#2#3{%
  \let\reserved@d=#1%
  \def\reserved@a{#2}%
  \def\reserved@b{#3}%
  \futurelet\@let@token\@ifnch}
\let\kernel@ifnextchar\@ifnextchar
\def\@ifnch{%
  \ifx\@let@token\@sptoken
    \let\reserved@c\@xifnch
  \else
    \ifx\@let@token\reserved@d
      \let\reserved@c\reserved@a
    \else
      \let\reserved@c\reserved@b
    \fi
  \fi
  \reserved@c}
\def\:{\let\@sptoken= } \:  % this makes \@sptoken a space token
\def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
\let\ifnexttoken\@ifnextchar
\fi\fi

\newif\if!chronearg \newif\if!chrtwoarg 
\!chrverif\def\!chrtraiteoneargument#1{\ifnexttoken[{\!chroneargtrue#1}{\!chroneargfalse#1[]}}

\!chrverif\def\!chrtraitetwoargument#1{\let\todoafterarg#1%
\ifnexttoken[{\!chroneargtrue\savefirsttwoarg}{\!chroneargfalse\!chrtwoargfalse#1[][]}}
\!chrverif\def\savefirsttwoarg[#1]{\ifnexttoken[{\!chrtwoargtrue \todoafterarg[#1]}{\!chrtwoargfalse \todoafterarg[#1][]}}

\!chrverif\def\!chrtraitingargvirgule#1#2{\def\!tr@itintargvirgule{#2} \!chrtr@itingargvirgule#1,\end}
\!chrverif\def\!chrtr@itingargvirgule#1,{\!chrdotraiteargvirgule#1,=\end,\ifnexttoken\end\!gobble\!chrtr@itingargvirgule}
\!chrverif\def\!chrdotraiteargvirgule#1=#2,{\ifx\end#2\relax\else \!chrdotr@iteargvirgule#1=#2,\expandafter\!gobblethree\fi}
\!chrverif\def\!chrdotr@iteargvirgule#1=#2,{\ifcsname \!tr@itintargvirgule#1\endcsname \expandafter\def\csname \!tr@itintargvirgule#1\endcsname{#2} \else \immediate\write16{chronosys : option #1 non reconnue, impossible de lui affecter la valeur #2}\fi }

\!chrverif\def\startchronology{\!chrtraiteoneargument\dostartchronology}

\!chrverif\def\!chrdefaultstartyear{0} \!chrverif\def\!chrdefaultstopyear{\the\year} \!chrverif\def\!chrdefaultwidth{\the\hsize} %
 \!chrverif\def\!chrdefaultheight{0.7pc} \!chrverif\def\!chrdefaultdates{true} \!chrverif\def\!chrdefaultarrow{true} \!chrverif\def\!chrdefaultarrowwidth{0.1\!chrwidth}
\!chrverif\def\!chrdefaultarrowheight{\!chrheight} \!chrverif\def\!chrdefaultcolor{black} \!chrverif\def\!chrdefaultarrowcolor{\!chr@color}
\!chrverif\def\!chrdefaultdatesstyle{} \!chrverif\def\!chrdefaultstartdate{true} \!chrverif\def\!chrdefaultstopdate{true} \!chrverif\def\!chrdefaultdateselevation{20pt}
\!chrverif\def\!chrdefaultbox{false} \!chrverif\def\!chrdefaultalign{center}

\!chr@verif\newdimen\!chrheight \!chr@verif\newif\if!chrdates \!chr@verif\newif\if!chrarrow \!chr@verif\newcount\!chrstartyear \!chr@verif\newcount\!chrstopyear \!chr@verif\newdimen\!chrwidth \!chr@verif\newdimen\!chrarrowwidth \!chr@verif\newdimen\!chrarrowheight \!chr@verif\newbox\!chrflechebox 
\!chr@verif\newdimen\!chr!realwidth \!chr@verif\newdimen\!chr!unitperyear
\!chr@verif\newif\if!chrstartdate \!chr@verif\newif\if!chrstopdate \!chr@verif\newdimen\!chrdateselevation \!chr@verif\newif\if!chrbox

\!chrverif\def\!chr!periodeschwarzodergrau{\def\!chr!stringtest{black}\ifx\!chr@color\!chrstringtest\def\!chr!periodeschwarzodergr@u{gray}\else\def\!chr!periodeschwarzodergr@u{black}\fi}

\!chrverif\def\!chrdefaultoptions{startyear=\!chrdefaultstartyear, stopyear=\!chrdefaultstopyear,
startdate=\!chrdefaultstartdate, stopdate=\!chrdefaultstopdate,
height=\!chrdefaultheight, width=\!chrdefaultwidth, dates=\!chrdefaultdates, arrow=\!chrdefaultarrow,
arrowwidth=\!chrdefaultarrowwidth, arrowheight=\!chrdefaultarrowheight, color=\!chrdefaultcolor,
arrowcolor=\!chrdefaultarrowcolor, datesstyle=\!chrdefaultdatesstyle, dateselevation=\!chrdefaultdateselevation,
box=\!chrdefaultbox, align=\!chrdefaultalign}

\!chrverif\def\!chr@startyear{} \!chrverif\def\!chr@startdate{}%
\!chrverif\def\!chr@stopyear{} \!chrverif\def\!chr@stopdate{}
\!chrverif\def\!chr@height{}  \!chrverif\def\!chr@width{}
\!chrverif\def\!chr@dates{true}%
\!chrverif\def\!chr@arrow{} \!chrverif\def\!chr@arrowwidth{} \!chrverif\def\!chr@arrowheight{} 
\!chrverif\def\!chr@color{} 
\!chrverif\def\!chr@arrowcolor{} \!chrverif\def\!chr@datesstyle{} 
\!chrverif\def\!chr@dateselevation{}%
\!chrverif\def\!chr@box{} \!chrverif\def\!chr@align{}%

\!chrverif\def\dostartchronology[#1]{\begingroup\parindent\z@\par
\expandafter\expandafter\expandafter\!chrtraitingargvirgule\expandafter{\!chrdefaultoptions}{!chr@}
\if!chronearg \!chrtraitingargvirgule{#1}{!chr@}\fi \!chrheight\!chr@height \!chrstartyear\!chr@startyear \!chrstopyear\!chr@stopyear \!chrwidth\!chr@width %
\csname !chrdates\!chr@dates\endcsname \csname !chrarrow\!chr@arrow\endcsname \csname !chrstartdate\!chr@startdate\endcsname
\csname !chrbox\!chr@box\endcsname %
\csname !chrstopdate\!chr@stopdate\endcsname \!chrarrowwidth\!chr@arrowwidth \!chrarrowheight\!chr@arrowheight \!chrdateselevation\!chr@dateselevation%
\!chr!periodeschwarzodergrau%
\dostartchronologyfinal}

\!chrverif\def\dostartchronologyfinal{\unless\if!chrarrow\!chrarrowwidth\z@\relax\!chrarrowheight\z@\fi\!chr!realwidth\dimexpr\!chrwidth-\!chrarrowwidth\relax \ifdim\!chr!realwidth<0pt \advance\!chrwidth\dimen@ \advance\!chrarrowwidth-\!chr!realwidth \!chr!realwidth\z@\fi %
\dimen@\dimexpr\!chrheight-\!chrarrowheight\relax  
\dimen@ii\dimen@\relax\ifdim\dimen@ii>0pt\relax\dimen@ii\z@\fi \dimen@i\dimexpr\!chrheight-\dimen@ii+\!chrdateselevation\relax% 
% %
\setbox\!chrflechebox\hbox{%
\if!chrdates\if!chrstartdate\raise\dimen@i\relax % %
\hbox to\z@{\hss\!chr@datesstyle{\the\!chrstartyear}\hss}\fi\fi%
\starttikzpicture\filldraw[color=\!chr@color](0,0)--(\!chr!realwidth,0)--(\!chr!realwidth,\!chrheight)--(0,\!chrheight)--cycle;\if!chrbox\draw[color=black](-0.4pt,-0.4pt)--(\!chr!realwidth+0.4pt,-0.4pt)--(\!chr!realwidth+0.4pt,\!chrheight+0.4pt)--(-0.4pt,\!chrheight)--cycle;\fi %
\if!chrarrow\ifx\!chr@color\!chr@arrowcolor\else\draw[color=\!chr!periodeschwarzodergr@u](\!chr!realwidth,0)--(\!chr!realwidth,\!chrheight);\fi\fi\stoptikzpicture %
\if!chrdates\if!chrstopdate\raise\dimen@i\hbox to\z@{\hss\!chr@datesstyle{\the\!chrstopyear}\hss}\fi\fi%
%
\if!chrarrow\raise0.5\dimen@\hbox{\starttikzpicture\filldraw[color=\!chr@arrowcolor](0,0.5\!chrarrowheight)--(\!chrarrowwidth,0)--(0,-0.5\!chrarrowheight)--cycle;\if!chrbox\draw[color=black](-0.4pt,0.5\!chrarrowheight+0.4pt)--(\!chrarrowwidth+0.4pt,0)--(-0.4pt,-0.5\!chrarrowheight-0.4pt)--cycle;\fi \stoptikzpicture}\fi}%
\count@\numexpr\!chrstopyear-\!chrstartyear\relax \ifnum\count@<0\relax\immediate\write16{Erreur avec les dates donn\'ees}\fi \!chr!unitperyear\dimexpr\!chr!realwidth/\count@\relax}


\!chrverif\def\setupchronology#1{\!chrtraitingargvirgule{#1}{!chrdefault}}
\!chr@verif\newcount\!chr!periodecolornum\!chr@verif\newcount\!chr!starttingtraitement \!chr@verif\newdimen\!chr!dimentraitement
\!chr@verif\newdimen\!chrperiodtextdepth \!chrverif\def\!chrperiodedefaulttextdepth{15pt} 
\!chr@verif\newif\if!chrperioddates  \!chr@verif\newif\if!chrperiodbox
\!chr@verif\newif\if!chrperiodstartdate \!chr@verif\newif\if!chrperiodstopdate \!chrverif\def\!chrperiodedefaultstartdate{true}
\!chr@verif\newif\if!chrperiodifcolorbox 
\!chr@verif\newdimen\!chrperioddateselevation 
\!chr@verif\newdimen\!chrperiodeventtextwidth 
\!chr@verif\newdimen\!chrperiodbottomdepth \!chr@verif\newdimen\!chrperiodtopheight

%alternance des couleurs
\!chr@verif\newcount\!chrperiodecoloralternancetotalnum
\!chrverif\def\!chrperiodedefaultcolor{\chron@periodcolor}
\!chrverif\def\!chrperiodedefa@@ultcolor{\chron@periodcolor}
\!chrverif\def\!chrperiodedef@ultcolor{\!chrperiodedefaultcolor}
\!chrverif\def\chron@periodcolor{\ifcase\!chr!periodecolornum blue\or red\or cyan\or purple\or yellow\fi}
\!chrperiodecoloralternancetotalnum5%
\!chrverif\def\!chr!periodecolor{\edef\!chrperiodedef@ultcolor{\!chrperiodedefaultcolor}\ifx\!chrperiodedefaultcolor\!chrperiodedefa@@ultcolor\ifx\!chrperiodedef@ultcolor\!chr@color\!chr!periodecoloradvance\!chr!periodecolor \fi\fi}
\!chrverif\def\!chr!periodecoloradvance{\global\advance\!chr!periodecolornum\@ne\relax
\ifnum\!chr!periodecolornum=\!chrperiodecoloralternancetotalnum\relax\global\!chr!periodecolornum\z@\fi}

\!chrverif\def\restartchronoperiodecolor{\!chrtraiteoneargument\dorestartchronoperiodecolor}
\!chrverif\def\dorestartchronoperiodecolor[#1]{%
\if!chronearg \def\@@string@a{#1}%
\!chr!periodecolornum\z@ %
\dorestartchronoperiodecolor@ux
\else\!chr!periodecolornum\z@\fi}
\!chrverif\def\dorestartchronoperiodecolor@ux{\edef\@@string@b{\chron@periodcolor}\ifnum\!chr!periodecolornum<\!chrperiodecoloralternancetotalnum
\unless\ifx\@@string@a\@@string@b
\global\advance\!chr!periodecolornum\@ne 
\dorestartchronoperiodecolor@ux\fi\else\global\!chr!periodecolornum\z@\fi}

\!chrverif\def\chronoperiodecoloralternation#1{%
\def\@@string@s{\ifcase\!chr!periodecolornum}%
\!chrperiodecoloralternancetotalnum\z@\!chr!chronoperiodecoloralternance#1,\end \let\chron@periodcolor\@@string@s}

\!chrverif\def\!chr!chronoperiodecoloralternance#1,{\advance\!chrperiodecoloralternancetotalnum\@ne
\expandafter\def\expandafter\@@string@s\expandafter{\@@string@s#1}%
\ifnexttoken\end{\expandafter\def\expandafter\@@string@s\expandafter{\@@string@s\fi}\!gobble}%
{\expandafter\def\expandafter\@@string@s\expandafter{\@@string@s\or}\!chr!chronoperiodecoloralternance}}


\!chrverif\def\!chr@periodtextdepth{}\!chrverif\def\!chr@perioddates{}%
\!chrverif\def\!chr@periodcolor{}\!chrverif\def\!chr@perioddatesstyle{}%
\!chrverif\def\!chr@periodstartdate{}\!chrverif\def\!chr@periodstopdate{}%
\!chrverif\def\!chr@periodtextstyle{}%
\!chrverif\def\!chr@perioddateselevation{}%
\!chrverif\def\!chr@periodifcolorbox{}\!chrverif\def\!chr@periodcolorbox{}%
\!chrverif\def\!chr@periodbottomdepth{}\!chrverif\def\!chr@periodtopheight{}%
\!chrverif\def\!chr@periodbox{}%

\!chrverif\def\dochronoperiode[#1]#2#3#4{%
\!chr!periodecolor 
\if!chronearg
\!chrtraitingargvirgule{#1}{!chr@period}\fi
\!chrperiodtextdepth\!chr@periodtextdepth \!chrperiodtopheight\!chr@periodtopheight
\!chrperiodbottomdepth\!chr@periodbottomdepth
\csname !chrperioddates\!chr@perioddates\endcsname \csname !chrperiodstartdate\!chr@periodstartdate\endcsname \csname !chrperiodstopdate\!chr@periodstopdate\endcsname
\csname !chrperiodifcolorbox\!chr@periodifcolorbox\endcsname
\csname !chrperiodbox\!chr@periodbox\endcsname
\!chrperioddateselevation\!chr@perioddateselevation \advance\!chrperioddateselevation 1.25\!chrheight\relax
\ifnum#2>\numexpr\!chrstartyear-1\relax\ifnum#2<\numexpr\!chrstopyear+1\relax\ifnum#3<\numexpr\!chrstopyear+1\relax \ifnum#3>\numexpr\!chrstartyear-1\relax\count@\numexpr#3-#2\relax\ifnum\count@>\z@\relax
\!chr!starttingtraitement\numexpr#2-\!chrstartyear\relax\dimen@\dimexpr\count@\!chr!unitperyear\relax
\!chr!dimentraitement\dimexpr\!chr!starttingtraitement\!chr!unitperyear\relax
% %
\dimen@i\wd\!chrflechebox
\setbox\!chrflechebox\hbox{\unhbox\!chrflechebox\kern-\dimen@i\kern\!chr!dimentraitement
\lower\dimexpr\!chrperiodtextdepth-\!chrperiodbottomdepth\relax\hbox to\z@
{\hbox to\dimen@
{\hss \if!chrperiodifcolorbox\expandafter\!chrperiodcolorbox\fi{\!chr@periodtextstyle{#4}}\hss}\hss}%
\if!chrperioddates\if!chrperiodstartdate
\raise\dimexpr\!chrperioddateselevation +(\!chrperiodtopheight-\!chrheight)\relax
\hbox to\z@{\hss\!chr@perioddatesstyle{#2}\hss}\fi\fi 
\raise\!chrperiodbottomdepth \hbox{\starttikzpicture \filldraw [color=\!chr@periodcolor](\z@,\!chrperiodbottomdepth)--(\dimen@,\!chrperiodbottomdepth)--(\dimen@,\!chrperiodtopheight)--(\z@,\!chrperiodtopheight)--cycle;\draw[color=\!chr!periodeschwarzodergr@u](\z@,\!chrperiodbottomdepth)--(\z@,\!chrperiodtopheight);%
\draw [color=\!chr!periodeschwarzodergr@u](\dimen@,\!chrperiodbottomdepth)--(\dimen@,\!chrperiodtopheight);%
\if!chrbox\draw[color=black](\z@,-0.2pt)--(\dimen@,-0.2pt)\fi
\if!chrperiodbox \draw[color=black](\z@,\!chrperiodbottomdepth)--(\dimen@,\!chrperiodbottomdepth);%
\draw[color=black](\dimen@,\!chrperiodtopheight)--(\z@,\!chrperiodtopheight);\fi
\stoptikzpicture}
\if!chrperioddates\if!chrperiodstopdate
\raise\dimexpr\!chrperioddateselevation+(\!chrperiodtopheight-\!chrheight)\relax
\hbox to\z@
{\hss \!chr@perioddatesstyle{#3}\hss}\fi\fi}\!chr!periodecoloradvance\fi\fi\fi\fi\fi}


\!chrverif\def\setupchronoperiode{\def\@@string@a{periode}\!chrtraiteoneargument\dosetupchronoeventandperiode}


\!chr@verif\newif\if!chreventspecifiedday\!chr@verif\newif\if!chreventspecifiedmonth \!chr@verif\newif\if!chreventbarre
\!chr@verif\newif\if!chreventdate  \!chr@verif\newif\if!chreventmark
\!chr@verif\newif\if!chreventifcolorbox \!chr@verif\newif\if!chreventconversionmonth 
\!chr@verif\newdimen\!chreventmarkdepth \!chr@verif\newif\if!chreventyear \!chr@verif\newdimen\!chreventiconheight
 \!chrverif\def\!chreventdefaultbarre{true}
\!chrverif\def\!chreventdefaulticon{} 
\!chrverif\def\!chreventdefaultmarkdepth{10pt} 
\!chrverif\def\!chreventdefaulttextstyle{} 


 \!chrverif\def\!chreventdefaulttesttextwidth{\relax}

\!chrverif\def\!chreventevalspecification#1{\count@\z@\relax\!chreventev@lspecification#1/\end}
\!chrverif\def\!chreventev@lspecification#1/{\advance\count@\@ne\relax\expandafter\def\csname !chreventspecifiedargument\number\count@\endcsname{#1}\ifnexttoken\end\!gobble\!chreventev@lspecification}

\!chrverif\def\chron@selectmonth#1{\ifcase#1\or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or novembre\or d\'ecembre\fi}

\!chrverif\def\!chr@eventbarre{} \!chrverif\def\!chr@eventicon{} \!chrverif\def\!chr@eventmarkdepth{}%
\!chrverif\def\!chr@eventtextstyle{} \!chrverif\def\!chr@eventmark{}%
\!chrverif\def\!chr@eventdate{} \!chrverif\def\!chr@eventdatesseparation{}%
\!chrverif\def\!chr@eventconversionmonth{} \!chrverif\def\!chr@eventdatestyle{}%
\!chrverif\def\!chr@eventdatesstyle{} \!chrverif\def\!chr@eventyear{} \!chrverif\def\!chr@eventiconheight{}%
\!chrverif\def\!chr@eventifcolorbox{} \!chrverif\def\!chr@eventcolorbox{}%.
\!chrverif\def\!chr@eventtextwidth{}%

\!chrverif\def\dochronoevent[#1]#2#3{%
\if!chronearg \!chrtraitingargvirgule{#1}{!chr@event}\fi
\csname !chreventbarre\!chr@eventbarre\endcsname 
\csname !chreventmark\!chr@eventmark\endcsname 
\csname !chreventdate\!chr@eventdate\endcsname
\csname !chreventconversionmonth\!chr@eventconversionmonth\endcsname 
\csname !chreventyear\!chr@eventyear\endcsname
\csname !chreventifcolorbox\!chr@eventifcolorbox\endcsname
\!chreventmarkdepth\!chr@eventmarkdepth \!chreventiconheight\!chr@eventiconheight
\ifx\!chr@eventtextwidth\!chreventdefaulttesttextwidth \!chrperiodeventtextwidth=-1pt%
\else \!chrperiodeventtextwidth\!chr@eventtextwidth\fi
\!chreventevalspecification{#2}\ifnum\count@<4\relax
\ifcase\count@\or\!chreventspecifieddayfalse\!chreventspecifiedmonthfalse 
\edef\!chreventyear{\csname !chreventspecifiedargument1\endcsname}\or \!chreventspecifieddayfalse\!chreventspecifiedmonthtrue
\edef\!chreventyear{\csname !chreventspecifiedargument2\endcsname}\edef\!chreventmonth{\csname !chreventspecifiedargument1\endcsname}%
\or \!chreventspecifieddaytrue\!chreventspecifiedmonthtrue
\edef\!chreventyear{\csname !chreventspecifiedargument3\endcsname}\edef\!chreventmonth{%
\csname !chreventspecifiedargument2\endcsname}\edef\!chreventday{\csname !chreventspecifiedargument1\endcsname}\fi %
\ifnum\!chreventyear>\numexpr\!chrstartyear-1\relax\ifnum\!chreventyear<\numexpr\!chrstopyear+1\relax
\if!chreventspecifiedmonth\if!chreventspecifiedday \count@\numexpr\!chreventday+\!chreventmonth*30\relax\else %
\count@\numexpr\!chreventmonth*30\relax\fi\else\count@\z@\fi %
\!chr!dimentraitement\dimexpr(\!chr!unitperyear)/365*\count@\relax%
\count@\numexpr\!chreventyear-\!chrstartyear\relax \advance\!chr!dimentraitement\dimexpr\count@\!chr!unitperyear\relax
% %
\dimen@i\wd\!chrflechebox
\setbox\!chrflechebox\hbox{\unhbox\!chrflechebox\kern-\dimen@i\kern\!chr!dimentraitement
\if!chreventbarre
\starttikzpicture \draw[color=black](0,0)--(0,\!chrheight); \stoptikzpicture \fi
\kern-0.4pt\raise\!chreventiconheight \hbox to\z@{\hss\!chr@eventicon\hss}\lower\dimexpr\!chreventmarkdepth+2pt\relax\hbox to\z@{\vbox
to\z@{\ifdim\!chreventmarkdepth<0pt\relax\vss\fi
\if!chreventdate\hbox to\z@
{\hss \if!chreventifcolorbox \expandafter\!chreventcolorbox\fi {\!chr@eventdatestyle{\if!chreventspecifiedday %
{\!chr@eventdatesstyle{\!chreventday}}\!chr@eventdatesseparation\fi{\!chr@eventdatesstyle{\if!chreventspecifiedmonth 
\if!chreventconversionmonth\expandafter \chron@selectmonth\fi \!chreventmonth\fi}}\if!chreventspecifiedmonth\if!chreventyear \!chr@eventdatesseparation\fi\fi \if!chreventyear{\!chr@eventdatesstyle{\!chreventyear}}\fi%
}}\hss}\fi
\ifdim\!chrperiodeventtextwidth > \z@ 
\vbox to \z@{
\hbox to\z@{\hss\setbox\z@\hbox{\vbox
{\hsize\!chrperiodeventtextwidth\relax\!chr@eventtextstyle{#3}}}%
\dimen@i\wd\z@
\dimen@ii\dimexpr\ht\z@+\dp\z@\relax
\setbox\z@\hbox to\z@{\hss\starttikzpicture \fill[color=\!chr@eventcolorbox]%
(\z@,\z@)--(\dimen@i,\z@)--(\dimen@i,\dimen@ii)--(\z@,\dimen@ii);\stoptikzpicture\kern-\dimen@i
\box\z@\hss}\box\z@}\vss}
\else \hbox to\z@
{\hss\if!chreventifcolorbox\expandafter\!chreventcolorbox\fi{%
\!chr@eventtextstyle{#3}}\hss}%
\fi \ifdim\!chreventmarkdepth>0pt\relax\vss\fi}}\if!chreventmark\ifdim\!chreventmarkdepth<0pt\starttikzpicture \draw(0,0)--(0,\!chreventmarkdepth+5pt);\stoptikzpicture\else \vrule height0pt depth\!chreventmarkdepth\fi\fi  
\setbox0\vbox{\if!chreventdate\hbox{#2}\fi\hbox{%
\ifdim\!chrperiodeventtextwidth > \z@ \vbox {\hsize\!chrperiodeventtextwidth #3}%
\else #3\fi }}\lower\dimexpr\dp0+\ht0+\!chreventmarkdepth+2pt\relax\hbox{}%
}
\fi\fi\fi}

\!chrverif\def\setupchronoevent{\def\@@string@a{event}\!chrtraiteoneargument\dosetupchronoeventandperiode}
\!chrverif\def\dosetupchronoeventandperiode[#1]#2{\if!chronearg
\def\@@string@a{#1}\fi \!chr@parcoursoptions#2,\end}

\!chr@verif\newdimen\!chrstopwidth
\!chrverif\def\!chrstopcenteralign{\!chrstopwidth\dimexpr(\hsize-\!chrwidth)/2\relax}
\!chrverif\def\!chrstopleftalign{\!chrstopwidth\z@}
\!chrverif\def\!chrstoprightalign{\!chrstopwidth\dimexpr\hsize-\!chrwidth\relax}

\!chrverif\def\stopchronology{\goodbreak\ifcsname !chrstop\!chr@align align\endcsname \csname !chrstop\!chr@align align\endcsname \else\!chrstopwidth\z@\fi \moveright\!chrstopwidth\box\!chrflechebox\endgroup\bigskip}

\!chr@verif\newif\if!chrverifdefines
\!chrverif\def\!chrverifdefines{\ifcsname chrono\@@string@a\endcsname \!chrverifdefinesfalse \immediate\write16{Attention : macro \expandafter\noexpand\csname chrono\@@string@a\endcsname deja definie.}\expandafter\!gobble \else\!chrverifdefinestrue\expandafter\!chrverifdefines@ux\fi}
\!chrverif\def\!chrverifdefines@ux{\expandafter\def\csname chrono\@@string@a\endcsname}

\!chrverif\def\definechronoevent#1{%
\def\@@string@a{#1}%
\!chrverifdefines{%
\expandafter\expandafter\expandafter\!chrtraitingargvirgule\expandafter\expandafter\expandafter{\csname !chr#1defaultoptions\endcsname}{!chr@event}%
\!chrtraiteoneargument\dochronoevent}%
\if!chrverifdefines
\expandafter\def\csname !chr#1defaultoptions\endcsname{barre=true, icon=\relax,
markdepth=10pt, textstyle=\relax, mark=true,
date=true, datesseparation=\space, conversionmonth=true,
datestyle=\relax, datesstyle=\relax, year=true,
iconheight=0.5\!chrheight, ifcolorbox=true, colorbox=white,
textwidth=\relax}\fi
\ifnexttoken[{\!chr@defineorsetupoptions}{}}

\!chrverif\def\definechronoperiode#1{%
\def\@@string@a{#1}%
\!chrverifdefines{%
\expandafter\expandafter\expandafter\!chrtraitingargvirgule\expandafter\expandafter\expandafter{\csname !chr#1defaultoptions\endcsname}{!chr@period}%
\!chrtraiteoneargument\dochronoperiode}%
\if!chrverifdefines
\expandafter\def\csname !chr#1defaultoptions\endcsname{textdepth=15pt, dates=true,
color=\!chrperiodedef@ultcolor, datesstyle=\relax,
startdate=true, stopdate=true, textstyle=\relax,
dateselevation=0pt, ifcolorbox=true,
colorbox=white, bottomdepth=0pt, topheight=\!chrheight, box=false}\fi
\ifnexttoken[{\!chr@defineorsetupoptions}{}}

\!chrverif\def\!chr@defineorsetupoptions[#1]{%
\!chr@parcoursoptions#1,\end
}

\!chrverif\def\!chr@parcoursoptions#1,{\!chr@replaceoptions#1,=\end,\ifnexttoken\end\!gobble\!chr@parcoursoptions}
\!chrverif\def\!chr@replaceoptions#1=#2,{\ifx#2\end\relax\else
\def\@@string@f{}%
\def\@@string@c{#1}\def\@@string@d{#2}%
\expandafter\let\expandafter\@@string@@b\csname !chr\@@string@a defaultoptions\endcsname
\expandafter\!chr@replaceoptionsaux\@@string@@b,\end%
\expandafter\let\csname !chr\@@string@a defaultoptions\endcsname\@@string@f
\expandafter\!gobblethree\fi}

\!chrverif\def\!chr@replaceoptionsaux#1,{\!chr@replaceoptions@ux#1,=\end, \ifnexttoken\end\!gobble\!chr@replaceoptionsaux}
\!chrverif\def\!chr@replaceoptions@ux#1=#2,{%
\ifx#2\end\relax\else
\def\@@string@e{#1} \ifx\@@string@c\@@string@e
\expandafter\def\expandafter\@@string@f\expandafter{\@@string@f , #1=}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\@@string@f\expandafter\expandafter\expandafter{\expandafter\@@string@f\@@string@d}%
\else \expandafter\def\expandafter\@@string@f\expandafter{\@@string@f , #1=#2}\fi\expandafter\!gobblethree\fi
}


\!chr@verif\newcount\!chrgraduationcount
\!chr@verif\newcount\!chrgraduationcount@ux
\newif\if!chrgradu@tionevent \!chrgradu@tioneventtrue
\!chrverif\def\chronograduation{\!chrtraitetwoargument\dochronograduation}
\!chrverif\def\dochronograduation[#1][#2]#3{%
\if!chrtwoarg
\def\@@string@a{#2}%
\def\@@string@b{#1}\def\@@string@c{event}\def\@@string@d{periode}%
\ifx\@@string@b\@@string@c \!chrgradu@tioneventtrue \else
\ifx\@@string@b\@@string@d \!chrgradu@tioneventfalse\else \immediate\write16{chronosys : style #1 non défini}\fi\fi 
\else \def\@@string@a{#1}\fi
\!chrgraduationcount\!chrstartyear
\if!chrgradu@tionevent
\loop \advance\!chrgraduationcount#3\ifnum\!chrgraduationcount<\!chrstopyear \expandafter\chrono!!eventgradu@tion\expandafter[\@@string@a]{\number\!chrgraduationcount}{}\repeat
\else \def\@@string@e{startdate=true,}%
\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\@@string@e\expandafter\expandafter\expandafter{\expandafter\@@string@e\@@string@a}%
\expandafter\chrono!!periodegradu@tion\expandafter[\@@string@e]{\number\!chrgraduationcount}{#3}{}\restartchronoperiodecolor
\loop \advance\!chrgraduationcount#3\ifnum\!chrgraduationcount<\!chrstopyear \!chrgraduationcount@ux\numexpr\!chrgraduationcount-#3\relax \expandafter\chrono!!periodegradu@tion\expandafter[\@@string@a]{\number\!chrgraduationcount@ux}{\number\!chrgraduationcount}{}\repeat
\fi}

\!chrverif\def\setupchronograduation{\!chrtraiteoneargument\dosetupchronograduation}
\!chrverif\def\dosetupchronograduation[#1]{%
\if!chronearg
\def\@@string@b{#1}\def\@@string@c{event}\def\@@string@d{periode}%
\ifx\@@string@b\@@string@c \!chrgradu@tioneventtrue \else
\ifx\@@string@b\@@string@d \!chrgradu@tioneventfalse\fi\fi \fi
\if!chrgradu@tionevent \def\@@string@a{[!!eventgradu@tion]}\else\def\@@string@a{[!!periodegradu@tion]}\fi
\expandafter\setupchronoevent\@@string@a}

\definechronoevent{event}
\definechronoevent{!!eventgradu@tion}[markdepth=5pt,barre=false, ifcolorbox=false]
\definechronoperiode{periode}
\definechronoperiode{!!periodegradu@tion}[dateselevation=-10pt,
startdate=false, ifcolorbox=false]