我正在使用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,它被刷新到下一页。
如何强制使用顶部套圈?
底部问题的类似问题:
如何强制它在hrule本身所在的可见页面上至少有5 em的“练习文本”? (或者练习环境的开头,以先到者为准 - 如果环境不高于5em就是这种情况)
附录
我在过去的问题中已经问过这样的问题,我得到的答案要求我手动完成任务,比如“在这里和那里插入一个\ vskip”等等。
让我说清楚:这是一本书,有很多练习,我需要它可以“自动”完成,通过正确的方式重新命名命令&共
答案 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
提供禁用给定内容中的分页功能的命令 垂直空间。如果命令之间没有足够的空间 在页面底部,将启动一个新页面。