如何在防止分页时使多列中的列底部参差不齐?

如何在防止分页时使多列中的列底部参差不齐?

设置:我需要使用多列来表示 3 列,其中有许多小部分。我注意到有些部分在中间断开,最终换行到下一列,这是我不想要的。

经过一番研究(例如谷歌搜索),发现添加\interlinepenalty=10000可以防止这种情况发生。确实如此。Multicol-不换行

但是,列的底部不但没有间隙(底部参差不齐,或任何正确的名称),反而列之间留下了很大的空白空间,这看起来不太好。

Mathematica 图形

生成使用:

\documentclass[10pt,notitlepage]{article}%
\setlength{\columnseprule}{0pt} %column thicnkess 
\setlength{\columnsep}{5.0pt}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{titlesec}
\titleformat{\section}{\large\bfseries}{\thesection}{1em}{}
\begin{document}
\begin{multicols*}{3}     
\interlinepenalty=10000
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[3]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[4]
\section{some section}
\lipsum[75]
\end{multicols*}
\end{document}

移除\interlinepenalty=10000可得

Mathematica 图形

我不想要这样的部分,因为部分正在跨列流动。

删除星号版本也无济于事。必须使用它\interlinepenalty=10000来防止部分内出现分页符。但问题是部分之间的间隙很大。

然后我习惯samepage把每个部分都包在里面,希望它能有所帮助。但这个结果更奇怪。我一定是在这里做错了什么:

Mathematica 图形

以下是上述代码

\documentclass[10pt,notitlepage]{article}%
\setlength{\columnseprule}{0pt} %column thicnkess 
\setlength{\columnsep}{5.0pt}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{titlesec}
\titleformat{\section}{\large\bfseries}{\thesection}{1em}{}
\begin{document}
\begin{multicols}{3}     
%\interlinepenalty=10000

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[3]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[4]
\end{samepage}

\begin{samepage}
\section{some section}
\lipsum[75]
\end{samepage}

\end{multicols}
\end{document}

防止在部分中间出现分页符的正确方法是什么,但要将多余的空间放在底部而不是中间?

在 Linux 上使用 Tex live 2013。(注:有一天,我需要学习如何使用 Latex 复制代码片段,这样我就不会一次又一次地复制粘贴相同的代码)。

答案1

使用宏可以达到预期的效果\raggedcolumns

\documentclass[10pt,notitlepage]{article}%
\setlength{\columnseprule}{0pt} %column thicnkess 
\setlength{\columnsep}{5.0pt}
\usepackage{lipsum}
\usepackage{multicol}
\usepackage{titlesec}
\titleformat{\section}{\large\bfseries}{\thesection}{1em}{}
\begin{document}
\begin{multicols}{3}
\raggedcolumns     %new code
\interlinepenalty=10000
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[3]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[75]
\section{some section}
\lipsum[4]
\section{some section}
\lipsum[75]
\end{multicols}
\end{document}

在此处输入图片描述

相关内容