Utilice Lua para marcar advertencias de fuentes

Utilice Lua para marcar advertencias de fuentes

Usando lualatex, TeXlive2024, Linux.

en unpregunta anterior, Marcel Krüger mostró cómo utilizar Lua para realizar un seguimiento de los errores. En esencia, ese código establece una bandera, si se informa algún error. Al final, puedo detectar la bandera con otro código, hacer algo en el PDF (modificar sus metadatos) y escribir un mensaje final en la Terminal. Uso esto todo el tiempo. Muy útil.

Existen otros métodos (trucos simples de código LaTeX) para configurar una bandera, cuando llega un mensaje a través del mecanismo GenericError o GenericWarning.

Pero no he podido utilizar el método de bandera, cuando el problema se debe a que falta un carácter. Busqué Missing charactery Missing~character entré texmf-distsin éxito, por lo que (al menos para lualatex) el mensaje es generado por el binario. MWE:

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

Si se compila con pdflatex, se produce este error: ! LaTeX Error: Unicode character ⛾ (U+26FE) not set up for use with LaTeX. El compilador se detiene allí. Si el usuario continúa pasando el mensaje de error, se genera un PDF. Si utiliza TeXworks, el error se detectará y se informará entre "errores, advertencias, cuadros defectuosos".

Si se compila con lualatex, hay un mensaje que no es de error, el compilador continúa hasta el final, sin detenerse: Missing character: There is no ⛾ (U+26FE) in font [lmroman10-regular]:+tlig;! Si se usa TeXworks, no se detecta entre "errores, advertencias, cuadros defectuosos".

El seguimiento de errores de Lua no detecta el mensaje de carácter faltante. Intenté piratear el código cambiándolo errora warning(pausa para reír) pero no funcionó.

Entonces mi pregunta es, ¿cómo puedo configurar una bandera cuando falta un personaje? No es necesario registrar el carácter, ni la fuente, ni la página. Solo un simple verdadero/falso que puedo detectar AtEndDocument. Pseudocódigo:

\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}

Por cierto, conozco el mecanismo de fuente alternativa. Si se utiliza un respaldo, el mensaje de carácter faltante solo se generará si también falta en el respaldo.

Por qué quiero hacer esto: en mi flujo de trabajo, un PDF problemático debe contener metadatos que lo marquen como no listo. Sé cómo escribir esos metadatos AtEndDocument.

Pensamiento posterior: Opcionalmente, habilito el lua-typopaquete para detectar problemas de legibilidad que no sean problemas de PDF. Asombroso.

Respuesta1

El registro LuaTeX \tracinglostcharsdebe establecerse en 3. Entonces, el carácter que falta en la fuente actual se comporta como un error normal.

información relacionada