为了将脚本引入 (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
不会有问题。