Recuperando el valor de pgfkey que tiene un valor obligatorio

Recuperando el valor de pgfkey que tiene un valor obligatorio

La pregunta en resumen es:¿Existe un controlador para lograr lo que \pgfkeysvalueofhace la macro de bajo nivel o debería implementarlo yo mismo?Si es así, ¿es lo siguiente una implementación razonable?

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

Antecedentes / Comentarios / Línea de pensamientos / Ejemplo

Profundizando en el pgfkeysmundo y tratando de entender lo que sucede detrás de escena, comencé a leer la sección.Gestión de clavesdelpgfmanual(artículo 86 a la página 946 en la versión 3.1.1). A pesar de que todo está contenido en "sólo" 25 páginas, la densidad de información es definitivamente alta y, por lo tanto, la probabilidad de que me haya perdido algún punto es bastante alta. Por eso leí algunos hilos por aquí (1,2,3) antes/durante la realización de alguna práctica.

Aún así, estoy un poco sorprendido por un aspecto del pgfkeyspaquete. Deesta buena respuestaEstá bastante claro que a keypuede almacenar tanto una acción como un valor. Y como el =signo no es sinónimo de asignación, hay que actuar de manera diferente dependiendo del significado que deba <key>=<value>tener (es decir, ¿es <value>un valor o en realidad algo que se le debe dar a la acción?). Suponiendo que tenga un valor puro key(es decir, sin ninguna acción asociada), podría tener sentido marcar su valor según sea necesario.

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

En este punto, ya no es cierto que \pgfkeys{<full path of key>}recuperaremos el valor, ya que no estamos autorizados a usar la clave sin un valor. Uno de losotras maneraspara recuperar el valor se debe utilizar. Hasta ahora, todo bien. Ahora, a pesar de que \pgfkeysvalueofparece la respuesta más simple en este caso, el manual advierte repetidamente sobre la "no necesidad general" de usar este tipo de comandos de bajo nivel. Por ejemplo, en la página 948,

Cada clave (puede) almacenar algunos tokens y existen comandos, que se describen a continuación, para configurar, obtener y cambiar los tokens almacenados en una clave. Sin embargo, rara vez utilizará estos comandos directamente. Más bien, la forma estándar de usar las teclas es el \pgfkeyscomando o algún comando que las use internamente como, por ejemplo, \tikzset. Por lo tanto, es posible que desee omitir los siguientes comandos y continuar con la siguiente subsección.

También me gusta el uso de controladores para mantenerme en un nivel superior de abstracción. Entonces, tratando de recuperar el valor de la clave, /my colorbusqué un controlador, pero en mi caso no veo ninguna razón para pasar por una macro (es decir, /.getno /store inson bienvenidos). Y aquí me di cuenta de que no parece haber disponible ningún controlador para simplemente recuperar el valor.

Pregunta extra:

¿Es una buena filosofía intentar utilizar manipuladores exclusivamente en la medida de lo posible? Me parecen una interfaz de nivel superior y por eso lo diría.


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}

información relacionada