\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下一行造成的。事實上,摘錄之前的空格是由「段落開始」之後的換行符號引起的。消除這種情況的最簡單方法是在行尾使用百分號。同樣,您需要在“兩個文件”之後添加百分比。並\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}

其中之一可以使用自動化\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}

相關內容