passando a extensão para \includesvg - dane-se se você fizer isso, dane-se se você não fizer isso

passando a extensão para \includesvg - dane-se se você fizer isso, dane-se se você não fizer isso

Estou tentando usar o svgpacote 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 pdflatexcom a -shell-escapeopção e a tenha inkscapeem 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-escapeopção.

Então, se o arquivo for test.texnecessá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/

insira a descrição da imagem aqui

Responder2

Bem, já que svgprecisa 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.)

informação relacionada