我正在尝试(在 Hafid Boukhoulda 的大力帮助下,他帮助这里) 利用 chronosys 构建多个时间线,主要是公元前日期范围。大多数数据都是定点的,所以没有问题,但有些是仅针对日期范围的事件。当日期范围接近时,我遇到了一个问题:
\documentclass{article}
\usepackage{chronosys}
\newcommand{\mychronodatestyle}[1]{
\pgfmathparse{equal(sign(#1),-1)? int(abs(#1)):#1 }
\pgfmathresult
\pgfmathparse{equal(sign(#1),-1)? "BC":}
~\pgfmathresult
}
\catcode`\!=11
\def\eventyear{\!chreventyear}
\catcode`\!=12
\newcommand{\myeventdatestyle}[1]{
\pgfmathparse{equal(sign(\eventyear),-1)? int(abs(\eventyear)):"#1"}
\pgfmathresult
\pgfmathparse{equal(sign(\eventyear),-1)? "BC":}
~\pgfmathresult
}
\begin{document}
\startchronology
[startyear=-800,stopyear=-14, arrow=false, height=0.2em, dateselevation=10pt,
datesstyle=\mychronodatestyle
]
\chronoevent[datestyle=\myeventdatestyle ]
{12/-753}{Rome's foundation}
\chronoperiode[datesstyle=\mychronodatestyle,dateselevation=2pt]{-350}{-320}{important event}
\stopchronology
\end{document}
答案1
您的日期样式不适合提供的窄日期带。因此,我为这种间隔较窄的事件创建了一种替代(垂直)日期样式(名为\mychronovdatestyle
,请注意)。v
我还在行尾添加了一些%
字符,以防止杂散空格引入标签中。
\documentclass{article}
\usepackage{chronosys}
\newcommand{\mychronodatestyle}[1]{%
\pgfmathparse{equal(sign(#1),-1)? int(abs(#1)):#1 }%
\pgfmathresult%
\pgfmathparse{equal(sign(#1),-1)? "BC":}%
~\pgfmathresult%
}
\newcommand{\mychronovdatestyle}[1]{%
\pgfmathparse{equal(sign(#1),-1)? int(abs(#1)):#1 }%
\edef\tmp{\pgfmathresult}%
\pgfmathparse{equal(sign(#1),-1)? "BC":}%
\kern-1.5pt\rotatebox[origin=left]{90}{--- \tmp~\pgfmathresult}%
}
\catcode`\!=11
\def\eventyear{\!chreventyear}
\catcode`\!=12
\newcommand{\myeventdatestyle}[1]{%
\pgfmathparse{equal(sign(\eventyear),-1)? int(abs(\eventyear)):"#1"}%
\pgfmathresult%
\pgfmathparse{equal(sign(\eventyear),-1)? "BC":}%
~\pgfmathresult%
}
\begin{document}
\startchronology
[startyear=-800,stopyear=-14, arrow=false, height=0.2em, dateselevation=10pt,
datesstyle=\mychronodatestyle
]
\chronoevent[datestyle=\myeventdatestyle ]
{12/-753}{Rome's foundation}
\chronoperiode[color=red,datesstyle=\mychronovdatestyle,dateselevation=-7pt]
{-350}{-320}{important event}
\stopchronology
\end{document}
补充
OP 询问是否可以将垂直日期放在线下方,但需要省略标签。
我没有花任何力气让它变得漂亮,只是尽量减少上述 MWE 所需的修改:
删除了“重要事件”文字,将参数留空。
dateselevation
已从更改-7pt
为-10pt
。将角度从 90 度改为
\rotatebox
-90 度。将标签预紧力从 -1.5pt 改为 1.5pt。
新的 MWE:
\documentclass{article}
\usepackage{chronosys}
\newcommand{\mychronodatestyle}[1]{%
\pgfmathparse{equal(sign(#1),-1)? int(abs(#1)):#1 }%
\pgfmathresult%
\pgfmathparse{equal(sign(#1),-1)? "BC":}%
~\pgfmathresult%
}
\newcommand{\mychronovdatestyle}[1]{%
\pgfmathparse{equal(sign(#1),-1)? int(abs(#1)):#1 }%
\edef\tmp{\pgfmathresult}%
\pgfmathparse{equal(sign(#1),-1)? "BC":}%
\kern1.5pt\rotatebox[origin=left]{-90}{--- \tmp~\pgfmathresult}%
}
\catcode`\!=11
\def\eventyear{\!chreventyear}
\catcode`\!=12
\newcommand{\myeventdatestyle}[1]{%
\pgfmathparse{equal(sign(\eventyear),-1)? int(abs(\eventyear)):"#1"}%
\pgfmathresult%
\pgfmathparse{equal(sign(\eventyear),-1)? "BC":}%
~\pgfmathresult%
}
\begin{document}
\startchronology
[startyear=-800,stopyear=-14, arrow=false, height=0.2em, dateselevation=10pt,
datesstyle=\mychronodatestyle
]
\chronoevent[datestyle=\myeventdatestyle ]
{12/-753}{Rome's foundation}
\chronoperiode[color=red,datesstyle=\mychronovdatestyle,dateselevation=-10pt]
{-350}{-320}{}
\stopchronology
\end{document}