Принудительно оставить абзац на той же странице, где он начался

Принудительно оставить абзац на той же странице, где он начался

Я готовлю несколько тезисов для буклета конференции; некоторые из них слишком длинные, что приводит к разрыву страницы.

Закончив макет брошюры, я собираюсь отредактировать аннотации, чтобы сделать их короче и чтобы каждая занимала только одну страницу, но сейчас я хотел бысилакаждая аннотация должна оставаться на своей странице, даже если это означает, что текст «вытечет» ниже текущей страницы.

Достижимо ли это в LaTeX?

решение1

Вы можете использовать \filbreak(TeXbook, стр. 111).

Самый интересный макрос, который предоставляет простой TeX для верстки страницы, называется \filbreak. Это означает, грубо говоря, «Разорвите страницу здесь и заполните низ пустым пространством, если только нет места для большего количества текста, за которым следует \filbreak». Таким образом, если вы поставите \filbreakв конце каждого абзаца, и если ваши абзацы не слишком длинные, каждый разрыв страницы будет происходить между абзацами, и TeX поместит на каждой странице столько абзацев, сколько возможно. Точное значение таково \filbreak:

\vfil\penalty-200\vfilneg

согласно Приложению B; и эта простая комбинация примитивов TeX дает желаемый результат: если в точке разрыва делается разрыв \penalty-200, предшествующий ему символ \vfilзаполнит нижнюю часть страницы пустым пространством, а \vfilnegпосле разрыва будет отброшен; но если в точке разрыва не делается, то \vfilи \vfilnegотменят друг друга и не дадут никакого эффекта.

Вот реализация.

\documentclass{article}
\usepackage{lipsum} % for mock text

\newenvironment{abs}[2]
 {% #1 = title, #2 = author
  \par\vspace{\bigskipamount}\filbreak
  {\centering\textbf{#1}\par\vspace{1ex}\textit{#2}\par\vspace{1ex}}%
 }
 {\par}

\begin{document}

\begin{abs}{A title}{John Doe}
\lipsum*[1][1-3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[2][1-3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[1][1-3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[2][1-3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[3]
\end{abs}

\begin{abs}{A title}{John Doe}
\lipsum*[3-5]
\end{abs}

\end{document}

введите описание изображения здесь

Связанный контент