必須値を持つpgfkeyの値を取得する

必須値を持つpgfkeyの値を取得する

簡単に言えば質問は次のとおりです。低レベルのものを実現するためのハンドラはありますか?\pgfkeysvalueofマクロが行うことを実現するハンドラーはありますか、それとも自分で実装する必要がありますか?もしそうなら、次の実装は合理的でしょうか?

\pgfkeysdef{/handlers/.value}{%
    \pgfkeysvalueof{\pgfkeyscurrentpath}%
}

背景 / コメント / 考え方 / 例

深く掘り下げてpgfkeys、舞台裏で何が起こっているのかを理解しようとして、私はセクションを読み始めましたキー管理pgfマニュアル(バージョン 3.1.1 の 946 ページのセクション 86)。すべてが「たった」25 ページに含まれているにもかかわらず、情報の密度は間違いなく高いので、私が何かを見逃している可能性はかなり高いです。そのため、私はここでいくつかのスレッドを読みました (123) 練習する前/練習中に。

それでも、私はある側面に少し驚いていますpgfkeysこの素敵な答えkeyはアクションと値の両方を格納できることは明らかです。また、=記号は割り当てと同義ではないため、が<key>=<value>持つべき意味 (つまり、<value>値であるか、実際にアクションに与えられるものであるか) に応じて異なる動作を行う必要があります。純粋な値 (つまり、関連付けられたアクションがない) を持つと仮定するとkey、その値を必須としてマークすることは理にかなっている可能性があります。

\pgfkeys{/my color/.initial = red, /my color/.value required}

この時点で、\pgfkeys{<full path of key>}この時点では、値なしでキーを使用する権限がないため、値を取得すること他の方法値を取得するには、 を使用する必要があります。ここまでは順調です。さて、\pgfkeysvalueofこの場合の最も簡単な答えのように見えますが、マニュアルでは、この種の低レベルコマンドを使用する「一般的な必要性」について繰り返し警告しています。たとえば、948 ページでは、

各キーにはトークンがいくつか保存されている可能性があり、以下に説明するように、キーに保存されているトークンを設定、取得、変更するためのコマンドが存在します。ただし、これらのコマンドを直接使用することはほとんどありません。むしろ、キーを使用する標準的な方法は、 コマンド、\pgfkeysまたは、たとえば のようにそれを内部的に使用するコマンドです\tikzset。したがって、次のコマンドをスキップして、次のサブセクションに進むこともできます。

また、抽象化のレベルを高く維持するためにハンドラーを使用するのも気に入っています。キーの値を取得しようとしてハンドラー/my colorを探しましたが、私の場合、マクロを使用する理由が見当たりません (つまり、マクロは/.get歓迎/store inされません)。そして、ここで、単に値を取得するハンドラーは利用できないようだと気付きました。

ボーナス質問:

できる限りハンドラーのみを使用するようにするのは良い考えでしょうか? ハンドラーはより高レベルのインターフェースのように見えるので、そう言えると思います。


MWE:

\documentclass[border=5mm, varwidth]{standalone}
\usepackage{pgfkeys}

\pgfkeysdef{/handlers/.value}{%
    \pgfkeysvalueof{\pgfkeyscurrentpath}%
}

\pgfkeys{/my color/.initial = red, /my color/.value required}

\begin{document}

    %My color is \pgfkeys{/my color}. %This clearly does not compile
    My color is \pgfkeysvalueof{/my color}.\\
    My color is \pgfkeys{/my color/.value}.

\end{document}

関連情報