簡単に言えば質問は次のとおりです。低レベルのものを実現するためのハンドラはありますか?\pgfkeysvalueof
マクロが行うことを実現するハンドラーはありますか、それとも自分で実装する必要がありますか?もしそうなら、次の実装は合理的でしょうか?
\pgfkeysdef{/handlers/.value}{%
\pgfkeysvalueof{\pgfkeyscurrentpath}%
}
背景 / コメント / 考え方 / 例
深く掘り下げてpgfkeys
、舞台裏で何が起こっているのかを理解しようとして、私はセクションを読み始めましたキー管理のpgf
マニュアル(バージョン 3.1.1 の 946 ページのセクション 86)。すべてが「たった」25 ページに含まれているにもかかわらず、情報の密度は間違いなく高いので、私が何かを見逃している可能性はかなり高いです。そのため、私はここでいくつかのスレッドを読みました (1、2、3) 練習する前/練習中に。
それでも、私はある側面に少し驚いています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}