- 使用临时变量时,特别是需要用到
\.._put_left:Nn,\.._put_right:Nn等命令时,要注意先清空变量; - 使用
\dim_compare:nNn..时,第 1、3 个参数必须是具体的长度(或长度表达式);
如此得到的\l_tmpb_clist为:{11.5632pt,34.68959pt,23.12639pt}
本例中,在使用 \clist_sort:Nn 之前,你可以用 \clist_show:N \l_tmpb_clist 看看是不是你想的那个结果:
\clist_set:Nn \l_tmpa_clist { ha, hahaha, haha }
\clist_clear:N \l_tmpb_clist
\clist_map_inline:Nn \l_tmpa_clist
{
\clist_put_right:Nn \l_tmpb_clist
{
\hcoffin_set:Nn \l_tmpa_coffin {#1}
\dim_use:N \coffin_wd:N \l_tmpa_coffin
}
}
\clist_show:N \l_tmpb_clist为什么结果不是 {11.5632pt,34.68959pt,23.12639pt} 而是
The comma list \l_tmpb_clist contains the items (without outer braces):
> {\hcoffin_set:Nn \l_tmpa_coffin {ha}\dim_use:N \coffin_wd:N \l_tmpa_coffin}
> {\hcoffin_set:Nn \l_tmpa_coffin {hahaha}\dim_use:N \coffin_wd:N \l_tmpa_coffin }
> {\hcoffin_set:Nn \l_tmpa_coffin {haha}\dim_use:N \coffin_wd:N \l_tmpa_coffin }因为你用的是 \clist_put_right:Nn,而
要把长度保存到 \l_tmpb_clist 里,而不是 \hcoffin_se...,可以这样:
\clist_set:Nn \l_tmpa_clist { ha, hahaha, haha }
\clist_clear:N \l_tmpb_clist
\clist_map_inline:Nn \l_tmpa_clist
{
\hcoffin_set:Nn \l_tmpa_coffin {#1}
\clist_put_right:Nx \l_tmpb_clist
{ \dim_use:N \coffin_wd:N \l_tmpa_coffin }
}
\clist_sort:Nn \l_tmpb_clist
{
\dim_compare:nNnTF {#1} > {#2}
{ \sort_return_same: }
{ \sort_return_swapped: }
}






问 逗号列表中元素按其所占空间长度排序的问题