일부 테이블의 수직 공간이 더 넓습니다(\hbox가 너무 많이 차는 테이블이 있나요?)

일부 테이블의 수직 공간이 더 넓습니다(\hbox가 너무 많이 차는 테이블이 있나요?)

다음 코드를 사용하면:

\documentclass[a4paper]{report}
\usepackage{lipsum}

\begin{document}
a
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
1 & $y_{n+1}=y_n+hf_n$, Eulero esplicito & $y_{n+1}=y_n+\frac{h}{2}(f_{n+1}+f_n)$ Greg-Nickolson \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
3 & $y_{n+1}=y_n+\frac{h}{12}(23f_n-16f_{n-1}+5f_{n-2})$ & \\\hline
\end{tabular}
\end{center}
\lipsum[1]
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
3 & $y_{n+1}=y_n+\frac{h}{12}(23f_n-16f_{n-1}+5f_{n-2})$ & \\\hline
\end{tabular}
\end{center}
b
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
\end{tabular}
\end{center}
c
\end{document}

나는 얻다:

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

예제를 보면 나를 괴롭히는 더 큰 수직 공간이 \hbox더 큰 수직 공간(테이블 위의 텍스트와 테이블 사이)이 있는 테이블에 의해 생성된 과잉으로 인해 의심됩니다. 왜 그런 일이 발생합니까? 내 의심이 맞는 걸까?

답변1

테이블이 너무 꽉 차서 공간이 생기는 것은 분명하고, 그 이유를 이해하는 것이 도움이 될 것입니다. 과도한 수직 공간으로 보이는 것은 빈 선입니다.

\\내부 작업을 수행하면 center단락을 닫는 것이므로 효과는 다음과 같이 재현할 수 있습니다.

\documentclass{article}
\begin{document}
a
\begin{center}\tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth % an overlong indivisible object
\end{center}
b
\end{document}

그러면 \tracingparagraph=1TeX가 파일에 계산 내용을 보고하게 됩니다 .log.

@firstpass
[]
@\penalty via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
@secondpass
[]
@\penalty via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
|
@\par via @@1 b=* p=-10000 d=*
@@2: line 2.3- t=100 -> @@1

로 표시된 상자로만 구성된 단락에 대한 첫 번째 패스는 |확실히 성공하지 못합니다. 비트 []는 들여쓰기 상자(너비 0pt)를 나타냅니다.

두 번째 패스에서는 단락 시작 부분에 실행 가능한 중단( @@0, 새 단락이 새 줄에서 시작하기 때문에 항상 존재함)과 페널티( 에 의해 \item암시적으로 삽입된 명령에 의해 삽입됨 \begin{center})를 보여줍니다. 이 페널티는 줄바꿈 지점을 제공하며, 넘지 않은 줄을 조판할 수 있도록 허용하기 때문에 사용됩니다. 그러나 지나치게 긴 규칙으로 인해 TeX이 문제를 일으키게 됩니다.

매우 다른 상황은 just가 \centering사용되는 경우입니다.

\documentclass{article}
\begin{document}
a
\begingroup\centering \tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth
\par\endgroup
b
\end{document}

보고하는 것

@firstpass
[]\OT1/cmr/m/n/10 a 
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
@secondpass
[]\OT1/cmr/m/n/10 a 
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
|
@\par via @@1 b=* p=-10000 d=*
@@2: line 2.3- t=100 -> @@1

여기서는 단락에 페널티가 추가되지 않으므로 실행 가능한 유일한 중단점은 끝에 있습니다. "수직 공간"(실제로는 빈 줄)이 추가되지 않습니다.

그러나 처음부터 라인을 너무 많이 작성해서는 안 되므로 논의는 단지 학술적인 것입니다.

답변2

나는 문제가 실제로 오프닝을 center기반으로 하는 환경 에서 비롯된 것이라고 추측합니다 . 항목의 첫 번째 "문자"가 너무 넓어서 줄에 맞지 않으면 TeX는 줄 바꿈을 삽입합니다. 제안된 솔루션:trivlist\item

\newenvironment{senter}{\par\centering\medskip}{\par\medskip}

senter그런 다음 대신 사용하십시오 center. \medskip원하는 경우 s를 더 크거나 작은 것으로 변경합니다 .

관련 정보