LaTeX如何禁止分页

50

我正在尝试创建一个LaTex文档,其中有一个"testday"和一个充满"testItemToDo"的诗句,并且我希望任何页面断开都发生在"testday"之前,但从不在"testday"和"testItemToDo"的诗句之间。我该如何修改我的LaTex文件?

\documentclass{article}
\begin{document}
\LARGE
{*}{*}to do\\
\begin{verse}
{*}today\nopagebreak
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
{*}testDay\nopagebreak
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
{*}testDay\nopagebreak
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
{*}testDay\nopagebreak
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
{*}testDay\nopagebreak
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\end{verse}
\end{document}

4
我认为这个问题不适合在这里讨论,应该在TeX.SE上进行讨论。 - Cole Tobin
2
我们能否以某种方式将其迁移到 TeX.SE? - D W
3个回答

73

使用\begin{samepage}\end{samepage}包围你的测试日和诗歌,例如:

\begin{samepage}
{*}testDay
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\end{samepage}
这仍然可以使诗歌在页面上自然地换行,只要你删掉一些 \\*

这句话的意思是,在排版诗歌时,如果使用了一些特殊字符\\*,会导致诗句无法自然地换行。如果删除这些特殊字符,就可以实现诗句在页面中的自然换行。


5
在使用samepage环境将tabbing环境封闭起来似乎无效。 - Turion
@Turion 请查看我的回答,其中包含\filbreak - 这可能会有所帮助。 - Fuhrmanator

35

\nopagebreak[number]

\nopagebreak命令可以防止LaTeX在命令位置处将当前页面分页。通过可选的参数number,您可以将\nopagebreak命令从强制转换为请求。数字必须是0到4之间的数字。数字越大,请求就越坚定。

或者您可以将verse更改为minipage...虽然如果列表超过一页,LaTeX可能会出错。


7
对我来说不起作用,但这里的“同页”解决方案(来自这里)有效。 - theV0ID
6
惨败 - PatrickT

4
我发现一个非常简单的解决方案是在每个 (查看FAQ) 前加上 \filbreak

enter image description here

\documentclass{article}
\begin{document}
\LARGE
{*}{*}to do\\
\begin{verse}
{*}today
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\filbreak
{*}testDay
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\filbreak
{*}testDay
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\filbreak
{*}testDay
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\filbreak
{*}testDay
\begin{verse}
testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo\\*testItemToDo
\end{verse}
\end{verse}
\end{document}

1
对我来说效果好多了。在我的情况下,更新章节(\renewcommand{\section}{\fillbreak\oldsection})比samepage环境更容易、更舒适、更清晰,就像FAQ中所示的那样。 - miile7
你的例子似乎没有使用\fillbreak,这是怎么回事? - lindhe
1
@lindhe '\filbreak' 只有一个 l 吗? - Fuhrmanator
哦,我永远不会注意到的。我使用ctrl+f来定位它,所以在你的文本中也没有找到它。谢谢。 - lindhe
然而,不幸的是,\filbreak 对我仍然没有任何作用。 :/ - lindhe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接