如何在页边空白处放置垂直线

如何在页边空白处放置垂直线

我想在页边空白处添加一条时间线,以便读者可以快速了解每个段落的主题。我使用命令来实现这一点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

您可以将内容放在\marginpartikzmarknode。然后(在页面结束之前)创建一个tikzpicture带有选项的overlay, remember picture。然后您可以使用普通的 TiZ 命令绘制时间线。

为了方便起见,我将样式放在了中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}

相关内容