ファイルが見つからない場合に \input が失敗しないようにするにはどうすればよいですか?

ファイルが見つからない場合に \input が失敗しないようにするにはどうすればよいですか?

私はここで読みました(質問に対する2番目のコメント)

\input と \include はいつ使用すればよいですか?

\@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}

編集

myfile.tex@Emil Jeřábek が指摘したように、これには、読み取り中に @ の catcode が変更されるという副作用があります。これによって悪影響が出る可能性は低いですが、次のように回避できます。

\documentclass{article}

\makeatletter
\let\conditionalinput\@input
\makeatother

\begin{document}
abc
\conditionalinput{fred.tex}
\end{document}

そうは言っても、@daleif が提案しているように、 を使用する方が良いでしょう\InputIfFileExists{file}{}{}

答え2

代わりに、\@inputより良い方法はおそらく

\InputIfFileExists{file}{then}{else}

存在する場合はで実行され\input、内のコードが実行されます。ファイルが存在しない場合は、 内のコードが実行されます。たとえば、 部分に警告を追加して、この特定のファイルが見つからなかったことを通知することもできます。filethenelseelse

ファイルが存在する場合に点滅入力だけが必要な場合は、次のようにします。

\InputIfFileExists{file}{}{}

このマクロの詳細については、第19節texdoc source2eを参照してください。ltfiles.dtxファイル処理

関連情報