
Beim Zusammenstellen einer „traditionellen“ Zeitleiste habe ich mir eine Möglichkeit zusammengebastelt, meine Kästchen in Chronosys einzufärben, aber ich hätte die Ereigniskästchen gern teilweise transparent.
Dies würde eine bessere Blickverfolgung ermöglichen, insbesondere wenn Ereignisse dicht beieinander liegen und unterschiedliche Markierungstiefen aufweisen. Wie dies aussehen könnte, sehen Sie sich bitte das untenstehende, mit Gimp erstellte Modell an.
Es wäre auch schön, wenn der Text besser an der Farbbox ausgerichtet wäre. Beachten Sie das „s“ in Darwin und das „m-“ in Empire. Mein Notcode scheint zu funktionieren, erzeugt aber Fehler. **(Danke an Kola B. und sieheGrau gegen Grau)
Der Code ist unten:
\documentclass[letterpaper,12pt,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage{chronosys}
\begin{document}
\subsection*{Biographical cornerstones}
\startchronology[startyear=1850,stopyear=1950,height=0.5ex]
\chronoevent[textwidth=4.5cm,colorbox={grey!10},markdepth=100pt]%
{1882}{born in the Austrian part of the Austria-Hungarian Empire}
\chronoevent[textwidth=4cm,colorbox={grey!10},markdepth=40pt]%
{1885}{Publication of Darwin's Evolutionary Theory}
\stopchronology
\end{document}
Ein Beispiel des oben genannten nach der Kompilierung:
Ein grobes Modell, wie das aussehen könnte:
DerChronosys-Dokumentationerwähnt Transparenz nicht als Option, aber da es Tikz (zum Zeichnen von Linien) und Colorbox (für Ereignisse) verwendet, glaube ich, dass Transparenz möglich ist.
Ich habe Folgendes versucht und versucht,So legen Sie transparente Farben festgemäß CFR-Referenz:
\documentclass[letterpaper,12pt,landscape]{article}
\usepackage[T1]{fontenc}
\usepackage{chronosys}
\usepackage{transparent}
\begin{document}
\subsection*{Biographical cornerstones}
\startchronology[startyear=1850,stopyear=1950,height=0.5ex]
\chronoevent[textwidth=4.5cm,colorbox={gray!10},markdepth=100pt]%
{1881}{born in the Austrian part of the Austria-Hungarian Empire}
\chronoevent[textwidth=4cm,markdepth=40pt]%
{1885}{\transparent{0.3}\colorbox{blue}{Publication of Darwin's Evolutionary Theory}}
\stopchronology
\end{document}
Aber das Ergebnis war dieses:
Das Ändern der Transparenz wirkt sich auf die Farbe des Felds aus und macht es heller oder dunkler, ohne dass das Feld transparenter oder weniger transparent wird. Beachten Sie, dass der Text im hellblauen Feld sehr blass ist. Der Text innerhalb des Felds wird ebenfalls heller oder dunkler, wenn die „Transparenz“ geändert wird, ein unerwünschter Nebeneffekt.
Bitte informieren Sie uns, wenn es eine Lösung mit einem anderen Timeline-Paket gibt als chronosys
Mir ist auch eingefallen, dass eine andere Möglichkeit, das Ziel zu erreichen, darin bestehen könnte, die Linien, die die Kästchen verbinden, irgendwie halbtransparent zu machen. Die Lösungsollte in der Lage sein, Monat/Tag/Jahr für Ereignisse wiederzugeben, mit automatischer horizontaler Platzierung von Ereignissen auf der Zeitleiste. Wenn jemand weiß, wie man Percusses Antwort in ein MWE umwandelt, wäre das sehr willkommen. Es spielt keine Rolle, ob die Antwort „Plain-TeX“ oder „Tikz“ ist, oder ob mehrere Kompilierungen erforderlich sind oder sonst etwas, solange es funktioniert.
Bravo an @cfr für die folgende Lösung, die perfekt funktioniert. Seine Lösung erzeugt eine andere Art von Zeitleiste als die, die mit derzeit verfügbaren LaTeX/TeX-Paketen erstellt werden kann (zumindest mit den Paketen, die ich kenne).
Ungeachtet der vorgestellten wunderbaren Lösung wäre es dennoch hilfreich, eine „paketbasierte“ Lösung zu haben, entweder mit Chronosys oder einem anderen Paket.
Antwort1
Aktuelle Version:Chronos.
Bitte melden Sie Fehlerauf Codeberg.
Hier ist eine einfache Version. Im Wesentlichen chronos
richtet der Stil die grundlegende Zeitleiste ein. chronos date
kann dann verwendet werden, um den entsprechenden Punkt auf dieser Zeitleiste zu erhalten, von dem aus die Linien zu den Ereignisknoten gezogen werden. Informationen von chronos date
können auch im Knoten selbst verwendet werden. Hier wird es verwendet, um das Datum vor dem Knoteninhalt zu drucken.
Ich habe eine Schleife verwendet, um Ereignisse hinzuzufügen, aber das dient nur dazu, Tipparbeit zu sparen. Sie können bei Bedarf auch einzeln hinzugefügt werden.
Das grundlegende Zeitleistenschema sollte folgendermaßen aussehen:
\begin{tikzpicture}
[
chronos={%
<options>
},
]
<events and such on the timeline specified in the usual way>
\end{tikzpicture}
Die Optionen für chronos
sind wie folgt:
width=<dimension>
,height=<dimension>
,start date=YYYY-MM-DD
,end date=YYYY-MM-DD
,
Standardmäßig ist die Zeitleiste 1pt
hoch und 100mm
breit und die Start- und Enddaten liegen am Anfang des letzten Jahrtausends.
chronos date=YYYY-MM-DD
kann dann im Bild verwendet werden, um Dinge auf der Zeitleiste zu platzieren. Ich verwende es beispielsweise unten in einer Schleife wie folgt, wobei \i
das Datum für die aktuelle Iteration, \j
der Text und \k
die Distanz zum Verschieben des Knotens unter der Zeitleiste enthalten sind.
\path [postaction={draw=gray, -{Triangle[width=1.5pt,reversed,length=.75pt,fill=gray]}}, chronos date/.expanded={\i}] ({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0) -- +(0,-\k) node [anchor=north, fill opacity=.75, fill=gray!25, draw=gray, rounded corners, font=\footnotesize\sffamily] {\chronosthingday/\chronosthingmonth/\chronosthingyear\\\j};
chronos date
wird eingegeben \i
, also das Datum, und dies setzt sowohl \thechronosthingdate
als auch jedes von \chronosthingyear
, \chronosthingmonth
und \chronosthingday
. Die erste ist eine Zahl, mit der berechnet werden kann, wie weit entlang der Zeitachse das Ereignis platziert werden soll. Dies sollte bei
({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0)
\thechronosstartdate
enthält eine Zahl, die dem Startdatum der Zeitleiste entspricht, und \chronosunit
die für jeden Tag zulässige Länge in Punkten. Diese wird bei chronos
Verwendung aus den Start- und Enddaten sowie der Breite berechnet. An jedem Ende ist ein Versatz von 10pt zulässig, sodass das erste Datum nicht direkt am Anfang und das letzte Datum nicht direkt am Ende steht.
\chronosthingday
, \chronosthingmonth
und \chronosthingyear
enthalten den jeweils festgelegten Tag, Monat und das Jahr chronos date
und können bei Bedarf im Inhalt von Knoten oder Beschriftungen verwendet werden.
Wir füttern unsere Schleife mit dem folgenden Satz von Tripeln ( \i/\j/\k
)
{1001-11-05}/{No fireworks}/10pt
{1002-07-04}/{No fireworks}/80pt
{1002-05-01}/{May Day}/50pt
{1002-06-21}/{Summer Solstice}/10pt
ergibt also
Vollständiger Code:
\documentclass[tikz,multi,border=10pt]{standalone}
\usepackage{datenumber}
\usetikzlibrary{arrows.meta}
\newcounter{chronosstartdate}
\newcounter{chronosenddate}
\newcounter{chronosstartyear}
\newcounter{chronosendyear}
\newcounter{chronosyeardate}
\newcounter{chronosthingdate}
\pgfkeys{/pgf/number format,
int detect,
set thousands separator={},
}
\tikzset{
chronos/.code={% https://tex.stackexchange.com/a/159856/ - Claudio Fiandrino
\tikzset{%
align=center,
anchor=mid,
/chronos/.cd,
#1
}%
\setstartyear{\chronosstartyear}%
\setmydatenumber{chronosstartdate}{\chronosstartyear}{\chronosstartmonth}{\chronosstartday}%
\setmydatenumber{chronosenddate}{\chronosendyear}{\chronosendmonth}{\chronosendday}%
\pgfmathsetmacro\chronosunit{(\chronoswidth-20pt)/(\thechronosenddate-\thechronosstartdate)}%
\draw [line width=\chronosheight] (-10pt,0) coordinate (chronos pre) -- +(\chronoswidth,0) coordinate (chronos post);
\coordinate (chronos start) at (0,0);
\coordinate (chronos end) at ([xshift=-10pt]chronos post);
\setcounter{chronosstartyear}{\chronosstartyear}%
\setcounter{chronosendyear}{\chronosendyear}%
\def\tempa{01}%
\ifx\chronosstartmonth\tempa
\ifx\chronosstartday\tempa
\else\stepcounter{chronosstartyear}%
\fi
\else\stepcounter{chronosstartyear}%
\fi
\def\tempa{12}%
\def\tempb{31}%
\ifx\chronosendmonth\tempa
\ifx\chronosendday\tempb
\stepcounter{chronosendyear}%
\fi
\fi
\foreach \i in {\thechronosstartyear,...,\thechronosendyear} {%
\setmydatenumber{chronosyeardate}{\i}{01}{01}%
\node [above, anchor=south] at ({(\thechronosyeardate-\thechronosstartdate)*\chronosunit pt},0) {\i}; }
},
chronos date/.code args={#1-#2-#3}{%
\tikzset{%
/chronos/.cd,
thing year={#1},
thing month={#2},
thing day={#3},
}%
\setmydatenumber{chronosthingdate}{\chronosthingyear}{\chronosthingmonth}{\chronosthingday}%
},
/chronos/.search also={/tikz},
/chronos/.cd,
start year/.store in=\chronosstartyear,
start month/.store in=\chronosstartmonth,
start day/.store in=\chronosstartday,
end year/.store in=\chronosendyear,
end month/.store in=\chronosendmonth,
end day/.store in=\chronosendday,
thing year/.store in=\chronosthingyear,
thing month/.store in=\chronosthingmonth,
thing day/.store in=\chronosthingday,
start date/.style args={#1-#2-#3}{%
start year={#1},
start month={#2},
start day={#3},
},
end date/.style args={#1-#2-#3}{%
end year={#1},
end month={#2},
end day={#3},
},
width/.store in=\chronoswidth,
height/.store in=\chronosheight,
start date=1001-10-01,
end date=1003-06-14,
width=100mm,
height=1pt,
chronos date=1850-01-01,
}
\begin{document}
\begin{tikzpicture}
[chronos]
\foreach \i/\j/\k in {{1001-11-05}/{No fireworks}/10pt,{1002-07-04}/{No fireworks}/80pt,{1002-05-01}/{May Day}/50pt,{1002-06-21}/{Summer Solstice}/10pt}
{%
\path [postaction={draw=gray, -{Triangle[width=1.5pt,reversed,length=.75pt,fill=gray]}}, chronos date/.expanded={\i}] ({(\thechronosthingdate-\thechronosstartdate)*\chronosunit pt},0) -- +(0,-\k) node [anchor=north, fill opacity=.75, fill=gray!25, draw=gray, rounded corners, font=\footnotesize\sffamily] {\chronosthingday/\chronosthingmonth/\chronosthingyear\\\j};
}
\end{tikzpicture}
\end{document}
Antwort2
Diese Frage taucht ab und zu auf und ich dachte, irgendwann wird sich jemand damit befassen, die TikZ-Schlüssel finden und sie ändern.... Aber... wie sehr kann man sich irren?
Wie dem auch sei, der Autor geht sehr konservativ vor und gibt den pgfkeys nicht nach. Denn warum sollte man die Dinge einfacher machen? (Übrigens ein typisches Merkmal von Plain-TeX-Benutzern, obwohl pgfkeys auch in Plain-TeX funktionieren).
Als ich also seinen Schritten (es muss ein Er sein) folgte, fand ich heraus, dass die Box eine Farbbox ist, aber kein TikZ-Knoten. Ihre Optionen sind also sehr begrenzt
- Der Autor behebt es
Sie beginnen mit der Definition einer Option wie
\csname !chrverif\endcsname\gdef\csname !chr@eventopacity\endcsname{}% \csname !chrverif\endcsname\gdef\csname !chreventdefaultopacity\endcsname{1}%
Platzieren Sie diese Option dann dort, wo sie benötigt wird, und kapseln Sie auch den Teil, der die Box zeichnet (beginnend mit,
% %AFFICHAGE
wenn ich mich nicht irre), mit der Transparenzgruppe. Dann treten seltsame Probleme auf, wie z. B.pdflatex - transparentes Paket scheint nicht zu funktionieren
Bei allem Respekt, dieses Paket führt nirgendwo hin. Schreiben Sie Ihr eigenes einfaches TikZ-Paket und Sie werden die Funktionalität in ein oder zwei Wochen mit einer pgfkeys
basierten Syntax wiederherstellen. Die Hälfte des Paketcodes erfindet pgfkeys
die Optionsanalyse neu (ein weiteres Merkmal einfacher TeX-Benutzer). Und ein weiteres Viertel besteht im Wesentlichen aus dem Verpacken und Entpacken von Inhalten.
Antwort3
Für mich ist es einfacher, „Biografische Eckpunkte“ in einem reinen TikZ-Bild zu zeichnen, als sich damit abzumühen chronosys
. Mit tikzpicture
haben Sie etwas mehr Code, dafür haben Sie jedoch die volle Kontrolle über die Anpassung des Knotenstils. Beispiel:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning}
\begin{document}
\subsection*{Biographical cornerstones}
\begin{center}
\begin{tikzpicture}[
node distance = 0mm,
TN/.style args = {#1/#2}{% as Transparency Node
fill=#1,
fill opacity=#2,
text opacity=1, align=flush left,
inner sep=1mm, outer sep=0.25mm, below},
TN/.default = gray!50/0.5,
L/.style = {% as Line
draw=gray, line width=1mm,
{Bar[width=4mm,line width=0.4pt]}-{Bar[width=4mm,line width=0.4pt]}
}
]
\draw[L] ( 0,0) coordinate (s)
node[above=2mm] {1850} -- +
(10,0) node[above=2mm] {1950};
\draw (3.1,0) -- + (0,-2.4)
node (e1) [TN] {1881}
node (e1a) [TN,below=of e1] {born in the Austrian part\\
of the Austria-Hungarian\\
Empire};
\draw (3.5,0) -- + (0,-0.4)
node (e2) [TN=blue!30/0.3] {1885}
node (e2a) [TN=blue!30/0.7,
below=of e2] {Publication of Darwin's\\
Evolutionary Theory};
\end{tikzpicture}
\end{center}
\end{document}
Das gibt: