![svg 包无法找到 svg 文件](https://linux22.com/image/325241/svg%20%E5%8C%85%E6%97%A0%E6%B3%95%E6%89%BE%E5%88%B0%20svg%20%E6%96%87%E4%BB%B6.png)
我正在尝试让 svg 包在 OSX 系统上运行。如果我使用 inkscape 将 *.svg 文件保存为 *.pdf 和 *.pdf_tex,那么这个问题 工作正常:
\documentclass{article}
\usepackage{svg}
\usepackage{amsmath}
\begin{document}
\begin{figure}[htbp]
\centering
\includesvg{example}
\caption{svg image}
\end{figure}
\end{document}
但无论我怎么尝试,包都不会自动创建 pdf 和 pdf_tex 文件。相反,我收到一个错误:
! LaTeX Error: File `./example' not found.
我已将 inkscape 添加到 PATH。我已将--shell-escape
选项添加到 latex 命令……我不知所措。
答案1
这是 macOS 特有的问题。
调用主 inkscape 二进制文件的 shell脚本inkscape
必须将目录更改为 inkscape 安装目录,这就是它无法在当前工作目录中找到 SVG 文件的原因。
/usr/local/bin/inkscape
在我的 macOS 上,请参阅 inkscape 脚本第 30 行的解释性注释:
# Due to changes after 0.48, we have to change working directory in the script named 'inkscape':
# recursive calls to inkscape from python-based extensions otherwise cause the app to hang or
# fail (for python-based extensions, inkscape changes the working directory to the
# script's directory, and inkscape launched by python script thus can't find resources
# like the now essential 'units.xml' in INKSCAPE_UIDIR relative to the working directory).
cd "$BASE" || exit 1
如果我曾经见过的话,那就是确凿的证据。:)
您可以尝试注释掉该cd "$BASE" || exit 1
行,转换对于简单的 SVG 仍然有效。这就是我目前正在做的事情。
或者,必须修改svg
LaTeX 包以使用完整输入和输出路径名(而不是相对路径名)来调用 inkscape。另一个选择是修改inkscape
shell 脚本以将相对路径扩展为绝对路径。
答案2
答案3
尝试更改命令行调用以首先放置 --shell-escape:
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode example.tex
在 Windows 和 Linux(ubuntu)中,\includesvg 可以工作,但不能工作,有时会出现同样的问题,但其他时候不会出现(但是,在它停止工作后,似乎很难让它再次编译),我发现在命令行中首先添加 --shell-escape 选项似乎可以使 pdflatex 调用工作每一个时间。
我希望这对其他人有所帮助,我一次又一次地被这个问题困扰,没有真正的理由或理由来解释为什么 pdflatex 调用开始失败。
祝你好运!如果其他人也用过,请告诉我。
答案4
我的问题是--clean
选项。我通过在 TeXWorks 中选择 pdflatex 解决了这个问题,它突然就构建好了。逐个取出选项帮助我找到了问题的根源。希望这对某人有帮助(可能是六个月后的我)。