Wie kann man speichernwörtlichCode in einer LaTeX3-Eigenschaftsliste?
Mein Ziel ist es, Personennamen in einer Eigenschaft innerhalb einer Eigenschaftenliste zu speichern. Das bedeutet, dass sowohl Akzente als auch Leerzeichen im Schlüssel gespeichert werden müssen name
. Hier ist mein Code:
\ExplSyntaxOn
\prop_new:N \aaa
\prop_put:Nnn \aaa {name} {Alfr\'ed R\'enyi}
\prop_item:Nn \aaa {name}
\ExplSyntaxOff
In der Ausgabe wird das Leerzeichen zwischen „Alfréd“ und „Rényi“ nicht angezeigt. Ich vermute, das liegt daran, \ExplSyntaxOn
dass LaTeX Leerzeichen ignoriert. Ich stecke hier fest. Irgendwelche Ideen?
Antwort1
Verwenden Sie entweder \space
oder ~
, sonst werden im expl3
Regime Leerzeichen verschlungen.
Außerdem habe ich den „falschen“ Namen der \prop
-Listenvariable entsprechend der expl3
Namenskonvention geändert, also \l_jaeya_name_prop
beispielsweise in .
\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}
Besser ist es, den Inhalt mit einem Wrapper zu speichern und abzurufen:
\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}