请原谅,但我找不到答案。我有一些文本文件,组织方式如下,我使用 pgfplotstable 将其排版成表格
\documentclass[border=1pt]{standalone}
\usepackage{pgfplotstable}
\pgfplotstableread{
no A B C D
1 2 3 4 3
2 nan nan nan 4
3 2 3 4 5
4 2 3 4 6
5 2 3 4 7
6 nan nan nan 8
7 2 3 4 9
}\datatable
\begin{document}
\pgfplotstabletypeset[header=true,columns={no,A,B,C}]\datatable
\end{document}
有什么方法可以跳过包含 nan 的行,而无需对跳过进行硬编码?我猜答案在行谓词/.code={} 的某个地方,但我无处可去。
答案1
我现在觉得自己很蠢。毕竟我还是解决了这个问题。
\documentclass[border=1pt]{standalone}
\usepackage{pgfplotstable}
\pgfplotstableread{
no A B C D
1 2 3 4 3
2 nan nan nan 4
3 2 3 4 5
4 2 3 4 6
5 2 3 4 7
6 nan nan nan 8
7 2 3 4 9
}\datatable
\begin{document}
\pgfplotstabletypeset[
col sep=tab,
header=true,
row predicate/.code={%
\pgfplotstablegetelem{#1}{A}\of{\datatable}
\pgfmathfloatparsenumber{\pgfplotsretval}
\let\A=\pgfmathresult
\pgfmathfloatgetflagstomacro\A\flags
\ifnum\flags=3\relax\pgfplotstableuserowfalse
\else\relax\fi}]{\datatable}
\end{document}
有谁知道我如何定义一个命令来跳过序言中的 nan 行?
我试过
\newcommand{skipnans}[3]{
row predicate/.code={%
\pgfplotstablegetelem{#1}{#2}\of{#3}
\pgfmathfloatparsenumber{\pgfplotsretval}
\let\A=\pgfmathresult
\pgfmathfloatgetflagstomacro\A\flags
\ifnum\flags=3\relax\pgfplotstableuserowfalse
\else\relax\fi}
使用\skipnans{#1,A,\datatable}
会产生额外的 } 错误