两页上的文本垂直平衡

两页上的文本垂直平衡

在之前的一个问题中,我问如何让一页上的两列保持垂直平衡。这个解决方案非常适合这个目的。

\newenvironment{overview}%
  {\onecolumn\vtop to 0pt\bgroup\chapter*{Overview}\begin{multicols}{2}}%
  {\end{multicols}\vss\egroup\hfill\twocolumn}

有没有办法实现类似的效果,但需要两个页面pdfLaTeX在 KOMA 类中使用)?也就是说,每页上有一列特定高度的列。也就是说,与overview上面定义的环境相同,但结果的第一列出现在第一页(偶数页),第二列出现在第二页(奇数页)。

我尝试创建一个双列多列环境,就像当文本宽度是正常宽度的两倍时发生的情况一样,然后模仿该方法(如何在两页上添加图片,左侧部分在左侧,右侧部分在右侧(用于书籍)?),本质上在两个页面上创建了两个输出,但只显示正确的列。

\documentclass[b5paper,twoside]{scrbook}
\usepackage{adjustbox}
\usepackage{multicol}

\usepackage{lipsum}

\newlength{\innerMargin}
\setlength{\innerMargin}{3cm}
\usepackage[inner=\innerMargin]{geometry}

\makeatletter
\newcommand{\twopager}[1]{%
    \cleardoubleevenstandardpage
    \adjustbox{trim=0 0 {\innerMargin+\columnwidth} 0, clip}{%
    \begin{minipage}{2\textwidth}
    \addchap{Title}
    \setlength{\columnsep}{2\innerMargin}
    \begin{multicols}{2}
    #1
    \end{multicols}
    \end{minipage}
    }%
\newpage
    \adjustbox{trim={\innerMargin+\columnwidth} 0 0 0, clip}{%
    \begin{minipage}{2\textwidth}
    \addchap{Title}
    \setlength{\columnsep}{2\innerMargin}
    \begin{multicols}{2}
    #1
    \end{multicols}
    \end{minipage}
}%
\cleardoublepage
}
\makeatother

\begin{document}
\lipsum

\twopager{\lipsum[1-5]}

\lipsum
\end{document}

但是,这并不能完全正确地获得垂直间距(更不用说解决方案的优雅性了)。正确的方法是什么?

部分解决方案如下:

\documentclass[11pt,parskip=half-,twoside]{scrbook}
\newlength{\currentparskip}

\usepackage{afterpage}
\usepackage{float}
\usepackage{adjustbox}
\usepackage{calc}

\newlength{\innerMargin}
\newlength{\outerMargin}
\setlength{\innerMargin}{6cm}
\setlength{\outerMargin}{3cm}

\usepackage[a4paper, inner=\innerMargin,outer=\outerMargin]{geometry}

\newlength{\twopageboxwidth}
\setlength{\twopageboxwidth}{2\textwidth+2\innerMargin}  %BCOR
%\newlength{\twopageboxtextwidth}
%\setlength{\twopageboxtextwidth}{\paperwidth-\innerMargin-\outerMargin}

\usepackage{newfloat}
\DeclareFloatingEnvironment{boxe}

\usepackage{multicol}
\usepackage{dpfloat}

\usepackage{lipsum}

\begin{document}
\lipsum[1-4]

\setlength{\currentparskip}{\parskip}
\afterpage{%
\begin{boxe}[p]
\begin{leftfullpage}
\begin{addmargin}[0em]{\textwidth-\twopageboxwidth}
\addchap{Overview}
\setlength{\columnsep}{2\innerMargin}
\begin{multicols}{2}
\setlength{\parskip}{\currentparskip}
\lipsum[1-5]
\end{multicols}
\end{addmargin}
\end{leftfullpage}
\end{boxe}
\begin{boxe}[p]
\begin{fullpage}
\begin{addmargin}[-\twopageboxwidth+\textwidth]{0em}
\addchap{Overview}
\setlength{\columnsep}{2\innerMargin}
\begin{multicols}{2}
\setlength{\parskip}{\currentparskip}
\lipsum[1-5]
\end{multicols}
\end{addmargin}
\end{fullpage}
\end{boxe}
}


\end{document}

生成结果:

在此处输入图片描述

这个解决方案基本满足了我的需求。但是也存在一些问题:

  • 必须手动将环境放置在上一页(否则 LaTeX 会因\afterpage+进入无限循环leftfullpage)。
  • 两页的垂直放置位置太低了。

相关内容