Повреждение ЛАТЕКСНОЙ среды через страницы - умный путь

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

\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", который сбрасывается к следующей странице.

Как я вызываю вершину hrule, прибывают?

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

Подобный вопрос для нижней части hrule:

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

Приложение

Я спросил в прошлых вопросах о ЛАТЕКСЕ как это, и у меня есть ответы, которые потребовали, чтобы я сделал, материал вручную, как "вставляют \vskip тут и там" или такой.

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

6
задан Peter Mortensen 9 January 2019 в 04:40
поделиться

2 ответа

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

3
ответ дан 17 December 2019 в 07:01
поделиться

Престижность к я: https://ctan.org/pkg/needspace

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

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: