const 变量被修改
https://github.com/CTeX-org/ctex-kit/blob/1ee66c6f130802d3400f893db01fd6a6701ab164/xeCJK/xeCJK.dtx#L2327-L2330
https://github.com/CTeX-org/ctex-kit/blob/1ee66c6f130802d3400f893db01fd6a6701ab164/xeCJK/xeCJK.dtx#L2449-L2450
请问这里的 \c_@@_FullLeft_chars_clist 和 \c_@@_FullRight_chars_clist 是不是应该改为 \g_@@_FullLeft_chars_clist 和 \g_@@_FullRight_chars_clist?因为 const 变量应该不能被 \clist_gconcat:NNN 函数修改。
它们仍应是常量(\c_..._clist),但设置方式要改一下。
在 latex3/latex3#1629 提供更多创建常量的函数前,可以用
% collect content in \l_..._clist, in multiple steps
\clist_const:Ne \c_..._clist { \clist_use:N \l_..._clist } % \clist_use:N needs l3kernel 2024-12-09
之类的办法绕过。这里的 clist 内容好像不会进一步展开(待确认),所以不用抑制展开。
我之前尝试让 xeCJK 和 ctex 在设置 \debug_on:n { check-declarations } 时不报错时,也发现了这个问题。我本地分支有一个 24 年 3 月的修改,当时还只有 \clist_use:Nn(nn)。
我之前尝试让
xeCJK和ctex在设置\debug_on:n { check-declarations }时不报错时,也发现了这个问题。我本地分支有一个 24 年 3 月的修改,当时还只有\clist_use:Nn(nn)。
我也是开了 debug 模式发现这个问题,如果是 2024 年之前的版本,应该可以用
\clist_const:Ne \c_..._clist { \clist_use:Nn \l_..._clist { , } }
我本地分支有一个 24 年 3 月的修改,当时还只有
\clist_use:Nn(nn)。
可能是让我没推到 github 的理由(当时的实现也有 bug):\clist_const:Nn 和 \clist_use:Nn 都会按 clist 重新 parse 一次 n-参数的内容,没有假想中的 \clist_const_eq:NN 快。
不拘泥的话,用 \tex_global:D \tex_let:D 或 \cs_gset_eq:NN 总是可以的。