我似乎注意到该\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 文件中获取的数字。