Resolvendo "overfull\vbox" em tabela com multirow

Resolvendo "overfull\vbox" em tabela com multirow

Esta tabela tem me causado apenas problemas. No momento, parece OK:

insira a descrição da imagem aqui

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 \parboxquebrar 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 \LaTeXerros/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 articleclasse, 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 \multirownão é realmente o número de células rowssubstituídas por uma única célula, mas o número de lines– ou equivalente – que são substituídas. Tomar um valor de 4faz o trabalho.

Aproveitei para simplificar seu código usando o makecellpacote, e seu \multirowtheadcomando, 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 makecellos comandos é centralizado tanto vertical quanto horizontalmente).

Último ponto: palatinoestá 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} 

insira a descrição da imagem aqui

informação relacionada