\end{filecontents} und \input{} in derselben Zeile

\end{filecontents} und \input{} in derselben Zeile

Dieser Code erzeugt eine Ausgabe, die den Inhalt vonexcerpt1.tex

\documentclass{article}
\usepackage{filecontents}

\begin{document}
Pragraph is starting.
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.
\end{filecontents}
\input{excerpt1.tex}
Paragraph ends.
\end{document}

Dieser Code erzeugt keine Ausgabe, die den Inhalt vonexcerpt1.tex

\documentclass{article}
\usepackage{filecontents}

\begin{document}
Pragraph is starting.
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.
\end{filecontents}\input{excerpt1.tex}
Paragraph ends.
\end{document}

Ich frage mich, was der Grund für diese Situation ist. Ich bin in einem sehr wichtigen Dokument auf diese Anomalie gestoßen. Gibt es eine Liste solcher Vorbehalte, die berücksichtigt werden müssen, bevor irreparable Fehler auftreten?

Antwort1

Wie in den Kommentaren erwähnt, wird Text bis \end{filecontents}zum Zeilenende ignoriert. Der Abstand vor dem Auszug wird also nicht dadurch verursacht, dass \inputin der nächsten Zeile etwas steht. Tatsächlich wird der Abstand vor dem Auszug durch den Zeilenumbruch nach „Absatz beginnt“ verursacht. Die einfachste Möglichkeit, dies zu vermeiden, besteht darin, Prozentzeichen am Zeilenende zu verwenden. Ebenso benötigen Sie Prozentzeichen nach „zwei Dokumenten“ und \input{excerpt1.tex}müssen ein Leerzeichen nach dem Auszug vermeiden.

\documentclass{article}
\usepackage{filecontents}
\begin{document}
Paragraph is starting.%
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.% 
\end{filecontents}
\input{excerpt1.tex}%
Paragraph ends.
\end{document}

Eine davon kann mithilfe von automatisiert werden \ignorespaces.

\documentclass{article}
\usepackage{filecontents}
\newcommand\myinput[1]{\input{#1}\ignorespaces} 
Paragraph is starting.%  
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.% 
\end{filecontents}
\myinput{excerpt1.tex}
Paragraph ends.
\end{document}

verwandte Informationen