Ich gebe mir wirklich Mühe, das nicht wie eine Schimpftirade klingen zu lassen, aber ich bin momentan sehr wütend.
Ich habe versucht, die TikZ-Externalisierung zu verwenden, um ein Streudiagramm für meine Abschlussarbeit zu erstellen. Es gab zu viele Datenpunkte für den Speicher von TeX, also bin ich zu LuaTeX gewechselt. Die Externalisierung hat nicht funktioniert.
(MWE wie:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\begin{document}
\tikz\node{Hello};
\end{document}
)
Ich hatte in der Vergangenheit Erfahrungen mit MiKTeX gemacht, die darauf hindeuteten, dass die Änderung -shell-escape
auf -enable-write18
einen Unterschied machen kann, ebenso wie -enable-write18
gegenüber --enable-write18
. Ich habe buchstäblich einen halben Tag damit verbracht (denken Sie daran, dass die Kompilierungszeiten von LuaTeX unter MiKTeX immer noch um Größenordnungen langsamer sind), es zum Laufen zu bringen und herauszufinden, warum es nicht funktioniert, indem ich die Befehlszeile sowie den Wert von geändert habe tikz/external/shell escape
. Nichts hat funktioniert.
Heute mache ich eine Google-Suche und finde die Antwort unterhttps://github.com/gpoore/minted/issues/112: Mehr gibt es \write18
in LuaTeX nicht. Du musst \usepackage{shellesc}
es wieder hinzufügen.
Meine Frage ist, ich versuche hier ein guter Benutzer zu sein und immer RTFM zu lesen. Wo ist TFM, das ich hätte lesen sollen, um herauszufinden, dass diese Funktionalität entfernt wurde und wie man sie wieder hinzufügt? Um nicht einen halben Tag damit zu verbringen, zu denken, dass ich etwas falsch mache? Es ist doch sicher nicht das Github-Problem eines völlig anderen Pakets?
Antwort1
Es ist ein wenig bedauerlich, dass Christian Schenk in MiKTeX neue Versionen der Binärdateien ( luatex
in diesem Fall) bereitstellt, sobald sie verfügbar sind.
TeX Live ändert (Kern-)Binärdateien nur mit der jährlichen Veröffentlichung und modifiziert sie während des Jahres nicht (mit Ausnahme sehr schwerwiegender Fehler, die jedoch normalerweise während der Vortestphase erkannt werden).
Als LuaTeX 0.87 veröffentlicht wurde, wurden viele Änderungen vorgenommen, insbesondere die über \write18
. Wenn Sie sich ansehenLaTeX-Neuigkeiten 24, erschienen im Februar 2016, sehen Sie
und auch
Antwort2
Das Handbuch von Luatex erwähnt die Änderung:
Außerdem unterstützen wir write18 nicht mehr, da os.execute dasselbe kann.
Ich bezweifle jedoch sehr, dass Sie die Auswirkungen und die möglichen Auswirkungen auf tikzexternalize verstanden hätten, selbst wenn Sie dies gelesen hätten.
Die Änderung erfolgte letztes Jahr und wenn Sie diese Seite durchsuchen, shellesc
werden Sie eine Reihe von Fragen finden (auch zu Texlive, es ist kein Miktex-spezifisches Problem,Tikz externalize kann nicht mit lualatex ausgeführt werden, aber es hat funktioniert). Aber nochmal: selbst wenn Sie eine dieser Fragen im Laufe des Jahres gesehen haben, würde ich nicht von Ihnen erwarten, dass Sie sich daran erinnern und erkennen, dass sie auf Ihr aktuelles Problem zutreffen.
Was können Sie also tun? Einige Tipps:
- Veränderungen passieren, besonders mit neuer Software wie luatex. Akzeptieren Sie das.
- Nicht jede Änderung ist offensichtlich und kann durch Lesen des Handbuchs erlernt werden.
- Versuchen Sie nicht, Ihre Probleme stundenlang alleine zu lösen. Suchen Sie ein wenig und wenn Sie den Eindruck haben, dass Sie keine Fortschritte machen, dann nutzen Sie Ihre Zeit lieber, um ein sinnvolles Minimalbeispiel zu erstellen und dannfragen.
Antwort3
Wenn Sie eine Betaversion einer Software verwenden, folgen Sie am besten den Entwicklungskanälen, da in Betaversionen mit bahnbrechenden Änderungen zu rechnen ist. Dies wurde auf der Luatex-Liste diskutiert, bevor die Änderung vorgenommen wurde. (Gilt nicht für alle bahnbrechenden Änderungen in Luatex:-). Zum Beispiel dieser Thread vom November 2015http://tug.org/pipermail/luatex/2015-November/005499.html
Ohne der Mailingliste zu folgen, wurde diese Änderung in ltnews und auch im Luatex-Handbuch markiert.
In einer idealen Welt müsste ein Endbenutzer dies jedoch überhaupt nicht wissen. Wir haben ctan nach jeder Verwendung durchsucht, \write18
die wir finden konnten, und versucht, Paketentwickler zu erreichen, um Pakete zu aktualisieren.VorDas geänderte Luatex wurde in den Hauptdistributionen verteilt. Das von Ihnen erwähnte GitHub-Problem ist ein Beispiel dafür.
Dass es immer noch Pakete gibt, die den Endbenutzer dazu zwingen, Pakete zu verwenden shellesc
(oder luatex85
), ist etwas bedauerlich, aber möglicherweise ein unvermeidliches Ergebnis der verteilten Natur der LaTeX-Paketentwicklung. Pakete werden aktualisiert, sobald die Entwickler Zeit oder Lust haben, ein Update zu veröffentlichen.