在最终编译器消息之后打印到终端?

在最终编译器消息之后打印到终端?

我只使用 lualatex,但我相信这是一个普遍的 *.tex 问题:

从命令行(Linux,可能是任何系统)进行编译,终端响应以如下内容结束:

507 words of node memory still in use:
...
...
Output written on xxx.pdf (7 pages, 63101 bytes).
Transcript written on xxx.log.

我想在终端返回命令提示符的位置上方放置一条消息。这可能吗?

使用包没有帮助atveryend。如果我写\AtVeryVeryEnd{\typeout{DONE!}}它,它将出现在上面显示的结论消息上方。

我为什么要这样做:我有一个自定义文档类,可以分析用户设置和字体指标并提供重要信息。我知道如何做到这一点。但信息总是显示在 TeX 结束消息的上方,用户可能会忽略它。用户不是程序员,因此他们不需要有关内存等的 TeX 信息。

我无法使用 shell escape。

答案1

您无法在经典 tex 中做到这一点,但 luatex 允许您访问 Lua。

终端输出以“hello world”结尾

This is LuaHBTeX, Version 1.17.0 (TeX Live 2023) 
 restricted system commands enabled.
(./ee276.tex
LaTeX2e <2023-06-01> patch level 1
L3 programming layer <2023-10-23>
 (/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-luatex.def)
(./ee276.aux) (/usr/local/texlive/2023/texmf-dist/tex/latex/base/ts1cmr.fd)
[1{/usr/local/texlive/2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./ee276.aux))</usr/local/texlive/2023/texmf-dist/fonts/opentype/public/lm/lmro
man10-regular.otf>

hello world



\documentclass{article}

\directlua{
luatexbase.add_to_callback('stop_run',
function ()
texio.write("\string\n\string\n hello world\string\n")
end,
"final message"
)
}
\begin{document}

aaa


\end{document}

如上所示,stop_run回调取代通常的统计数据打印。如果你用 替换它,stop_run那么wrapup_run它就会打印常规统计数据

此回调的完整文档如下

此回调在 pdf 和日志文件关闭后调用。使用它需要您自担风险。

但我认为这里足够安全

$ lualatex ee276
This is LuaHBTeX, Version 1.17.0 (TeX Live 2023) 
 restricted system commands enabled.
(./ee276.tex
LaTeX2e <2023-06-01> patch level 1
L3 programming layer <2023-10-23>
 (/usr/local/texlive/2023/texmf-dist/tex/latex/base/article.cls
Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
(/usr/local/texlive/2023/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2023/texmf-dist/tex/latex/l3backend/l3backend-luatex.def)
(./ee276.aux) (/usr/local/texlive/2023/texmf-dist/tex/latex/base/ts1cmr.fd)
[1{/usr/local/texlive/2023/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./ee276.aux))
 406 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 4 attribute, 48 glue_spec
, 4 attribute_list, 1 write nodes
   avail lists: 2:22,3:4,4:1,5:22,6:2,7:34,9:18
</usr/local/texlive/2023/texmf-dist/fonts/opentype/public/lm/lmroman10-regular.
otf>
Output written on ee276.pdf (1 page, 2613 bytes).
Transcript written on ee276.log.


hello world

相关内容