我应该如何发现 LuaTeX 删除了 \write18?

我应该如何发现 LuaTeX 删除了 \write18?

我尽量不让这听起来像是咆哮,但我现在非常生气。

我曾尝试使用 TikZ 外部化为我的论文创建散点图。数据点太多,TeX 的内存不够用,所以我改用 LuaTeX。外部化不起作用。

(MWE 喜欢:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\tikz\node{Hello};
\end{document}

我以前使用 MiKTeX 的经验告诉我,将 改为-shell-escape以及-enable-write18和 都会有所不同-enable-write18--enable-write18我花了整整半天时间(记住,LuaTeX 在 MiKTeX 上的编译时间仍然要慢几个数量级)试图让它工作并找出它不起作用的原因,更改了 的命令行以及 的值tikz/external/shell escape。但都不起作用。

今天我谷歌搜索了一下,找到了答案https://github.com/gpoore/minted/issues/112:LuaTeX 中没有更多内容\write18。您必须\usepackage{shellesc}将其重新添加回来。

我的问题是,我在这里努力成为一名好用户,并且始终阅读手册。我应该阅读哪里的手册才能了解此功能已被删除以及如何重新添加?避免花半天时间思考我做错了什么?这肯定不是 Github 上完全不相关的软件包的问题吧?

答案1

有点不幸的是,Christian Schenk 在 MiKTeX 的新版本的二进制文件(luatex在本例中)一可用就部署了它们。

TeX Live 仅在每年发布时更改(核心)二进制文件,并且不会在一年内对其进行修改(除了非常严重的错误,但这些错误通常会在预测试阶段被发现)。

LuaTeX 0.87 发布后,进行了许多更改,特别是关于 的更改\write18。如果你看看LaTeX 新闻 24,2016 年 2 月发布,你会看到

在此处输入图片描述

并且

在此处输入图片描述

答案2

luatex 的手册中提到了这个变化:

另外,我们不再支持 write18,因为 os.execute 可以做同样的事情。

但我非常怀疑,即使你读过这篇文章,你也可能无法理解其中的含义,也无法影响 tikzexternalize。

这个变化发生在去年,如果你在这个网站上搜索,shellesc你会发现很多问题(也涉及 texlive,这不是 miktex 特有的问题,无法使用 lualatex 运行 tikz externalize,但它以前可以工作)。但再说一遍:即使你在一年内看到过其中一个问题,我也不指望你能记住它们并意识到它们适用于你当前的问题。

那么你能做什么呢?以下是一些建议:

  • 变化在发生,随着 luatex 等新软件的出现,变化甚至更大。接受这一点。
  • 并非每个变化都是显而易见的,可以通过阅读手册来了解。
  • 不要独自花几个小时试图解决问题。搜索一下,如果你觉得你没有取得任何进展,那么最好花时间做一个合理的最小例子,然后

答案3

如果使用软件的测试版,最好关注其开发渠道,因为测试版中预计会有重大更改。在进行更改之前,luatex 列表中已经讨论过这个问题。(luatex 中的所有重大更改并非如此:-)。例如,2015 年 11 月的这个帖子http://tug.org/pipermail/luatex/2015-November/005499.html

在没有关注邮件列表的情况下,这个变化在 ltnews 和 luatex 手册中被标记。

尽管如此,在理想情况下,最终用户根本不需要知道这一点,我们确实在 ctan 中搜索了\write18我们能找到的所有用途,并尝试联系软件包开发人员来更新软件包更改后的 luatex 已在各大发行版中发布。您提到的 minted github 问题就是其中一个例子。

仍然有一些软件包需要最终用户使用shellesc(或luatex85)软件包,这有点不幸,但这可能是 LaTeX 软件包开发的分布式特性所导致的不可避免的结果。当开发人员有时间或有意愿发布更新时,软件包就会更新。

相关内容