![Пробелы в l3prop](https://rvso.com/image/353026/%D0%9F%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%D1%8B%20%D0%B2%20l3prop.png)
Как можно хранитьдословнокод в списке свойств LaTeX3?
Моя цель — хранить имена людей в свойстве внутри списка свойств. Это означает, что и акценты, и пробелы должны храниться в ключе name
. Вот мой код:
\ExplSyntaxOn
\prop_new:N \aaa
\prop_put:Nnn \aaa {name} {Alfr\'ed R\'enyi}
\prop_item:Nn \aaa {name}
\ExplSyntaxOff
В выводе не отображается пробел между "Alfréd" и "Rényi". Подозреваю, это из-за того, \ExplSyntaxOn
что LaTeX игнорирует пробел. Я застрял здесь. Есть идеи?
решение1
Либо используйте \space
, либо ~
, в противном случае пространство будет поглощено expl3
режимом.
Я также изменил «неправильное» имя \prop
переменной -list в соответствии с expl3
соглашением об именовании, например \l_jaeya_name_prop
, .
\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}
Лучший способ — хранить и извлекать содержимое с помощью оболочки:
\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}