
Ich versuche svg
, das Paket für einige SVG-Dateien zu verwenden, die ich in einem Unterverzeichnis habe graphics/
. Mein Includegraphics-Befehl lautete früher:
\includegraphics{graphics/foo.png}
Wenn ich jetzt schreibe:
\includesvg{graphics/foo.svg}
Ich bekommedieses Problem: Das Paket braucht dichnichtum die Dateierweiterung anzugeben. Aber wenn ich schreibe
\includesvg{graphics/foo}
Ich bekomme:
! LaTeX Error: File `./graphics/foo' not found.
und selbst wenn ich den Pfad einstelle und schreibe:
\includesvg[svgpath=./graphics/]{foo}
Ich bekomme immer noch:
! LaTeX Error: File `./graphics/foo' not found.
Abschließend heißt es in der Dokumentation des SVG-Pakets:
Der Pfad zur SVG-Datei kann mit der Option svgpath angegeben werden, wobei der Pfad mit einem / enden muss.
Mit diesem letzten Versuch hätte ich es also schaffen sollen. Aber nur um auf Nummer sicher zu gehen, habe ich Folgendes versucht:
\includesvg[svgpath=./graphics/.]{foo}
und habe immer noch
! LaTeX Error: File `./graphics/.foo' not found.
Was sollte ich dann tun?
Antwort1
Dies funktioniert, vorausgesetzt, Sie starten pdflatex
mit der -shell-escape
Option und haben diese inkscape
auf Ihrem System. Dadurch wird die (langsame) Konvertierung von SVG nach PDF mit einer begleitenden TeX-Datei aufgerufen. Spätere Ausführungen benötigen die Konvertierung nicht, daher funktionieren sie auch ohne die -shell-escape
Option.
Wenn die Datei also ist, test.tex
die Sie brauchen
pdflatex -shell-escape test
(Passen Sie es an die Methode an, mit der Sie LaTeX auf Ihrem System ausführen).
\documentclass{article}
\usepackage{svg}
\begin{document}
\includesvg[svgpath=./graphics/]{Steps}
\end{document}
Die SVG-Datei stammt vonhttps://dev.w3.org/SVG/tools/svgweb/samples/svg-files/
Antwort2
Da svg
ohnehin Inkscape benötigt wird, können Sie das Problem einfach umgehen und die Konvertierung selbst durchführen:
inkscape -z --export-pdf=foo.pdf foo.svg
um die Datei ein für alle Mal zu konvertieren (vorausgesetzt, sie ändert sich nicht wiederholt). Um dies für alle Dateien im aktuellen Verzeichnis zu automatisieren, versuchen Sie:
ls *.svg | while read f; do inkscape -z --export-pdf="${f/\.svg/.pdf}" "$f"; done
(Stellen Sie jedoch sicher, dass Ihre Dateinamen nicht zweimal .svg enthalten, da Sie sonst etwas Komplizierteres benötigen.)