Estoy intentando recrear la siguiente tabla:
Pero tengo problemas con las dos primeras columnas. No quiero que las líneas verticales lleguen hasta arriba.
¿Cómo puedo limitar la extensión de las líneas verticales?
Aquí está el código que estoy usando.
\begin{table}[H]
\def\arraystretch{1.3}
\caption{Caption}
\centering
\resizebox{0.5\textwidth}{!}{
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\cline{3-8}
& & \multicolumn{6}{|c|}{Datos principales}\\
\cline{3-8}
& & \multicolumn{3}{|c|}{Datos 1} & \multicolumn{3}{|c|}{Datos 2}\\
\hline
\multirow{3}{*}{Primer grupo} & Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
\cline{2-8}
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6\\
\cline{2-8}
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\hline
\multirow{3}{*}{Segundo grupo} & Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
\cline{2-8}
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6\\
\cline{2-8}
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\hline
\end{tabular}
}
\label{tab:my_label}
\end{table}
Respuesta1
Le sugiero que utilice un par de \multicolumn{2}{l|}{}
directivas para solucionar el problema de formato inmediato; consulte la primera tabla a continuación.
Además, me gustaría sugerirle que le dé a la mesa un aspecto más compacto y al mismo tiempo más abierto, deshaciéndose de todas las reglas verticales (créanme, no las pasarán por alto) y usando menos, pero bueno. reglas horizontales espaciadas. También es una buena idea colocar información repetida en el encabezado de la tabla; consulte la segunda tabla a continuación. Tenga en cuenta que debido a que, para empezar, no hay líneas verticales en este enfoque, tampoco es necesario aplicar la \multicolumn{2}{l|}{}
chapuza.
Una observación final: no veo ninguna razón para atacar la mesa que tenemos entre manos con el \resizebox
mazo.
\documentclass{article}
\usepackage[spanish,es-tabla]{babel}
\usepackage{array,multirow}
\usepackage[skip=0.333\baselineskip]{caption} % optional
\usepackage{booktabs} % for well-spaced horizontal rules
\begin{document}
\begin{table}[ht]
\centering
%\def\arraystretch{1.3}
\setlength\extrarowheight{3pt}
\caption{Caption1}
\label{tab:my_label1}
\begin{tabular}{ | *{2}{l|} *{6}{c|} }
\cline{3-8}
\multicolumn{2}{c|}{} % empty double-wide cell, with "|" on the right
& \multicolumn{6}{c|}{Datos principales}\\
\cline{3-8}
\multicolumn{2}{c|}{} % empty double-wide cell, with "|" on the right
& \multicolumn{3}{c|}{Datos 1}
& \multicolumn{3}{c|}{Datos 2}\\
\hline
\multirow{3}{*}{Primer grupo}
& Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
\cline{2-8}
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\cline{2-8}
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\hline
\multirow{3}{*}{Segundo grupo}
& Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
\cline{2-8}
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\cline{2-8}
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\hline
\end{tabular}
\bigskip\bigskip
\setlength\extrarowheight{0pt} % not needed for 2nd table
\caption{Caption2}
\label{tab:my_label2}
\begin{tabular}{@{} *{2}{l} *{6}{c} @{}}
\toprule
Grupo & Prueba & \multicolumn{6}{c@{}}{Datos principales}\\
\cmidrule(l){3-8}
& & \multicolumn{3}{c}{Datos 1} & \multicolumn{3}{c@{}}{Datos 2} \\
\midrule
Primer
& Primera & 1 & 2 & 3 & 1 & 2 & 3 \\
& Segunda & 4 & 5 & 6 & 4 & 5 & 6 \\
& Tercera & 4 & 5 & 6 & 4 & 5 & 6 \\
\addlinespace
Segundo
& Primera & 1 & 2 & 3 & 1 & 2 & 3 \\
& Segunda & 4 & 5 & 6 & 4 & 5 & 6 \\
& Tercera & 4 & 5 & 6 & 4 & 5 & 6 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Respuesta2
El tabular
entorno en LaTeX se basa en la \halign
primitiva TeX. Cada elemento de la tabla se crea a partir del material izquierdo de la declaración de la tabla (hay una regla vertical en la primera columna porque usted declaró |c
).
Luego se imprimen los datos del elemento de la tabla y luego el material correcto de la declaración de la tabla (hay una regla vertical en cada columna, porque usted declaró c|
). La primitiva TeX puede omitir el material izquierda+derecha \omit
. Si escribe \omit
en la primera columna, se omite la regla vertical izquierda y derecha, y si escribe \omit
en otra columna, se omite la regla vertical derecha.
La parte de su código sin reglas verticales no deseadas se puede administrar mediante la \omit
primitiva TeX, así:
\omit & & \multicolumn{6}{|c|}{Datos principales}\\
\cline{3-8}
\omit & & \multicolumn{3}{|c|}{Datos 1} & \multicolumn{3}{|c|}{Datos 2}\\
\hline
Respuesta3
El paquete nicematrix
tiene la función incorporada corners
que se utilizará para hvlines
crear este efecto. El paquete también tiene funciones para hacer filas o columnas en negrita. Tenga en cuenta quedebes compilar el documento dos vecesal usarlo nicematrix
cada vez que realiza un cambio que afecta el tamaño de las celdas.
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{table}
\centering
\begin{NiceTabular}{>{\bfseries}cccccccc}[corners, hvlines]
\RowStyle[nb-rows=2]{\bfseries}
& & \Block{1-6}{Datos principales}\\
& & \Block{1-3}{Datos 1} &&& \Block{1-3}{Datos 2}\\
\Block{3-1}{Primer\\grupo} & Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6\\
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6 \\
\Block{3-1}{Segundo\\grupo} & Primera prueba & 1 & 2 & 3 & 1 & 2 & 3 \\
& Segunda prueba & 4 & 5 & 6 & 4 & 5 & 6\\
& Tercera prueba & 4 & 5 & 6 & 4 & 5 & 6
\end{NiceTabular}
\caption{Caption.}
\label{table:1}
\end{table}
\end{document}