Espaços em l3prop

Espaços em l3prop

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 \ExplSyntaxOnfato de o LaTeX ignorar o espaço. Estou preso aqui. Alguma ideia?

Responder1

Use \spaceou ~, caso contrário os espaços serão devorados em expl3regime.

Também alterei o nome 'errado' da \propvariável -list de acordo com a expl3convençã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}

insira a descrição da imagem aqui

informação relacionada