抱歉,如果我的问题太过基础。我一个月前就开始学习了。我在学习的LaTeX
同时,也产生了新的想法。话虽如此,有人能帮我理解一个简单的例子吗?这段代码有什么问题?clist
expl3
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\DeclareListOfValues}{ m m }
{
\clist_new:N \g_list_of_values_#1
\clist_set:Nn \g_list_of_values_#1 {#2}
}
\NewDocumentCommand{\GetValueFromList}{ m m }
{
\clist_item:Nn \g_list_of_values_#1 {#2}
}
\ExplSyntaxOff
\DeclareListOfValues{FirstList}{1.11, 1.22}
\begin{document}
\GetValueFromList{FirstList}{2} % -> 1.22
\end{document}
我将不胜感激任何帮助。
答案1
您不能直接 #1
在变量名末尾添加 。相反,您应该使用\clist_new:c
,它接受“命令名”。事实上,正如 Joesph 在评论中指出的那样,最好使用\clist_gclear_new:c
。虽然不是强制性的,但建议的样式是以 结尾您的 clist 变量名clist
。
这是您的代码的更正版本。
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\DeclareListOfValues}{ m m }
{
\clist_gclear_new:c {g_list_of_values_#1_clist}
\clist_gset:cn {g_list_of_values_#1_clist} {#2}
}
\NewDocumentCommand{\GetValueFromList}{ m m }
{
\clist_item:cn {g_list_of_values_#1_clist} {#2}
}
\ExplSyntaxOff
\DeclareListOfValues{FirstList}{1.11, 1.22}
\begin{document}
\GetValueFromList{FirstList}{2} % -> 1.22
\end{document}