
Tengo algunos problemas con el uso de \multicolumn
. Como se puede ver en la captura de pantalla siguiente, las palabras "Clásico" y "Cuadrado" están correctamente alineadas en el centro de la columna. Sin embargo, la palabra "exponencial" no está centrada correctamente.
El código es:
\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}
Preferiría seguir usando el paquete tabular en la solución. ¡Gracias de antemano!
Respuesta1
La razón es que esta palabra es demasiado larga. Por supuesto, puedes aumentar el valor de \tabcolsep
. Otra solución utiliza un \makebox[0pt]
, que permite que la palabra se superponga ligeramente en el espacio entre columnas, de forma simétrica.
Aparte de eso, recomiendo usar las reglas de booktabs
, que tienen un grosor variable, y agregar algo de relleno vertical alrededor de las reglas. Esto le evitará tener que ajustar manualmente el espaciado:
\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}
Respuesta2
Usaría S
el tipo de columna del siunitx
paquete, determinaría S
el ancho de la columna y agregaría \cmidrule
debajo las celdas de varias columnas:
\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}
Respuesta3
El problema con el uso \makebox[0pt]{}
es que, como dijo Bernard, el encabezado largo se superpondrá al espacio entre columnas, lo que puede parecer bastante feo. Para evitar esto, la suma de los anchos de las dos columnas numéricas debe ser al menos igual al ancho del encabezado largo. Esto se puede calcular y definir exactamente en un nuevo tipo de columna C
de la siguiente manera.
\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}
Respuesta4
Yo hubiera usado:
- La nueva
w{<align>}{<wd>}
columna para fijar el ancho de todas las columnas. \setlength{\tabcolsep}{0.5em}
(da1em
espacio entre columnas)- recortado
cmidrule
- Sin cojinetes laterales (
@{}
) - Fuentes un grado más pequeñas en los títulos.
booktab
-reglas yaddlinespace[<wd>]
Y el 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}