我以非交互式模式(或)pdflatex
运行miktex (通常从 make 等调用它)。如果发生错误,我会得到:latexmk
-interaction=errorstopmode
-interaction=nonstopmode
Class XXX Error: <Error Text>
See the XXX class documentation for explanation.
Type H <return> for immediate help
并根据模式pdflatex
继续或停止而不打印附加帮助。有没有办法同时打印附加帮助?
Google 帮不上什么忙。我找到的唯一提示是使用交互模式(我不想这么做)。
我发现这些消息是由\GenericError
latex2e 内核触发的宏2e通过\ClassError
或\PackageError
。不幸的是,帮助\GenericError
仅限于:
将错误消息打印到日志文件,然后打印“更多信息”行。如果用户按“h”,则会显示帮助文本。
查看latex2e
来源似乎帮助文本被转发到\errhelp
来源。搜索 miktex 的来源让我找到了pdftex.web,其中表示
@ If \.{\\errmessage} occurs often in |scroll_mode|, without user-defined
\.{\\errhelp}, we don't want to give a long help message each time. So we
give a verbose explanation only once.
这表明我应该至少看到一次长消息。但这似乎没有发生。我做错了什么吗?有办法打开它吗?我用自己的方法\PackageError
来确保帮助实际上没有被打印出来。
答案1
您无需执行任何操作。在批处理模式下,始终会记录帮助文本。
这是 texlive 但 miktex 应该相同。
测试文档:
\documentclass{article}
\begin{document}
\PackageError{zzzz}{Main text}{help text}
\end{document}
以批处理模式运行,终端显示:
$ pdflatex --interaction=batchmode cc869
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
即没有交互,也没有输出,但日志显示
! Package zzzz Error: Main text.
See the zzzz package documentation for explanation.
Type H <return> for immediate help.
...
l.5 \PackageError{zzzz}{Main text}{help text}
help text
也就是说,帮助文本?
会在交互模式下出现提示的地方显示。
答案2
您可以重新定义\PackageError
在终端输出的第一部分中也显示第三个参数(详细错误)。第三个参数可以\GenericError
更改为空格字符,以防止在日志文件中打印两次详细错误(但其中会有一行额外的空格)。
请注意,当您在正常模式下编译时这可能会造成混淆,因为系统会提示您按下H
但不会显示任何额外的帮助。
梅威瑟:
\documentclass{article}
\makeatletter
\def\PackageError#1#2#3{\GenericError{(#1)\@spaces \@spaces \@spaces \@spaces }{Package #1 Error: #2}{See the #1 package documentation for explanation. Detailed error: #3}{ }}
\makeatother
\begin{document}
abc
\PackageError{mypackage}{custom error}{more detailed description}
\end{document}
结果:
$ pdflatex -interaction=nonstopmode myfile.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./myfile.tex
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo)) (./myfile.aux)
! Package mypackage Error: custom error.
See the mypackage package documentation for explanation. Detailed error: more d
etailed description
Type H <return> for immediate help.
...
l.8 ...e}{custom error}{more detailed description}
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./myfile.aux) )
(see the transcript file for additional information)</usr/share/texlive/texmf-d
ist/fonts/type1/public/amsfonts/cm/cmr10.pfb>
Output written on myfile.pdf (1 page, 10201 bytes).
Transcript written on myfile.log.