當然,如果您想非常精確地處理這個問題,僅避免在 q1 和 q2 之間換頁(例如允許在 q2 和 q2 之間換頁),那麼問題會變得稍微複雜一些:
\catcode`\@=11
\addtoparstylehooks{\xdef\lastmarker{\m@rker}}
\m@kedigitsletters
\def\@qone{q1}
\m@kedigitsother
\sethook{before}{q2}{\ifx\lastmarker\@qone\relax\nobreak\fi}
這裡我們在每個段落結束時獲取前一個段落的標記,然後在 q2 之前測試最後一個段落標記是否為 q1,如果是則插入 nobreak。請注意,為了將標記與 q1 進行比較,我們將 q1 存儲為比較對象,但 q1 中的 1 是字母而非數字,因此我們必須在執行該 def 時將數字重新分類為字母,然後再恢復。sethook 很聰明,它會自動為我們進行重新分類,而無需我們手動執行此類操作。