与外边距重叠的垂直时间线

与外边距重叠的垂直时间线

我使用的是 LaTeX 和回忆录。我希望时间轴的年份延伸到外边距。我只会制作这些硬编码的位图,但我不想每次分页更改将时间轴从正面页面移动到反面页面或反之亦然时都必须重新绘制它们(交换时间轴的左侧/右侧)。这是我所拍摄的草图(左侧页面): 期望结果的草图

如果这可以用现成的软件包来实现,那就太好了。如果不能,那么我将非常感激如何编写代码而不会太快超出我的理解范围。如果太疯狂,我想我的后备方案是制作两个硬编码(左/右)位图,并尝试编写代码以插入(使用 insbox 或其他东西)当前页面的正确位图。

答案1

这只是一个概念验证。有些东西是硬编码的,但由于您没有提供太多细节信息,我不知道什么会变化,什么不会变化。

\documentclass[twoside]{article}
\usepackage{wrapfig}
\usepackage{eso-pic}
\usepackage{tikzpagenodes}
\usepackage{lipsum}
\newcounter{timeline}
\newcommand{\TimeLine}[2][10]{\stepcounter{timeline}
\begin{wrapfigure}[#1]{o}[10pt]{4cm}
\begin{tikzpicture}[remember picture]
\path (0,0) coordinate (TL-\thetimeline-bottom);
\path (0,{(#1-2)*12pt}) coordinate (TL-\thetimeline-top);
\end{tikzpicture}
\end{wrapfigure}
\AddToShipoutPictureFG*{%
\ifodd\thepage
\begin{tikzpicture}[remember picture,overlay,font=\sffamily]
\foreach [count=\Z] \X/\Y  in {#2}
{
\xdef\Nmax{\Z}
}
\draw[very thick,-latex] (current page text area.east |- TL-\thetimeline-bottom) --
(current page text area.east |- TL-\thetimeline-top)
foreach [count=\Z] \X/\Y  in {#2} {coordinate[{pos=\Z/(\Nmax+1)}]
(TL-\thetimeline-\Z) };
\foreach [count=\Z] \X/\Y  in {#2}
{
\draw ([xshift=-1mm]TL-\thetimeline-\Z)
node[left]{\Y} -- ([xshift=+1mm]TL-\thetimeline-\Z) node[right]{\X};
}
\end{tikzpicture}
\else
\begin{tikzpicture}[remember picture,overlay,font=\sffamily]
\foreach [count=\Z] \X/\Y  in {#2}
{
\xdef\Nmax{\Z}
}
\draw[very thick,-latex] (current page text area.west |- TL-\thetimeline-bottom) --
(current page text area.west |- TL-\thetimeline-top)
foreach [count=\Z] \X/\Y  in {#2} {coordinate[{pos=\Z/(\Nmax+1)}]
(TL-\thetimeline-\Z) };
\foreach [count=\Z] \X/\Y  in {#2}
{
\draw ([xshift=-1mm]TL-\thetimeline-\Z)
node[left]{\X} -- ([xshift=+1mm]TL-\thetimeline-\Z) node[right]{\Y};
}
\end{tikzpicture}
\fi
}}
\begin{document}
\lipsum[1-3]
\TimeLine{1998/France,2002/Brazil,2006/Italy}
\lipsum[4-6]
\TimeLine{2010/Spain,2014/Germany,2018/France}
\lipsum[7-9]
\end{document}

在此处输入图片描述

在此处输入图片描述

正如您所见,时间/日期总是在外面。

相关内容