
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 -z --export-pdf=foo.pdf foo.svg
파일을 한 번에 변환합니다(반복적으로 변경되지 않는다고 가정). 현재 디렉토리의 모든 파일에 대해 이를 자동화하려면 다음을 시도하십시오.
ls *.svg | while read f; do inkscape -z --export-pdf="${f/\.svg/.pdf}" "$f"; done
(그러나 파일 이름에 .svg가 두 번 포함되지 않는지 확인하십시오. 그렇지 않으면 더 관련된 내용이 필요합니다.)