如何使用 \input 去除不需要的空格?

如何使用 \input 去除不需要的空格?

为了将脚本引入 (Xe)(La)TeX,我需要使用 执行命令行write18,将输出重定向到临时文件,然后使用 插入生成的文本\input。我注意到每个输出后都会出现一些多余的空格,我设法找到了来源归结为等式的最基本部分(我观察到三种不同数量的空白;这里讨论的是最小的数量,因此似乎这种现象的来源不止一个)。

这是一个“次最小”的 MWE:

xxxxxxx\\
xxx\input{/tmp/out.txt}xxx\\
xxxx xxx

假设所述文件的内容由单个文件组成x(我可以通过运行轻松证明cat /tmp/out.txt

$ cat /tmp/out.txt
x$ ▌

x看看命令行提示符后面是如何直接跟上的),x在生成的 pdf 文件的第二行中,第四行后面仍然有一个空格。第二行与第三行完全匹配,第三行确实包含一个故意的空格;它在所有意图和目的上都应该与第一的当然是线。

与我读过的描述相反,该命令\input实际上插入了文件内容(至少)\x20在文档中添加一个(?)字符。

可以证实这一观察吗?而且,重要的是:我该如何摆脱那些多余的空间?

答案1

这是正确的,你的外部文件有行,并且行尾被空格替换。

在外部文件的 x 末尾使用\input{/tmp/out.txt}\unskip或插入:%x%

答案2

如果你以这种方式输入的文件只有一行,那么你可以定义

\newcommand{\lineinput}[1]{%
  \begingroup\endlinechar=-1 \input{#1}\endgroup
}

这将删除行尾。然后

xxx\lineinput{/tmp/out.txt}xxx

不会有问题。

相关内容