Esta tabela tem me causado apenas problemas. No momento, parece OK:
Mas está claro que o espaçamento vertical não é tão bom. "Região" é muito alta (o que tentei resolver com o [fixup]
parâmetro multirow: [-0.5em]
). Eu costumava \parbox
quebrar as linhas e centralizar as colunas do meio de maneira adequada. Para caber na largura da minha página, essas colunas precisam ser quebradas em três linhas.
Quando executo, recebo dois erros para estas duas colunas:
Overfull \vbox (5.89192pt too high) detected
Overfull \vbox (6.57993pt too high) detected
Como eu disse, parece bom, mas gostaria de entender o que está acontecendo (mesmo que eu pudesse alterar o conteúdo da tabela para corrigir o problema, isso não me dirápor quefoi um problema). Talvez eu seja um glutão de punição, mas depois de algumas horas trabalhando em minha tese, gosto de fazer uma pausa para depurar \LaTeX
erros/avisos.
Li várias perguntas/respostas aqui e tentei inserirregras invisíveis (de um comentário), \smash
(que quebrou a quebra de linha), \vphantom
(que fez o texto desaparecer), adicionando [1em]
em vários locais de tamanhos variados e vários outros métodos.
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}
Observe que a captura de tela e o MWE usam a article
classe, mas para o meu documento estou usando uma versão ligeiramente modificada da classe personalizada MastersDoctoralThesis
(mas os erros são idênticos de qualquer maneira):
\documentclass[11pt,oneside,english,singlespacing,
headsepline,chapterinoneline]
{MastersDoctoralThesis}
Responder1
O primeiro argumento de \multirow
não é realmente o número de células rows
substituídas por uma única célula, mas o número de lines
– ou equivalente – que são substituídas. Tomar um valor de 4
faz o trabalho.
Aproveitei para simplificar seu código usando o makecell
pacote, e seu \multirowthead
comando, que permite quebras de linha nas células, e uma formatação comum. Além disso, proponho ter o cabeçalho da coluna mais à esquerda alinhado à esquerda, mas é fácil mudar isso (o padrão para todos makecell
os comandos é centralizado tanto vertical quanto horizontalmente).
Último ponto: palatino
está obsoleto e não tem suporte para matemática. Substituí este pacote pelo newpx
, baseado no clone palatino 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}