如何在 `pgfplots` 中封装行谓词

如何在 `pgfplots` 中封装行谓词

我正在尝试封装一些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
            }
        }
    }
}

相关内容