
Ich habe hier gelesen (zweiter Kommentar zur Frage)
Wann sollte ich \input statt \include verwenden?
das \@input
„keinen Fehler auslöst, wenn die Datei nicht existiert“.
Wenn ich es versuche
\documentclass{article}
\begin{document}
\@input{toBeIncluded.tex}
\end{document}
Ich bekomme tatsächlich keinetödlichFehler, aber ich bekomme immer noch drei Kompilierungsfehler und, was noch wichtiger ist, mein PDF enthält das Wort „inputtoBeIncluded.tex“.
Gibt es eine einfache Möglichkeit,völlig ignorierender Eingabebefehl, wenn die Eingabedatei nicht existiert?
Vielen Dank
Antwort1
Sie müssen es hinzufügen \makeatletter
, um die Verwendung des Symbols @
in einem Makro zu ermöglichen.
\documentclass{article}
\begin{document}
abc
\makeatletter
\@input{myfile.tex}
\makeatother
\end{document}
BEARBEITEN
Wie von @Emil Jeřábek angemerkt, hat dies den Nebeneffekt, dass der Catcode von @ während myfile.tex
des Lesens geändert wird. Dies hat wahrscheinlich keine negativen Auswirkungen, kann aber wie folgt vermieden werden:
\documentclass{article}
\makeatletter
\let\conditionalinput\@input
\makeatother
\begin{document}
abc
\conditionalinput{fred.tex}
\end{document}
Trotzdem ist es wahrscheinlich besser, zu verwenden \InputIfFileExists{file}{}{}
, wie von @daleif vorgeschlagen.
Antwort2
Anstatt zu verwenden, \@input
ist die bessere Methode wahrscheinlich zu verwenden
\InputIfFileExists{file}{then}{else}
Dies wird ausgeführt, \input
wenn die Datei file
existiert, und führt dann den Code in aus then
. Wenn die Datei nicht existiert, else
wird der Code in ausgeführt. Sie könnten beispielsweise eine Warnung in den else
Teil einfügen, nur um Sie darüber zu informieren, dass diese bestimmte Datei nicht gefunden wurde.
Wenn Sie nur eine blinkende Eingabe wünschen, wenn die Datei existiert, verwenden Sie einfach
\InputIfFileExists{file}{}{}
Weitere Einzelheiten zu diesem Makro finden Sie texdoc source2e
im ltfiles.dtx
Abschnitt 19.Dateiverwaltung