временная шкала chronosys, «месяц день, год» вместо «день месяц год» и полные числовые вопросы о дате

временная шкала chronosys, «месяц день, год» вместо «день месяц год» и полные числовые вопросы о дате

Для следующего:

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

Производит:

введите описание изображения здесь

Возможно ли вообще, чтобы событие на временной шкале было в формате «месяц, день, год», например, 15 марта 2015 г.?

Кроме того, мне не удалось отразить в этой временной шкале период с 2015 по 2016 год. Вместо этого я застрял с «15» на одном конце и «16» на другом.

Когда я попытался это сделать, используя:

    \startchronology[startyear=2015,stopyear=2016]

в программе не было отражено никаких дат в хронологии.

TheДокументация по пакету 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, хотя мне это кажется излишне сложным).

Теперь относительно неотображаемых событий, похоже, это происходит просто потому, что пакет ожидает полный год, то есть он ожидает, 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},

Каждый символ в формате либо переводится в элемент формата даты, либо передается как есть. Это включает знаки препинания и пробелы. (Обратите внимание, что макросы и т. п. здесь не будут работать, поскольку макрос будет разбит и «переведен» токен за токеном.)

Коды формата в основном представляют собой подмножество кодов формата, предоставляемых dateкомандой GNU, с несколькими дополнениями, не имеющими отношения к GNU.

  • aкраткое название дня недели, напримерMon
  • Aполное название дня недели, напримерMonday
  • bкраткое название месяца, напримерJan
  • Bполное название месяца, напримерJanuary
  • dдень месяца например23
  • Eэра например BCEилиCE
  • mномер месяца например01
  • qминус, если год до н.э.
  • Qминус, если год до н.э.;
  • yпоследние две цифры года, например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.

Связанный контент