我该怎么做才能在第二列和第三列之间有垂直线?谢谢。
\documentclass{book}
\usepackage{blindtext}
\usepackage{paracol}
\setlength{\columnseprule}{1pt}
\setcolumnwidth{0.30\textwidth, 0.30\textwidth,, 0.30\textwidth}
\setlength\columnsep{20pt}
\begin{document}
\begin{paracol}{3}
\sloppy
\switchcolumn[0]
\blindtext[1]
\switchcolumn[1]
\blindtext[1]
\switchcolumn[2]
\blindtext[1]
\end{paracol}
\end{document}
答案1
该解决方案使用 everypage 包,假设您想要每一页上都有该行。
\documentclass{book}
\usepackage{blindtext}
\usepackage{paracol}
\setcolumnwidth{0.30\textwidth, 0.30\textwidth,, 0.30\textwidth}
\setlength\columnsep{20pt}
\newlength{\myoffset}
\setlength{\myoffset}{\dimexpr 0.6\textwidth + 1.5\columnsep}
\newcommand{\myhook}% cursor is at (1in,1in) and must not be moved.
{\rlap{\ifodd\value{page}\relax
\hskip\oddsidemargin \else \hskip\evensidepargin \fi
\hskip\myoffset\raisebox{\dimexpr-\topmargin-\headheight-\headsep-\textheight}[0pt][0pt]%
{\rule{0.5pt}{\textheight}}}}
\usepackage{everypage}
\AddEverypageHook{\myhook}% Note: you can also use \AddThispageHook, or use tikzpagenodes
\begin{document}
\begin{paracol}{3}
\sloppy
\switchcolumn[0]
\blindtext[1]
\switchcolumn[1]
\blindtext[1]
\switchcolumn[2]
\blindtext[1]
\end{paracol}
\end{document}
此版本使用 来\tikzmark
定位 paracol 的顶部。也可以使用(current page text area.north west)
if 从页面顶部开始。
有趣的是,将其放置\tikzmark
在伞伞上方不起作用。
尽管 和\tikzmark
都是tikzpicture
不可见的,但它们相当于 ,\hbox{}
并且如果后面跟着 则会导致出现空行\switchcolumn
。
\documentclass{book}
\usepackage{blindtext}
\usepackage{paracol}
\setcolumnwidth{0.30\textwidth, 0.30\textwidth,, 0.30\textwidth}
\setlength\columnsep{20pt}
\usepackage{tikzpagenodes}
\usetikzlibrary{tikzmark,calc}
\begin{document}
\begin{paracol}{3}
\sloppy
\switchcolumn[0]
\noindent\tikzmark{top}\indent
\blindtext[1]
\switchcolumn[1]
\blindtext[1]
\switchcolumn[2]
\blindtext[1]
\end{paracol}
\noindent\begin{tikzpicture}[overlay,remember picture]
\draw ($(pic cs:top)+(0.6\textwidth+1.5\columnsep, \ht\strutbox)$) --
(0.6\textwidth+1.5\columnsep, \ht\strutbox);
\end{tikzpicture}
\end{document}