Question

Dans les livres d'histoire, vous avez souvent une chronologie, où les événements et les périodes sont marqués sur une ligne à la distance relative correcte les uns des autres. Comment est-il possible de créer quelque chose de similaire dans LaTeX?

Était-ce utile?

La solution

Le package tikz semble avoir ce que vous voulez.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{snakes}

\begin{document}

  \begin{tikzpicture}[snake=zigzag, line before snake = 5mm, line after snake = 5mm]
    % draw horizontal line   
    \draw (0,0) -- (2,0);
    \draw[snake] (2,0) -- (4,0);
    \draw (4,0) -- (5,0);
    \draw[snake] (5,0) -- (7,0);

    % draw vertical lines
    \foreach \x in {0,1,2,4,5,7}
      \draw (\x cm,3pt) -- (\x cm,-3pt);

    % draw nodes
    \draw (0,0) node[below=3pt] {$ 0 $} node[above=3pt] {$   $};
    \draw (1,0) node[below=3pt] {$ 1 $} node[above=3pt] {$ 10 $};
    \draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {$ 20 $};
    \draw (3,0) node[below=3pt] {$  $} node[above=3pt] {$  $};
    \draw (4,0) node[below=3pt] {$ 5 $} node[above=3pt] {$ 50 $};
    \draw (5,0) node[below=3pt] {$ 6 $} node[above=3pt] {$ 60 $};
    \draw (6,0) node[below=3pt] {$  $} node[above=3pt] {$  $};
    \draw (7,0) node[below=3pt] {$ n $} node[above=3pt] {$ 10n $};
  \end{tikzpicture}

\end{document}

Je ne suis pas un expert en tikz, mais cela donne une bonne chronologie, qui ressemble à:

entrer la description de l'image ici

Autres conseils

Il existe une nouvelle chronologie. sty par Levi Wiseman . La documentation (pdf) indique:

  

La plupart des packages et des solutions de chronologie pour LATEX sont utilisés pour transmettre de nombreuses informations et sont donc conçus verticalement. Si vous essayez simplement d'attribuer des étiquettes à des dates, un calendrier plus traditionnel pourrait être plus approprié. C'est   à quoi sert la chronologie.

Voici un exemple de code:

\documentclass{article}
\usepackage{chronology}
\begin{document}

\begin{chronology}[5]{1983}{2010}{3ex}[\textwidth]
\event{1984}{one}
\event[1985]{1986}{two}
\event{\decimaldate{25}{12}{2001}}{three}
\end{chronology}

\end{document}

Qui produit cette sortie:

  

exemple de résultat de chronology.sty

Le package chronosys constitue une solution intéressante. Voici un exemple tiré du manuel d'utilisation:

entrer la description de l'image ici

Juste une mise à jour.

Le package TiKZ actuel publiera: Paquet tikz Attention: Les serpents ont été remplacés par décorations. Veuillez utiliser les bibliothèques de décoration à la place du Bibliothèque de serpents sur la ligne de saisie. . .

La partie de code correspondante doit donc être remplacée par:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations}
\begin{document}
\begin{tikzpicture}
%draw horizontal line
\draw (0,0) -- (2,0);
\draw[decorate,decoration={snake,pre length=5mm, post length=5mm}] (2,0) -- (4,0);
\draw (4,0) -- (5,0);
\draw[decorate,decoration={snake,pre length=5mm, post length=5mm}] (5,0) -- (7,0);

%draw vertical lines
\foreach \x in {0,1,2,4,5,7}
\draw (\x cm,3pt) -- (\x cm,-3pt);

%draw nodes
\draw (0,0) node[below=3pt] {$ 0 $} node[above=3pt] {$   $};
\draw (1,0) node[below=3pt] {$ 1 $} node[above=3pt] {$ 10 $};
\draw (2,0) node[below=3pt] {$ 2 $} node[above=3pt] {$ 20 $};
\draw (3,0) node[below=3pt] {$  $} node[above=3pt] {$  $};
\draw (4,0) node[below=3pt] {$ 5 $} node[above=3pt] {$ 50 $};
\draw (5,0) node[below=3pt] {$ 6 $} node[above=3pt] {$ 60 $};
\draw (6,0) node[below=3pt] {$  $} node[above=3pt] {$  $};
\draw (7,0) node[below=3pt] {$ n $} node[above=3pt] {$ 10n $};
\end{tikzpicture}

\end{document}

HTH

Tim Storer a écrit une image plus souple et plus agréable < code> timeline.sty (lien Internet Archive Wayback Machine, car l'original est parti). De plus, la ligne est horizontale plutôt que verticale. Ainsi, par exemple:

\begin{timeline}{2008}{2010}{50}{250}
  \MonthAndYearEvent{4}{2008}{First Podcast}
  \MonthAndYearEvent{7}{2008}{Private Beta}
  \MonthAndYearEvent{9}{2008}{Public Beta}
  \YearEvent{2009}{IPO?}
\end{timeline}

produit un scénario ressemblant à ceci:

2008                              2010
 · · April, 2008 First Podcast    ·
       · July, 2008 Private Beta
           · September, 2008 Public Beta
                · 2009 IPO?

Personnellement, je trouve cette solution plus satisfaisante que les autres réponses. Mais je me trouve également en train de modifier le code pour obtenir quelque chose de plus proche de ce à quoi une timeline devrait ressembler. Donc, il n'y a pas de solution définitive à mon avis.

Tout d'abord, je préfère la solution guidée par tikz , car elle vous donne plus de liberté. Deuxièmement, je ne publie rien de totalement nouveau. Cela ressemble évidemment à la réponse de Zoe Gagnon, car il a montré la voie.

J'avais besoin d'un calendrier annuel et cela m'a pris du temps (quelle surprise!) pour le faire, alors je partage les résultats. J'espère que ça vous plaira.

\documentclass[tikz]{standalone}
\usepackage{verbatim}
\begin{document}
\newlength\yearposx
\begin{tikzpicture}[scale=0.57] % timeline 1990-2010->
    % define coordinates (begin, used, end, arrow)
    \foreach \x in {1990,1992,2000,2002,2004,2005,2008,2009,2010,2011}{
        \pgfmathsetlength\yearposx{(\x-1990)*1cm};
        \coordinate (y\x)   at (\yearposx,0);
        \coordinate (y\x t) at (\yearposx,+3pt);
        \coordinate (y\x b) at (\yearposx,-3pt);
    }
    % draw horizontal line with arrow
    \draw [->] (y1990) -- (y2011);
    % draw ticks
   \foreach \x in {1992,2000,2002,2004,2005,2008,2009}
        \draw (y\x t) -- (y\x b);
    % annotate
    \foreach \x in {1992,2002,2005,2009}
        \node at (y\x) [below=3pt] {\x};
    \foreach \x in {2000,2004,2008}
        \node at (y\x) [above=3pt] {\x};
    \begin{comment}
    % for use in beamer class
    \only<2>    {\fill      (y1992) circle (5pt);}
    \only<3-5>  {\fill      (y2000) circle (5pt);}
    \only<4-5>  {\fill      (y2002) circle (5pt);}
    \only<5>    {\fill[red] (y2004) circle (5pt);}
    \only<6>    {\fill      (y2005) circle (5pt);}
    \only<7>    {\fill[red] (y2005) circle (5pt);}
    \only<8-11> {\fill      (y2008) circle (5pt);}
    \only<11>   {\fill      (y2009) circle (5pt);}
    \end{comment}
\end{tikzpicture}
\end{document}

Comme vous pouvez le constater, il est adapté à la présentation du vidéoprojecteur (option de sélection du composant et de l’échelle), mais si vous souhaitez vraiment le tester dans une présentation, vous devez déplacer \ newlength \ yearposx à l’extérieur. de la définition du cadre, sinon vous obtiendrez une erreur indiquant réellement que la commande \ yearposx est déjà définie (sauf si vous supprimez la partie de sélection et toute autre commande de division du cadre de votre cadre).

entrer la description de l'image ici

Si vous recherchez des diagrammes de séquence UML, pkf-umlsd , basé sur TiKZ. Des démonstrations intéressantes peuvent être trouvées ici .

Il existe timeline.sty flottant autour.

La syntaxe est plus simple que d'utiliser tikz:

%%% In LaTeX:
%%% \begin{timeline}{length}(start,stop)
%%%   .
%%%   .
%%%   .
%%% \end{timeline}
%%%
%%% in plain TeX
%%% \timeline{length}(start,stop)
%%%   .
%%%   .
%%%   .
%%% \endtimeline
%%% in between the two, we may have:
%%% \item{date}{description}
%%% \item[sortkey]{date}{description}
%%% \optrule
%%%
%%% the options to timeline are:
%%%      length The amount of vertical space that the timeline should
%%%                use.
%%%      (start,stop) indicate the range of the timeline. All dates or
%%%                sortkeys should lie in the range [start,stop]
%%%
%%% \item without the sort key expects date to be a number (such as a
%%%      year).
%%% \item with the sort key expects the sort key to be a number; date
%%%      can be anything. This can be used for log scale time lines
%%%      or dates that include months or days.
%%% putting \optrule inside of the timeline environment will cause a
%%%      vertical rule to be drawn down the center of the timeline.

J'ai utilisé datetime.data.toordinal de python pour convertir les dates en "clés de tri" dans le contexte du package.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top