`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問題ないはずです。これはバグですか、それとも意図的な変更ですか。いずれにせよ、私はTEXMFDISTtex ファイルを含むディレクトリに加えて 内のすべてのものにアクセスできるソリューションを探しています。

答え1

これは確かにtexliveのバグでした。メーリングリストで尋ねたところ、修正しました

詳細(メーリングリスト) は、なぜこのようなことが起こったのかについて詳しく述べています。

を使用すると、openin_any=pほとんどの LaTeX パッケージを正常にロードできます。xparse(-generic.tex) に固有の問題は、 \pdffilesizeファイルが存在するかどうかを確認するために -based (expandable) テストを使用する点です。前回のメールで述べたように、\pdffilesize は次のエラーで失敗します openin_any=p

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

そして、それが Akira さんのパッチで解決されるものです。

あなたが言及しているこの「古い動作」とは、数か月前までは、ほとんどのパッケージと同様に xparse が xparse.sty で一度にすべてロードされていました (そして、これまでどおりに動作していました)。しかし、現在は「ローダー」(およびレガシー (使用しないでください) インターフェース) と のコード大部分に分割されています xparse-generic.tex。後者は を使用しているため\pdffilesize、 で失敗します openin_any=p

関連情報