다음 테이블을 다시 만들려고 합니다.
하지만 처음 두 열에 문제가 있습니다. 수직선이 끝까지 올라가는 것을 원하지 않습니다.
수직선 확장을 어떻게 제한할 수 있나요?
내가 사용하는 코드는 다음과 같습니다.
\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의 환경 은 TeX 기본 요소를 tabular
기반으로 합니다 \halign
. 각 테이블 항목은 테이블 선언의 왼쪽 자료에서 생성됩니다( 선언했기 때문에 첫 번째 열에 수직 규칙이 있습니다 |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}