如何创建没有整数事件的时间线?

如何创建没有整数事件的时间线?

在我的论文中,我希望创建一个时间轴图,来显示“时间段 t”和“时间段 t+1”之间发生的事情,而不是像 这样的“实际时间数字” 1978。包中不允许这样做chronosys

答案1

好的,我已经着手做一个你可能想到的快速而粗糙的版本。它不使用包chronosys,因为我不知道。相反,我使用了tikz。我希望它仍然有帮助。

在此处输入图片描述

\documentclass[a4paper]{article}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{calc}

\def \Tstart {1800}
\def \Tend {1900}
\pgfmathsetmacro\Tduration {(\Tend - \Tstart)}
\def \ImageWidth {13}
\pgfmathsetmacro\scaling {(\ImageWidth/\Tduration)}

\newcommand\timelineDateBelow[2]{% (date, text)
  \pgfmathsetmacro \xdate {(#1 - \Tstart)*\scaling}
  \draw (\xdate,0.1) -- (\xdate,-0.1) node[below, align=center, text width = 2cm]{#2};
}
\newcommand\timelineDateAbove[2]{% (date, text)
  \pgfmathsetmacro \xdate {(#1 - \Tstart)*\scaling}
  \draw (\xdate,0.1) node[above, align=center, text width = 2cm]{#2} -- (\xdate,-0.1);
}

\begin{document}

\begin{tikzpicture}
  \draw[ultra thick, ->] (0,0) -- (\ImageWidth,0);
% start and finish dates and ticks
%  \draw[ultra thick] (0,0.1) node[above]{\Tstart} -- (0,-0.1);
%  \draw (\ImageWidth,0.1) node[above]{\Tend};

  \timelineDateBelow{1810}{date a here}
  \timelineDateBelow{1840}{manual\\linebreak}
  \timelineDateAbove{1860}{date b above}
  \timelineDateBelow{1870}{date c here}
  \timelineDateAbove{1880}{date d above to avoid overlap}

\end{tikzpicture}

\end{document}

让我告诉你缺点。如果日期设置得太近,文本可能会重叠。您可以通过降低text width节点的 来避免这种情况,节点的 是手动设置的,text width=2cm或者手动换行。

您还必须手动调整水平缩放比例。它在中设置为任意数字\ImageWidth。我确信有一种方法可以让它自动填充线宽,但这搞乱了我的计算。也许有人知道如何\linewidth在评论中进行计算。

希望这是让你开始行动的开始。如果这就是你正在寻找的,或者你有任何疑问,请告诉我。

相关内容