我想在页边空白处添加一条时间线,以便读者可以快速了解每个段落的主题。我使用命令来实现这一点marpar
。但是,我还想在每个marpar
框之间添加一条垂直线,以便读者了解时间的流逝。请参见下面的屏幕截图。请注意,我使用 Microsoft Powerpoint 自己添加了红线,只是为了说明我想要实现的目标。
这是 MWE 代码
\documentclass[paper=a4, fontsize=11pt]{report} % Article class of KOMA-script with 11pt font and a4 format
\usepackage{lipsum}% just to generate filler text for the example
\begin{document}
\marginpar{1974 \par Time travel invented}
\lipsum[1-1]
\marginpar{1984 \par Decepticons invade Earth}
\lipsum[1-1]
\marginpar{1994 \par Parallel dimensions invade}
\lipsum[1-1]
\marginpar{2004 \par Sun explodes}
\lipsum[1-1]
\end{document}
要编译,我只需发出命令pdflatex mwe.tex
显然,如果有一个包可以完全实现我想要的功能,那就太好了。但是,我愿意接受一个简单的解决方案,即我目测左右线并手动设置其长度。例如,它可以是一条被推入边距的 tikz 线
答案1
您可以将内容放在\marginpar
中tikzmarknode
。然后(在页面结束之前)创建一个tikzpicture
带有选项的overlay, remember picture
。然后您可以使用普通的 Ti钾Z 命令绘制时间线。
为了方便起见,我将样式放在了中tikzset
以便于编辑。
几点说明:
- 由于
\marginpar
内容现在是一个节点标签,您可以align=left
在样式中使用,并\\
用于换行。 - 该
\draw
命令使用内置current page
节点。您可以调整到页面边缘的距离,或使用\draw[timeline] (A|-current page.north)--(A)--(B)--(C)--(D)--(D|-current page.south);
将线绘制到页面边缘。
\documentclass[paper=a4, fontsize=11pt]{report} % Article class of KOMA-script with 11pt font and a4 format
\usepackage{lipsum}% just to generate filler text for the example
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\tikzset{
margin/.style={align=left, text width=2.5cm, inner sep=1mm},
timeline/.style={red, line width=1.5mm},
timeball/.style={draw=black, thin, circle, fill=red, minimum size=4mm}
}
\begin{document}
\marginpar{\tikzmarknode[margin]{A}{1974\\ Time travel invented}}
\lipsum[1-1]
\marginpar{\tikzmarknode[margin]{B}{1984\\ Decepticons invade Earth}}
\lipsum[1-1]
\marginpar{\tikzmarknode[margin]{C}{1994\\ Parallel dimensions invade}}
\lipsum[1-1]
\marginpar{\tikzmarknode[margin]{D}{2004\\ Sun explodes}}
\begin{tikzpicture}[overlay, remember picture]
\draw[timeline] ([yshift=-4cm]A|-current page.north)node[timeball]{}--(A)--(B)--(C)--(D)--([yshift=4cm]D|-current page.south)node[timeball]{};
\end{tikzpicture}
\lipsum[1-1]
\end{document}