旋转多行中的长文本

旋转多行中的长文本

我创建了一个最小示例,其中错误的表格以红色表示。

\documentclass{article}
\usepackage{siunitx} % To align the numbers later on
\usepackage{booktabs}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\usepackage{multirow}
\usepackage{rotating}

\begin{document}
    \begin{table*}[t]
        \newcommand{\rot}[1]{\rotatebox{90}{#1}}
        \newcommand{\multirot}[1]{\multirow{2}{*}{\rot{#1}}}
        \centering
        \ra{1.3}
        \begin{tabular}{ccc} \toprule
            \multirot{Minimal example} &
            \multicolumn{2}{c}{Minimal} \\
            \cmidrule{2-3}
            & exa & mple \\ \midrule
            a & a & 10 \\
            a & a & 0.1 \\
            a & a & 0.001 \\ \bottomrule
        \end{tabular}
    \end{table*}
\end{document}

当内容超出右上角两行的高度时,为什么左上角的单元格没有变大?文本“最小示例”应在底部对齐(因此像这样的多列将在顶部变平)。

多行示例

如何实现与示例图像右侧类似的表格?

  • 我实现了这个问题,但它只适用于短文本。
  • 我看到了这个问题,但感觉用表格中的表格会显得过于复杂。

答案1

如果你接受双行列头,makecell那么它的命令就很简单了。我借此机会将其用于最后一列。\rotcellsiunitx

\documentclass{article}
\usepackage{siunitx} % To align the numbers later on
\usepackage{booktabs}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\usepackage{multirow, makecell}
\usepackage{rotating}
\settowidth\rotheadsize{Minimal}

\begin{document}
\begin{table*}[t]
  \newcommand{\rot}[1]{\rotatebox{90}{#1}}
  \newcommand{\multirot}[1]{\multirow{2}{*}{\rot{#1}}}
  \centering
  \ra{1.3}
  \begin{tabular}{@{\,}ccS[table-format=2.3]} \toprule
    \multirow{2}{*}[1.5ex]{\rotcell{Minimal example}}&
    \multicolumn{2}{c}{Minimal} \\
    \cmidrule{2-3}
      & exa & {mple} \\[0.5ex] \midrule
    a & a & 10 \\
    a & a & 0.1 \\
    a & a & 0.001 \\ \bottomrule
  \end{tabular}
\end{table*}
\end{document} 

在此处输入图片描述

答案2

好的,我以 Bernhards 的回答作为开始,并创建了两个可能的解决方案以供将来参考。

在此处输入图片描述

我保留第二个较长的标题,因为所有具有旋转标题的列都保持相同的宽度。

\documentclass{article}
\usepackage{siunitx} % To align the numbers later on
\usepackage{booktabs}
\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
\usepackage{multirow, makecell}
\usepackage{rotating}
\settowidth\rotheadsize{Minimal}

\begin{document}
    \begin{table*}[t]
        \newcommand{\rot}[1]{\rotatebox{90}{#1}}
        \newcommand{\multirot}[1]{\multirow{2}{*}[1.5ex]{\rotcell{#1}}}
        \centering
        \ra{1.3}
        \begin{tabular}{@{\,}cccS[table-format=2.3]} \toprule
            \multirot{Short} &
            \multirot{Extended} &
            \multicolumn{2}{c}{Minimal} \\
            \cmidrule{3-4}
            && exa & {mple} \\[0.5ex] \midrule
            a & a & a & 10 \\
            a & a & a & 0.1 \\
            a & a & a & 0.001 \\ \bottomrule
        \end{tabular}
    \end{table*}

    \begin{table*}[t]
        \newcommand{\multirot}[1]{\multirow{2}{*}[1.5ex]{\rotcell{\rlap{#1}}}}
        \centering
        \ra{1.3}
        \begin{tabular}{@{\,}cccS[table-format=2.3]} \toprule
            \multirot{Short} &
            \multirot{Long Example} &
            \multicolumn{2}{c}{Minimal}\rule{0pt}{1.3cm} \\
            \cmidrule{3-4}
            && exa & {mple} \\[0.5ex] \midrule
            a & a & a & 10 \\
            a & a & a & 0.1 \\
            a & a & a & 0.001 \\ \bottomrule
        \end{tabular}
    \end{table*}
\end{document}

我对光学结果(两个版本)感到满意,但我对第二张表的工作并不满意,\settowidth\rotheadsize{Minimal}尽管与此无关。

请随意编辑我的解决方案或者对其进行评论。

相关内容