我在一篇论文中使用了 Tikz 和 chronology。但是,一旦使用 Tikz 定位库,我就会观察到奇怪的副作用。如果我删除定位库(并将其包含在任何地方,我认为这不是预期的),我可以解决这个问题。为什么会这样?如何正确使用这些库并避免此类副作用?
\documentclass[10pt,a4paper,final]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,backgrounds,positioning} % remove 'positioning' for correct result
% http://i.imgur.com/DJNlDtv.jpg
\usepackage{chronology}
\begin{document}
\begin{figure}
\begin{chronology}[1]{1998}{2008}{7ex}{1\textwidth}
\event[1999]{2002}{ABC}
\event[2003]{2006}{DEF}
\event[2006]{2008}{GHI}
\end{chronology}
\end{figure}
\end{document}
答案1
这里有两个问题。
首先,chronology
使用的是已弃用的关键字形式right
,而库重新定义了它。这解释了为什么在包含包positioning
时 chronology 的输出会发生变化。positioning
其次,恕我直言,按时间顺序排列的时间轴上的文本定位并不好。它包括right=0.5\unit
每个标签,这导致该标签向右移动,因此它不会出现在预期的日期上。
您的示例中可以清楚地看到这一点。标签 ABC、DEF 和 GHI 应该位于它们所跨越的日期(它们下方的灰色条)的顶部,但显然并非如此。显然这是故意的,因为 chronolgy 会通过right
提到的选项移动它们,但我不明白为什么。
当您使用“单点”日期而不是日期范围时,这种情况尤其严重。例如:
\begin{figure}
\begin{chronology}[1]{1998}{2008}{7ex}{1\textwidth}
\event{2003}{Foo}
\event[2003]{2004}{Bar}
\end{chronology}
\end{figure}
生成:
在我看来,水平位移使得时间线难以阅读。标签 Foo 指的是 2003 年(确实如此)还是 2003-2004 年的范围?(它看起来是这样的)
我建议进行以下修复。将其添加到您的序言中:
\renewcommand{\event}[3][e]{%
\pgfmathsetlength\xstop{(#2-\theyearstart)*\unit}%
\ifx #1e%
\draw[fill=black,draw=none,opacity=0.5]%
(\xstop, 0) circle (.2\unit)%
node[anchor=south west, yshift=.2\unit,rotate=45,opacity=1] {#3};%
\else%
\pgfmathsetlength\xstart{(#1-\theyearstart)*\unit}%
\draw[fill=black, opacity=0.5,rounded corners=.2\unit]%
(\xstart,-.2\unit) rectangle%
node[anchor=south west, yshift=.2\unit,rotate=45,opacity=1] {#3} (\xstop,.2\unit);%
\fi}%
使用这个前言,输出现在是:
(在我看来)这看起来更自然。
此外,我的代码无论有没有positioning
库都会产生相同的结果,因为它没有使用冲突的right
关键字。
如果您希望标签向右移动(就像chronology
默认的那样),您可以将选项添加xshift=0.5\unit
到每个node
定义中\event
。
答案2
该问题已在该软件包的 1.1.1 版本中修复。
请注意,自 1.1 版本以来,有一个新的语法,如下所示:
#1 (optional) = stepsize,
#2 = yearstart,
#3 = yearstop,
#4 = postscaledtimelinewidth,
#5 (optional) = prescaledtimelinewidth
您和 JLDiaz 的示例代码如下所示:
% arara: pdflatex
\documentclass[a4paper]{report}
\usepackage{chronology}
\usetikzlibrary{positioning}
\begin{document}
\begin{figure}
\begin{chronology}[1]{1998}{2008}{\textwidth}
\event[1999]{2002}{ABC}
\event[2003]{2006}{DEF}
\event[2006]{2008}{GHI}
\end{chronology}
\end{figure}
\begin{figure}[h]
\begin{chronology}[1]{1998}{2008}{\textwidth}
\event{2003}{Foo}
\event[2003]{2004}{Bar}
\end{chronology}
\end{figure}
\end{document}
结果是: