![行颜色作为带有计数器和 if-else 语句的命令](https://linux22.com/image/470001/%E8%A1%8C%E9%A2%9C%E8%89%B2%E4%BD%9C%E4%B8%BA%E5%B8%A6%E6%9C%89%E8%AE%A1%E6%95%B0%E5%99%A8%E5%92%8C%20if-else%20%E8%AF%AD%E5%8F%A5%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我正在制作一个表格,我想用不同的颜色给奇数行和偶数行上色。我创建了一个带有计数器的新命令。计数器随着每一行新内容而递增,并且 if-else 语句在两种颜色之间切换。当我使用该命令时,处理我的文件时出现错误。错误是! Misplaced \noalign
。我查看了命令,但不知道哪里出了问题。请帮我找出错误。
\newcounter{irow}
\setcounter{irow}{0}
\definecolor{evenrowcolor}{HTML}{f7f5f5}
\definecolor{oddrowcolor}{HTML}{87e09f}
\newcommand{\ColorizeRow}{\addtocounter{irow}{1}\ifodd\value{irow}\rowcolor{oddrowcolor}\else\rowcolor{evenrowcolor}\fi}
\begin{table}[!htbp]
\begin{tabular}{|c|c|c|}
\hline
\ColorizeRow
A & B & C \\
\ColorizeRow
D & E & F\\
\ColorizeRow
G & H & I \\
\ColorizeRow
J & K & L \\
\ColorizeRow
M & N & O \\
\hline
\end{tabular}
\end{table}
答案1
命令\rowcolor
以colortbl
开头\noalign
,我们必须在 之前放置可扩展的材料(在 TeX 含义中)\noalign
。该指令\addtocounter{irow}{1}
不可扩展(与所有 指令一样)。
不过,您可以\addtocounter{irow}{1}
在指令后面放置\rowcolor
。
\documentclass{article}
\usepackage{xcolor,array,colortbl}
\begin{document}
\newcounter{irow}
\setcounter{irow}{0}
\definecolor{evenrowcolor}{HTML}{f7f5f5}
\definecolor{oddrowcolor}{HTML}{87e09f}
\newcommand{\ColorizeRow}{\ifodd\value{irow}\rowcolor{evenrowcolor}\else\rowcolor{oddrowcolor}\fi \addtocounter{irow}{1}}
\begin{table}[!htbp]
\begin{tabular}{|c|c|c|}
\hline
\ColorizeRow
A & B & C \\
\ColorizeRow
D & E & F\\
\ColorizeRow
G & H & I \\
\ColorizeRow
J & K & L \\
\ColorizeRow
M & N & O \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
我不明白你为什么喜欢发明已经存在的东西。包中有用于着色表的xcolor
选项。此选项定义(除其他外):table
\rowcolors{<row num>}{<odd color>}{<even color>}
其中row num
是激活此命令的行数。例如:
\documentclass[margin=3mm, varwidth]{standalone}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}[!htb]
\rowcolors{1}{red}{blue}
\begin{tabular}{|c|c|c|}
\hline
A & B & C \\
D & E & F \\
G & H & I \\
J & K & L \\
M & N & O \\
\hline
\end{tabular}
\end{table}
\begin{table}[!htb]
\rowcolors{2}{red}{blue}
\begin{tabular}{|c|c|c|}
\hline
A & B & C \\
D & E & F \\
G & H & I \\
J & K & L \\
M & N & O \\
\hline
\end{tabular}
\end{table}
\begin{table}[!htb]
\rowcolors{1}{}{blue}
\begin{tabular}{|c|c|c|}
\hline
A & B & C \\
D & E & F \\
G & H & I \\
J & K & L \\
M & N & O \\
\hline
\end{tabular}
\end{table}
\end{document}
这就是你想要实现的目标吗?