Заставить латекс набирать текст на двух страницах - PullRequest
6 голосов
/ 07 февраля 2010

Как я могу побудить / сделать так, чтобы латексные шрифты набирали некоторую часть текста, чтобы она все появлялась на последовательной четной странице, нечетной паре страниц?

Используя метод проб и ошибок, \nopagebreak можно убедить сделать это, но есть ли стратегия, которая просто работает? Идеальным было бы что-то вроде samepage, но такое, которое:

  1. Запустит разрыв страницы на нечетных страницах, если это необходимо для получения всего текста на обращенных страницах;
  2. Допускает до одного разрыва страницы в любом месте тела среды и шумно завершает работу, если это невозможно обеспечить.

Ответы [ 2 ]

6 голосов
/ 13 марта 2010

Вы можете создать такую ​​среду, как

\newenvironment{twopage}{%
  \begingroup\setbox0\vbox\bgroup
}{%
  \egroup
  \ifdim\ht0>\textheight
    \setbox1\vsplit0 to \textheight
    \cleardoublepage\unvbox1\clearpage
    \ifdim\ht0>\textheight
      \PackageWarning{twopage}{Overflow in twopage environment}%
    \fi
    \unvbox0\clearpage
  \else
    \clearpage\unvbox0\clearpage
  \fi\endgroup
}

Если вы хотите более шумный сбой, замените \PackageWarning на \PackageError. \unvbox es должен позволять корректно работать с заметками / плавающими числами - если вам это не нужно, вы можете изменить их все на * Вместо 1007 * es (хотя я немного устала от поведения \vsplit в отношении глубины и пропусков ящиков, так что это может привести к забавному поведению, но это гарантирует, что вы взяли только две страницы, выполнив что-либо дополнительное из внизу второй страницы).

3 голосов
/ 07 февраля 2010

Существует различие между \clearpage и \cleardoublepage. Используя \cleardoublepage непосредственно перед тем, что вы хотите, с левой стороны и \clearpage перед тем, что вы хотите с правой стороны, вы можете форсировать нужный макет.

Конечно, опция twoside обязательна.

...