我唯一需要编译的文件Main.tex
由以下行指定:
\include{transformtaion}
使用以下命令进行编译,没有任何错误:
pdflatex -synctex=1 -interaction=nonstopmode Main.tex
但是生成的 PDF 文件是空的。经过大量时间的考虑,我发现问题出在文件的拼写错误上,即转换甲基安替比离子代替转换垫离子。
问题是如何强制编译过程给出一个编译时错误来指出拼写错误问题。
答案1
它的一项功能(可能不是那么好)\include
就是在终端上告诉你文件不存在。你会得到这样的一行代码:
No file transformtaion.tex.
如果不留意的话很难发现。
重新定义内部结构\include
是不可取的,因此您可以使用钩子include
来明确检查文件是否存在,并相应地出现错误:
\documentclass{article}
\makeatletter
\def\mkfilename#1{%
\if\relax\detokenize\expandafter{#1}\relax\else#1/\fi}
\AddToHook{include/before}%
{\IfFileExists{\mkfilename\CurrentFilePath\CurrentFile}{}
{\GenericError{}{Error: File \mkfilename\CurrentFilePath\CurrentFile.tex not found!}{\@gobble}{}}}
\makeatother
\begin{document}
\include{transformtaion}
\end{document}
然后你会看到一个错误:
! Error: File transformtaion.tex not found!.
Type H <return> for immediate help.
...
l.15 \include{transformtaion}
?
在旧版本中(2020-10-01 之前),没有内置对include
钩子的支持,你可以使用filehook
和currfile
:
\documentclass{article}
\usepackage{filehook}
\usepackage{currfile}
\makeatletter
\AtBeginOfIncludes
{\IfFileExists{\currfiledir\currfilebase.tex}{}
{\GenericError{}{Error: File \currfiledir\currfilebase.tex not found!}{\@gobble}{}}}
\makeatother
\begin{document}
\include{transformtaion}
\end{document}