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?
Die Ausgabe sieht gut aus. Die Syntax ist nicht so einfach wie ich gehofft habe, aber ich denke, ich kann einige Befehle erstellen, um das Zeug zu vereinfachen. Vielen Dank für diesen Vorschlag.
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.
Es ist zu beachten, dass dieses Paket anscheinend nur eine Zeitleiste pro Dokument unterstützt. Zumindest für mich erhalte ich den Fehler "Befehl \ c @ Schritt bereits definiert", wenn ich versuche, mehr als einen zu haben.
Russellpierce
3
Ich habe versucht, die Datei chronology.sty zu ändern, um eine vertikale Zeitleiste zu erhalten, aber es ist mir nicht ganz gelungen. Gibt es eine vertikale Version davon?
Vielen Dank! Seltsamerweise nennt der Typ, der die Dokumentation geschrieben hat, die Timeline immer wieder einen "Fries", als wäre das dasselbe wie eine Timeline. Setzen Sie das hier ein, falls jemand anderes die Dokumentation liest.
Jonathan Komar
@ Jonathan Komar ist aus Französisch Frise, aus dem mittelalterlichen lateinischen Frisium. Es bezieht sich auf ein breites horizontales Band aus skulptierter oder bemalter Dekoration oder auch auf einen horizontalen Papierstreifen.
Georges
15
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:
Ich denke das ist jetzt geworden : \usetikzlibrary{decorations.pathmorphing}. Tun \documentclass[tikz]{standalone}Sie dies auch, wenn Sie ein eng zugeschnittenes Bild in ein anderes Dokument einfügen möchten.
PatrickT
14
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:
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 tikzgefü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\yearposxaußerhalb der Rahmendefinition bewegen , da Sie sonst nachweislich Fehler erhalten Dieser Befehl \yearposxist bereits definiert (es sei denn, Sie entfernen den Auswahlteil und andere Frame-Splitting-Befehle aus Ihrem Frame).
Nein, ich interessierte mich mehr für eine Zeitleiste wie für ein Geschichtsbuch. Trotzdem können UML-Diagramme in LaTeX auch in einem anderen Projekt auftauchen.
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.
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:
quelle
Es gibt eine neue Chronologie von Levi Wiseman . Die Dokumentation (pdf) sagt:
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:
quelle
\textwidth
?{3ex}
).Auch das Paket chronosys bietet eine schöne Lösung. Hier ist ein Beispiel aus dem Benutzerhandbuch:
quelle
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
quelle
\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:
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.
quelle
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).quelle
Wenn Sie nach UML-Sequenzdiagrammen suchen, könnte Sie pkf-umlsd interessieren , das auf TiKZ basiert. Schöne Demos finden Sie hier .
quelle
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.
quelle