Teilweise transparente graue Chronoereignisse in meiner Chronosys-Zeitleiste? Oder verwende ich ein anderes Plain-TeX-, LaTeX-, LuaLaTeX- oder sogar ein XeLaTex-Paket oder eine andere Methode?

Teilweise transparente graue Chronoereignisse in meiner Chronosys-Zeitleiste? Oder verwende ich ein anderes Plain-TeX-, LaTeX-, LuaLaTeX- oder sogar ein XeLaTex-Paket oder eine andere Methode?

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:

Bildbeschreibung hier eingeben

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:

Bildbeschreibung hier eingeben

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 chronosysMir 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 chronosrichtet der Stil die grundlegende Zeitleiste ein. chronos datekann 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 datekö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 chronossind wie folgt:

  • width=<dimension>,
  • height=<dimension>,
  • start date=YYYY-MM-DD,
  • end date=YYYY-MM-DD,

Standardmäßig ist die Zeitleiste 1pthoch und 100mmbreit und die Start- und Enddaten liegen am Anfang des letzten Jahrtausends.

chronos date=YYYY-MM-DDkann dann im Bild verwendet werden, um Dinge auf der Zeitleiste zu platzieren. Ich verwende es beispielsweise unten in einer Schleife wie folgt, wobei \idas Datum für die aktuelle Iteration, \jder Text und \kdie 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 datewird eingegeben \i, also das Datum, und dies setzt sowohl \thechronosthingdateals auch jedes von \chronosthingyear, \chronosthingmonthund \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)

\thechronosstartdateenthält eine Zahl, die dem Startdatum der Zeitleiste entspricht, und \chronosunitdie für jeden Tag zulässige Länge in Punkten. Diese wird bei chronosVerwendung 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, \chronosthingmonthund \chronosthingyearenthalten den jeweils festgelegten Tag, Monat und das Jahr chronos dateund 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

Chronos

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, % %AFFICHAGEwenn 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 pgfkeysbasierten Syntax wiederherstellen. Die Hälfte des Paketcodes erfindet pgfkeysdie 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 tikzpicturehaben 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:

Bildbeschreibung hier eingeben

verwandte Informationen