到目前为止,我有一个文件,我从中读取数据到宏中\data
(在 MWE 中,我用代码表替换了该文件)。从这个表中,只选择并打印了 3 行。
我想要实现的是将过滤后的表格(只有 3 行)放回到宏中\datafiltered
。或者反过来,从头开始读取这 3 行。所以我在读取时寻找过滤选项。有类似的东西吗?
关于意图的一些信息:此宏应与来自其他两个文件输入的两个相同宏一起使用,并将它们垂直连接到一个长表。然后需要将此长表与已经存在的表水平连接(添加列)。但是,我认为只要我在宏中拥有过滤后的表,这将没有问题。
梅威瑟:
\documentclass{minimal}
\usepackage{pgfplotstable}
\begin{document}
\makeatletter
\pgfplotstableset{
discard if not/.style n args={4}{
row predicate/.code={
\def\pgfplotstable@loc@TMPd{\pgfplotstablegetelem{##1}{#1}\of}
\expandafter\pgfplotstable@loc@TMPd\pgfplotstablename
\edef\tempa{\pgfplotsretval}
\edef\tempb{#2}
\edef\tempc{#3}
\edef\tempd{#4}
\ifx\tempa\tempb
\else
\ifx\tempa\tempc
\else
\ifx\tempa\tempd
\else
\pgfplotstableuserowfalse
\fi
\fi
\fi
}
}
}
\makeatother
\pgfplotstableread{
num value
1 2
2 5
3 3
4 2
5 4
6 1
}\data
\pgfplotstabletypeset[col sep=semicolon,discard if not={num}{1}{2}{3}]{\data}
\end{document}