如何让两个 adjustwidth 环境从相同的高度开始?

如何让两个 adjustwidth 环境从相同的高度开始?

当使用minipage环境时,如下所示,两个环境的左角会自动放置在文档中的同一高度。

小页面示例

\begin{minipage}{8em}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{minipage} 
\begin{minipage}{8em}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{minipage} 

当使用两个adjustwidth环境,指定它们的边距而不是高度时,两个文本区域不会放在同一水平线上,而是彼此位于下方:

adjustwidth 示例

当然,可以“手动”将文本区域向右向上移动多少,如下所示,但随后需要为每个插入的文本手动计算垂直空间 -14.8em。有没有办法自动进行此计算,使其独立于环境中文本的长度adjustwidth

\begin{adjustwidth}{0em}{\dimexpr \textwidth - 8em}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{adjustwidth}%
\vspace{-14.8em}
\begin{adjustwidth}{8em}{\dimexpr \textwidth - 16em}
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{adjustwidth}

我尝试运行的实际代码粘贴在下面。

\documentclass{article}


\usepackage{changepage}

\newcommand{\twocolumnsMinipage}[5]
{
\begin{minipage}{#1}
#4
\end{minipage} 
\hspace{#3}
\begin{minipage}{#2}
#5
\end{minipage} 
}

\newcommand{\twocolumnsAdjustwidth}[5]
{
\begin{adjustwidth}{0em}{\dimexpr \textwidth - #1}#4\end{adjustwidth}%
\vspace{-14.8em} % This calculation needs to be done automatically if this is to work for any text, since 15em is just what works for the texts I've used to test with
\begin{adjustwidth}{\dimexpr#1+#3}{\dimexpr \textwidth - #1-#2-#3}
#4
\end{adjustwidth}
}


\begin{document}

\noindent \twocolumnsMinipage{8em}{8em}{1em}
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }



\twocolumnsAdjustwidth{8em}{8em}{1em}
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }


\end{document}

答案1

这就是该包的用途paracol。 的文本leftcolumn将延续到下一页的左栏, 也是如此rightcolumn

如果一次输入太多(例如\lipsum[1-50]),它仍然会出错,并且会出现一些换行问题,这些问题可能可以通过包选项来解决。

编辑

我编辑了示例以显示使用 packages\setcolumnwidth命令调整列宽的一种方法。这取决于\textwidth,我在这里使用 进行设置geometry,但您可以尝试adjustwidth其他方法。

手册的第 16-17 页对此进行了描述paracol,但不幸的是,文档需要离散数学知识,并且没有提供清晰的使用示例!(注意包作者!)

据我所知,后面的三个数字\setcolumnwidth分别是左列、列间距和右列所需的最小间距。实际宽度是根据填充 内的最大空间而计算的textwidth

这可能不是完整的解决方案,但我认为它为您如何定制指明了前进的方向paracol

\documentclass{article}
\usepackage{paracol, lipsum}
\usepackage[textwidth=201pt]{geometry}

\begin{document}

\setcolumnwidth{50pt/20pt, 50pt}

\begin{paracol}{2}
  \begin{leftcolumn}
  \lipsum[1-5]  
  \end{leftcolumn}
      \begin{rightcolumn}
      \lipsum[6-10]
      \end{rightcolumn}
\end{paracol}

\end{document}

答案2

我发现了一个解决方案,如果没有任何列需要超过一页,那么它就有效(即,它根本不是一个解决方案);

结果

\documentclass{article}


\usepackage{changepage}
\usepackage{tikz}
\usepackage{calc}
\usetikzlibrary{tikzmark}


\newcommand{\twocolumnsMinipage}[5]
{
\begin{minipage}{#1}
#4
\end{minipage} 
\hspace{#3}
\begin{minipage}{#2}
#5
\end{minipage} 
}



\makeatletter
\newcommand{\gettikzxy}[3]{%
  \tikz@scan@one@point\pgfutil@firstofone#1\relax
  \edef#2{\the\pgf@x}%
  \edef#3{\the\pgf@y}%
}


\newcommand{\twocolumnsAdjustwidth}[5]
{%
\noindent\tikzmark{@anchor}%
%
\begin{adjustwidth}{0em}{\dimexpr \textwidth - #1}#4\end{adjustwidth}%
\begin{tikzpicture}[remember picture] 
\gettikzxy{(pic cs:@anchor)}{\Lx}{\Ly}
\global\edef\@y{\Ly}
\end{tikzpicture}
\vspace{-\@y}
\begin{adjustwidth}{\dimexpr#1+#3}{\dimexpr \textwidth - #1-#2-#3}
#4
\end{adjustwidth}
}


\makeatother



\begin{document}

\noindent \twocolumnsMinipage{8em}{8em}{1em}
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }



\twocolumnsAdjustwidth{8em}{8em}{2em}
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }
{Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. }


\end{document}

相关内容