In Geschichtsbüchern gibt es häufig eine Zeitleiste, in der Ereignisse und Perioden in einer Linie im richtigen relativen Abstand zueinander markiert sind. Wie ist es möglich, in LaTeX etwas Ähnliches zu erstellen?
In Geschichtsbüchern gibt es häufig eine Zeitleiste, in der Ereignisse und Perioden in einer Linie im richtigen relativen Abstand zueinander markiert sind. Wie ist es möglich, in LaTeX etwas Ähnliches zu erstellen?
Antworten:
Das Tikz- Paket scheint das zu haben, was Sie wollen.
\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}
Ich bin nicht zu erfahren mit Tikz, aber dies gibt eine gute Zeitleiste, die aussieht wie:
Es gibt eine neue Chronologie von Levi Wiseman . Die Dokumentation (pdf) sagt:
Die meisten Timeline-Pakete und -Lösungen für LATEX werden zur Übermittlung vieler Informationen verwendet und sind daher vertikal gestaltet. Wenn Sie nur versuchen, Datumsangaben Beschriftungen zuzuweisen, ist möglicherweise eine traditionellere Zeitachse besser geeignet. Dafür ist Chronologie da.
Hier ist ein Beispielcode:
\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}
Welches erzeugt diese Ausgabe:
\textwidth
?
{3ex}
).
Auch das Paket chronosys bietet eine schöne Lösung. Hier ist ein Beispiel aus dem Benutzerhandbuch:
Nur ein Update.
Das vorliegende TiKZ-Paket wird Folgendes herausgeben: Paket tikz Warnung: Schlangen wurden durch Dekorationen ersetzt. Bitte verwenden Sie die Dekorationsbibliotheken anstelle der Schlangenbibliothek in der Eingabezeile. . .
Der zugehörige Teil des Codes muss also geändert werden in:
\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
\usetikzlibrary{decorations.pathmorphing}
. Tun \documentclass[tikz]{standalone}
Sie dies auch, wenn Sie ein eng zugeschnittenes Bild in ein anderes Dokument einfügen möchten.
Tim Storer hat einen flexibleren und schöneren Look geschrieben timeline.sty
(Link zur Internet Archive Wayback Machine, da das Original weg ist). Außerdem ist die Linie eher horizontal als vertikal. Also zum Beispiel:
\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}
erzeugt eine Zeitleiste, die folgendermaßen aussieht:
2008 2010
· · April, 2008 First Podcast ·
· July, 2008 Private Beta
· September, 2008 Public Beta
· 2009 IPO?
Persönlich finde ich dies eine angenehmere Lösung als die anderen Antworten. Aber ich ändere auch den Code, um etwas näher an das zu bringen, was meiner Meinung nach eine Zeitleiste aussehen sollte. Meiner Meinung nach gibt es also keine endgültige Lösung.
Erstens bevorzuge ich eine tikz
geführte Lösung, weil sie Ihnen mehr Freiheit gibt. Zweitens poste ich nichts völlig Neues. Es ist offensichtlich ähnlich wie Zoe Gagnons Antwort, weil er den Weg zeigte.
Ich brauchte einige Jahre Zeit und es dauerte einige Zeit (was für eine Überraschung!), Um dies zu tun, also teile ich die Ergebnisse. Ich hoffe du wirst es mögen.
\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}
Wie Sie sehen können, ist es auf die Beamer-Präsentation zugeschnitten (Teil auswählen und auch Skalierungsoption). Wenn Sie es jedoch wirklich in einer Präsentation testen möchten, sollten Sie sich \newlength\yearposx
außerhalb der Rahmendefinition bewegen , da Sie sonst nachweislich Fehler erhalten Dieser Befehl \yearposx
ist bereits definiert (es sei denn, Sie entfernen den Auswahlteil und andere Frame-Splitting-Befehle aus Ihrem Frame).
Es schwebt timeline.sty herum.
Die Syntax ist einfacher als die Verwendung von 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.
Ich habe die datetime.data.toordinal von Python verwendet, um Datumsangaben im Kontext des Pakets in 'Sortierschlüssel' zu konvertieren.