
clist no está configurado correctamente con \cs_if_exist_use:c
o \csname ... \endcsname
, parece que hay llaves adicionales. Si uso \clist_set:Nx
, ocurre un error.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\expandafter\def\csname test-1\endcsname{a,$\alpha\dotsb$,b}
\ExplSyntaxOn
\clist_new:N \l_test_clist
\NewDocumentCommand {\test} {}
{
\clist_set:No \l_test_clist {\cs_if_exist_use:c {test-1}}
\clist_use:Nn \l_test_clist {*}
}
\ExplSyntaxOff
\begin{document}
\test
\end{document}
Respuesta1
En primer lugar, debe usarse con a , no con (funciona porque su implementación es similar, pero no puedes confiar en eso). Además, a menos que se documente que una función se expande completamente en\cs_if_exist_use:c
cs
clist
nortepasos, no tienes garantía de que se expandirá ennortepasos, y si lo hace, puede cambiar eventualmente (por ejemplo, \char_generate:nn
y \prg_replicate:nn
están documentados para expandirse en dos pasos, por lo que puede confiar en eso).
Para obtener lo que desea, puede usar una x
expansión \clist_if_exist:cT
y luego proteger elvalorde la clist
expansión usando \exp_not:v
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\expandafter\def\csname test-1\endcsname{a,$\alpha\dotsb$,b}
\ExplSyntaxOn
\clist_new:N \l_test_clist
\NewDocumentCommand {\test} {}
{
\clist_set:Nx \l_test_clist
{
\clist_if_exist:cT {test-1}
{ \exp_not:v { test-1 } }
}
\clist_use:Nn \l_test_clist {*}
}
\ExplSyntaxOff
\begin{document}
\test
\end{document}
Respuesta2
La o
variante hará unsolteropaso de expansión. Necesitas mucho más para llegar al clist.
Si desea utilizar nombres simbólicos para las listas, hágalo de una manera más adecuada. No debes contar con \def\zzz{a,b,c}
ser un expl3
clista “real”.
\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\defineclist}{mm}
{
\clist_clear_new:c { l__zhiyuanlck_#1_clist }
\clist_set:cn { l__zhiyuanlck_#1_clist } { #2 }
}
\NewDocumentCommand {\test} {m}
{
\clist_if_exist:cTF { l__zhiyuanlck_#1_clist }
{
\clist_use:cn { l__zhiyuanlck_#1_clist } {*}
}
{OOPS}
}
\ExplSyntaxOff
\defineclist{test-1}{a,$\alpha\dotsb$,b}
\begin{document}
\test{test-1}
\test{test-2}
\end{document}