跨页面打破LaTeX环境 - 智能方式

时间:2010-05-13 17:45:37

标签: latex

我正在使用exercise包来显示书中的练习。我已经重新定义了一些像这样的命令,它基本上增加了一些空间,一支铅笔,以及练习前后的两个hrule:

\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最终会出现在页面的底部,其余的练习将在下一页进行。还有相反的行为:整个练习在一个页面上,除了“endExerciseEnv”中的\ hrule,它被刷新到下一页。

如何强制使用顶部套圈?

  • 或者与练习的标题(标题,标题,不是什么)一起,至少说5em左右的“练习文本”(所以它看起来并不难看),
  • 或者在整个练习中完全冲洗?

底部问题的类似问题:

如何强制它在hrule本身所在的可见页面上至少有5 em的“练习文本”? (或者练习环境的开头,以先到者为准 - 如果环境不高于5em就是这种情况)

附录

我在过去的问题中已经问过这样的问题,我得到的答案要求我手动完成任务,比如“在这里和那里插入一个\ vskip”等等。

让我说清楚:这是一本书,有很多练习,我需要它可以“自动”完成,通过正确的方式重新命名命令&共

2 个答案:

答案 0 :(得分:3)

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 :(得分:1)

感谢自己:https://ctan.org/pkg/needspace

  

提供禁用给定内容中的分页功能的命令   垂直空间。如果命令之间没有足够的空间   在页面底部,将启动一个新页面。