
\\*
줄 바꿈을 방지하는 데 충분하지 않은 경우도 있습니다 . 분리된 줄이 단락 끝이고 페이지 상단에 고립되어 있는 경우("과부") 또는 단락 초기에 페이지 하단에 고립되어 있는 경우("고아") 추가하거나 {\widowpenalty10000 \par}
도움 이 됩니다.{\clubpenalty10000 \par}
예는 다음과 같습니다.
\documentclass{article}
\newcommand*{\twolines}{%
line 1 \\*
line 2 \par%
}
\newcommand*{\twolinesInseparable}{%
line 1 \\*
line 2 {\widowpenalty10000 \par}%
}
\begin{document}
\vspace*{32\baselineskip}
\twolines\twolines\twolines
\twolines\twolines\twolines
\twolines\twolines\twolines
\newpage
\vspace*{32\baselineskip}
\twolinesInseparable\twolinesInseparable\twolinesInseparable
\twolinesInseparable\twolinesInseparable\twolinesInseparable
\twolinesInseparable\twolinesInseparable\twolinesInseparable
\end{document}
이 코드에서 페이지 1과 2( ) 사이의 줄 바꿈은 \twolines
( 에도 불구하고) 2줄 덩어리로 분할되지만 , 페이지 3과 4( , "무한"( ) 설정 ) \\*
사이에서는 발생하지 않습니다 .\twolinesInseparable
10000
\widowpenalty
두 줄로 된 단락에서 이 두 매개변수가 의미 있는 방식으로 상호 작용합니까?
(이것은 이론적인 질문입니다. a를 포함하거나 포함 하지 않는 다양한 매크로가 충돌 \widowpenalty
하거나 무의미하거나 충돌하는 제약 조건을 생성하는지 확인하는 사고 실험 외에는 현재 실용적인 응용 프로그램이 없습니다 .)\clubpenalty
답변1
를 추가하면 무엇을 얻게 되는지 살펴보겠습니다 \showoutput
. 첫 번째 줄 쌍과 관련된 진단 메시지를 표시합니다.
Completed box being shipped out [1]
\vbox(633.0+0.0)x407.0
.\glue 16.0
.\vbox(617.0+0.0)x345.0, shifted 62.0
..\vbox(12.0+0.0)x345.0, glue set 12.0fil
...\glue 0.0 plus 1.0fil
...\hbox(0.0+0.0)x345.0
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0
...\write-{}
...\glue(\topskip) 10.0
...\rule(0.0+0.0)x*
...\penalty 10000
...\glue 384.0
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 5.05556
...\hbox(6.94444+0.0)x345.0, glue set 306.11107fil
....\hbox(0.0+0.0)x15.0
....\OT1/cmr/m/n/10 l
....\OT1/cmr/m/n/10 i
....\OT1/cmr/m/n/10 n
....\OT1/cmr/m/n/10 e
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 1
....\penalty 10000
....\glue 0.0 plus 1.0fil
....\penalty -10000
....\glue(\rightskip) 0.0
....\glue(\rightskip) 0.0
...\penalty 10000
...\penalty 300
...\glue(\baselineskip) 5.05556
...\hbox(6.94444+0.0)x345.0, glue set 321.11107fil
....\OT1/cmr/m/n/10 l
....\OT1/cmr/m/n/10 i
....\OT1/cmr/m/n/10 n
....\OT1/cmr/m/n/10 e
....\glue 3.33333 plus 1.66666 minus 1.11111
....\OT1/cmr/m/n/10 2
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 5.05556
무슨 일이 일어나는지는 매우 명확합니다. 명령이 \\*
수행 \vadjust{\penalty10000}
되고 이 \vadjust
항목은 가 포함된 줄 뒤에서 찾아옵니다 line 1
. 그러나 단락과 관련된 일반 처벌도 추가됩니다. 이 경우에는 \clubpenalty
과 의 합이 \widowpenalty
삽입되어 가 됩니다 \penalty300
. 외부 수직 목록의 모든 페널티는 가능한 페이지 중단점이며 TeX~할 수 있다그리고하다일곱 번째 두 줄 쌍에서 선택하세요.
이것은 무엇을 의미 하는가? 간단히 말해서 \\*
페이지 나누기를 금지하기 위해 단락에 사용하면 안 됩니다. 일반적으로 \\
완전한 진실을 말하기 위해 줄을 끊는 데 사용해서는 안 됩니다.