如何均匀分布多列的单元格?

如何均匀分布多列的单元格?

我正在尝试构建一个具有两列均匀分布(是/否列)的表格:

在此处输入图片描述

这是我在社区的帮助下迄今为止所取得的成就,因此使用了以下代码:

\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 已通过tabularray2022A 版本测试。

编辑: 当旋转文本的自然宽度大于跨列的高度时,您需要:

  • 指定长度或旋转文本
  • 将选项添加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!

相关内容