
Настройка: Мне нужно использовать multicols, скажем, для 3 столбцов, где у меня много маленьких разделов. Я заметил, что некоторые разделы разрываются посередине и в итоге переносятся на следующий столбец, чего я не хочу.
После некоторых исследований (например, гугления) обнаружил, что добавление \interlinepenalty=10000
предотвращает это. И это действительно так.Multicol - не переносить
Но вместо того, чтобы иметь зазоры в нижней части колонн (рваные нижние части, или как это правильно называется), между колоннами остаются большие пустые пространства, что выглядит не очень хорошо.
сгенерировано с использованием:
\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
дает
чего я не хочу, так как раздел течет по столбцам.
Удаление версии со звездой тоже не помогает. Нужно использовать, \interlinepenalty=10000
чтобы предотвратить разрыв страницы внутри раздела. Но тогда проблема в этих больших пробелах между разделами.
Затем я samepage
заворачивал каждую секцию внутрь в надежде, что это поможет. Но этот результат был более странным. Должно быть, я сделал что-то не так:
Вот код для вышеприведенного
\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}
Как правильно предотвратить разрывы страниц в середине разделов, но оставить дополнительное пространство внизу, а не между ними?
Использую Tex live 2013 на Linux. (P.S. Однажды мне нужно будет научиться использовать 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}