Ich möchte AUCTeX verwenden, um ein PNG-Bild eines TikZ-Bildes zu erstellen mitDas standalone
Paket. Ich verwende macOS Sierra.
Laut standalone
Dokumentation v1.2-2015/07/15 (Abschnitt 4.6Konvertierung in Bilder, S. 15)
Mit der
convert
Klassenoption kann die Standalone-Datei einfach in ein Rasterbild umgewandelt werden. Dies geschieht, indem ein externes Programm ausgeführt wird, um die Ausgabedatei (PDF oder PS) in ein Bild umzuwandeln (empfohlen wird das verlustfreie PNG-Format, aber auch andere werden unterstützt).
Gemäß Abschnitt 4.6.1Konvertierungseinstellungen(Seite 15)
Konvertierungseinstellungen können als Wert der
convert={<settings>}
Option angegeben werden. Standardmäßig ist die Konvertierung deaktiviert(convert=false)
. Wenn sie aktiviert wird, ohne eigene Einstellungen anzugeben (convert,convert=true
), werden die folgenden Standardeinstellungen verwendet: PNG-Format, eine Dichte von 300 dpi, keine explizite Größe und der Name der Ausgabedatei wird durch angegeben\jobname
, also der Name des LaTeX-Dokuments. Wenn Sie dieconvert
Option mit einem anderen Wert als verwendenfalse
, wird sie aktiviert.
Gemäß Abschnitt 4.6.2Konvertierungssoftware(Seite 16)
Für die Konvertierung muss ein externes Bildkonvertierungsprogramm installiert sein. Standardmäßig werden die beiden folgenden Tools unterstützt und eines davon muss installiert sein, um die Konvertierungsfunktion nutzen zu können. Damit ein externes Programm ausgeführt werden kann,
-shell-escape
muss die Option für die ausführbare Compilerdatei verwendet werden, z. B.pdflatex -shell-escape filename
. Ohne diese Option ist keine Konvertierung möglich.Standardmäßig wird das Konvertierungsprogramm vonBildmagiewird für PDF-LaTeX-Dateien verwendet [...]
Also benutzte ichSelbstgebrautes(ein beliebter Paketmanager für macOS), um Image Magick zu installieren. Es wurde im Verzeichnis installiert /usr/local/Cellar/imagemagick/7.0.6-0
. Dann habe ich die folgenden Zeilen zu meiner Emacs-Init-Datei ( ~/.emacs
) hinzugefügt, damit Emacs weiß, wo es nach den ausführbaren Dateien von Image Magick suchen muss:
(setenv "PATH" (concat (getenv "PATH") ":/usr/local/Cellar/imagemagick/7.0.6-0/bin/"))
(setq exec-path (append exec-path '("/usr/local/Cellar/imagemagick/7.0.6-0/bin/")))
Nach dem Neustart von Emacs schrieb ich das folgende LaTeX-Manuskript mit dem Titel my_tikz_drawing.tex
:
\documentclass[tikz,convert]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,1)
[rounded corners] -- (2,0) -- (3,1)
[sharp corners] -- (3,0) -- (2,1);
\end{tikzpicture}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-engine: default
%%% TeX-command-extra-options: "-shell-escape"
%%% End:
und kompiliert mit C-c C-a
.
Das Ergebnis war eine PDF-Datei, aber die PNG-Datei wurde nicht erstellt, zumindest nicht im selben Verzeichnis, in dem sich das LaTeX-Manuskript befand.
Dann öffnete ich Terminal (die Befehlszeilenkonsole von macOS), cd
wechselte per -ed in das Verzeichnis mit dem LaTeX-Manuskript und führte den folgenden Befehl aus:
pdflatex -shell-escape my_tikz_drawing
Das Ergebnis war eine my_tikz_drawing.png
Datei im selben Verzeichnis.
Ein möglicher Hinweis
Führen Sie den folgenden Befehl, der sich in der Protokolldatei befindet, einmal vom Terminal und einmal vom Emacs aus (mit M-!) aus:
convert -density 300 my_tikz_drawing.pdf -quality 90 my_tikz_drawing.png
führt zu folgenden Ergebnissen.
Vom Terminal aus: Der Befehl wird im Hintergrund ausgeführt und erstellt die Datei
my_tikz_drawing.png
.Von Emacs: Es wird keine PNG-Datei erstellt und im Minipuffer wird eine Fehlermeldung angezeigt:
Konvertieren: Keine Bilder definiert „my_tikz_drawing.png“ @error/convert.c/ConvertImageCommand/3254.
Dies ist derselbe Fehler, der in der Ausgabe des Emacs-PDFlatex-Laufs auftritt.
Antwort1
Emacs kann die ausführbare GhostScript-Datei nicht finden. Führen Sie aus
which gs
im Terminal und kopieren Sie den Pfad, sagen wir /usr/local/bin
. Fügen Sie dann die folgenden Zeilen in Ihre Emacs-Init-Datei ein (sagen wir ~/.emacs
) und starten Sie Emacs neu.
(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin/"))
(setq exec-path (append exec-path '("/usr/local/bin/")))
(Die erste dieser Zeilen ist möglicherweise nicht unbedingt erforderlich, aber sie schadet nicht ...)
Diese Antwort wurde dank der netten Leute im Image Magick Users Forum möglich, die geantwortet habenmein Post.