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

Fla*_*ius 6 latex

我正在使用练习包在书中展示练习.我已经重新定义了一些像这样的命令,它基本上增加了一些空间,一个铅笔,以及两个运动前后的套圈:

\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
Run Code Online (Sandbox Code Playgroud)

现在这可行,但有一个小问题:

在某些情况下,只有\ hrule最终位于页面的底部,其余的练习将在下一页进行.还有相反的行为:整个练习在一个页面上,除了"endExerciseEnv"中的\ hrule,它被刷新到下一页.

我该怎么强迫顶部的套圈来?

  • 或者与练习的标题(标题,标题,不是什么)一起,至少说5em左右的"练习文本"(所以它看起来不丑),
  • 整个练习还是要完全冲洗?

底部问题的类似问题:

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

附录

我在过去问过LaTeX这样的问题,我得到的答案要求我手动做一些事情,比如"在这里和那里插入一个\ vskip"等等.

让我说清楚:这是一本书,有很多练习,我需要 "自动"完成,通过正确的方式重新命名命令和co.

Ale*_*tov 4

TeX 可以在任何粘连之前插入分页符,例如\vskip 1em.

进行一些更改:

1)你写\vskip 1em\hrule\vskip 1em 替换为

\vskip 1em\hrule \nobreak \vskip 1em
Run Code Online (Sandbox Code Playgroud)

2)你写\vskip .5em\hrule\vskip 1em 替换为

\nobreak\vskip .5em\hrule\vskip 1em
Run Code Online (Sandbox Code Playgroud)

您还可以插入\goodbreak以显示好点来打破页面。这个好处可以在练习之前和之后插入。

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

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