Я пытаюсь воссоздать следующую таблицу:
Но у меня проблемы с первыми двумя столбцами. Я не хочу, чтобы вертикальные линии шли до самого верха.
Как ограничить протяженность вертикальных линий?
Вот код, который я использую.
\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
Окружение tabular
в LaTeX основано на \halign
примитиве TeX. Каждый элемент таблицы создается из левого материала из объявления таблицы (в первом столбце есть вертикальная линия, потому что вы объявили |c
).
Затем печатаются данные элемента таблицы, а затем правый материал из объявления таблицы (в каждом столбце есть вертикальная линия, потому что вы объявили c|
). Материал left+right может быть опущен \omit
примитивом TeX. Если вы пишете \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}