Chronosys-Zeitleiste, „Monat Tag, Jahr“ statt „Tag Monat Jahr“ und vollständige numerische Datumsfragen

Chronosys-Zeitleiste, „Monat Tag, Jahr“ statt „Tag Monat Jahr“ und vollständige numerische Datumsfragen

Für den folgenden:

\documentclass{article}
\usepackage{chronosys}
\catcode`\@=11
\def\chron@selectmonth#1{\ifcase#1\or January\or February\or March\or April\or%
 May\or June\or July\or August\or September\or October\or November\or December\fi}

\begin{document}

    \startchronology[startyear=15,stopyear=16]

\chronoevent{15/03/15}{Assassination of Caesar} 

     \stopchronology 

\end{document}

Produziert:

Bildbeschreibung hier eingeben

Ist es überhaupt möglich, das Zeitleistenereignis im Format Monat, Tag, Jahr darzustellen, z. B. 15. März 2015?

Außerdem konnte ich diese Zeitleiste nicht so einrichten, dass sie die Jahre 2015 bis 2016 widerspiegelt. Stattdessen hänge ich anscheinend bei „15“ auf der einen Seite und „16“ auf der anderen fest.

Als ich es versucht habe, verwendete ich:

    \startchronology[startyear=2015,stopyear=2016]

das Programm enthielt keinerlei chronologische Daten.

DerChronosys-Paketdokumentationschien mir nicht zu helfen.

Danke. Wenn ich aufgrund des Pakets selbst nicht mit dem/den Datumsformat(en) klarkomme, das/die ich derzeit habe, wäre ich für die Information dankbar.

Antwort1

Ich werde Ihr erstes Problem nicht kommentieren, da @JP-Ellis es bereits perfekt beantwortet hat. Aber den Code zu patchen, um das Datumsformat zu ändern, ist nicht so schwierig, obwohl der Code chronosysetwas chaotisch ist. @JP-Ellis hat bereits die richtige Datei und Zeile herausgefunden, also hier ist ein Patch zum Ändern des Datumsformats.

\documentclass{article}
\usepackage{chronosys}
\usepackage{etoolbox}

\makeatletter\catcode`\!=11
\def\chron@selectmonth#1{\ifcase#1\or January\or February\or March\or April\or%
 May\or June\or July\or August\or September\or October\or November\or December\fi}

\patchcmd{\dochronoevent}{%
\if!chreventdate\hbox to\z@{%
  \hss \if!chreventifcolorbox \expandafter\!chreventcolorbox\fi
  {\!chr@eventdatestyle{%
    \if!chreventspecifiedday %
      {\!chr@eventdatesstyle{\!chreventday}}\!chr@eventdatesseparation
    \fi
  {\!chr@eventdatesstyle{%
    \if!chreventspecifiedmonth 
      \if!chreventconversionmonth\expandafter \chron@selectmonth
      \fi 
      \!chreventmonth
    \fi
    }%
  }%
  \if!chreventspecifiedmonth\if!chreventyear \!chr@eventdatesseparation\fi\fi 
  \if!chreventyear{\!chr@eventdatesstyle{\!chreventyear}}\fi%
  }}%
  \hss
}%
\fi
}{%
\if!chreventdate\hbox to\z@{%
  \hss \if!chreventifcolorbox \expandafter\!chreventcolorbox\fi
  {\!chr@eventdatesstyle{%
    \if!chreventspecifiedmonth 
      \if!chreventconversionmonth\expandafter\chron@selectmonth
      \fi 
      \!chreventmonth\!chr@eventdatesseparation%
    \fi
    }%
  {\!chr@eventdatestyle{%
    \if!chreventspecifiedday%
      {\!chr@eventdatesstyle{\!chreventday}},%
    \fi%
  }%
  \if!chreventspecifiedmonth\if!chreventyear\!chr@eventdatesseparation\fi\fi 
  \if!chreventyear{\!chr@eventdatesstyle{\!chreventyear}}\fi%
  }}%
  \hss
}%
\fi
}{%
\message{Patching chronosys successful.}%
}{%
\message{Patching chronosys failed.}%
}
\makeatother


\begin{document}

\startchronology[startyear=2015,stopyear=2016]
\chronoevent{15/03/2015}{Assassination of Caesar} 
\stopchronology 

\end{document}

Ausgabe:

Chronosys

Antwort2

Wie ich im Kommentar oben erwähnt habe, scheint es schwierig zu sein, das Datum zu ändern, da chronosyses keine Möglichkeit dafür zu bieten scheint. Daher besteht die einzige Möglichkeit darin, einen Teil des Pakets selbst zu ändern (soweit ich das beurteilen kann, beginnt die Ausgabe des Datums ungefähr bei Zeile 513 von chronosyschr.tex, obwohl es mir unnötig kompliziert erscheint).

Dass die Ereignisse nicht angezeigt werden, scheint einfach daran zu liegen, dass das Paket ein volles Jahr erwartet, d. h., es geht davon aus, dass 15/03/2015es andernfalls das Datum als das 15. Jahr registriert:

\documentclass{article}
\usepackage{chronosys}

\makeatletter
\def\chron@selectmonth#1{\ifcase#1\or January\or February\or March\or April\or%
  May\or June\or July\or August\or September\or October\or November\or December\fi}

\begin{document}
\startchronology[startyear=2010,stopyear=2016]
  \chronoevent{4/7/2012}{Discovery of the Higgs boson}
\stopchronology
\startchronology[startyear=10,stopyear=16]
  \chronoevent{19/8/14}{Augustus, the first Roman emperor, dies and is declared to be a god}
\stopchronology 
\end{document}

Ausgabe

Antwort3

Weitere Informationen chronosfinden Sie indiese Antwort.

Die aktuelle Version von Chronos ist verfügbar unter:
https://tex.stackexchange.com/a/342699/ (06.12.2016)

Nun lässt sich dies etwas chronoseinfacher erledigen:

      date format={ B d, Y},

Jedes Zeichen im Format wird entweder in ein Element des Datumsformats übersetzt oder unverändert weitergegeben. Dies schließt Satzzeichen und Leerzeichen ein. (Beachten Sie, dass Makros usw. hier nicht funktionieren, da das Makro zerlegt und Token für Token „übersetzt“ wird.)

Bei den Formatcodes handelt es sich größtenteils um eine Teilmenge der durch den GNU-Befehl bereitgestellten Formatcodes datesowie um einige für GNU nicht relevante Extras.

  • akurzer Wochentagsname zBMon
  • Avollständiger Wochentagsname zBMonday
  • bkurzer Monatsname zBJan
  • Bvollständiger Monatsname zBJanuary
  • dTag des Monats zB23
  • EÄra zB BCEoderCE
  • mMonatsnummer zB01
  • qminus, wenn das Jahr v. Chr. ist
  • Qminus, wenn das Jahr v. Chr. ist;
  • ydie letzten beiden Ziffern des Jahres zB66
  • YJahr zB1066

Im Grunde wird hierdurch der Code angepasst, der zum Setzen von Daten für Ereignisse verwendet wird. Eine abgespeckte Version dieses Formats ist auch verfügbar, um das Erscheinungsbild der Jahresbeschriftungen auf der Zeitleiste selbst anzupassen. Alternativ können an jedem Ende der Zeitleiste Epochenbeschriftungen hinzugefügt werden, um die Unordnung zu vermeiden, die durch die Einbeziehung CEoder BCEAngabe jedes Jahres entsteht.

Die Zeitleiste kann also wie folgt gesetzt werden:

\begin{tikzpicture}
  [
    chronos={%
      start date=2015-01-01,
      end date=2016-01-01,
      timeline height=2.5mm,
      timeline width=100mm,
      timeline line={shorten >=-10mm, -{Triangle Cap[length=10mm]}},
      timeline years=above,
      date format={ B d, Y},
    }
  ]
  \chronosevent{2015-03-15}{Assassination of Caesar}
\end{tikzpicture}

produziert

Zeitleiste

Das Jahr Null ist standardmäßig nicht mehr vorhanden, kann aber bei Bedarf mithilfe von wiederhergestellt werden year zero.

verwandte Informationen