
다음 코드에서 예제의 첫 번째 줄 사이에 페이지 나누기를 방지하는 방법을 찾고 싶습니다.
\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
하면 이 목록은 처음에 여러 테스트를 수행합니다. 그 중 하나는 (를 통해) 새 단락을 발행하는 것입니다 . 우리는 항상 이후에 a를 발행하도록 업데이트합니다 (조정 가능).xlist
list
\par
\par
\nobreak
\@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}