对于我目前正在创建的模板,我需要一个表格,其中前两列的行颜色交替,并且有一个包含图像的多行(第三列)。此多行不应该对 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}
如果少于四行,则彩色行会出现在内表上方和下方的空白处。我注释了上图中未使用的包。包color
和multirow
是多余的。第一个任务也由宽度执行xcolor
,第二个不再使用。