chronosys 中的日期标签文本重叠

chronosys 中的日期标签文本重叠

我正在尝试(在 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 所需的修改:

  1. 删除了“重要事件”文字,将参数留空。

  2. dateselevation已从更改-7pt-10pt

  3. 将角度从 90 度改为\rotatebox-90 度。

  4. 将标签预紧力从 -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}

在此处输入图片描述

相关内容