我正在尝试构建一个具有两列均匀分布(是/否列)的表格:
这是我在社区的帮助下迄今为止所取得的成就,因此使用了以下代码:
\usepackage{ragged2e}
\usepackage{makecell}
\usepackage{xcolor}
\usepackage{tabularray}
\newcommand\TB{\textbullet}
\begin{document}
\begin{center}
\begin{tblr}{hline{1,4} = {2-4}{1pt},
hline{2} = {3-4}{solid},
hline{3} = 0.6pt,
hline{4-17}=solid,
vline{1} = {3-10}{solid},
vline{2-5},
colspec = {>{\centering\arraybackslash}p{0.5cm}
>{\centering\arraybackslash}p{3cm}{c}
>{\centering\arraybackslash}p{7cm}{c} *{2}{c}
},
cell{3-15}{1} = {cmd=\rotcell[cc]},
row{1} = {font=\bfseries},
row{2} = {font=\footnotesize},
vspan = even
}
& \SetCell[r=2]{f, font=\bfseries} Criteria
& \SetCell[c=2]{c} Migration? & \\
& & Yes & No \\
\SetCell[r=2]{c} \footnotesize ...
& \multicolumn{1}{|m|}{C1}
& \TB & \TB \\
& \multicolumn{1}{|m|}{C2}
& \TB & \TB \\
\SetCell[r=2]{c} \footnotesize ...
& \multicolumn{1}{|m|}{C3}
& \TB & \TB \\
& \multicolumn{1}{|m|}{C4}
& \TB & \TB \\
\SetCell[r=2]{c} \footnotesize ...
& \multicolumn{1}{|m|}{C5}
& \TB & \TB \\
& \multicolumn{1}{|m|}{C6}
& \TB & \TB \\
\end{tblr}
\captionof{table}{Whatever}
\label{tab:whatever}
\end{center}
\end{document}
有什么建议可以让我如何使多列“迁移?”(是/否单元格)下方的两个单元格的空间分别占“迁移?”列总宽度的 50%?
提前谢谢了!
答案1
- 你提供的代码片段不完整,你应该修正它们,这样就可以编译了
- 你混合了“经典”和
tabularray
规范的方式 - 请记住,最新
tabularray
版本(2022A)删除了对“经典”规范的支持multicolumn
multicolumn
代码片段中的所有命令都是多余的- 您可以指定更多列,因为它们将在表中使用。注意:
tabularray
要求每行中应按指定列的需要包含所有 & 符号(在您的例子中,每行包含三个 & 符号) - 以 MWE 形式显示的表格的更正代码为:
\documentclass{article}
\usepackage{caption}
\usepackage{rotating}
\usepackage{makecell}
\usepackage{xcolor}
\usepackage{tabularray}
\newcommand\TB{\textbullet}
\begin{document}
\begin{tblr}{hline{1} = {2-4}{1pt},
hline{2} = {2-4}{solid},
hline{3,Z} = 1pt,
hline{4-Y},
vline{1} = {3-10}{solid},
vline{2-5},
colspec = {Q[c, font=\footnotesize] Q[c,30mm] Q[c,30mm] Q[c,30mm]},
cell{3-15}{1} = {cmd=\rotcell[cc]},
row{1} = {font=\bfseries},
}
& \SetCell[r=2]{f} Criteria
& \SetCell[c=2]{c} Migration?
& \\
& & Yes & No \\
%
\SetCell[r=2]{c} ...
& C1
& \TB & \TB \\
& C2
& \TB & \TB \\
\SetCell[r=2]{c} ...
& C3
& \TB & \TB \\
& C4
& \TB & \TB \\
\SetCell[r=2]{c} ...
& C5
& \TB & \TB \\
& C6
& \TB & \TB \\
\end{tblr}
\captionof{table}{Whatever}
\label{tab:whatever}
\end{document}
如果列宽不符合您的要求,请在列规范中相应地进行更正。以上 MWE 已通过tabularray
2022A 版本测试。
编辑: 当旋转文本的自然宽度大于跨列的高度时,您需要:
- 指定长度或旋转文本
- 将选项添加
vspan =even
到表格序言中 - 在这种情况下,表格序言如下:
\begin{center}
\settowidth\rotheadsize{\theadfont <Widest head text>}
\begin{tblr}{hline{1} = {2-4}{1pt},
hline{2} = {2-4}{solid},
hline{3,Z} = 1pt,
hline{4-Y},
vline{1} = {3-10}{solid},
vline{2-5},
colspec = {Q[c, font=\footnotesize] Q[c,30mm] Q[c,30mm] Q[c,30mm]},
cell{3-15}{1} = {cmd=\rotcell[cc]},
row{1} = {font=\bfseries},
vspan = even
}
% table body
\end{tblr}
\captionof{table}{Whatever}
\label{tab:whatever}
\end{center}
\end{document}
- 不清楚为什么将表格放在
center
环境中而不是用于标题。例如,\captionof{table}{ <caption text > }
使用带有放置选项的浮动不是更简单吗?table
[!ht!