带有旋转和对齐标题、多行和 tabularx 列的 Booktabs 表

带有旋转和对齐标题、多行和 tabularx 列的 Booktabs 表

我在有点复杂的表格设置中遇到了对齐问题(请参阅 MWE)。我的表格通常会拉伸整个纸张的宽度(为了说明这一点,此处减少了列数,并将表格宽度设置为 9 厘米)。我使用包X的选项tabularx来拉伸所有列(前两列除外)。列的标题X被旋转。列的内容X始终是每个单元格两行。

我想要实现的目标如下:

  1. 第一列中的文本应位于第二列文本之间(例如,Test1位于XY和之间ZY
  2. 第二列中的文本应位于两列行的中间X(例如,XY位于以 开头的行0,0+和以 开头的行的中间1,0
  3. 页眉应与底部对齐,以便所有页眉都从中间标尺线开始。
  4. 标题应位于其列的中央。

我认为我已经实现了第 1 点和第 2 点。也许Test1等可以稍微低一点,以便位于线条之间。但我不知道如何实现第 3 点和第 4 点。

如果有人能帮助我就好了?

梅威瑟:

\documentclass{article}
\usepackage{tabularx,rotating,booktabs,multirow}
\usepackage[utf8]{inputenc}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcommand*\rot{\rotatebox{90}}

\newcommand{\forloop}[5][1]{
    \setcounter{#2}{#3}%
    \ifthenelse{#4}{#5\addtocounter{#2}{#1}%
    \forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
    {}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
    \forloop{crcounter}{1}{\value{crcounter} < #1}%
    {\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
    {\compensaterule{#1}#3}}

\begin{document}

\begin{table}[tbp]
    \centering
    \label{tab:Test}
        \begin{tabularx}{9cm}{p{2.5cm} p{2.0cm} *{3}{>{\raggedright\arraybackslash}X}}
            \textbf{Column1}                & \textbf{Column2}
                & \rot{Long column name}
                & \rot{Column4}
                & \rot{Column5} \\
            \midrule
                \multirowbt{2}{*}{Test1}    & XY & $0,0 + 1,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}                                                      
                \multirowbt{2}{*}{Test2}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}
                \multirowbt{2}{*}{Test3}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}
                \multirowbt{2}{*}{Test4}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
            \bottomrule
        \end{tabularx}
\end{table}

\end{document}

答案1

由于该问题已在评论中得到解决,@GonzaloMedina 不再活跃,因此要求添加答案,如下所示:

使用\multicolumn{1}{c}{column text}列标题,您可以取代您正在排版的列的原始列设置,同时创建居中的列,因此这里是 Gonzalo 的解决方案

\documentclass{article}
\usepackage{tabularx,rotating,booktabs,multirow}
\usepackage[utf8]{inputenc}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\newcommand*\rot{\rotatebox{90}}

\newcommand{\forloop}[5][1]{
    \setcounter{#2}{#3}%
    \ifthenelse{#4}{#5\addtocounter{#2}{#1}%
    \forloop[#1]{#2}{\value{#2}}{#4}{#5}}%
    {}}

\newcounter{crcounter}

\newcommand{\compensaterule}[1]{%
    \forloop{crcounter}{1}{\value{crcounter} < #1}%
    {\vspace*{-\aboverulesep}\vspace*{-\belowrulesep}}}

\newcommand{\multirowbt}[3]{\multirow{#1}{#2}%
    {\compensaterule{#1}#3}}

\begin{document}

\begin{table}[tbp]
    \centering
    \label{tab:Test}
        \begin{tabularx}{9cm}{p{2.5cm} p{2.0cm} *{3}{>{\raggedright\arraybackslash}X}}
           \multicolumn{1}{c}{ \textbf{Column1}}                &\multicolumn{1}{c}{ \textbf{Column2}}
                &\multicolumn{1}{c}{ \rot{Long column name}}
                & \multicolumn{1}{c}{\rot{Column4}}
                & \multicolumn{1}{c}{\rot{Column5}} \\
            \midrule
                \multirowbt{2}{*}{Test1}    & XY & $0,0 + 1,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}                                                      
                \multirowbt{2}{*}{Test2}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}
                \multirowbt{2}{*}{Test3}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                \cmidrule(lr){3-5}
                \multirowbt{2}{*}{Test4}    & XY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
                                                                    & ZY & $0,0 + 0,0$ & $0,0 + 0,0$ & $0,0  + 0,0$          \\
            \bottomrule
        \end{tabularx}
\end{table}

\end{document}

及其输出:

在此处输入图片描述

相关内容