此代码生成显示以下内容的输出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}