我试图将表格中的垂直线置于 0 到 31 之间。有人知道怎么做吗?下面是我的乳胶代码。
\begin{table}[] \begin{tabular}{|c|cc|cc|cc|cc|cc|}
\hline
TEXT &
\multicolumn{2}{c|}{TEXT TEXT} & \multicolumn{2}{c|}{TEXT TEXT} &
\multicolumn{2}{c|}{TEXT TEXT} & \multicolumn{2}{c|}{TEXT TEXT} &
\multicolumn{2}{c|}{TEXT TEXT} \\ \hline TEXT &
\multicolumn{2}{c|}{TEXT TEXT} & \multicolumn{2}{c|}{TEXT TEXT} &
\multicolumn{2}{c|}{TEXT TEXT} & \multicolumn{2}{c|}{TEXT TEXT} &
\multicolumn{2}{c|}{TEXT TEXT} \\ \hline TEXT &
\multicolumn{1}{c|}{\centering 0} & \multicolumn{1}{c|}{31} &
\multicolumn{1}{c|}{0} & 31 & \multicolumn{1}{l|}{0} & 31 &
\multicolumn{1}{l|}{0} & 31 & \multicolumn{1}{l|}{0} & 31 \\ \hline
TEXT & \multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1
& \multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 \\ \hline TEXT & \multicolumn{1}{c|}{1}
& 1 & \multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} &
1 & \multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 \\
\hline TEXT & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 \\
\hline TEXT & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 \\
\hline TEXT & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 \\
\hline TEXT & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 &
\multicolumn{1}{c|}{1} & 1 & \multicolumn{1}{c|}{1} & 1 \\
\hline
\end{tabular}
\end{table}
答案1
基本l
、r
和c
列类型没有固定或预定的宽度。相反,它们的宽度最终是给定列中最宽的单元格。这就是为什么五对列中的第一列非常窄,因为它只包含数字0
和1
;第二列的宽度是余数,由组合列标题的宽度(“TEXT TEXT”)减去第一列的宽度得出。
为了解决这个问题,我建议您加载array
包并使用其w
列类型而不是c
列类型。w
列类型将列的所需可用宽度作为其参数之一。此宽度可以根据有关组合列标题的可用信息计算得出;以下示例对此进行了说明。
为了使这个例子更符合实际/更贴近现实世界的表格,实际上有两种不同的列宽需要考虑,因为前两个组合标题中的字符串(“TEXT TEXT”)与(即,长于)接下来三个组合标题(“TEX TEX”)。
\documentclass{article} % or some other suitable document class
\usepackage{array} % for 'w' column type
%% Measure widths of widest column headers
%% for columns 2 thru 5 ("TEXT TEXT" is wider than "TEIT TEIT"):
\newlength\mylenA
\settowidth\mylenA{TEXT TEXT} % strings in 2 two-column headers
\setlength\mylenA{\dimexpr\mylenA/2-\tabcolsep-0.5\arrayrulewidth\relax}
%% for columns 6 thru 11 ("TEX TEX" is wider than "TEI TEI"):
\newlength\mylenB
\settowidth\mylenB{TEX TEX} % strings in 3 two-column headers
\setlength\mylenB{\dimexpr\mylenB/2-\tabcolsep-0.5\arrayrulewidth\relax}
\newcommand\mc[1]{\multicolumn{2}{c|}{#1}} % handy shortcut macro
\begin{document}
\begin{table}[h]
\setlength\extrarowheight{2pt} % optional -- for a more open "look"
\begin{tabular}{| l | *{4}{wc{\mylenA}|} *{6}{wc{\mylenB}|}}
\hline
TEXT & \mc{TEXT TEXT} & \mc{TEXT TEXT}
& \mc{TEX TEX} & \mc{TEX TEX} & \mc{TEX TEX} \\ \hline
TEXT & \mc{TEIT TEIT} & \mc{TEIT TEIT}
& \mc{TEI TEI} & \mc{TEI TEI} & \mc{TEI TEI} \\ \hline
TEXT & 0 &31 & 0 &31 & 0 &31 & 0 &31 & 0 &31 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ \hline
\end{tabular}
\end{table}
\end{document}
答案2
每列都需要具有相同的宽度。实现此目的的一种方法是应用X
-type column in tblr
(需要tabularray
)。唯一的缺点tblr
是代码需要更长的编译时间。
编辑。
通常,X
-type 列会创建段落单元格。这意味着超出列宽的内容会自动添加换行符。但是,在这种情况下,包含长文本的单元格会TEXT TEXT
合并。因此,此功能被取消。如果您认为需要自动换行符,则必须在规范中添加固定宽度cell
,cell{1-2}{2,4,6,8,10} = {c=2}{<unit length here>}
例如2cm
。
在所有tblr
环境中,都可以明确添加换行符,例如{TEXT\\TEXT}
。请注意,要使此功能有效,内容必须括在括号中{...}
。
\documentclass[a4paper,12pt]{book}
\usepackage{tabularray}
\begin{document}
\begin{table}[tbh]
\begin{tblr}{
width=\linewidth,
colspec = {c *{10}{X[c]}},
column{2-Z} = {colsep=2pt},
rows = {rowsep=2pt},
cells = {font=\footnotesize},
cell{1-2}{2,4,6,8,10} = {c=2}{},
vlines, hlines,
}
TEXT & TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT & \\
TEXT & TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT &
& TEXT TEXT & \\
TEXT & 0 & 31 & 0 & 31 & 0 & 31 & 0 & 31 & 0 & 31 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
TEXT & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
\end{tblr}
\end{table}
\end{document}