為什麼 `openin_any = p` 限制對 TEXMFDIST 中的套件的存取?

為什麼 `openin_any = p` 限制對 TEXMFDIST 中的套件的存取?

我使用openin_any = p(在自訂中設定TEXMFCNF)作為在(部分)用戶提供的 LaTeX 程式碼上運行的應用程式中的附加防線。這曾經工作正常,但更新到最新的 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 的一個 bug;在郵件列表上詢問後,他們修復

詳細資訊(也來自郵件清單)關於為什麼會發生這種情況:

這樣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

相關內容