此程式碼產生顯示內容的輸出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}