在多行、90 度方向的单元格中换行

在多行、90 度方向的单元格中换行

我有以下 MWE

\documentclass[letterpaper,12pt,oneside,onecolumn,draft,openany]{report}    
\usepackage{caption}
\usepackage{wrapfig, subcaption, siunitx, booktabs, multirow}
\usepackage{graphicx}
\usepackage{float}

\begin{document}
\begin{table}[!htb]    
    \begin{subtable}{.60\linewidth}
      \centering
        \begin{tabular}{c|l|c|c|c|c}
            \toprule
            \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{90}{age group of susceptible person}}} & & \multicolumn{4}{c}{age group of infectious person} \\
            & & \textbf{0-2} & \textbf{2-5} & \textbf{5-10} & ≥\textbf{10} \\
            \cmidrule(lr{1em}){2-6}
            & \textbf{0-2}   & 2.11  & 0.15  & 0.53   & 0.03   \\      
            & \textbf{2-5}  & 0.55  & 0.40  & 0.50   & 0.12   \\      
            & \textbf{5-10} & 0.56  & 3.68  & 3.61   & 0.13   \\         
            & \textbf{>10}   & 0.55  & 0.55  & 0.81   & 1.43    \\       
            \toprule
        \end{tabular}
    \end{subtable}%
    \begin{subtable}{.60\linewidth}
      \centering
        %\caption{}
        \begin{tabular}{c|l|c|c|c|c}
            \toprule
            \parbox[t]{2mm}{\multirow{5}{*}{\rotatebox[origin=c]{90}{age group of agent $i$}}} & & \multicolumn{4}{c}{age group of infectious person} \\
            & & \textbf{0-2} & \textbf{2-5} & \textbf{5-10} & ≥\textbf{10} \\
            \cmidrule(lr{1em}){2-6}
            & \textbf{0-2}  & 0.75  & 0.80  & 0.98   & 1.0   \\      
            & \textbf{2-5}  & 0.35  & 0.60  & 0.92   & 1.0   \\      
            & \textbf{5-10} & 0.07  & 0.53  & 0.98   & 1.0   \\         
            & \textbf{>10}  & 0.17 & 0.33  & 0.57   & 1.0    \\       
            \toprule
        \end{tabular}
    \end{subtable} 
    \caption{caption}
\end{table}
\end{document}

产生

MWE 示例

有没有办法让这些表格看起来更好?特别是,

  • 有没有办法让旋转 90 度的文本换行?我尝试创建第二个空列,但出现错误。
  • 有没有办法调整“数据”列的大小...您会看到“10”列比其他列略大。

答案1

如果我正确理解了你的问题,那么你正在寻找类似这样的内容:

在此处输入图片描述

用于旋转第一列中的文本的包makecellrotating

\documentclass[letterpaper,12pt]{report}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{booktabs, makecell, multirow, rotating}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document}
\begin{table}[!htb]
\settowidth\rotheadsize{age group of}
\setlength\tabcolsep{4pt}
    \begin{subtable}{.48\linewidth}
    \centering
        \begin{tabular}{ c >{\bfseries}l *{4}{S[table-format=1.2]} }
    \toprule
    &       &   \multicolumn{4}{c}{\makecell{age group of\\ infectious person}} \\
    \cmidrule{3-6}
    &       &   \textbf{0-2} & \textbf{2-5} & \textbf{5-10} & ≥\textbf{10} \\
    \midrule
\multirow[t]{4}{*}[-3ex]{\rothead{age group of susceptible person}}
    & 0-2   & 2.11  & 0.15  & 0.53   & 0.03     \\
    & 2-5   & 0.55  & 0.40  & 0.50   & 0.12     \\
    & 5-10  & 0.56  & 3.68  & 3.61   & 0.13     \\
    & >10   & 0.55  & 0.55  & 0.81   & 1.43     \\
    \bottomrule
        \end{tabular}
    \end{subtable}
\hfill
    \begin{subtable}{.48\linewidth}
      \centering
       \begin{tabular}{ c >{\bfseries}l *{3}{S[table-format=1.2]} S[table-format=1.1]}
    \toprule
    &       & \multicolumn{4}{c}{\makecell{age group of\\ infectious person}}  \\
    \cmidrule{3-6}
    &       & \textbf{0-2}  & \textbf{2-5}  & \textbf{5-10} & ≥\textbf{10}  \\
    \midrule
\multirow[t]{4}{*}[-3ex]{\rothead{age group of infectious person}}
    & 0-2   & 0.75  & 0.80  & 0.98   & 1.0      \\
    & 2-5   & 0.35  & 0.60  & 0.92   & 1.0      \\
    & 5-10  & 0.07  & 0.53  & 0.98   & 1.0      \\
    & >10   & 0.17          & 0.33          & 0.57          & 1.0           \\
    \bottomrule
        \end{tabular}
    \end{subtable}
    \caption{caption}
\end{table}
\end{document}

正如您所看到的,我删除了所有垂直线。它们不能很好地与booktabs包中定义的规则配合使用。数字也使用包S中的列。siunutx

编辑:一些额外的解释:

  • c >{\bfseries}l *{4}{S[table-format=1.2]}是表格列布局的定义(而不是你的c|l|c|c|c|c

  • \rothead{...}是来自makecell包的宏。它被设计用于将表格单元格的内容旋转到所需的角度。对于旋转还必须加载包rotating

    宽度\rotcell由textlonger设置\settowidth\rotheadsize{age group of},以便将此文本宏分成更多行。

    有关详细信息,请参阅 makecell 包的文档

  • S列类型在包中定义siunitx。它允许在小数点处对齐表列中的数字。带选项[table-format=1.2]为整数保留一位数字,为小数保留两位数字。有关详细信息,请参阅包文档中的第 5.14 节
  • 表示法*{4}{S[table-format=1.2]}表示表中有四列S[table-format=1.2]
  • means that in this column all contents are in boldface fonts. with it you not need to use此列的每个单元格中均使用符号 >{\bfseries}l \texrbf{...}。

相关内容