como fazer fundos irregulares de colunas em multicols ao evitar quebras de página?

como fazer fundos irregulares de colunas em multicols ao evitar quebras de página?

A configuração: preciso usar multicols para, digamos, 3 colunas onde tenho muitas seções pequenas. Percebi que algumas seções ficam quebradas no meio e acabam passando para a próxima coluna, o que não quero.

Depois de algumas pesquisas (ou seja, pesquisando no Google), descobri que adicionar \interlinepenalty=10000evita isso. E isso acontece.Multicol - não embrulhe

Mas em vez de ter lacunas na parte inferior das colunas (fundos irregulares, ou qualquer que seja o nome correto), as colunas acabam com um grande espaço vazio entre elas, o que não parece bom.

Gráficos matemáticos

gerado usando:

\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}

removendo \interlinepenalty=10000

Gráficos matemáticos

o que eu não quero, pois a seção está fluindo pelas colunas.

Remover a versão estrela também não ajuda. Deve-se usar \interlinepenalty=10000para evitar quebra de página dentro de uma seção. Mas então o problema são aquelas grandes lacunas entre as seções.

Então eu costumava samepageembrulhar cada seção dentro dela na esperança de que ajudasse. Mas esse resultado foi mais estranho. Devo ter feito algo errado aqui:

Gráficos matemáticos

Aqui está o código acima

\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}

Qual é a maneira correta de evitar quebras de página no meio das seções, mas o espaço extra fica na parte inferior e não no meio?

Usando Tex live 2013 no Linux. (ps. um dia, preciso aprender a usar o Latex para fazer cópias de fragmentos de código para não copiar e colar o mesmo código repetidas vezes).

Responder1

O efeito desejado pode ser alcançado usando a \raggedcolumnsmacro:

\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}

insira a descrição da imagem aqui

informação relacionada