
Estou tentando usar o svg
pacote para alguns arquivos SVG que tenho em um graphics/
subdiretório. Meu comando includegraphics costumava ser:
\includegraphics{graphics/foo.png}
Agora, se eu escrever:
\includesvg{graphics/foo.svg}
eu receboesse assunto: O pacote precisa de vocênãopara especificar a extensão do arquivo. Mas se eu escrever
\includesvg{graphics/foo}
Eu recebo:
! LaTeX Error: File `./graphics/foo' not found.
e mesmo se eu definir o caminho e escrever:
\includesvg[svgpath=./graphics/]{foo}
Eu ainda recebo:
! LaTeX Error: File `./graphics/foo' not found.
Finalmente, a documentação do pacote svg diz:
O caminho para o svg pode ser especificado usando a opção svgpath, onde o caminho deve terminar em /.
Então essa última tentativa deveria ter me levado até lá. Mas só para garantir, tentei:
\includesvg[svgpath=./graphics/.]{foo}
e ainda tenho
! LaTeX Error: File `./graphics/.foo' not found.
O que devo fazer então?
Responder1
Isso funciona, desde que você inicie pdflatex
com a -shell-escape
opção e a tenha inkscape
em seu sistema. Isso chamará a conversão (lenta) de SVG para PDF, acompanhada de um arquivo TeX. As execuções posteriores não precisam de conversão, portanto também funcionam sem a -shell-escape
opção.
Então, se o arquivo for test.tex
necessário
pdflatex -shell-escape test
(ajuste para o método de execução do LaTeX em seu sistema).
\documentclass{article}
\usepackage{svg}
\begin{document}
\includesvg[svgpath=./graphics/]{Steps}
\end{document}
O arquivo SVG foi retirado dehttps://dev.w3.org/SVG/tools/svgweb/samples/svg-files/
Responder2
Bem, já que svg
precisa do inkscape de qualquer maneira, você pode simplesmente contornar o problema e realizar a conversão você mesmo:
inkscape -z --export-pdf=foo.pdf foo.svg
para converter o arquivo de uma vez por todas (assumindo que ele não muda repetidamente). Para automatizar isso em todos os arquivos do diretório atual, tente:
ls *.svg | while read f; do inkscape -z --export-pdf="${f/\.svg/.pdf}" "$f"; done
(mas certifique-se de que seus nomes de arquivos não contenham .svg duas vezes, caso contrário, você precisará de algo mais envolvido.)