如何在 paracol 中对齐枚举项?

如何在 paracol 中对齐枚举项?

我正在使用 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}

相关内容