multicols* 具有一列内容 / vfill 在 multicols 中

multicols* 具有一列内容 / vfill 在 multicols 中

我尝试了几种不使用 clearpage 来创建垂直填充的两列布局,并在下方显示一列内容的方法,但都没有成功。在我尝试使用 multicols 环境时,我无法让页面的其余部分垂直填充,从而保持规则,但让一列内容显示在下面。在我尝试使用 multicols* 环境时,我可以让页面垂直填充,但无法让一列内容显示在同一页面上,如下图所示:

multicols* 内容如下

我也尝试将单列内容放在页脚中,但规则会与页脚重叠。

我愿意接受任何解决方案、包或环境,但 documentclass 的 twocolumn 选项可能不适合我,因为这是文档集合的一部分。

答案1

您可以缩短页面:

\documentclass{article}
\usepackage{eso-pic}
\usepackage{multicol,lipsum}

\columnseprule0.4pt
\begin{document}
\enlargethispage{-2cm}
\AddToShipoutPictureFG*{% 
 \AtTextLowerLeft{\makebox[\textwidth]{Footer}}}
\begin{multicols*}{2}
\lipsum[1]
\end{multicols*}

\end{document}

在此处输入图片描述

当然,您也可以手动绘制线条并指定其应有的长度:

\documentclass{article}
\usepackage{eso-pic}
\usepackage{multicol,lipsum}


\begin{document}
\AddToShipoutPictureFG*{%
 \AtTextUpperLeft{\makebox[\textwidth]{\rule[\dimexpr-0.8\textheight]{0.4pt}{0.8\textheight}}}%
 \AtTextLowerLeft{\makebox[\textwidth]{Footer}}}
\begin{multicols*}{2}
\lipsum
\end{multicols*}



\end{document}

答案2

它有助于首先使用保存箱来测量页脚材料。

\documentclass{article}
\usepackage{multicol,lipsum}

\newsavebox{\tempbox}
\columnseprule0.4pt

\begin{document}
\setbox\tempbox=\vbox{\lipsum[2]}% create footer material (outside multicols)
\begin{multicols}{2}
\lipsum[1]
\vfill\rule{0pt}{\dimexpr \textheight - \ht\tempbox - \dp\tempbox - \topskip}
\end{multicols}
\noindent\usebox{\tempbox}% \unvbox\tempbox also works here
\end{document}

相关内容