csvsimple 与条件行着色

csvsimple 与条件行着色

我有一个 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}

在此处输入图片描述

如果你不\别的\\那么你将得到这样的结果:

在此处输入图片描述

相关内容