【问题标题】:Breaking a LaTeX environment across pages - the smart way跨页面打破 LaTeX 环境——聪明的方法
【发布时间】:2010-05-13 17:45:37
【问题描述】:

我正在使用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 的类似问题:

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

附录

我过去曾问过这样的 LaTeX 问题,但我得到的答案需要我手动完成,例如“在此处和那里插入 \vskip”等。

让我明确一点:这是一本书,有很多练习,我需要通过重新声明命令 & co 的正确方式“自动”完成。 p>

【问题讨论】:

  • 一般来说,当您获得有关如何手动执行此操作的答案时,您可以选择将结果包装在 \newenvironment 或类似名称中。此外,如果结果不仅仅是一个微不足道的咒语,那么将它变成一个完整的扩展包还有一些话要说。搜索“LaTeX for class and package writers”。当然,最好有人为您完成工作。这就是 CTAN 上的许多包的来源......

标签: latex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    提供命令以在给定的范围内禁用分页 垂直空间。如果命令之间没有足够的空间 和页面底部,将开始一个新页面。

    【讨论】:

    • 链接已损坏。它说 “未找到。在此服务器上未找到请求的 URL /tex-archive/help/Catalogue/entries/needspace.html。”
    • @PeterMortensen 谢谢。固定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多