我正在尝试重新创建下表:
但我对前两列有疑问。我不希望垂直线一直向上。
如何限制垂直线的延伸?
这是我正在使用的代码。
\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}
答案1
我建议您使用几个\multicolumn{2}{l|}{}
指令来解决即时的格式问题;请参见下面的第一个表格。
我还想建议你通过删除所有垂直线(相信我,它们不会被忽略)并使用更少但间隔适当的水平线,让表格看起来更紧凑但更开放。将重复的信息放在表格标题中也是一个好主意;请参阅下面的第二个表格。请注意,由于这种方法中没有垂直线,因此也不需要应用临时\multicolumn{2}{l|}{}
解决方案。
最后说一句:我看不出有任何理由用大锤砸击手边的桌子\resizebox
。
\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}
答案2
LaTeX 中的环境tabular
基于\halign
TeX 基元。每个表格项都是从表格声明中的左侧材料创建的(第一列中有垂直线,因为您声明了|c
)。
然后打印表格项数据,然后打印表格声明中的右侧材料(每列都有垂直线,因为您声明了c|
)。TeX 基元可以省略左+右材料\omit
。如果您\omit
在第一列中写入,则省略左右垂直线,如果您\omit
在另一列中使用,则省略右侧垂直线。
代码中没有不需要的垂直规则的部分可以通过\omit
TeX 原语来管理,如下所示:
\omit & & \multicolumn{6}{|c|}{Datos principales}\\
\cline{3-8}
\omit & & \multicolumn{3}{|c|}{Datos 1} & \multicolumn{3}{|c|}{Datos 2}\\
\hline
答案3
该包nicematrix
具有内置功能,corners
可用于hvlines
创建此效果。该包还具有使行或列变为粗体的功能。请注意你必须编译该文档两次每次使用时nicematrix
所做的更改都会影响单元格的大小。
\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}