Как рисовать пустые строки в таблицах?

Как рисовать пустые строки в таблицах?

Я пытаюсь воссоздать следующую таблицу:

Введите описание изображения здесь

Но у меня проблемы с первыми двумя столбцами. Я не хочу, чтобы вертикальные линии шли до самого верха.

Введите описание изображения здесь

Как ограничить протяженность вертикальных линий?

Вот код, который я использую.

\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}

Связанный контент