在“\input”调用后插入空格

在“\input”调用后插入空格

我似乎注意到该\input命令存在一个重大问题。出于某种原因,我似乎无法阻止它在读取输入后添加空格。即使文件末尾没有换行符或空格,LaTeX 似乎也会被迫添加空格。

最小工作示例是这样的:

\documentclass{article}
\begin{document}
A\input{TestInput.out}B
\end{document}

TestInput.out 仅包含文本“SomeText”,不包含特殊字符

这提供了输出:

ASomeText B

有人知道如何防止这种情况吗?对于排版程序来说,随意添加空格在我看来有点奇怪。我想有一个简单的解决方法,但如果可行,我会采用任何可移植的、强大的解决方法。

答案1

TestInput.out可能在文件末尾包含一个换行符(文本文件通常如此,即使使用 创建也是如此echo 'abc' > file)。TeX 将换行符解释为空格。

要删除该空格,只需\unskip在之后直接添加,即使用A\input{TestInput.out}\unskip B(如果有的话,这也会删除文件末尾的任何故意空格)。

如果您可以控制TestInput.out,您也可以%在文件最后一行文本的末尾添加 。这将注释掉最后一个换行符,以便 TeX 忽略它。另一种方法是用 结束文件\endinput

答案2

为了方便访问,您可以定义一个新函数 \inputy(例如)

\documentclass{article}
\newcommand{\inputy}[1]{\input{#1}\unskip}
\begin{document}
A\inputy{TestInput.out}B
\end{document}

我在我的论文中多次使用了这一点,来介绍从输出 txt 文件中获取的数字。

相关内容