Pgfkeys:获取已定义(子)键的列表

Pgfkeys:获取已定义(子)键的列表

我想了解是否pgfkeys已经提供了一种方法(尽管据我所知没有记录)来获取路径中定义的键的列表,即

\pgfkeys{
    /my/path/a = 1,
    /my/path/b/c = x,
}
\pgfkeysdefinedat{/my/path}{\thekeyslist} % missing macro
\thekeyslist      -> {a,b/c} % also acceptable with full path
% also acceptable -> {a,b}

(理想情况下,这将被打包到处理程序中/.ls=\macro

如果不支持,我想知道定义明确累积键名的处理程序的惯用方法是什么:

\pgfkeys{
    /my/path/a/.track={code of key a},
    /my/path/b/.track={code of key b},
    /my/path/.ls/.get=\thekeyslist,
}
\thekeyslist -> {a,b}

其中/.track={code}相当于/.code={code}但具有将键名称累积到 中的副作用/.ls

否则,作为最后的手段,

\pgfkeys{
    /my/path/a/.track={\thekeyslist}{code of key a},
    /my/path/b/.track={\thekeyslist}{code of key b},
}
\thekeyslist -> {/my/path/a,/my/path/b}

答案1

土拨鼠幽灵已经开发出实验包对于一个问题topanswers.xyz/tex它可以跟踪处理程序的使用情况.code

代码

\documentclass{article}
\usepackage{pgf-pathology}
\usepackage[edges]{forest}
\pgfkeys{install tracking for={.code}}
\pgfkeys{
  /my/path/a/.code = #1,
  /my/path/b/c/.code = #1
}
\begin{document}
\FolderForestContent{/my/path/}
\bracketset{action character=@}
\begin{forest} for tree={grow'=0,folder}
@\ForestContent
\end{forest}
\end{document}

输出

在此处输入图片描述

相关内容