更新的 \l_file_search_path_seq (expl3) 不再识别 `~` (TeX Live 2023 昨天更新)

更新的 \l_file_search_path_seq (expl3) 不再识别 `~` (TeX Live 2023 昨天更新)

[这个问题是(已更正)更新后的 \l_file_search_path_seq (expl3) 不再识别 `~` (TeX Live 2023 昨天更新)

昨天使用更新 TeX Live 2023 后tlmgr,以下代码不再起作用:

\documentclass{article}
\ExplSyntaxOn
\seq_put_right:Nn \l_file_search_path_seq { ~/path/to/some/place }
\cs_new_protected_nopar:Nn \my_file_input: { \file_input:n {subdirectory/filename} }
\cs_new_eq:NN \myinput \my_file_input:
\ExplSyntaxOff

\begin{document}
\myinput
\end{document}

具体来说,subdirectory/filename没有找到,

! LaTeX Error: File 'subdirectory/filename' not found.

~/path/to/some/place/subdirectory/filename.tex存在。上周,pdflatex毫不费力就找到了它。

如果我用我的主目录路径替换,则可以找到该文件。但是,早期的 TeX Live(更新前的 2023 和更早版本)不需要这样做。为了检查,我使用 TeX Live 2022 编译了相同的代码~,文件可以正常找到。~/path/to/some/placepdflatex

这是预料之中的吗?有什么方法可以恢复旧的行为吗?如果可以避免,我宁愿不对我的主目录的路径进行硬编码,因为不这样做会使事情更具可移植性。

答案1

代码在更新之前是不可能运行的,事实上,我几天来一直在没有更新的情况下测试它,而且也使用 TeX Live 2022 及更早版本进行了测试。

使代码工作的唯一方法是使用

\seq_put_right:Nx \l_file_search_path_seq { \c_tilde_str/path/to/some/place }

因此使用带有“安全”类别代码的波浪符号。如果路径中有非 ASCII 位,则可以执行

\seq_put_right:Nx \l_file_search_path_seq { \c_tilde_str \exp_not:n { /path/to/some/place } }

以获得额外的安全。

相关内容