拡張子を \includesvg に渡す - やってもやってもダメ

拡張子を \includesvg に渡す - やってもやってもダメ

svgサブディレクトリにあるいくつかの svg ファイルにパッケージを使用しようとしていますgraphics/。 includegraphics コマンドは以前は次のとおりでした。

\includegraphics{graphics/foo.png}

さて、私が次のように書いたとします。

\includesvg{graphics/foo.svg}

私はこの問題: パッケージにはあなたが必要ですないファイル拡張子を指定するために、

\includesvg{graphics/foo}

次のような結果になります:

! LaTeX Error: File `./graphics/foo' not found.

パスを設定して次のように記述したとしても、

\includesvg[svgpath=./graphics/]{foo}

まだ次のものを受け取ります:

! LaTeX Error: File `./graphics/foo' not found.

最後に、svg パッケージのドキュメントには次のように書かれています。

svg へのパスは svgpath オプションを使用して指定できます。パスは / で終了する必要があります。

最後の試みで目的を達成できたはずです。しかし念のため、次のことを試しました。

\includesvg[svgpath=./graphics/.]{foo}

そしてまだ

! LaTeX Error: File `./graphics/.foo' not found.

ではどうすればいいのでしょうか?

答え1

pdflatexこれは、オプション付きで起動し-shell-escape、システムにオプションがあるinkscape場合に機能します。これにより、TeX ファイルが付随する SVG から PDF への (低速の) 変換が呼び出されます。以降の実行では変換は必要ないため、オプションがなくても機能します-shell-escape

したがって、ファイルがtest.tex必要な場合は

pdflatex -shell-escape test

(システム上で LaTeX を実行する方法に合わせて調整してください)。

\documentclass{article}
\usepackage{svg}

\begin{document}

\includesvg[svgpath=./graphics/]{Steps}

\end{document}

SVGファイルは以下から取得されましたhttps://dev.w3.org/SVG/tools/svgweb/samples/svg-files/

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

答え2

まあ、svgいずれにせよ inkscape が必要なので、問題を完全に回避して自分で変換を実行することができます。

inkscape -z --export-pdf=foo.pdf foo.svg

ファイルを一度だけ変換します (繰り返し変更されないことを前提とします)。現在のディレクトリ内のすべてのファイルに対してこれを自動化するには、次を試してください。

ls *.svg | while read f; do inkscape -z --export-pdf="${f/\.svg/.pdf}" "$f"; done

(ただし、ファイル名に .svg が 2 回含まれていないことを確認してください。含まれている場合は、より複雑な処理が必要になります。)

関連情報