Koyamin/ECNUThesis-Undergraduate

TeX Live 2023 排版异常

CCXXXI opened this issue · 7 comments

image

不太确定是不是 TeX Live 2023 的新问题,但是看仓库自带的两周前的示例是正常的,可疑的只有 TeX Live 版本了。

已确认,见后续补充。

该问题可以在 GitHub Actions 环境下复现:
https://github.com/CCXXXI/thesis/actions/runs/4571401362

可能的相关错误消息:
https://github.com/CCXXXI/thesis/actions/runs/4571401362/jobs/8069659642#step:4:535

./main.tex:114: You can't use `macro parameter character #' in restricted horiz
ontal mode.
<argument> ...map_inline:xn {\l__ecnu_tmpa_tl }{##
                                                  1\hfil }\unskip 
l.114 \begin{document}

加了 -f 强制生成的最终结果:
https://github.com/CCXXXI/thesis/suites/11934426081/artifacts/625338886

旧版本测试结果如下:

\hbox_to_wd:nn {#1}
{ \tl_map_inline:xn {#2} { ##1 \hfil } \unskip }

与当前版本不兼容,似乎原因在于 \tl_map_inline:xn 未找到定义,我不知道使用该函数具体目的何在,请问一下作者 @Koyamin

将其修改为

\hbox_to_wd:nn {#1} {\unskip #2 \unskip}

可使显示正常

为什么旧版没这个问题?(不重要,纯好奇

为什么旧版没这个问题?(不重要,纯好奇

可能要去翻一下 latex3 的提交记录了

最近也在用模版写论文,暂时还不方便用Tex Live 2023测试,抱歉。

\hbox_to_wd:nn {#1}
{ \tl_map_inline:xn {#2} { ##1 \hfil } \unskip }

\tl_map_inline:xn {<token list>} {<inline function>}的作用是对的token list中的每个元素,都应用inline function。看到最后编译结果出现了“1”,应该是##没有被正确转义。我猜原因是在该函数的参数xn上,不妨改成nn试试?

\hbox_to_wd:nn {#1} 
   { \tl_map_inline:nn {#2} { ##1 \hfil } \unskip } 

另外,无意中发现 \hbox_to_wd:nn 其实是可以直接使用的,仅需改成

\hbox_to_wd:nn {#1} {#2}

即可达到所需要的效果

87eabf7
应该是没问题了。