
Я пытаюсь использовать 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
в системе. Это вызовет (медленное) преобразование из SVG в PDF с сопутствующим файлом TeX. Последующие запуски не нуждаются в преобразовании, поэтому они также работают без опции -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 дважды, в противном случае вам понадобится что-то более сложное.)