MWE

MWE

Tengo una tabla que usa reglas de booktabs. Sin embargo, tengo limitaciones de espacio vertical y no quiero usarlo subcaptioncon sus archivos subtable. También tengo limitaciones de espacio horizontal, por lo que la columna del grupo debe ser mínima.

Como primer enfoque, uso bigdelimcorchetes y para agrupar.

MWE

Una posible MWE se parece a la siguiente:

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}

\begin{document}
\begin{table}[htbp]
\begin{tabular}{llcc}
\toprule
& header1 & header 2 & header 3 \\
\cmidrule{2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

agrupar filas de una tabla

Sin embargo, no quiero que la columna "grupo" quede capturada por las líneas horizontales, no creo que sea estético. Ya utilicé el cmidrulecomando from booktabspara reducir su longitud. Sin embargo, (comprensiblemente) no existe tal cosa para \topruley\bottomrule

Pregunta

  1. ¿Es una solución tener un booktabssin tenerlo \topruley \bottomrulemostrarlo en la columna "grupo"?(Solo puedo pensar en escribir mi propio comando para, por ejemplo \ctoprule, que está usando \cmidrule, pero se aplican todas las reglas de \toprule, por ejemplo, grosor y espacios).

  2. ¿Existe una solución mejor para lograr esa agrupación apegándose al booktabspaquete?

Respuesta1

¿Por qué no utilizar uno más grueso cmidrule? Por lo que puedo ver, el espaciado es aproximadamente el mismo y se puede ajustar. También sugiero quitar el cojinete del lado derecho y recortar el lado izquierdo del cmidrules. También puedes considerar agregar un pequeño espacio entre los grupos, 0.75exfue suficiente.

Sin embargo, según elpestañasmanual sección 5,pestañasJuntos conmesa largaimplementa recorte de todo tipo de reglas. El mantenedor sugiere usarmesa largaPara tabulares si necesita recortables topruley bottomrule. He implementado esto en los ejemplos siguientes. El factor de recorte es un poco de conjetura, a menos que establezca un ancho fijo para la primera columna o tenga la habilidad de implementar código para leer el archivo .aux o medir la primera columna. En la última versión,formaciónObtuve nuevas columnas Wy w, donde puede especificar la alineación y el ancho. He utilizado una wcolumna de 4 mm. El factor de recorte debería ser entonces 4mm+2\tabcolseps+0.75ex(factor de recorte estándar, consulte el manual p. 4):

mesa larga

He mejorado el código desde ayer:

  1. Cambié el segundo parámetro de \ldelimto {*}para deshacerme de dos Overfull hbox with 10.[...]ptmensajes de error. Todavía queda un Underfull vbox...mensaje, pero lo dejo por ahora.
  2. He cambiado el \tabcolseppunto a 0.5emen lugar de un número fijo.
  3. Aumenté la columna de la izquierda 5 mmy, en consecuencia, el factor de corrección para topruley bottomrule. Esto da un poco más de aire en el tabular.
  4. El factor de recorte correcto paracmidrule etc.. debería serlo \tabcolsep, no 0.75ex. Si lo prefieres, puedes restar 1 punto para que la línea no quede completamente alineada con el texto.

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating, longtable, array}
\setlength{\tabcolsep}{0.5em}   % As recommended by James Felici ‘The Complete Manual of Typography’
\begin{document}

%\begin{table}[htbp]
\begin{longtable}[l]{w{l}{5mm}lcc@{}}
\toprule(l{\dimexpr(5mm+3\tabcolsep)})
& header1 & header 2 & header 3
\endfirsthead
\cmidrule(l{\tabcolsep}){2-4}
\ldelim\{{4}{*}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\\addlinespace[0.75ex]
\ldelim\{{6}{*}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\bottomrule(l{\dimexpr(5mm+3\tabcolsep)})
\end{longtable}
%\end{table}

\end{document}

cmidrule tabular y modificado

ingrese la descripción de la imagen aquí

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}

\begin{document}
\begin{table}[htbp]
\begin{tabular}{llcc@{}}
\cmidrule[\heavyrulewidth](l){2-4}
& header1 & header 2 & header 3 \\
\cmidrule(l){2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\\addlinespace[0.75ex]
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\cmidrule[\heavyrulewidth](l){2-4}
\end{tabular}
\end{table}

\end{document}

Respuesta2

Aquí hay dos soluciones: una basada en \cmidrulemensajes personalizados que imitan \topruley \bottomruley otra basada en blkarray, con un sistema, impuestos más simple y solo 3 columnas. Desafortunadamente, este último paquete no es compatible con booktabs, así que tuve que jugar \BAhhlinepara obtener reglas más gruesas y el espaciado correcto en la parte superior e inferior.

\documentclass{article}

\usepackage{booktabs, bigdelim, rotating}%{
\newcommand{\mytoprule}{\noalign{\vskip -\aboverulesep}\cmidrule[\heavyrulewidth]{2-4}}
\newcommand{\mybottomrule}{\cmidrule[\heavyrulewidth]{2-4}\noalign{\vskip -\belowrulesep}}
\usepackage{blkarray, hhline}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabular}{llcc}
\mytoprule
& header1 & header 2 & header 3 \\
\cmidrule{2-4}
\ldelim\{{4}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group1}}] & 1 & a & g \\
& 2 & b & h \\
& 3 & c & i \\
& 3 & c & i \\
\addlinespace[0.5ex]
\ldelim\{{6}{4mm}[\parbox{4mm}{\rotatebox[origin=c]{90}{group2}}] & 4 & d & j \\
& 5 & e & k \\
& 6 & f & l \\
& 7 & g & m \\
& 8 & h & n \\
& 9 & i & o \\
\mybottomrule
\end{tabular}
\end{table}

\begin{table}[htbp]
\centering
\doublerulesep =0.05pt
\begin{blockarray}{lcc}
\hhline{===}
\BAnoalign{\vskip -5.3ex}
 header1 & header 2 & header 3 \\
 \BAhline
\begin{block}{\Left{\rotatebox[origin=c]{90}{group1}\,}{\{\,}lcc}
 1 & a & g \\
 2 & b & h \\
 3 & c & i \\
 3 & c & i \\
\end{block}
\begin{block}{\Left{\rotatebox[origin=c]{90}{group2}\,}{\{\,}lcc}%
 4 & d & j \\
 5 & e & k \\
 6 & f & l \\
 7 & g & m \\
 8 & h & n \\
 9 & i & o \\%\
\end{block}
\BAnoalign{\vskip -5.3ex}
\hhline{===}
\end{blockarray}
\end{table}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada