输入时不需要空格

输入时不需要空格

考虑一些file.tex仅包含以下内容的文件:

\hfill Some text

我们将其输入到主文件中:

\documentclass{article}
\begin{document}
    \input{file}
    
    \hfill Some other text
\end{document}

观察输入文件,右侧添加了一些水平空间: 在此处输入图片描述

这个空间从何而来?如何将其删除?

答案1

我不知道这个空格是从哪里来的,但是用注释结束这一行可以将其删除:

\documentclass{article}
\begin{document}
    \input{file}% <- notice the comment
    
    \hfill Some other text
\end{document}

在此处输入图片描述

答案2

TeX 总是在文件末尾添加一个结束行\input,这会在输出中变成一个空格。括号后的结束行会添加另一个空格。请注意,标记化已经完成,因此输出中会有两个空格。

另一方面,\par(由以下空行生成)\unskip确实能够删除其中一个空间被占用,而另一个空间则保留下来。

如果您将其添加\endinput到文件中,则不会发生这种情况。请注意,建议%仅在特定情况下有效。

\begin{filecontents*}[force]{\jobname-in.tex}
\hfill Some text\endinput
\end{filecontents*}

\documentclass{article}

\begin{document}

\noindent X\dotfill X

\noindent\input{\jobname-in}

\noindent\hfill Some other text

\bigskip

\noindent\input{\jobname-in}and other text

\noindent\input{\jobname-in} and other text

\noindent\hfill Some other text

\end{document}

在此处输入图片描述

如果你删除\endinput,你会得到

在此处输入图片描述

你可以清楚地看到第二组中间行的空格。这里%没用。

替代方法是在范围内\endinput进行\input

\everyeof{\relax}

相关内容