Lösen von „überfüllter \vbox“ in einer Tabelle mit mehreren Zeilen

Lösen von „überfüllter \vbox“ in einer Tabelle mit mehreren Zeilen

Diese Tabelle hat mir nur Probleme bereitet. Im Moment sieht sie ok aus:

Bildbeschreibung hier eingeben

Aber es ist klar, dass der vertikale Abstand nicht so gut ist. „Region“ ist zu hoch (was ich mit dem [fixup]Parameter multirow: zu beheben versuchte [-0.5em]). \parboxNormalerweise funktionierten Zeilenumbrüche und die Zentrierung der mittleren Spalten einwandfrei. Um meiner Seitenbreite zu entsprechen, müssen diese Spalten auf drei Zeilen umbrochen werden.

Beim Ausführen erhalte ich zwei Fehler für diese beiden Spalten:

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

Wie gesagt, es sieht OK aus, aber ich würde gerne verstehen, was los ist (selbst wenn ich einfach den Tabelleninhalt ändern könnte, um das Problem zu beheben, würde mir das nicht sagen,Warumes war ein Problem). Vielleicht bin ich ein Masochist, aber nachdem ich ein paar Stunden an meiner Abschlussarbeit gebastelt habe, mache ich gern eine Pause, um \LaTeXFehler/Warnungen zu beheben.

Ich habe hier mehrere Fragen/Antworten gelesen und versucht, einzufügenunsichtbare Regeln (aus einem Kommentar), \smash(wodurch der Zeilenumbruch unterbrochen wurde), \vphantom(wodurch Text verschwand), Hinzufügen [1em]an verschiedenen Stellen in unterschiedlicher Größe und mehrere andere Methoden.


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}

Beachten Sie, dass der Screenshot und MWE die articleKlasse verwenden, für mein Dokument verwende ich jedoch eine leicht geänderte Version der benutzerdefinierten Klasse MastersDoctoralThesis(die Fehler sind jedoch in beiden Fällen identisch):

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

Antwort1

Das erste Argument von \multirowist nicht wirklich die Anzahl der rowsdurch eine einzelne Zelle ersetzten Zellen, sondern die Anzahl der lines– oder deren Äquivalent – ​​die ersetzt werden. Die Annahme eines Wertes von 4erledigt die Aufgabe.

makecellIch habe die Gelegenheit genutzt, Ihren Code mithilfe des Pakets und seines Befehls zu vereinfachen \multirowthead, der Zeilenumbrüche in Zellen und eine gemeinsame Formatierung ermöglicht. Außerdem schlage ich vor, den Spaltenkopf ganz links linksbündig auszurichten, aber das lässt sich leicht ändern (die Standardeinstellung für alle makecellBefehle ist sowohl vertikal als auch horizontal zentriert).

Letzter Punkt: palatinoist veraltet und bietet keine Unterstützung für Mathematik. Ich habe dieses Paket durch ersetzt newpx, basierend auf dem Palatino-Klon 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} 

Bildbeschreibung hier eingeben

verwandte Informationen