我正在使用 paracol 包向我的文档添加两列。在此文档中,我在每列中都有一个枚举,并且我希望每个项目(每个项目占用多行文本,在左列和右列之间变化)在列之间垂直对齐。
这是我目前的基本设置:
\documentclass{article}
\nonstopmode
\usepackage[margin=2cm,twoside]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{paracol}
\usepackage[shortlabels]{enumitem}
\usepackage[explicit]{titlesec}
\usepackage[T1]{fontenc}
\begin{document}
\begin{paracol}{2}
\begin{leftcolumn*}\noindent
\begin{enumerate}
\item Foo \\
Two line foo \\
Three line foo
\item Bar
\item Baz
\end{enumerate}
\end{leftcolumn*}
\begin{rightcolumn}\noindent
\begin{enumerate}
\item Foo
\item Bar \\
Two line bar
\item Baz
\end{enumerate}
\end{rightcolumn}
\end{paracol}
\end{document}
编译此代码将产生以下输出:
是否有一个选项可以同步这些枚举,使得项目 2 和 3 处于相同的垂直位置,而不涉及在每个项目之后在列之间切换并手动恢复计数器?
答案1
你不需要有将枚举放在 paracol 之外,这样似乎就没那么冗余了。
\documentclass{article}
\nonstopmode
\usepackage[margin=2cm,twoside]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{paracol}
\usepackage[shortlabels]{enumitem}
\usepackage[explicit]{titlesec}
\usepackage[T1]{fontenc}
\begin{document}
\begin{enumerate}
\begin{paracol}{2}
\item Foo \\
Two line foo \\
Three line foo
\switchcolumn
\item Foo
\switchcolumn*
\item Bar
\switchcolumn
\item Bar \\
Two line bar
\switchcolumn*
\item Baz
\switchcolumn
\item Baz
\end{paracol}
\end{enumerate}
\end{document}
此版本使用\synchcolumns
单独输入列,使用 \synch 定位对齐点。没有对不等数的测试。
(我的第一次尝试是基于的\@next
,但它想要扩展\item
。这种方法的主要困难是我失去了项目之间的间隙。)
\documentclass{article}
\nonstopmode
\usepackage[margin=2cm,twoside]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{paracol}
\usepackage[shortlabels]{enumitem}
\usepackage[explicit]{titlesec}
\usepackage[T1]{fontenc}
\makeatletter
\newsavebox{\left@col}
\newsavebox{\right@col}
\newcommand{\synchcolumns}[2]{% #1 = left column, #2 = right column
\switchcolumn[0]*
\let\synch=\pagebreak
\setbox\left@col=\vbox{#1}%
\switchcolumn[1]
\setbox\right@col=\vbox{#2}%
\switchcolumn[0]
\bgroup
\loop
\dimen0=\ht\left@col
\setbox0=\vsplit\left@col to \dimen0
\advance\dimen0 by -\ht\left@col
\setbox1=\vbox{\unvbox0}% \ht0 not useful
\advance\dimen0 by -\ht1
\unvbox1
\vskip\dimen0
\switchcolumn[1]
\dimen0=\ht\right@col
\setbox0=\vsplit\right@col to \dimen0
\advance\dimen0 by -\ht\right@col
\setbox1=\vbox{\unvbox0}%
\advance\dimen0 by -\ht1
\unvbox1
\vskip\dimen0
\switchcolumn[0]*
\ifvoid\left@col
\else\repeat
\egroup}
\makeatother
\begin{document}
\begin{enumerate}
\begin{paracol}{2}
\synchcolumns{%
\item Foo \\
Two line foo \\
Three line foo
\synch
\item Bar
\synch
\item Baz
}{%
\item Foo
\synch
\item Bar \\
Two line bar
\synch
\item Baz
}
\end{paracol}
\end{enumerate}
\end{document}