在这个帖子我发现了一些我现在经常使用的有效代码:
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
num value
1 2
2 5
1 3
3 2
1 4
2 1
}\data
\pgfplotstabletypeset[row predicate/.code={%
\pgfplotstablegetelem{#1}{num}\of{\data}
\ifnum\pgfplotsretval=1\relax
\else\pgfplotstableuserowfalse\fi}]{\data}
\end{document}
但是,我想创建一个 \newcommand 来实现这一点,但是它应该使用的表(此例中为 \data)是一个参数。
当然,这与 #1 的其他含义相冲突,即作为我的函数的第一个参数。有补救办法吗?
答案1
如果您引用的是宏中的宏的参数(/.code
在本例中是在 内),则需要使用##1
而不是#1
:
\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread{
num value
1 2
2 5
1 3
3 2
1 4
2 1
}\data
\newcommand{\filteredtable}[2]{
\pgfplotstabletypeset[row predicate/.code={%
\pgfplotstablegetelem{##1}{num}\of{#1}
\ifnum\pgfplotsretval=#2\relax
\else\pgfplotstableuserowfalse\fi}]{#1}
}
\verb|\filteredtable{\data}{1}|
\filteredtable{\data}{1}\vspace{1cm}
\verb|\filteredtable{\data}{2}|
\filteredtable{\data}{2}
\end{document}