如何在 LaTeX 中制作带有旋转表头的表格

如何在 LaTeX 中制作带有旋转表头的表格

我看到了一个在 PowerPoint 中创建的表格,想知道如何在 LaTeX 中创建它。表格如下所示。我最感兴趣的是表格的旋转表头以及Knowledge Areas表格Process外的标签。

截屏

以下是我看过之后得出的结论表格中的列标题旋转 在评论中提出建议(谢谢!)

    \documentclass{article}
\usepackage{adjustbox}
\usepackage{array}
\usepackage{booktabs}
\usepackage{multirow}

\newcolumntype{R}[2]{%
    >{\adjustbox{angle=#1,lap=\width-(#2)}\bgroup}%
    l%
    <{\egroup}%
}
\newcommand*\rot{\multicolumn{1}{R{90}{1em}}}% no optional argument here, please!

\begin{document}

\begin{table} \centering
    \begin{tabular}{clcccccccccc}
        & & \multicolumn{10}{c}{Knowledge Areas} \\
        & & \rot{Integration} & \rot{Scope} & \rot{Time} & \rot{Cost} 
        & \rot{Quality} & \rot{Human Resource} & \rot{Communication} 
        & \rot{Risk} & \rot{Procurement} & \rot{Stakeholder Management} \\
        \midrule
        \multirow{5}{*}{{Processes}}
        & Initiating             & * &   &   &   &   &   & * &   &   & * \\
        & Planning               & * & * & * & * & * & * & * & * & * & * \\
        & Executing              & * &   &   &   & * & * & * &   & * & * \\
        & Monitoring and Control & * & * & * & * & * &   & * & * & * & * \\
        & Closing                & * &   &   &   &   &   & * &   & * & * \\
        \bottomrule
    \end{tabular}
    \caption{Some caption}
\end{table}

\end{document}

结果如下:

在此处输入图片描述

我不太关心行颜色(抱歉,之前应该提到这一点)。只是有几件事我不知道该怎么做:

  1. 我怎样才能使Stakeholder Management它们堆叠在一起?
  2. Processes我怎样才能在左侧旋转?\rot我在表头中使用的命令不起作用,大概是因为它在\multirow命令中。

答案1

使用\rlap可以更轻松地定位文本而无需额外空间。如果您想要在外面添加标签“Processes”,则使用\cmidrule{2-12}\cmidrule[1pt]{2-12}

\documentclass{article}
\usepackage{array,graphicx}
\usepackage{booktabs}
\usepackage{pifont}

\newcommand*\rot{\rotatebox{90}}
\newcommand*\OK{\ding{51}}

\begin{document}

\begin{table} \centering
    \begin{tabular}{@{} cl*{10}c @{}}
        & & \multicolumn{10}{c}{Knowledge Areas} \\[2ex]
        & & \rot{Integration} & \rot{Scope} & \rot{Time} & \rot{Cost} 
        & \rot{Quality} & \rot{Human Resource} & \rot{Communication} 
        & \rot{Risk} & \rot{Procurement} & \rot{\shortstack[l]{Stakeholder\\Management}} \\
        \cmidrule{2-12}
        & Initiating             & \OK &   &   &   &   &   & \OK &   &   & \OK \\
        & Planning               & \OK & \OK & \OK & \OK & \OK & \OK & \OK & \OK & \OK & \OK \\
        & Executing              & \OK &   &   &   & \OK & \OK & \OK &   & \OK & \OK \\
        & Monitoring and Control & \OK & \OK & \OK & \OK & \OK &   & \OK & \OK & \OK & \OK \\
 \rot{\rlap{~Processes}}
        & Closing                & \OK &   &   &   &   &   & \OK &   & \OK & \OK \\
        \cmidrule[1pt]{2-12}
    \end{tabular}
    \caption{Some caption}
\end{table}

\end{document}

在此处输入图片描述

并且颜色相同:

\documentclass{article}
\usepackage{array,graphicx}
\usepackage{booktabs}
\usepackage{pifont}
\usepackage[table]{xcolor}

\newcommand*\rot{\rotatebox{90}}
\newcommand*\OK{\ding{51}}

\begin{document}

\begin{table} \centering
\begin{tabular}{@{} cr*{10}c }
   & & \multicolumn{10}{c}{Knowledge Areas} \\[2ex]
\rowcolor{blue!30} \cellcolor{white}
   & & \rot{Integration} & \rot{Scope} & \rot{Time} & \rot{Cost} 
   & \rot{Quality} & \rot{Human Resource~} & \rot{Communication} 
   & \rot{Risk} & \rot{Procurement} & \rot{\shortstack[l]{Stakeholder\\Management}} \\
        \cmidrule{2-12}
\rowcolor{black!15} \cellcolor{white}
   & Initiating   &\OK &    &    &    &    &    &\OK &    &    &\OK \\
   & Planning     &\OK &\OK &\OK &\OK &\OK &\OK &\OK &\OK &\OK &\OK \\
\rowcolor{black!15} \cellcolor{white}
   & Executing    &\OK &    &    &    &\OK &\OK &\OK &    &\OK &\OK \\
   & Monitoring and Control 
                  &\OK &\OK &\OK &\OK &\OK &    &\OK &\OK &\OK &\OK \\
\rowcolor{black!15} \cellcolor{white}
 \rot{\rlap{~Processes}}
   & Closing      &\OK &    &    &    &    &    &\OK &    &\OK &\OK \\
        \cmidrule[1pt]{2-12}
    \end{tabular}
    \caption{Some caption}
\end{table}

\end{document}

在此处输入图片描述

答案2

当我尝试阅读您的表格时,我发现由于旋转,无法阅读列标题,这就是为什么我推荐一种不旋转的解决方案。它只是对行和列进行简单的重新组织。

它并不完美。也许可以调整流程右边比较好。

您也可以简化表格,因为所有知识领域都需要规划,那么为什么要把它放在表格中呢?只需在标题中提及它即可。删除规划列应该会使表格变窄,这总是一件好事,因为它使从左到右和从右到左扫描表格变得更容易。

\documentclass{article}
\usepackage{booktabs}
\newcommand*\ON[0]{$\surd$}

\begin{document}

\begin{table}
    \begin{center}
    \begin{tabular}{@{}lccccc@{}}
           & \multicolumn{5}{c}{\textbf{Processes}}
    \\  \cmidrule{2-6}
           & & & & \textbf{Monitoring}
    \\       \textbf{Knowledge Areas}
           & \textbf{Initiating}
           & \textbf{Planning}
           & \textbf{Executing}
           & \textbf{\&\ Control}
           & \textbf{Costing}
    \\ \midrule
       \textbf{Integration}    & \ON & \ON & \ON & \ON & \ON
    \\ \textbf{Scope}          &     & \ON &     & \ON &
    \\ \textbf{Time}           &     & \ON &     & \ON &
    \\ \textbf{Cost}           &     & \ON &     & \ON &
    \\ \textbf{Quality}        &     & \ON & \ON & \ON &
    \\ \textbf{Human Resource} &     & \ON & \ON &     &
    \\ \textbf{Communication}  & \ON & \ON & \ON & \ON & \ON
    \\ \textbf{Risk}           &     & \ON &     & \ON &
    \\ \textbf{Procurement}    &     & \ON & \ON & \ON & \ON
    \\ \textbf{Stakeholder
               Management}     & \ON & \ON & \ON & \ON & \ON
    \\ \bottomrule
    \end{tabular}
    \caption{Some caption}
    \end{center}
\end{table}

\end{document}

桌子

答案3

我制作了一张类似的桌子供自己使用。

在此处输入图片描述

\documentclass[oneside, 10pt, a4paper]{article}

\usepackage{multirow}
\usepackage{graphicx}
\usepackage{booktabs}

\newcommand{\mcrot}[4]{\multicolumn{#1}{#2}{\rlap{\rotatebox{#3}{#4}~}}} 

\newcommand*{\twoelementtable}[3][l]%
{%  
    \renewcommand{\arraystretch}{0.8}%
    \begin{tabular}[t]{@{}#1@{}}%
        #2\tabularnewline
        #3%
    \end{tabular}%
}

\begin{document}

\begin{table}[h] \label{tab:activityTracking}
    \centering
    \caption{Tracking daily activities.}
\begin{tabular}{ *2{ll|} *6c | *6c }
    \\
    \multicolumn{2}{c}{Date}  & \multicolumn{1}{c}{Start} & \multicolumn{1}{c}{Stop} 
        & \mcrot{1}{l}{60}{Activity 1} & \mcrot{1}{l}{60}{Analysis} & \mcrot{1}{l}{60}{\twoelementtable{No. of}{processes}} & \phantom{p}& \mcrot{1}{l}{60}{Result} & \mcrot{1}{l}{60}{Backup} 
        & \mcrot{1}{l}{60}{Activity 2} & \mcrot{1}{l}{60}{Analysis} & \mcrot{1}{l}{60}{\twoelementtable{No. of}{processes}} & \phantom{p} & \mcrot{1}{l}{60}{Result} & \mcrot{1}{l}{60}{Backup} \\
    \midrule \midrule

    \multirow{4}{*}{\rotatebox{90}{\textbf{January}}}
    & 11 & 1:30~am & 10:45~am 
        & x & x & \multicolumn{2}{c}{-} & - & x 
        & - & x & \multicolumn{2}{c}{x} & x & x \\
    & 12 &          &         
        & - & - & \multicolumn{2}{c}{x} & - & - 
        & - & - & \multicolumn{2}{c}{x} & - & - \\
    & 13 &          &         
        & - & - & \multicolumn{2}{c}{x} & - & - 
        & - & - & \multicolumn{2}{c}{x} & - & - \\
    & 14 &          &         
        & - & - & \multicolumn{2}{c}{-} & - & - 
        & - & - & \multicolumn{2}{c}{x} & - & - \\
    \bottomrule
\end{tabular}
\end{table}

\end{document}

答案4

您可以使用{NiceTabular}( nicematrix≥ 6.22 of 2023-08-14) 轻松创建该表。

\documentclass{article}
\usepackage{booktabs}
\usepackage{nicematrix}

\begin{document}

\begin{table} \centering
    \begin{NiceTabular}{cl*{10}{c}}
        & & \Block{1-10}{Knowledge Areas} \\[1mm]
        \RowStyle{\rotate}
        & &  Integration &  Scope &  Time &  Cost &  Quality &  Human Resource &  Communication 
        &  Risk &  Procurement & \Block{}{Stakeholder \\ Management} \\
        \midrule
        \Block{*-1}{\rotate Processes}
        & Initiating             & * &   &   &   &   &   & * &   &   & * \\
        & Planning               & * & * & * & * & * & * & * & * & * & * \\
        & Executing              & * &   &   &   & * & * & * &   & * & * \\
        & Monitoring and Control & * & * & * & * & * &   & * & * & * & * \\
        & Closing                & * &   &   &   &   &   & * &   & * & * \\
        \bottomrule
    \end{NiceTabular}
    \caption{Some caption}
\end{table}


\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容