Multicoluna na tabela não centralizada

Multicoluna na tabela não centralizada

Tenho alguns problemas com o uso do \multicolumn. Como pode ser visto na imagem abaixo, as palavras ‘Clássico’ e ‘Quadrado’ estão corretamente alinhadas no centro da coluna. A palavra 'Exonencial', entretanto, não está centralizada corretamente.

insira a descrição da imagem aqui

O código é:

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\hline\hline
\\\\[-4.3\medskipamount]
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\hline
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
[1ex] \hline
\end{tabular}
\end{table}

Eu preferiria continuar usando o pacote tabular na solução. Agradeço antecipadamente!

Responder1

A razão é que esta palavra é um pouco longa. Claro, você pode aumentar o valor de \tabcolsep. Outra solução usa um \makebox[0pt], que permite que a palavra se sobreponha ligeiramente no espaço entre colunas, simetricamente.

Fora isso, recomendo usar as réguas do booktabs, que têm espessura variável, e adicionar algum preenchimento vertical ao redor das réguas. Isso evitará que você ajuste manualmente o espaçamento:

\documentclass{article}
\usepackage{booktabs} 

\begin{document}

\begin{table}[]
\setlength{\tabcolsep}{12pt}
\centering
\begin{tabular}{l c c c c c c}
\toprule\midrule
 & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{\makebox[0pt]{Exponential}} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ [0.5ex]
\midrule
\\\\[-3.9\medskipamount]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

insira a descrição da imagem aqui

Responder2

Eu usaria So tipo de coluna do siunitxpacote, determinaria Sa largura da coluna e adicionaria \cmidrulecélulas de várias colunas abaixo:

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
    \begin{table}
\centering
\begin{tabular}{l *{6}{S[table-format=2,
                         table-column-width=2em]}
                }
    \toprule
            & \multicolumn{2}{c}{Classic} 
                            & \multicolumn{2}{c}{Squared} 
                                            & \multicolumn{2}{c}{Exponential} \\
    \cmidrule{2-3}\cmidrule(lr){4-5}\cmidrule{6-7}
\textit{a}  & 70    & 30    & 70    & 30    & 70    & 30 \\
    \midrule
S100        & 91    & 31    & 71    & 01    & 11    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\
S100        & 91    & 31    & 71    & 01    & 21    & 41 \\ 
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

insira a descrição da imagem aqui

Responder3

O problema de usar \makebox[0pt]{}é que, como disse Bernard, o cabeçalho longo irá se sobrepor ao espaçamento entre colunas, o que pode parecer bastante feio. Para evitar isso, a soma das larguras das duas colunas numéricas deve ser pelo menos igual à largura do cabeçalho longo. Isso pode ser calculado com exatidão e definido em um novo tipo de coluna Ccomo segue.

\documentclass[12pt,a4paper]{article}
\usepackage{booktabs, array}    
\begin{document}

\begin{table}
\setlength{\tabcolsep}{12pt}
\newlength\wexp
\settowidth{\wexp}{Exponential}
\newcolumntype{C}{>{\centering\arraybackslash}p{\dimexpr.5\wexp-\tabcolsep}}

\centering
\begin{tabular}{l c c c c C C}
\toprule
           & \multicolumn{2}{c}{Classic} & \multicolumn{2}{c}{Squared} & \multicolumn{2}{c}{Exponential} \\
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ \midrule
S100       & 91 & 31 & 71 & 01 & 11 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\
S100       & 91 & 31 & 71 & 01 & 21 & 41 \\ \bottomrule
\end{tabular}
\end{table}

\end{document}

insira a descrição da imagem aqui

Responder4

Eu teria usado:

  1. A nova w{<align>}{<wd>}coluna para corrigir a largura de todas as colunas
  2. \setlength{\tabcolsep}{0.5em}(dá 1emespaço entre colunas)
  3. Aparadocmidrule
  4. Sem rolamentos laterais ( @{})
  5. Fontes menores de um grau nos títulos
  6. booktab-regras eaddlinespace[<wd>]

insira a descrição da imagem aqui

E o MWE:

\documentclass{article}
\usepackage{booktabs, array, caption} 

\begin{document}

\begin{table}[ht]
\caption{A table with figures\label{tab:atable}}
\setlength{\tabcolsep}{0.5em}
\centering
\begin{tabular}{@{}w{l}{4em}*{6}{w{c}{2em}}@{}}
\toprule
 & \multicolumn{2}{c}{\small Classic} & \multicolumn{2}{c}{\small Squared} & \multicolumn{2}{c@{}}{\makebox[0pt]{\small Exponential}} \\\cmidrule(l{0.75em}r{0.75em}){2-3}\cmidrule(l{0.75em}r{0.75em}){4-5}\cmidrule(l{0.65em}){6-7}
\textit{a} & 70 & 30 & 70 & 30 & 70 & 30 \\ 
\midrule\addlinespace[1ex]
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
S100 & 91 & 31 & 71 & 01 & 21 & 41 \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

informação relacionada