对于以下内容:
\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
,尽管在我看来这不必要地复杂)。
现在关于没有出现的事件,这似乎只是因为该程序包期望整整一年,也就是说,它期望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月6日)
不管怎样,chronos
现在可以更轻松地完成此操作:
date format={ B d, Y},
格式中的每个字符要么被转换为日期格式的一个元素,要么按原样传递。这包括标点符号和空格。(请注意,宏等在这里不起作用,因为宏将被分解并逐个标记地“翻译”。)
格式代码大部分是 GNUdate
命令提供的格式代码的子集,其中有一些与 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
。