我正在尝试封装一些pgfplotstable
涉及设置的代码row predicate
。如果您正在检查谓词代码中的表值,则需要访问表,而这里似乎唯一可行的方法是硬编码已加载表的命令名称,这不利于代码重用,并且样式的其他方面也会根据具体情况而变化。但是,如果您将这些内容放在宏中,最终会混淆谁#1
是谁,因为编写行谓词的代码涉及区分样式#1
的直接参数和实际使用代码时行号的延迟参数“##1”。
答案1
以下示例调用\mysetpredicate
表明您必须将哈希值加倍。四,对于谓词本身将变为二以获取行号。二,对于将变为一以获取样式参数以及一作为包装函数的参数。我很惊讶我可以按原样传递文件链接。我最初认为我不能,并且浪费了很多时间尝试各种没有奏效的棘手方法。首先使用pgfplotsreadtablenew
或构建您的表,然后在调用 之前pgfplotsreadtableread
调用。\mysetpredicate{\mytable}
\pgfplotstabletypeset
\def\mysetpredicate#1{
\pgfkeys{%
/pgfplots/table/select rows/.style={%
row predicate/.code={%
\ifnum####1=0\relax\myrowtally=1\relax\mynumrows=##1\relax\fi
\ifnum\myrowtally>\pt@numrows@val\pgfplotstableuserowfalse
\else\pgfplotstablegetelem{####1}{mycheckcolumn}\of{#1}%
\ifnum\pgfplotsretval>1
\pgfplotstableuserowfalse
\else\advance\myrowtally by 1
\fi\fi
}
}
}
}