在多栏中平衡新页面的列

在多栏中平衡新页面的列

我正在使用该包创建一个使用 1 列和 2 列布局的文档multicol。我希望能够平衡列数,并在恢复 2 列布局之前让一些文本跨越两列。例如:

\documentclass{article}

\usepackage{multicol}
\usepackage{lipsum}

\begin{document}

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]

\lipsum

% \end{multicols}
\newpage
% \begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]

\lipsum

\end{multicols}

\end{document}

调用时\newpage,会立即开始新的一页,并且不会平衡列。如果取消注释上述两行,就会显示我想要实现的效果。然后,结束环境multicol并再次开始(使用选项参数跨越两列)即可。但是,这会结束当前组,因此会丢失局部定义如果这种平衡发生在另一个环境中,我就无法继续。

是否有可能达到预期的效果,即通过一些插入文本来平衡特定点的列?

[我正在使用multicol 1.8a来自 SVN 站点的包。]

答案1

嗯,这符合您的要求,显示了本地声明和嵌套枚举环境的范围划分。但是,如果您的真实情况如您用一行代码所示,那么将全宽文本视为页面标题的一部分并使用自定义页面样式会更简单。然后它也可以与自动分页一起使用。

在此处输入图片描述

\documentclass{article}

\usepackage{multicol}
\usepackage{lipsum}

\usepackage[italian]{babel}
\begin{document}



\setbox0\vbox{{\hsize\dimexpr(\textwidth-\columnsep)/2\relax
\columnwidth\hsize
\linewidth\hsize

\footnotesize% arbitray declaration to show scope
\lipsum


\begin{enumerate}
\item one
\pagebreak
\item two
\item three
\end{enumerate}

\lipsum
\par}}

\setbox2=\vsplit0 to \maxdimen

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]
\unvbox2
\end{multicols}
\newpage
\newpage

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]
\unvbox0
\end{multicols}

\end{document}

相关内容