当我尝试为里面的一行着色时,xstring
它创建了不需要的空白行,我需要longtable
大量的数据,那么我该如何进行过滤呢?
这是我的 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{longtable,filecontents,datatool,xstring}
\usepackage[table]{xcolor}
\begin{filecontents*}{data.csv}
Sl.No., Name, Class, Gender
1, Mr. David , X, M
2, Miss Kache , XII,F
3, Mr. Stephan, XII,M
4, Mr. Prakash, XII,M
5, Mr. Digvijay, XII,M
\end{filecontents*}
\DTLloaddb{mydata}{data.csv}
\begin{document}
\begin{longtable}{|l|l|l|l|}
\hline
Sl.No. & Name & Class & Gender\\ \hline
\DTLforeach*{mydata}{\sl=Sl.No.,\name=Name,\c=Class,\g=Gender}{
\IfStrEq{\g}{M}{\\\rowcolor{red!20} \sl & \name & \c & \g \\ \hline}{}
}
\end{longtable}
\end{document}
答案1
你似乎把\hline
s 和\\
s 放错了位置。这是一个清理过的版本
\documentclass[a4paper,12pt]{article}
\usepackage{longtable,filecontents,datatool,xstring}
\usepackage[table]{xcolor}
\begin{filecontents*}{data.csv}
Sl.No., Name, Class, Gender
1, Mr. David , X, M
2, Miss Kache , XII,F
3, Mr. Stephan, XII,M
4, Mr. Prakash, XII,M
5, Mr. Digvijay, XII,M
\end{filecontents*}
\DTLloaddb{mydata}{data.csv}
\begin{document}
\begin{longtable}{|l|l|l|l|}
\hline
Sl.No. & Name & Class & Gender \DTLforeach*{mydata}{\sl=Sl.No.,\name=Name,\c=Class,\g=Gender}{%
\IfStrEq{\g}{M}{\\\hline\rowcolor{red!20} \sl & \name & \c & \g }{}
}\\\hline
\end{longtable}
\end{document}
另一方面,我建议删除垂直分隔符,并将第 1、3 和 4 列居中。在此示例中,我还包含了另一行,该行在您的示例中被过滤掉了(只是为了完整性,因为上面显示了如何不呈现它)
\documentclass[a4paper,12pt]{article}
\usepackage{longtable,filecontents,datatool,xstring}
\usepackage[table]{xcolor}
\begin{filecontents*}{data.csv}
Sl.No., Name, Class, Gender
1, Mr. David , X, M
2, Miss Kache , XII,F
3, Mr. Stephan, XII,M
4, Mr. Prakash, XII,M
5, Mr. Digvijay, XII,M
\end{filecontents*}
\DTLloaddb{mydata}{data.csv}
\begin{document}
\begin{longtable}{clcc}
\hline
Sl.No. & Name & Class & Gender \DTLforeach*{mydata}{\sl=Sl.No.,\name=Name,\c=Class,\g=Gender}{%
\IfStrEq{\g}{M}{\\\hline\rowcolor{red!20} \sl & \name & \c & \g }{\\\hline\rowcolor{blue!20} \sl & \name & \c & \g}
}\\\hline
\end{longtable}
\end{document}