下面的消息告诉我,Process exited normally
尽管没有任何名为 的文件,但输出的 PDF 文件已损坏dummy
。
因此,我需要出现编译停止错误,并显示有关缺少输入文件的消息。
\documentclass{article}
\begin{document}
\InputIfFileExists{dummy}{}{}
\end{document}
为什么我无法在日志文件中获取预期的以下消息?
错误:缺少文件:dummy
\documentclass{article}
\begin{document}
\InputIfFileExists{dummy}{}{%
% https://tex.stackexchange.com/a/377312/2288
% https://tex.stackexchange.com/a/383190/2288
\typeout{Error: Missing file: #1}
\ExitDueToUndefinedControlSequence
}
\end{document}
答案1
\documentclass{article}
\makeatletter
\newcommand{\thereisnosuchfile}{%
\@latex@error{No file to input}{The file you asked for doesn't exist}%
}
\makeatother
\begin{document}
\InputIfFileExists{dummy}{}{\thereisnosuchfile}
\input{dummy}
\end{document}
有什么区别?第一种情况不需要输入其他文件名。而第二种情况,只要按回车键就可以输入空.tex
文件并退出循环。
! LaTeX Error: No file to input.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.10 ...tIfFileExists{dummy}{}{\thereisnosuchfile}
?
! LaTeX Error: File `dummy.tex' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)
Enter file name: <<hit return>>
(/usr/local/texlive/2020/texmf-dist/tex/latex/tools/.tex File ignored)
\stop
如果在定义的末尾添加\thereisnosuchfile
,则 LaTeX 运行将在按回车键后停止。
一个expl3
版本:
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\saferinput}{m}
{
\file_if_exist_input:nF { #1 } { \msg_error:nnn { diaa } { no-file } { #1 } }
}
\msg_new:nnnn { diaa } { no-file }
{ No~file~'#1' }
{ The~file~'#1'~you~asked~for~does~not~exist }
\ExplSyntaxOff
\begin{document}
\saferinput{dummy}
\end{document}
控制台输出
! Package diaa Error: No file 'dummy'
For immediate help type H <return>.
...
l.15 \saferinput{dummy}
? h
The file 'dummy' you asked for does not exist
?