在日志文件的末尾打印一条消息

在日志文件的末尾打印一条消息

有没有办法将消息打印到日志文件以便它们出现在日志文件的最后几行?

这是我第一次尝试这样做的 MWE:

\documentclass{amsart}
\AtEndDocument{\typeout{*****************************************^^J
Here is my nice message^^J
*****************************************^^J}}
\begin{document}
Some important stuff.
\end{document}

乍一看,这似乎符合我的要求,因为在这种情况下,日志文件的结尾如下所示:

...
***********************************************************************
Here is my nice message
***********************************************************************

[1{/usr/local/texlive/2014/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./MWE.aux) )</usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/c
mr10.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/public/amsfonts/cm/cmr
7.pfb>
Output written on MWE.pdf (1 page, 20364 bytes).
Transcript written on MWE.log.

不幸的是,这是误导性的,因为这里我的消息和行之间的空隙Output written...非常短。在实际用例中,日志文件的结尾看起来更像是:

...
*****************************************
Here is my nice message
*****************************************

[7] (./realexample.aux) )
(see the transcript file for additional information){/usr/local/texlive/2014/te
xmf-dist/fonts/enc/dvips/base/8r.enc}{/usr/local/texlive/2014/texmf-dist/fonts/
enc/dvips/tex-gyre/q-ec.enc}</usr/local/texlive/2014/texmf-dist/fonts/type1/pub
lic/tex-gyre/qhvr.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/public/ne
wtx/rntxmi.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/public/txfonts/r
txb.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/public/txfonts/rtxmi.pf
b></usr/local/texlive/2014/texmf-dist/fonts/type1/public/txfonts/rtxr.pfb></usr
/local/texlive/2014/texmf-dist/fonts/type1/public/txfonts/rtxsc.pfb></usr/local
/texlive/2014/texmf-dist/fonts/type1/public/newtx/txex-bar.pfb></usr/local/texl
ive/2014/texmf-dist/fonts/type1/public/txfonts/txex.pfb></usr/local/texlive/201
4/texmf-dist/fonts/type1/public/txfonts/txsy.pfb></usr/local/texlive/2014/texmf
-dist/fonts/type1/public/txfonts/txsyb.pfb></usr/local/texlive/2014/texmf-dist/
fonts/type1/public/txfonts/txsyc.pfb></usr/local/texlive/2014/texmf-dist/fonts/
type1/urw/times/utmb8a.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/urw/
times/utmr8a.pfb></usr/local/texlive/2014/texmf-dist/fonts/type1/urw/times/utmr
i8a.pfb>
Output written on realexample.pdf (7 pages, 124830 bytes).
SyncTeX written on realexample.synctex.gz.
Transcript written on realexample.log.

也就是说,在现实生活中,我的消息和日志文件末尾之间存在很大的空间。

事实证明,Heiko Oberdiek 已经写了尽头包提供了各种命令,例如:\AtVeryEndDocument,,AtEndAfterFileList\AtVeryVeryEnd不幸的是,所有这些命令在日志文件中给出的输出与使用完全相同\AtEndDocument。类似地,电子工具箱命令\AfterEndDocument也无济于事……

有人知道怎么做吗?或者这是否不可能?考虑到 Heiko 的包,我怀疑这不可能做到。

最后,也许我应该说,我想要这样做的原因是为了提醒自己(和其他人)未记录的内部课程的选项列表......

答案1

您已经找到了写入.log文件的最新可能性:

  • \AtVeryVeryEnd包装atveryend
  • \AfterEndDocument包装etoolbox

将两个钩子都\end{document}放在最后一个\@@end (= 原始\end)之前\AtEndDocument还为时过早,因为随后会出现文件\clearpage的最终读取.aux及其重新运行警告。

但据我所知,TeX 代码中没有办法打印某些内容当 pdfTeX 完成文件输出时,它输出的字体.pdf

一个笨拙的解决方法是将最终消息写入文件,例如\jobname.message使用脚本,该脚本首先运行pdflatex,然后将文件的输出附加\jobname.message.log文件中。

相关内容