具有多行和行颜色的表格

具有多行和行颜色的表格

对于我目前正在创建的模板,我需要一个表格,其中前两列的行颜色交替,并且有一个包含图像的多行(第三列)。此多行不应该对 rowcolors 命令做出反应。以下是使用 Word 创建的表格的示例图像。

在此处输入图片描述

除此之外,表格内容通过使用变量 (MWE) 插入。如果变量没有值(为空),则整行表格都会消失。

通常我必须手动为每个单元格着色,因为 rowcolors 和 multirow 显然不能很好地协同工作。由于如果行的变量为空,行就会消失,因此每次输入后 rowcolors 可能会乱序。有没有办法在表格中获得交替的 rowcolors 和多行,而不必每次都手动更改单元格颜色?

非常感谢您的帮助并且抱歉我的英语不好......

\documentclass[a4paper,pagesize]{scrartcl} 
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{array} 
\usepackage{color}
\usepackage[table]{xcolor}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}    
    \def\leer{}
    \def\FirstRow{Row1}
    \def\SecondRow{Row2}
    \def\ThirdRow{Row3}
    \def\FourthRow{}
    \def\FifthRow{Row5}
    \def\SixthRow{Row6}

\begin{table}[ht] \centering
\renewcommand{\arraystretch}{2}
%\rowcolors{1}{}{blue}
    \begin{tabular}{| >{\bfseries}M{.15\textwidth} | M{.25\textwidth} | M{.4\textwidth} |}
        \hline 
        \rowcolors{1}{blue}{white} 
        \ifx\FirstRow\leer \else FirstRow & \FirstRow & \multirow{5}{*}{\includegraphics[width=.4\textwidth]{example-image-golden}} \\ \hhline{--~|} \fi 
        \ifx\SecondRow\leer \else SecondRow & \SecondRow & \\ \hhline{--~|} \fi 
        \ifx\ThirdRow\leer \else ThirdRow & \ThirdRow & \\ \hhline{--~|} \fi \rowcolor{blue}
        \ifx\FourthRow\leer \else FourthRow & \FourthRow & \\ \hhline{--~|} \fi
        \ifx\FifthRow\leer \else FifthRow & \FifthRow & \\ \hhline{--~|} \fi 
        \ifx\SixthRow\leer \else SixthRow & \SixthRow & \\ \hline \fi
    \end{tabular} 
\end{table}

\end{document}

答案1

像这样吗?

在此处输入图片描述

这是针对两个表格的任务。第一个单元格中的外部表格包含带有彩色行的内部表格,第二个单元格中是图像。

\documentclass[a4paper,pagesize]{scrartcl}
\usepackage{tabularx}
\usepackage{graphicx}
%\usepackage{multirow}
%\usepackage{hhline}
\usepackage{array}
%\usepackage{color}
\usepackage[table]{xcolor}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}
    \def\leer{}
    \def\FirstRow{Row1}
    \def\SecondRow{Row2}
    \def\ThirdRow{Row3}
    \def\FourthRow{}
    \def\FifthRow{Row5}
    \def\SixthRow{Row6}

\begin{table}[ht] \centering
\renewcommand{\arraystretch}{2}
    \begin{tabular}{| c@{}| M{.4\textwidth} |}
    \hline
\rowcolors{1}{blue}{white}
    \begin{tabular}{|@{}>{\bfseries}M{.15\textwidth} | M{.25\textwidth}|@{}}
\ifx\FirstRow\leer  \else FirstRow  & \FirstRow     \\ 
\ifx\SecondRow\leer \else SecondRow & \SecondRow    \\  \fi
\ifx\ThirdRow\leer  \else ThirdRow  & \ThirdRow     \\  \fi
\ifx\FourthRow\leer \else FourthRow & \FourthRow    \\  \fi
\ifx\FifthRow\leer  \else FifthRow  & \FifthRow     \\  \fi
\ifx\SixthRow\leer  \else SixthRow  & \SixthRow     \\  \fi
    \end{tabular}   &
\includegraphics[width=\hsize]{example-image-golden} \\ 
    \hline
    \end{tabular}
\end{table}
    \end{document}

如果少于四行,则彩色行会出现在内表上方和下方的空白处。我注释了上图中未使用的包。包colormultirow是多余的。第一个任务也由宽度执行xcolor,第二个不再使用。

相关内容