我正在加载一个相当大的 .csv 文件(>100 行),我需要以longtable
格式打印并突出显示每行中的最大值。我找到了这个帖子在表格中突出显示极值讨论了该问题,但解决方案需要为每一行添加一行。
我尝试使用
\pgfplotstablegetrowsof{\data}
\pgfplotstabletypeset[
\foreach \n in {1,...,\pgfplotsretval}{
highlight row max ={\data}{\n},
}
]{\data}
但编译不通过。我现在已经花了几个小时尝试阅读手册并寻找解决pgfplotstable
方案(我不太精通 LaTeX 编程)。csvsimple
datatools
答案1
我终于能够做到这一点datatools
,所需要做的就是阅读 200p 手册/s
。
\documentclass{article}
\usepackage{booktabs}
\usepackage{array}
\usepackage{datatool}
\usepackage{longtable}
\begin{document}
\DTLloadrawdb[]{DATA}{DATA.csv}
\DTLforeach{DATA}{}{ % iterate over rows
\def\theMax{0} % set max to zero
\DTLforeachkeyinrow{\thisValue}{ % iterate over cols
\ifthenelse{\dtlcol>3}{ % ignore first 3 cols (unrelated)
\DTLmax{\theMax}{\theMax}{\thisValue} % compare max with current value
}{}
}
% Now \theMax should be maximal
\DTLforeachkeyinrow{\thisValue}{ % iterate again over cols
\ifthenelse{\dtlcol>3}{ % ignore first 3 cols (unrelated)
% If current Value is maximal, make it bold
\ifthenelse{\DTLisieq{\thisValue}{\theMax}}{
\DTLreplaceentryforrow{\dtlkey}{\textbf{\theMax}}
}{}
}{}
}
}
\DTLdisplaylongdb[]{DATA}
\end{document}
还请注意,如果每行有多个条目达到最大值,则会突出显示所有最大值。