% 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 d\'ej`a \'et\'e charg\'e}\endinput\fi \ifx\numexpr\UNDEFINED\immediate\write16{D\'esol\'e, 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.0} \catcode`\@=11 \catcode`\!=11 \def\error!message{\errmessage{La commande a d\'ej\`a \'et\'e d\'efinie.}} % % \def\!chrverif#1#2{\ifdefined#2\error!message \fi #1#2} % % \!chrverif\def\!gobblethree#1#2#3{} \!chrverif\def\!gobble#1{} \ifdefined\@ifnextchar \def\:{\let\ifnexttoken=\@ifnextchar\let\!gobble=\@gobble}\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\ifonearg \newif\iftwoarg \!chrverif\def\traiteoneargument#1{\ifnexttoken[{\oneargtrue#1}{\oneargfalse#1[]}} \!chrverif\def\traitetwoargument#1{\let\todoafterarg#1% \ifnexttoken[{\oneargtrue\savefirsttwoarg}{\oneargfalse\twoargfalse#1[][]}} \!chrverif\def\savefirsttwoarg[#1]{\ifnexttoken[{\twoargtrue \todoafterarg[#1]}{\twoargfalse \todoafterarg[#1][]}} \!chr@verif\newif\ifarvirgule \!chrverif\def\traitingargvirgule[#1]#2{\def\!tr@itintargvirgule{#2} \tr@itingargvirgule#1,\end} \!chrverif\def\tr@itingargvirgule#1,{\ifnexttoken\end{\dotraiteargvirgule#1,=\end,\!gobble}{\dotraiteargvirgule#1,=\end,\tr@itingargvirgule}} \!chrverif\def\dotraiteargvirgule#1=#2,{\ifx\end#2\else \dotr@iteargvirgule#1=#2,\expandafter\!gobblethree\fi} \!chrverif\def\dotr@iteargvirgule#1=#2,{\ifcsname \!tr@itintargvirgule#1\endcsname \expandafter\def\csname \!tr@itintargvirgule#1\endcsname{#2}\fi } \!chrverif\def\startchronology{\traiteoneargument\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} \!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 \!chrverif\def\!chr@color{black} \!chrverif\def\!chr@arrowcolor{\!chrdefaultarrowcolor} \!chr@verif\newdimen\!chr!realwidth \!chrverif\def\!chr@datesstyle{} \!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\dostartchronology[#1]{\begingroup\parindent\z@\par\def\!chr@startyear{\!chrdefaultstartyear}% \def\!chr@height{\!chrdefaultheight}\def\!chr@stopyear{\!chrdefaultstopyear}\def\!chr@width{\!chrdefaultwidth}\def\!chr@dates{\!chrdefaultdates}% \def\!chr@arrow{\!chrdefaultarrow}\def\!chr@arrowwidth{\!chrdefaultarrowwidth}\def\!chr@arrowheight{\!chrdefaultarrowheight}\def\!chr@color{\!chrdefaultcolor}% \def\!chr@arrowcolor{\!chrdefaultarrowcolor}\def\!chr@datesstyle{\!chrdefaultdatesstyle}\def\!chr@startdate{\!chrdefaultstartdate}% \def\!chr@stopdate{\!chrdefaultstopdate}\def\!chr@dateselevation{\!chrdefaultdateselevation}% \def\!chr@box{\!chrdefaultbox}% \ifonearg \traitingargvirgule[#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{\traitingargvirgule[#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 \!chrverif\def\!chrperiodedefaultdates{true} \!chr@verif\newif\if!chrperiodstartdate \!chr@verif\newif\if!chrperiodstopdate \!chrverif\def\!chrperiodedefaultstartdate{true} \!chrverif\def\!chrperiodedefaultstopdate{true} \!chr@verif\newdimen\!chrperioddateselevation \!chrverif\def\!chrperiodedefaultdateselevation{0pt} \!chrverif\def\!chr!periodec@lor{\ifcase\!chr!periodecolornum blue\or red\or cyan\or purple\or yellow\fi} \!chrverif\def\!chr!periodecolor{\edef\!chrperiodedefaultcolor{\!chr!periodec@lor}\ifx\!chr!periodec@l@r\!chr@color\!chr!periodecoloradvance\!chr!periodecolor\fi} \!chrverif\def\!chr!periodecoloradvance{\global\advance\!chr!periodecolornum\@ne\relax\ifnum\!chr!periodecolornum=5\relax\global\!chr!periodecolornum\z@\fi} \!chrverif\def\!chrperiodedefaultdatesstyle{} \!chrverif\def\!chrperiodedefaulttextstyle{} \!chrverif\def\chronoperiode{\traiteoneargument\dochronoperiode} \!chrverif\def\dochronoperiode[#1]#2#3#4{\def\!chr@periodtextdepth{\!chrperiodedefaulttextdepth}\def\!chr@perioddates{\!chrperiodedefaultdates}% \def\!chr@periodcolor{\!chrperiodedefaultcolor}\def\!chr@perioddatesstyle{\!chrperiodedefaultdatesstyle}% \def\!chr@periodstartdate{\!chrperiodedefaultstartdate}\def\!chr@periodstopdate{\!chrperiodedefaultstopdate}% \def\!chr@periodtextstyle{\!chrperiodedefaulttextstyle}\def\!chr@perioddates{\!chrperiodedefaultdates}% \def\!chr@perioddateselevation{\!chrperiodedefaultdateselevation}% \ifonearg \traitingargvirgule[#1]{!chr@period}\fi\!chrperiodtextdepth\!chr@periodtextdepth \csname !chrperioddates\!chr@perioddates\endcsname \csname !chrperiodstartdate\!chr@periodstartdate\endcsname \csname !chrperiodstopdate\!chr@periodstopdate\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\!chrperiodtextdepth\hbox to\z@{\hbox to\dimen@{\hss\!chr@periodtextstyle{#4}\hss}\hss}% \if!chrperioddates\if!chrperiodstartdate\raise\!chrperioddateselevation\hbox to\z@{\hss\!chr@perioddatesstyle{#2}\hss}\fi\fi\!chr!periodecolor \starttikzpicture\filldraw[color=\!chr@periodcolor](0,0)--(\dimen@,0)--(\dimen@,\!chrheight)--(0,\!chrheight)--cycle;\draw[color=\!chr!periodeschwarzodergr@u](0,0)--(0,\!chrheight);\draw [color=\!chr!periodeschwarzodergr@u](\dimen@,0)--(\dimen@,\!chrheight);\if!chrbox\draw[color=black](0,-0.2pt)--(\dimen@,-0.2pt)\fi\stoptikzpicture \if!chrperioddates\if!chrperiodstopdate\raise\!chrperioddateselevation \hbox to\z@{\hss\!chr@perioddatesstyle{#3}\hss}\fi\fi}\!chr!periodecoloradvance\fi\fi\fi\fi\fi} \!chrverif\def\setupchronoperiode#1{\traitingargvirgule[#1]{!chrperiodedefault}} \!chrverif\def\chronoevent{\traiteoneargument\dochronoevent} \!chr@verif\newif\if!chreventspecifiedday\!chr@verif\newif\if!chreventspecifiedmonth \!chr@verif\newif\if!chreventbarre \!chrverif\def\!chreventdefaultbarre{true} \!chrverif\def\!chreventdefaulticon{} \!chr@verif\newdimen\!chreventmarkdepth \!chrverif\def\!chreventdefaultmarkdepth{10pt} \!chrverif\def\!chreventdefaulttextstyle{} \!chr@verif\newif\if!chreventmark \!chrverif\def\!chreventdefaultmark{true} \!chr@verif\newif\if!chreventdate \!chrverif\def\!chreventdefaultdate{true} \!chr@verif\let\!chreventdefaultdatesseparation\space \!chr@verif\newif\if!chreventconversionmonth \!chrverif\def\!chreventdefaultconversionmonth{true} \!chrverif\def\!chreventdefaultdatestyle{} \!chrverif\def\!chreventdefaultdatesstyle{} \!chr@verif\newif\if!chreventyear \!chrverif\def\!chreventdefaultyear{true} \!chrverif\def\!chreventdefaulticonheight{0.5\!chrheight} \!chr@verif\newdimen\!chreventiconheight \!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\dochronoevent[#1]#2#3{% \def\!chr@eventbarre{\!chreventdefaultbarre}\def\!chr@eventicon{\!chreventdefaulticon}\def\!chr@eventmarkdepth{\!chreventdefaultmarkdepth}% \def\!chr@eventtextstyle{\!chreventdefaulttextstyle}\def\!chr@eventmark{\!chreventdefaultmark}% \def\!chr@eventdate{\!chreventdefaultdate}\def\!chr@eventdatesseparation{\!chreventdefaultdatesseparation}% \def\!chr@eventconversionmonth{\!chreventdefaultconversionmonth}\def\!chr@eventdatestyle{\!chreventdefaultdatestyle}% \def\!chr@eventdatesstyle{\!chreventdefaultdatesstyle}\def\!chr@eventyear{\!chreventdefaultyear}\def\!chr@eventiconheight{\!chreventdefaulticonheight}% \ifonearg \traitingargvirgule[#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 \!chreventmarkdepth\!chr@eventmarkdepth \!chreventiconheight\!chr@eventiconheight \!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\!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\hbox to\z@{\hss\!chr@eventtextstyle{#3}\hss}\ifdim\!chreventmarkdepth>0pt\relax\vss\fi}}\if!chreventmark\vrule height0pt depth\!chreventmarkdepth\fi \setbox0\vbox{\if!chreventdate\hbox{#2}\fi\hbox{#3}}\lower\dimexpr\dp0+\ht0+\!chreventmarkdepth+2pt\relax\hbox{}} \fi\fi\fi} \!chrverif\def\setupchronoevent#1{\traitingargvirgule[#1]{!chreventdefault}} \!chrverif\def\stopchronology{\goodbreak\box\!chrflechebox\endgroup\bigskip} \catcode`\!=11