为什么‘openin_any = p’限制对 TEXMFDIST 中的包的访问?

为什么‘openin_any = p’限制对 TEXMFDIST 中的包的访问?

我在运行(部分)用户提供的 LaTeX 代码的应用程序中,使用openin_any = p(在自定义中设置TEXMFCNF)作为额外的防线。这曾经运行良好,但在更新到最新的 texlive 2020 后,现在几乎任何文档的构建都会失败:

/opt/texlive/bin/x86_64-linux/xelatex: Not reading from /opt/texlive/texmf-dist/tex/latex/l3packages/xparse/xparse-generic.tex (openin_any = p).
! LaTeX3 Error: File 'xparse-generic.tex' not found.

据我所知,即使有openin_any = p文件TEXMFDIST也应该没问题。这是一个错误,还是故意更改的。无论如何,我正在寻找一种解决方案,允许访问除TEXMFDIST包含我的 tex 文件的目录之外的任何内容。

答案1

这确实是 texlive 的一个错误;在邮件列表上询问后,他们修复

详细信息(也来自邮件列表)为什么会发生这种情况:

使用后,openin_any=p您可以正常加载大多数 LaTeX 包。xparse(-generic.tex) 特有的问题是它使用 \pdffilesize基于 (可扩展) 的测试来检查文件是否存在,正如我在上一封邮件中所说,\pdffilesize 会失败 openin_any=p

export openin_any=p && pdftex '\pdffilesize{sample2e.tex}\bye'

这就是 Akira-san 的补丁要解决的问题。

您提到的这种“旧行为”是指,直到几个月前,xparse 还是像大多数包一样在 xparse.sty 中一次性加载的(并且像往常一样工作),但现在它被拆分为“加载器”(以及旧式---不使用---接口)和 中的大部分代码 xparse-generic.tex。由于后者使用\pdffilesize,因此它会因 而失败 openin_any=p

相关内容