다중 행이 있는 테이블의 "overfull \vbox" 해결

다중 행이 있는 테이블의 "overfull \vbox" 해결

이 테이블은 나에게 문제만 일으켰습니다. 지금은 괜찮아 보입니다.

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

그러나 수직 간격이 그다지 좋지 않다는 것은 분명합니다. "Region"이 너무 높습니다( [fixup]multirow: 매개변수를 사용하여 해결하려고 했습니다 [-0.5em]). 나는 \parbox줄 바꿈과 중간 열의 중앙 정렬을 적절하게 사용했습니다. 내 페이지 너비에 맞추려면 이 열을 세 줄로 줄바꿈해야 합니다.

실행하면 다음 두 열에 대해 두 가지 오류가 발생합니다.

Overfull \vbox (5.89192pt too high) detected 
Overfull \vbox (6.57993pt too high) detected

내가 말했듯이 괜찮아 보이지만 무슨 일이 일어나고 있는지 이해하고 싶습니다. (문제를 해결하기 위해 테이블 ​​내용을 변경할 수 있다고 해도 알 수는 없습니다.)문제였습니다). 아마도 나는 처벌을 탐하는 사람일지도 모르지만, 몇 시간 동안 논문을 작성하고 나면 \LaTeX오류/경고를 디버깅하며 휴식을 취하는 것을 즐깁니다.

여기에 몇 가지 질문/답변을 읽고 삽입해 보았습니다.보이지 않는 규칙(댓글에서), \smash(줄바꿈 끊기), \vphantom(텍스트 사라지게 만들기), [1em]다양한 크기의 다양한 위치에 추가하기 및 기타 여러 방법이 있습니다.


MWE:

\documentclass{article} % The class file specifying the document structure

\usepackage{palatino} % Use the Palatino font by default
\usepackage{siunitx}
\usepackage{geometry}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{array}
\usepackage[referable]{threeparttablex}
\usepackage{multirow}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}

\geometry{
    paper=letterpaper, % Change to letterpaper for US letter
    inner=2.5cm, % Inner margin
    outer=3.8cm, % Outer margin
    bindingoffset=.5cm, % Binding offset
    top=1.5cm, % Top margin
    bottom=1.5cm, % Bottom margin
}

\begin{document}

\begin{table}[!htb]
    \sisetup{input-decimal-markers = .,group-separator={,}, group-four-digits = true}
    \captionsetup{skip=0.5\baselineskip,size=footnotesize}
    \footnotesize
    \centering
    \begin{threeparttable}
        \begin{tabular}{L{2.8cm}*4{S[table-format=2.1]}}
            \toprule
            \multicolumn{1}{c}{\multirow{2}{*}[-0.5em]{\parbox[c]{2.7cm}{\centering \textbf{Region}}}} & 
            \multicolumn{1}{c}{\multirow{2}{*}{\parbox[c]{1.8cm}{\centering \textbf{Electric outages per month}\tnote{a}}}} &
            \multicolumn{1}{c}{\multirow{2}{*}{\parbox[c]{2.0cm}{\centering \textbf{Typical outage duration (hours)}\tnote{a}}}} & 
            \multicolumn{2}{c}{\centering\textbf{Population with electricity access}\tnote{b}}         \\  \cmidrule{4-5}
            & ~ & ~ & \multicolumn{1}{c}{\parbox[c]{1.7cm}{\centering \textbf{~~Total [\si{\percent}]}}} & \multicolumn{1}{c}{\parbox[c]{1.7cm}{\centering\textbf{~~Rural [\si{\percent}]}}} \\ [0.2cm]
            \midrule
            South Asia & 25.4 & 3.1 & 78. & 69.3 \\%
            Sub-Saharan Africa & 9.0 & 4.2 & 35.3 & 15.3 \\%
            OECD countries & 0.4 & 0.4 & 99.9 & 99.7 \\%
            \bottomrule
        \end{tabular} 
        \begin{tablenotes}
        \item[a] For commercial users only
        \item[b] For residential users only
        \end{tablenotes}
    \end{threeparttable}
    \caption[Grid statistics for selected regions]{Grid statistics for selected regions.}
    \label{tab:grid}
\end{table}

\end{document}

스크린샷과 MWE에서는 article클래스를 사용하지만 내 문서에서는 사용자 정의 클래스의 약간 수정된 버전을 사용하고 있습니다 MastersDoctoralThesis(그러나 오류는 어느 쪽이든 동일합니다).

\documentclass[11pt,oneside,english,singlespacing,
               headsepline,chapterinoneline]
              {MastersDoctoralThesis}

답변1

의 첫 번째 인수는 \multirow실제로 단일 셀로 대체된 개수가 아니라 대체되는 rows개수 (또는 그에 상응하는 개수)입니다. lines의 가치를 취하는 것이 4작업을 수행합니다.

makecell패키지와 \multirowthead셀의 줄 바꿈 및 일반적인 서식을 허용하는 해당 명령을 사용하여 코드를 단순화할 기회를 얻었습니다 . 또한 가장 왼쪽 열 머리글을 왼쪽 정렬하도록 제안하지만 이를 변경하는 것은 쉽습니다(모든 makecell명령의 기본값은 수직 및 수평 모두 중앙에 정렬됩니다).

마지막 요점: palatino더 이상 사용되지 않으며 수학을 지원하지 않습니다. 저는 이 패키지를 newpxpalatino 클론을 기반으로 하는 로 교체했습니다 TeX Gyre Pagella.

\documentclass{article} % The class file specifying the document structure
\usepackage{newpxtext, newpxmath} %
\usepackage{siunitx}
\usepackage{geometry}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{array}
\usepackage[referable]{threeparttablex}
\usepackage{multirow, makecell}
\renewcommand\theadfont{\bfseries}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}

\geometry{
    paper=letterpaper, % Change to letterpaper for US letter
    inner=2.5cm, % Inner margin
    outer=3.8cm, % Outer margin
    bindingoffset=.5cm, % Binding offset
    top=1.5cm, % Top margin
    bottom=1.5cm, % Bottom margin
}

\begin{document}

\begin{table}[!htb]
    \sisetup{input-decimal-markers = .,group-separator={,}, group-four-digits = true}
    \captionsetup{skip=0.5\baselineskip,size=footnotesize}
    \footnotesize
    \centering
    \begin{threeparttable}
        \begin{tabular}{L{2.8cm}*4{S[table-format=2.1]}}
            \toprule
            \renewcommand\theadalign{lc}\multirowthead{3}{Region}&
           {\multirowthead{4}[1.3ex]{Electric\\ outages\\ per month\tnote{a}}} &
            {\multirowthead{4}[1.3ex]{Typical outage\\ duration\\ (hours)\tnote{a}}} &
            \multicolumn{2}{c}{\centering\textbf{Population with electricity access}\tnote{b}} \\%
            \addlinespace[0.5ex] \cmidrule(lr){4-5}
            & ~ & ~ & {\quad\textbf{Total [\si{\percent}]}\quad} & {\textbf{Rural [\si{\percent}]}}\\%
            \addlinespace[0.8ex]
            \midrule
            South Asia & 25.4 & 3.1 & 78. & 69.3 \\%
            Sub-Saharan Africa & 9.0 & 4.2 & 35.3 & 15.3 \\%
            OECD countries & 0.4 & 0.4 & 99.9 & 99.7 \\%
            \bottomrule
        \end{tabular}
        \begin{tablenotes}
        \item[a] For commercial users only
        \item[b] For residential users only
        \end{tablenotes}
    \end{threeparttable}
    \caption[Grid statistics for selected regions]{Grid statistics for selected regions.}
    \label{tab:grid}
\end{table}

\end{document} 

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

관련 정보