
Я готовлю несколько тезисов для буклета конференции; некоторые из них слишком длинные, что приводит к разрыву страницы.
Закончив макет брошюры, я собираюсь отредактировать аннотации, чтобы сделать их короче и чтобы каждая занимала только одну страницу, но сейчас я хотел бысилакаждая аннотация должна оставаться на своей странице, даже если это означает, что текст «вытечет» ниже текущей страницы.
Достижимо ли это в 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}