使用 inkscape 生成的 pdf + pdf_tex 文件和 svg 包时出现 pdf_tex 文件未找到错误

使用 inkscape 生成的 pdf + pdf_tex 文件和 svg 包时出现 pdf_tex 文件未找到错误

我正在尝试将 Inkscape 生成的 pdf 图像(其中包含要由 LaTeX 解释的文本)包含到 LaTeX 文档中。

当我将图像文件保存在与 tex 文件相同的文件夹中时,它可以工作,但我希望将图像放在子文件夹中img

我已经看到了关于如何实现这一点的多条说明,但最被接受的方法似乎是使用 的包svg\includepackage{svg}告诉 LaTeX 在哪里使用 来查找文件/图像\svgpath{{img/}},然后使用 将图像插入到文档中\input{example.pdf_tex}

梅威瑟:

\documentclass{standalone}
\usepackage{svg}
\svgpath{{img/}}

\begin{document}
    \input{example.pdf_tex}
\end{document}

这也是svg软件包文档

但是,当我这样做时,LaTeX 无法找到该文件,并且出现错误

! LaTeX Error: File `example.pdf_tex' not found.

现在,还有其他方法可以完成我想要做的事情。例如,使用命令包含\graphicspath{{img/}}或使用该包。我也尝试过使用绝对路径执行这些命令。import\import{<path to file>}{<filename>.pdf_tex}

有人知道哪里出了问题吗?

答案1

svg实际上,使用同名包包含文件的方法是使用命令\includesvg(作为正常图形包含的附属\includegraphics)。此命令的参数应指向文件svg不是该文件),您可以使用宏 (作为 的引号)pdf_tex告诉 LaTeX 在哪里查找该文件。然后 LaTeX 将自动调用 Inkscape 创建和文件 (如果它们已过期或不存在) 并包含它们。\svgpath\graphicspathpdfpdf_tex

因此,你的 MWE 应该为

\documentclass{article}

\usepackage[inkscapearea=page]{svg}
\svgpath{{img/}}

\begin{document}

\includesvg{example}

\end{document}

example.svg位于子文件夹中的位置img/。(我包含该inkscapearea=page选项是因为我认为这是大多数人想要的。)


为了实现此功能,您需要在启用 shell escape 的情况下运行 LaTeX,并在系统路径变量中设置 Inkscape。请参阅这个答案以获得更详细的解释。

答案2

我使用 Rasmus 对我的原始问题的评论中提出的建议解决了这个问题。由于它需要一个额外的步骤,我在这里给出了完整的解决方案。

通过在将 pdf_tex 文件包含在文档中时告诉 LaTeX 其位置,可以解决此问题\input{img/example.pdf_tex}。通过在前言中添加 ,可以告诉 LaTeX 在哪里可以找到相应的 pdf 文件\graphicspath{{img/}}。这会告诉 LaTeX 在此文件夹中搜索图像。

请注意,添加\svgpath{{img/}}序言而不是\graphicspath{{img/}}不起作用,它会引发编译错误/警告LaTeX Warning: File `example.pdf' not found。这对我来说是正确的,我正在使用 TeX Live 2019 发行版。

因此,以下内容有效:

\documentclass{standalone}

\usepackage{svg}
\graphicspath{{img/}}

\begin{document}
    \input{img/example.pdf_tex}
\end{document}

希望这对其他人也有用。

相关内容