在我的论文中,我希望创建一个时间轴图,来显示“时间段 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
在评论中进行计算。
希望这是让你开始行动的开始。如果这就是你正在寻找的,或者你有任何疑问,请告诉我。