首先需要明白的是 tex/expl3
是一门宏语言, 没有函数, 也没有返回值, 有的只是宏展开
- 先说点题外话
\tl_set:Ne \l__skyrmion_tmp_tl
{
\__skyrmion_process_array_aux:nn
{ example-image-a/yyyy1-mm1-dd1,example-image-b/yyyy2-mm2-dd2 }{2}
}
e
展开了个寂寞, \cs_new_protected_nopar:Npn \__skyrmion_process_array_aux:nn
- 你的需求是将
\__skyrmion_process_array_aux:nn
的运行结果交给变量\l__skyrmion_tmp_tl
, 你可以使用\tl_analysis_log:N \l__skyrmion_tmp_tl
看看它究竟是个什么东西. (一堆未展开的东西) - 要想在
expl3
中得到所谓的函数展开值, 建议将其声明在参数列表中
\cs_new_protected_nopar:Npn \__skyrmion_process_array_aux:nnN #1#2#3
{
\clist_set:Nn \l__skyrmion_tmp_clist {#1}
\seq_set_split:Nne \l__skyrmion_tmp_seq {/}
{ \clist_item:Nn \l__skyrmion_tmp_clist {#2} }
% here ^_^
\tl_set:Ne #3
{ \seq_item:Nn \l__skyrmion_tmp_seq {1} }
\seq_clear:N \l__skyrmion_tmp_seq
\clist_clear:N \l__skyrmion_tmp_clist
}
使用
\__skyrmion_process_array_aux:nnN
{ example-image-a/yyyy1-mm1-dd1,example-image-b/yyyy2-mm2-dd2 }{2}
\l__skyrmion_tmp_tl
\includegraphics [ width = 2cm ] { \l__skyrmion_tmp_tl }
.
问 用expl3定义的命令读取二维 sequence 中的某个元素,若这个元素为我设置的文件名,此时将其应用于 \includegraphics{} 中报错,展开也没用