
我想找到一種方法來防止以下程式碼中範例的第一行之間出現分頁符號。
\documentclass{article}
\usepackage{lipsum}
\usepackage{gb4e}
\begin{document}
\lipsum[3-7]
Some extra text to get the page break in the right place.
\begin{exe}
\ex\label{Label} Some description of this example
\begin{xlist}
\ex[*] {
First sentence.}
\ex[] {
First sentence.}
\ex[*] {
Third sentence.}
\end{xlist}
\end{exe}
\end{document}
我在第一個實際項目之後(即項目(a)和(b)之間)沒有分頁符號問題。我只是不希望範例的標題與範例的實際項目分開。
使用套件(而不是更通用的列表環境)對範例進行格式化非常重要gb4e
,因為我有許多具有複雜語言註釋的範例,需要專門針對該問題的套件。我更喜歡使用這個包,因為我已經為這個包格式化了很多示例(而不是其他語言示例包)。
我知道這個網站上有很多問題涉及在特定點防止或強制分頁,但我還沒有找到適用於使用該包製作的示例的答案gb4e
。我嘗試\nopagebreak
在範例本身或\goodbreak
範例之前添加類似內容,但分頁符號仍保留在同一位置。
最後,我能夠透過將整個範例放入一個minipage
環境中來將其強制轉到下一頁,但這有兩個缺點。首先,它不允許範例中的 (a) 和 (b) 之間有中斷,而這本來就可以。其次,需要手動檢查這些孤兒。這對於長文件(例如論文)來說不太實用。
答案1
\nolistbreak
嘗試在(嵌套)之前使用以下內容xlist
:
\makeatletter
\newcommand{\nolistbreak}{%
\let\oldpar\par\def\par{\oldpar\nobreak}% Any \par issues a \nobreak
\@nobreaktrue% Don't break with first \item
}
\makeatletter
這裡發生了兩件事:
- 兩者都
exe
創建xlist
了一個list
環境,這些清單在開始時執行了一系列測試。其中之一是發布一個新段落(通過\par
)。我們更新\par
為始終\nobreak
在其後發出 a (您可以對此進行調整); - 第一項也發出了不同的反應
\@nobreaktrue
,設定了一些任意高的懲罰。
我不確定這是否會破壞其他東西,所以請謹慎使用。透過呼叫發起的變更\nolistbreak
將在其呼叫所在的環境範圍內是本地的,因此它可能不會太糟糕。
\documentclass{article}
\usepackage{lipsum,gb4e}
\makeatletter
\newcommand{\nolistbreak}{%
\let\oldpar\par\def\par{\oldpar\nobreak}% Any \par issues a \nobreak
\@nobreaktrue% Don't break with first \item
}
\makeatletter
\begin{document}
\lipsum[3-7]
Some extra text to get the page break in the right place.
\begin{exe}
\ex\label{Label} Some description of this example
\nolistbreak
\begin{xlist}
\ex[*] {
First sentence.}
\ex[] {
First sentence.}
\ex[*] {
Third sentence.}
\end{xlist}
\end{exe}
\end{document}