Разбить среду LaTeX по страницам - разумный способ - PullRequest
6 голосов
/ 13 мая 2010

Я использую пакет упражнение для отображения упражнений в книге. Я переопределил некоторые команды, подобные этой, которые в основном добавляют пробел, карандаш и две хруле до и после упражнения:

\renewcommand{\ExerciseHeader}{\vskip 1em\hrule\vskip 1em\centerline{\textbf{\large\smallpencil
\ExerciseHeaderNB\ExerciseHeaderTitle%
\ExerciseHeaderDifficulty\ExerciseHeaderOrigin\medskip}}}
\makeatletter\def\endExerciseEnv{\termineliste{1}\@EndExeBox\vskip .5em\hrule\vskip 1em}\makeatother

Теперь это работает, но есть небольшая проблема:

Бывают ситуации, когда только \ hrule оказывается внизу страницы, а остальная часть упражнения переходит на следующую страницу. Существует также противоположное поведение: все упражнение находится на одной странице, за исключением \ hrule в endExerciseEnv, который сбрасывается на следующую страницу.

Как заставить верхний хруль прийти?

  • либо вместе с заголовком упражнения (заголовок, заголовок, что угодно, но не так) и, по крайней мере, произнесите 5em или около того «текста упражнения» (чтобы он не выглядел уродливо),
  • ИЛИ быть полностью сброшенным со всего упражнения?

Аналогичный вопрос для нижней хруле:

Как заставить его иметь как минимум 5 em "текста упражнения" перед ним на видимой странице, куда направляется сам hrule? (или начало среды Exercise, в зависимости от того, что наступит раньше - как в случае, если среда не выше 5em)

Добавление

Я задавал в прошлом вопросы LaTeX, подобные этим, и у меня есть ответы, которые требовали, чтобы я что-то делал вручную, например, "вставить \ vskip здесь и там" или что-то подобное.

Позвольте мне прояснить: это книга, в ней много упражнений, и мне нужно это будет сделано "автоматически", пройдя правильный путь повторного выделения команд & co.

Ответы [ 2 ]

3 голосов
/ 14 мая 2010

TeX может вставить разрыв страницы перед любым клеем, например \vskip 1em.

Внести некоторые изменения:

1) Вы пишете \vskip 1em\hrule\vskip 1em Замените его на

\vskip 1em\hrule \nobreak \vskip 1em

2) Вы пишете \vskip .5em\hrule\vskip 1em Замените его на

\nobreak\vskip .5em\hrule\vskip 1em

Вы также можете вставить \goodbreak, чтобы показать хороший момент, чтобы сломать страницу. Это хорошее замечание можно вставить до и после вашего упражнения.

1) \goodbreak\vskip 1em\hrule \nobreak \vskip 1em

2) \nobreak\vskip .5em\hrule \goodbreak \vskip 1em

1 голос
/ 13 мая 2010

Спасибо мне: https://ctan.org/pkg/needspace

Предоставляет команды для отключения взлома страниц в заданном вертикальное пространство. Если между командой недостаточно места и внизу страницы будет запущена новая страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...