Для следующего:
\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
.