Diese Tabelle hat mir nur Probleme bereitet. Im Moment sieht sie ok aus:
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]
). \parbox
Normalerweise 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 \LaTeX
Fehler/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 article
Klasse 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 \multirow
ist nicht wirklich die Anzahl der rows
durch eine einzelne Zelle ersetzten Zellen, sondern die Anzahl der lines
– oder deren Äquivalent – die ersetzt werden. Die Annahme eines Wertes von 4
erledigt die Aufgabe.
makecell
Ich 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 makecell
Befehle ist sowohl vertikal als auch horizontal zentriert).
Letzter Punkt: palatino
ist 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}