クロノシスタイムライン、「日、月、年」ではなく「日、月、年」と完全な数字の日付の質問

クロノシスタイムライン、「日、月、年」ではなく「日、月、年」と完全な数字の日付の質問

以下について:

\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}

生産:

ここに画像の説明を入力してください

タイムライン イベントを、たとえば 2015 年 3 月 15 日のように、月日、年の形式で表示することは可能ですか?

また、このタイムラインに 2015 年から 2016 年を反映させることができませんでした。代わりに、一方の端に「15」、もう一方の端に「16」が表示されたままになっているようです。

私がそれを試したとき:

    \startchronology[startyear=2015,stopyear=2016]

プログラムには年表の日付がまったく反映されていませんでした。

chronosys パッケージのドキュメント私にとっては、役に立たなかったようです。

ありがとうございます。パッケージ自体の都合で現在使用している日付形式にこだわるのであれば、その情報をいただければ幸いです。

答え1

最初の問題については、@JP-Ellis がすでに完璧に回答しているので、コメントしません。ただし、コードがchronosys少し乱雑ではありますが、日付形式を変更するためにコードにパッチを当てるのはそれほど難しくありません。@JP-Ellis はすでに適切なファイルと行を見つけ出しているので、日付形式を変更するためのパッチを次に示します。

\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}

出力:

クロノシス

答え2

上のコメントで述べたように、日付を変更するのは困難であるように見えますchronosys。 ではそれを行う方法が示されていないようです。 結果として、これを行う唯一の方法は、パッケージ自体の一部を変更することです (私の知る限り、日付の印刷は の 513 行目あたりから始まりますchronosyschr.texが、私には不必要に複雑に見えます)。

さて、イベントが表示されないのは、パッケージが 1 年を想定しているため、つまり、そう15/03/2015でない場合は日付を 15 年として登録しているためであると思われます。

\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}

出力

答え3

詳細はchronos以下をご覧ください。この答え

chronos の現在のバージョンは次の場所で入手できます:
https://tex.stackexchange.com/a/342699/ (2016-12-06)

価値あることとして、chronos今ではこれをより簡単に実行できるようになりました。

      date format={ B d, Y},

フォーマット内の各文字は、日付フォーマットの要素に変換されるか、そのまま渡されます。これには句読点とスペースが含まれます。(マクロはトークンごとに分解され、「変換」されるため、マクロなどはここでは機能しないことに注意してください。)

フォーマット コードは主に GNU のdateコマンドによって提供されるフォーマット コードのサブセットであり、GNU に関連しないいくつかの追加機能があります。

  • a短縮曜日名(例)Mon
  • A曜日の完全な名前(例:Monday
  • b月の短縮名(例)Jan
  • B月の完全な名前(例)January
  • d月の日付(例)23
  • E時代 例えばBCEまたはCE
  • m月番号 例01
  • q紀元前の場合はマイナス
  • Q年が紀元前の場合はマイナス。
  • y年の下2桁(例)66
  • Y年 例1066

基本的に、これはイベントの日付をタイプセットするために使用されるコードをカスタマイズします。この形式の縮小版も利用可能で、タイムライン自体の年ラベルの外観をカスタマイズできます。年ごとにCEまたはを含める煩雑さを避けるために、タイムラインの両端に年号ラベルを追加することもできますBCE

したがって、タイムラインは次のようにタイプセットできます。

\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}

生産する

タイムライン

デフォルトでは年ゼロは存在しなくなりましたが、必要に応じて を使用してこれを復元できますyear zero

関連情報