리더에서 박스 레지스터 사용이 너무 적거나 너무 많음

리더에서 박스 레지스터 사용이 너무 적거나 너무 많음

나는 TeX의 리더들과 조금 놀고 있는데 이해할 수 없는 문제에 부딪혔습니다. 다음 예제 코드를 보면:

\documentclass{article}

\begin{document}

\def\bul{%
    \begingroup
    \setbox0=\hbox to 10pt{\hss\textbullet\hss}%
    \skip0=\wd0 plus 0.5\wd0 minus 0.5\wd0
%    \skip0=10pt plus 5pt minus 5pt  % the same as above
    \cleaders\box0\hskip\skip0
    \endgroup
}

1: \fbox{\hbox to 30pt{\null\hskip13pt\bul\hskip13pt\null}}  okay, too few space

2: \fbox{\hbox to 30pt{\null\hskip10pt\bul\hskip10pt\null}}  okay, space fits exactly

3: \fbox{\hbox to 30pt{\null\hskip7.5pt\bul\hskip7.5pt\null}}  okay, maximum stretch
\medskip

4: \fbox{\hbox to 30pt{\null\hskip11pt\bul\hskip11pt\null}}  wrong, still enough space left

5: \fbox{\hbox to 30pt{\null\bul\null}} wrong, too many bullets

\end{document}

\bul\textbullet내가 이해하는 대로 5pt에서 최대 15pt의 여유 수평 공간이 있는 경우 사용 가능한 공간을 중심으로 최대 1개를 출력해야 합니다 . 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

첫 번째 줄에는 4pt만 남아 있으므로 총알이 발생하지 않습니다. 2번째 줄에서 글머리 기호는 자연스러운 너비를 가지며 정확히 한 번 맞습니다. 세 번째 줄에서는 최대 너비까지 늘려야 합니다. 그런 경우는 괜찮습니다. 내가 이해하지 못하는 것은 다음 두 줄에 있습니다.

4행에서는 총알이 꽤 편안하게 들어갈 수 있는 8pt의 공간을 남겨 두어야 합니다. 하지만 총알은 발생하지 않습니다. 왜?

반대 문제는 라인 5에 있습니다. 여기서는 최대 확장이 초과되므로 TeX는 경고를 표시합니다 underfull \hbox. 그런데 왜 세 개의 상자가 출력됩니까?

섹션 9.3.3주제별 TeX\copy박스 레지스터를 먼저 사용한 후 비어 있지 않은지 확인하기 위해 다양한 리더 명령과 함께 사용해야 함을 명시적으로 명시합니다 . 사실 이것이 바로 제가 달성하고 싶은 효과이기 때문에 \box. 출력에는 여전히 3개의 글머리 기호가 있습니다.

왜 그런 일이 일어나는지(그리고 해결 방법도) 설명할 수 있는 사람이 있나요?

답변1

0이 아닌 신축성 구성 요소가 있는 접착제는 어쨌든 채우기 위해 늘어납니다.

다섯 번째 예에서는 을 사용하여 \showoutput다음을 볼 수 있습니다.

...\hbox(4.44444+0.0)x30.0, glue set 4.0
....\hbox(0.0+0.0)x0.0
....\cleaders 10.0 plus 5.0 minus 5.0
.....\hbox(4.44444+0.0)x10.0, glue set 2.5fil
......\glue 0.0 plus 1.0fil minus 1.0fil
......\mathon
......\tensy ^^O
......\mathoff
......\glue 0.0 plus 1.0fil minus 1.0fil
....\hbox(0.0+0.0)x0.0

여기서 접착제 신축 계수는 4입니다. 따라서 접착제는 10+4*5=30pt로 계산됩니다. 수정 사항은 없습니다. 이것이 작동하는 방식입니다.

참고: \tensy관련 없는 부분이 표시되는 것을 피하기 위해 일반 TeX으로 조판했기 때문입니다.

귀하의 문서를 통해 관련 진단은 다음과 같습니다.

..........\hbox(4.44444+0.0)x30.0, glue set 4.0
...........\hbox(0.0+0.0)x0.0
...........\cleaders 10.0 plus 5.0 minus 5.0
............\hbox(4.44444+0.0)x10.0, glue set 2.5fil
.............\glue 0.0 plus 1.0fil minus 1.0fil
.............\OMS/cmsy/m/n/10 ^^O
.............\glue 0.0 plus 1.0fil minus 1.0fil
...........\hbox(0.0+0.0)x0.0

관련 정보