\end{filecontents} と \input{} を同じ行に記述する

\end{filecontents} と \input{} を同じ行に記述する

このコードは、以下の内容を示す出力を生成します。excerpt1.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}

このコードは、以下の内容を示す出力を生成しません。excerpt1.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}

この状況の背後にある理由が気になります。非常に重要な文書でこの異常に遭遇しました。回復不能なエラーが発生する前に考慮しなければならない注意事項のリストはありますか?

答え1

コメントで指摘されているように、\end{filecontents}行末までのテキストは無視されます。したがって、抜粋の前のスペースは、\input次の行にあることによって生じたものではありません。実際、抜粋の前のスペースは、「段落の開始」の後の改行によって生じます。これを取り除く最も簡単な方法は、行末にパーセント記号を使用することです。同様に、「2 つのドキュメント」の後にパーセント記号を付けて、\input{excerpt1.tex}抜粋の後のスペースを防ぐ必要があります。

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

これらのうちの 1 つは を使用して自動化できます\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}

関連情報