![Espaços em l3prop](https://rvso.com/image/353026/Espa%C3%A7os%20em%20l3prop.png)
Como alguém pode armazenarliteralmentecódigo em uma lista de propriedades LaTeX3?
Meu objetivo é armazenar nomes de pessoas em uma propriedade dentro de uma lista de propriedades. Isso significa que tanto os acentos quanto os espaços devem ser armazenados na chave name
. Aqui está meu código:
\ExplSyntaxOn
\prop_new:N \aaa
\prop_put:Nnn \aaa {name} {Alfr\'ed R\'enyi}
\prop_item:Nn \aaa {name}
\ExplSyntaxOff
A saída não mostra o espaço entre “Alfréd” e “Rényi”. Suspeito que isso se deva ao \ExplSyntaxOn
fato de o LaTeX ignorar o espaço. Estou preso aqui. Alguma ideia?
Responder1
Use \space
ou ~
, caso contrário os espaços serão devorados em expl3
regime.
Também alterei o nome 'errado' da \prop
variável -list de acordo com a expl3
convenção de nomenclatura, ou seja \l_jaeya_name_prop
, por exemplo.
\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}
A melhor maneira é armazenar e recuperar o conteúdo com um wrapper:
\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}