¿Cómo se puede almacenarliteral¿Código en una lista de propiedades de LaTeX3?
Mi objetivo es almacenar nombres de personas en una propiedad dentro de una lista de propiedades. Esto significa que tanto los acentos como los espacios deben almacenarse en la clave name
. Aquí está mi código:
\ExplSyntaxOn
\prop_new:N \aaa
\prop_put:Nnn \aaa {name} {Alfr\'ed R\'enyi}
\prop_item:Nn \aaa {name}
\ExplSyntaxOff
El resultado no muestra el espacio entre "Alfréd" y "Rényi". Sospecho que esto se debe a \ExplSyntaxOn
que LaTeX ignora el espacio. Estoy atrapado aquí. ¿Algunas ideas?
Respuesta1
O se usa \space
o ~
, de lo contrario, los espacios son devorados en expl3
régimen.
También cambié el nombre "incorrecto" de la \prop
variable -list de acuerdo con la expl3
convención de nomenclatura, es decir \l_jaeya_name_prop
, por ejemplo.
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\prop_new:N \l_jaeya_name_prop
\prop_put:Nnn \l_jaeya_name_prop {name} {Alfr\'ed\space R\'enyi}
\prop_put:Nnn \l_jaeya_name_prop {othername} {Arthur~Gumby}
\prop_item:Nn \l_jaeya_name_prop {name}~and~\prop_item:Nn \l_jaeya_name_prop {othername}
\ExplSyntaxOff
\end{document}
Una mejor manera es almacenar y recuperar el contenido con un contenedor:
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\prop_new:N \l_jaeya_name_prop
\cs_new:Npn \storename #1#2{% The % isn't necessary, just for convenience for more complicated macros to remember where which bracket starts.
\prop_put:Nnn \l_jaeya_name_prop {#1} {#2}
}
\cs_new:Npn \retrievename #1{%
\prop_item:Nn \l_jaeya_name_prop {#1}
}
\ExplSyntaxOff
\begin{document}
\storename{name}{Alfr\'ed R\'enyi}
\storename{othername}{Arthur Gumby}
\retrievename{name} and \retrievename{othername}
\end{document}