我有一个 CSV 文件,我想处理它csvsimple。我希望根据条件(一个指定的列具有较大的值)为某些行着色。以下是 MWE:
\documentclass[12pt]{article}
\usepackage{filecontents}
\usepackage{csvsimple}
\usepackage[table]{xcolor}
\begin{document}
\begin{filecontents*}{mwe.csv}
a,b,c,d
1,1,2,2
1,3,2,1
\end{filecontents*}
\begin{tabular}{*{4}{c}}
\csvreader[
head to column names,
before line={\ifnum\d>1\rowcolor{gray}\fi},
late after line={\\}
]{mwe.csv}{}{
\a&\b&\c&\d
}
\end{tabular}
\end{document}
在这种情况下,我给出了一个错误消息:
! Misplaced \noalign.
<recently read> \noalign
l.18 }
我该如何解决?
答案1
您的错误是由于\rowcolor
没有位于行的最开头。您可以通过\\
在行开头添加一个附加行来解决这个问题。最好使用过滤器(第 3.4 节手动的)处理条件:
\documentclass[12pt]{article}
\usepackage{csvsimple}
\usepackage[table]{xcolor}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.csv}
a,b,c,d
1,1,2,2
1,3,2,1
3,4,5,0
6,7,8,1
8,6,4,2
9,1,2,4
0,0,1,1
\end{filecontents*}
\begin{document}
\begin{tabular}{*{4}{c}}
\csvreader[head to column names,
full filter=\ifnumgreater{\d}{1}
{\\\rowcolor{gray} \csvfilteraccept}
{\\ \csvfilteraccept}
]{\jobname.csv}{}{\csvlinetotablerow}%
\end{tabular}
\end{document}
答案2
尝试这个解决方案。它在每行后添加一个换行符。
\documentclass[12pt]{article}
\usepackage{filecontents}
\usepackage{csvsimple}
\usepackage[table]{xcolor}
\begin{document}
\begin{filecontents*}{mwe.csv}
a,b,c,d
1,1,2,2
5,3,9,1
7,8,2,9
5,3,9,1
5,3,9,1
7,8,2,9
\end{filecontents*}
\csvreader[tabular=cccc,
head to column names,
before line={\ifnum\d>1\\\rowcolor{gray}\else\\\fi}
]{mwe.csv}{}{
\a&\b&\c&\d
}
\end{document}
如果你不\别的\\那么你将得到这样的结果: