此代码经过编译后pdflatex --shell-escape
不能按预期工作:
\documentclass{article}
\usepackage[external]{forest}
\begin{document}
this is the line
of text I compile
\end{document}
具体来说,输出如下所示:
这是我编写的文本行
(“line”和“of”之间没有空格。)
external
如果不再作为 的选项调用,则错误消失forest
。
我使用的是最新版本的forest
。无论问题是什么,没有取决于pdflatex
vs xelatex
,或者取决于使用的是 texlive 2015 还是 texlive 2016。使用 加载forest
也compat=all
无济于事。使用tikzexternalize
也无法重现错误,所以这似乎是forest
-internal 的事情。
答案1
我可以确认这是 forest v2.0.3 中引入的一个错误。该问题已在 forest 的开发版本 (2.1) 中修复,Ulrich Thomas Gabor 通过电子邮件向我报告了该问题(forest 的软件包选项external
对 biblatex 造成了严重破坏)。
此版本的 forest 实现了一个内部文件复制宏,\forest@file@copy
。此宏设置\endlinechar
为-1
,但未将其操作包含在组中。修复方法是像这样定义宏:
\newread\forest@copy@in
\newwrite\forest@copy@out
\def\forest@file@copy@#1#2{%
\begingroup
\openin\forest@copy@in=#1
\immediate\openout\forest@copy@out#2
\endlinechar-1
\loop
\unless\ifeof\forest@copy@in
\readline\forest@copy@in to\forest@temp
\immediate\write\forest@copy@out{\forest@temp}%
\repeat
\immediate\closeout\forest@copy@out
\closein\forest@copy@in
\endgroup
}