我尽量不让这听起来像是咆哮,但我现在非常生气。
我曾尝试使用 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 软件包开发的分布式特性所导致的不可避免的结果。当开发人员有时间或有意愿发布更新时,软件包就会更新。