使用 Lua 標記字體警告

使用 Lua 標記字體警告

使用 lualatex、TeXlive2024、Linux。

在一個先前的問題,Marcel Krüger 展示如何使用 Lua 來追蹤錯誤。本質上,如果報告任何錯誤,則該代碼會設定一個標誌。最後,我可以使用其他程式碼檢測該標誌,在 PDF 中執行某些操作(修改其元資料),並在終端中寫入最終訊息。我常用這個。很有幫助。

當訊息透過 GenericError 或 GenericWarning 機制傳入時,還有其他方法(簡單的 LaTeX 程式碼 hack)用於設定標誌。

但是當問題導致我丟失字元時,我一直無法使用標誌方法。我 grep forMissing characterMissing~character intexmf-dist沒有成功,所以(至少對於 lualatex)訊息是由二進位產生的。微量元素:

\documentclass{article}
% Compile with lualatex, which uses fontspec and Latin Modern Roman.
\begin{document}
I could use a ⛾ right now.
\end{document}

如果使用 進行編譯pdflatex,則會出現此錯誤: ! LaTeX Error: Unicode character ⛾ (U+26FE) not set up for use with LaTeX. 編譯器在此停止。如果使用者繼續查看錯誤訊息,則會產生 PDF。如果使用 TeXworks,錯誤將被偵測到並在「錯誤、警告、壞框」中報告。

如果使用TeXworks編譯lualatex,則出現非錯誤訊息,編譯器會繼續到最後,不會停止: Missing character: There is no ⛾ (U+26FE) in font [lmroman10-regular]:+tlig;! 如果使用TeXworks,則不會在「錯誤,警告,壞框」中偵測到。

Lua 錯誤追蹤不會偵測到遺失字元訊息。我嘗試通過更改error為(停頓大笑)來破解代碼,warning但這沒有用。

所以我的問題是,當字元丟失時如何設定標誌?它不需要記錄字元、字體或頁面。只是一個簡單的真/假,我可以偵測到 AtEndDocument。虛擬程式碼:

\documentclass{article}
\newif\iffoo
\directlua{
% This would be the code that sets the foo flag, if missing character.
}
\AtEndDocument{\iffoo\typeout{EEEEEEEK}\fi}
\begin{document}
I could use a ⛾ right now.
\end{document}

順便說一句,我知道後備字體機制。如果使用後備,則僅當後備中也缺少字元時才會產生遺失字元訊息。

為什麼我要這樣做:在我的工作流程中,有問題的 PDF 必須包含將其標記為未就緒的元資料。我知道如何編寫該元資料 AtEndDocument。

事後思考:我可以選擇啟用該lua-typo套件來檢測不是 PDF 問題的可讀性問題。驚人的。

答案1

LuaTeX 暫存器\tracinglostchars應設為 3。

相關內容