Estou tentando recriar a seguinte tabela:
Mas tenho problemas com as duas primeiras colunas. Não quero que as linhas verticais subam totalmente.
Como posso limitar a extensão das linhas verticais?
Aqui está o código que estou 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}
Responder1
Sugiro que você use algumas \multicolumn{2}{l|}{}
diretivas para corrigir o problema imediato de formatação; veja a primeira tabela abaixo.
Gostaria ainda de sugerir que você dê a uma mesa uma aparência simultaneamente mais compacta e ao mesmo tempo mais aberta, livrando-se de todas as regras verticais - acredite, elas não serão esquecidas - e usando menos, mas bem- regras espaçadas e horizontais. Colocar informações repetidas no cabeçalho da tabela também é uma boa ideia; veja a segunda tabela abaixo. Observe que, como não há linhas verticais nesta abordagem, também não há necessidade de aplicar o \multicolumn{2}{l|}{}
kludge.
Uma observação final: não vejo razão alguma para atacar a mesa em questão com a \resizebox
marreta.
\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}
Responder2
O tabular
ambiente em LaTeX é baseado na \halign
primitiva TeX. Cada item da tabela é criado a partir de um material esquerdo da declaração da tabela (há regra vertical na primeira coluna porque você declarou |c
).
Em seguida, são impressos os dados do item da tabela e depois o material correto da declaração da tabela (há uma regra vertical em cada coluna, porque você declarou c|
). O material esquerda+direita pode ser omitido pela \omit
primitiva TeX. Se você escrever \omit
na primeira coluna, a regra vertical esquerda e direita será omitida, e se você usar \omit
em outra coluna, a regra vertical direita será omitida.
A parte do seu código sem regras verticais indesejadas pode ser gerenciada pela \omit
primitiva TeX, assim:
\omit & & \multicolumn{6}{|c|}{Datos principales}\\
\cline{3-8}
\omit & & \multicolumn{3}{|c|}{Datos 1} & \multicolumn{3}{|c|}{Datos 2}\\
\hline
Responder3
O pacote nicematrix
possui o recurso integrado corners
para ser usado hvlines
para criar esse efeito. O pacote também possui recursos para deixar linhas ou colunas em negrito. Observe quevocê deve compilar o documento duas vezesao usar nicematrix
cada vez que você fizer uma alteração que afete o tamanho das células.
\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}