帮助理解 expl3 中 clist 的一个简单示例

帮助理解 expl3 中 clist 的一个简单示例

抱歉,如果我的问题太过基础。我一个月前就开始学习了。我在学习的LaTeX同时,也产生了新的想法。话虽如此,有人能帮我理解一个简单的例子吗?这段代码有什么问题?clistexpl3

\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}

相关内容