我在这里读到(该问题的第二条评论)
“\@input
如果文件不存在则不会抛出错误”。
如果我尝试
\documentclass{article}
\begin{document}
\@input{toBeIncluded.tex}
\end{document}
我确实没有致命的错误,但我仍然收到 3 个编译错误,更重要的是,我的 pdf 包含单词“inputtoBeIncluded.tex”。
有没有简单的方法完全忽略如果输入文件不存在,则执行输入命令吗?
多谢
答案1
您需要添加以启用宏中\makeatletter
该符号的使用。@
\documentclass{article}
\begin{document}
abc
\makeatletter
\@input{myfile.tex}
\makeatother
\end{document}
编辑
正如 @Emil Jeřábek 所指出的,这会产生副作用,即在myfile.tex
读取时更改 @ 的 catcode。这不太可能产生任何不利影响,但可以按如下方式避免:
\documentclass{article}
\makeatletter
\let\conditionalinput\@input
\makeatother
\begin{document}
abc
\conditionalinput{fred.tex}
\end{document}
话虽如此,但最好还是使用\InputIfFileExists{file}{}{}
,正如@daleif 所建议的那样。
答案2
\@input
更好的方法可能是使用
\InputIfFileExists{file}{then}{else}
\input
如果文件存在,它将运行file
,然后执行 中的代码then
。如果文件不存在,则else
执行 中的代码。例如,您可以在 部分中添加警告else
,只是为了通知您未找到此特定文件。
如果您只是想要文件存在时闪烁输入,只需使用
\InputIfFileExists{file}{}{}
有关此宏的更多详细信息,请参见第 19 节texdoc source2e
中的描述ltfiles.dtx
,文件处理