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何も機能しませんでした。

今日Googleで検索したら答えが見つかりましたhttps://github.com/gpoore/minted/issues/112: LuaTeX にはもうありません。再度追加する\write18必要があります。\usepackage{shellesc}

私の質問は、私はここで良いユーザーになろうとしており、常に RTFM を実行しているということです。この機能が削除されたことと、それを元に戻す方法を知るために読むべき TFM はどこにあるのでしょうか? 何か間違っているのではないかと考えて半日を過ごすのを避けるには? まったく関係のないパッケージの Github の問題ではないはずですよね?

答え1

luatexChristian Schenk が、新しいバージョンのバイナリ (この場合) が利用可能になるとすぐにMiKTeX に展開するのは、少し残念です。

TeX Live は、毎年のリリースでのみ (コア) バイナリを変更し、年間を通じてバイナリを変更することはありません (非常に深刻なバグは除きますが、これらは通常、事前テスト段階で検出されます)。

LuaTeX 0.87がリリースされたとき、特に に関する多くの変更が行われました\write18LaTeXニュース242016年2月にリリースされた

ここに画像の説明を入力してください

そしてまた

ここに画像の説明を入力してください

答え2

luatex のマニュアルには変更点について次のように記載されています。

また、os.execute でも同じことができるため、write18 はサポートされなくなりました。

しかし、たとえこれを読んだとしても、その意味を理解し、それが tikzexternalize に影響を与える可能性があるかどうかは非常に疑問です。

この変更は昨年行われ、このサイトを検索すると、shellescいくつかの質問が見つかります(texliveにも関係しますが、miktex固有の問題ではありません)。lualatexでtikz externalizeを実行できませんが、以前は動作していました)。しかし、もう一度言いますが、たとえあなたが今年中にこの質問の 1 つを見たとしても、それを覚えていて、それが現在の問題に当てはまると認識できるとは期待していません。

では、何ができるでしょうか? ヒント:

  • 変化は起こります。luatex のような新しいソフトウェアではさらに変化が起こります。これを受け入れてください。
  • すべての変更が明らかであるわけではなく、マニュアルを読むことで知ることができます。
  • 何時間も一人で問題を解決しようとしないでください。少し検索してみて、進歩がないと感じたら、時間をかけて合理的な最小限の例を作成し、聞く

答え3

ソフトウェアのベータ版を使用する場合は、ベータ版では互換性のない変更が予想されるため、その開発チャネルに従うのが最善です。これは、変更が行われる前に luatex リストで議論されました。(luatex のすべての互換性のない変更に当てはまるわけではありません:-) たとえば、2015 年 11 月のこのスレッドhttp://tug.org/pipermail/luatex/2015-November/005499.html

メーリング リストに従わなくても、この変更は ltnews と luatex マニュアルにもフラグが立てられました。

とはいえ、理想的な世界では、エンドユーザーはこれをまったく知る必要はありません。私たちは、ctanで\write18見つけられるすべての使用を検索し、パッケージ開発者に連絡してパッケージを更新しようとしました。前に変更された luatex は主要なディストリビューションで配布されました。あなたが参照した github の問題はその一例です。

エンド ユーザーがshellesc(またはluatex85) パッケージを使用する必要があるパッケージがまだあるのは少し残念ですが、LaTeX パッケージ開発の分散的な性質からすると、おそらく避けられない結果です。パッケージは、開発者が更新を公開する時間や意欲があるときに更新されます。

関連情報