问题。当对表格进行着色时,对偶数行/奇数行使用不同的颜色是很常见的,可以使用xcolor
包。但是,我不希望每行都有交替的颜色,而是每行组。
例子。以下示例是最低限度的工作。我有一个宏\writerow
来输出表格行(因为原始文件中的很多信息都是自动生成的),还有第二个宏\setgroup
来将组设置为1
(白色背景)或2
(灰色背景)。为了存储此信息,有一个宏\rc
(读取“行颜色”)。
\documentclass{standalone}
\usepackage{ifthen}
\usepackage{colortbl}
\begin{document}
%
% Macros
\newcommand\rc{0.8}
\newcommand\setgroup[1]{
\ifthenelse{\equal{#1}{1}}{
\renewcommand\rc{1.0}
}{
\renewcommand\rc{0.8}
}
}
\newcommand\writerow[1]{
\\ \rowcolor[gray]{\rc} #1
}
%
% Data
\begin{tabular}{l}
\textbf{Header}
\setgroup{1}
\writerow{Zeile 1}
\writerow{Zeile 2}
\setgroup{2}
\writerow{Zeile 3}
\writerow{Zeile 4}
\end{tabular}
\end{document}
假设。示例可以正常运行;但是,每行都显示为灰色,这意味着无法\renewcommand\rc
正常运行。为什么?
可能是范围的问题。但我在该文档中看到的唯一范围是环境范围tabular
,这应该不是问题,因为所有操作都发生在环境内部。
我的错误在哪里?提前感谢您的帮助!
答案1
表格的每个单元格都是一个范围,因此您需要将命令设为全局命令。使用\gdef
而不是\renewcommand
因为 LaTeX 不提供全局设置的 LaTeX 界面。