具有外部化的森林忽略换行符(错误?)

具有外部化的森林忽略换行符(错误?)

此代码经过编译后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。无论问题是什么,没有取决于pdflatexvs xelatex,或者取决于使用的是 texlive 2015 还是 texlive 2016。使用 加载forestcompat=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
}

相关内容