pdf_tex 文件和 \import:未找到 PDF 文件

pdf_tex 文件和 \import:未找到 PDF 文件

我目前正在撰写博士论文,在包含使用 创建的pdf_tex和文件时遇到了问题。我正在使用和。pdfInkscapeTeXStudioPDFLaTeX

相关文件为:

phd_thesis_all/phd_thesis/tex/thesis.tex
phd_thesis_all/phd_thesis/tex/Chapter05/teleoperation.tex
phd_thesis_all/phd_thesis_figs/images/teleoperation/solidworks_model_view.pdf_tex
phd_thesis_all/phd_thesis_figs/images/teleoperation/solidworks_model_view.pdf
phd_thesis_all/phd_thesis_figs/images/teleoperation/solidworks_model_view.png
phd_thesis_all/phd_thesis_figs/images/teleoperation/solidworks_model_view.svg

已向文件svg添加注释png。这将导出为pdf文件pdf_tex以供论文使用。

将文件与图表包含在一起的命令位于 中thesis.tex

    % Chapter 5
    \FloatBarrier
    \chapter{Teleoperation}
    \label{ch:teleoperation}
    \include{Chapter05/teleoperation}

中的图形导入命令Chapter05/teleoperation.tex为:

    \begin{figure}[htb]
    \centering
    \import{../../phd_thesis_figs/}{images/teleoperation/solidworks_model_view.pdf_tex}
    \caption{\SolidWorks Model with Coordinate Systems Highlighted}
    \label{fig:solidworks_model_view}
    \end{figure}

当我尝试编译该文档时,出现以下错误:

(../../phd_thesis_figs/images/teleoperation/solidworks_model_view.pdf_tex

LaTeX Warning: File `solidworks_model_view.pdf' not found on input line 52.


! Package pdftex.def Error: File `solidworks_model_view.pdf' not found.

See the pdftex.def package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.52 ...length,page=1]{solidworks_model_view.pdf}}
                                                  %
?

换句话说,它能.pdf_tex很好地找到文件,但无法执行\includegraphics内部命令来获取pdf文件。我认为该\import命令修改了其命令中的文件搜索路径。我的graphicspath已设置,因此我可以从该目录树中很好地导入图形文件。

如果我将图形包含内容更改为:

    \includegraphics[width=\linewidth]{images/teleoperation/solidworks_model_view.png}

一切都运行良好。为什么我不能对\importpdf_tex文件执行相同操作?

为了完整起见,以下是pdf_texInkscape 生成的文件。有问题的\includegraphics指令位于第 52 行。

    %% Creator: Inkscape 0.91_64bit, www.inkscape.org
    %% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
    %% Accompanies image file 'solidworks_model_view.pdf' (pdf, eps, ps)
    %%
    %% To include the image in your LaTeX document, write
    %%   \input{<filename>.pdf_tex}
    %%  instead of
    %%   \includegraphics{<filename>.pdf}
    %% To scale the image, write
    %%   \def\svgwidth{<desired width>}
    %%   \input{<filename>.pdf_tex}
    %%  instead of
    %%   \includegraphics[width=<desired width>]{<filename>.pdf}
    %%
    %% Images with a different path to the parent latex file can
    %% be accessed with the `import' package (which may need to be
    %% installed) using
    %%   \usepackage{import}
    %% in the preamble, and then including the image with
    %%   \import{<path to file>}{<filename>.pdf_tex}
    %% Alternatively, one can specify
    %%   \graphicspath{{<path to file>/}}
    %% 
    %% For more information, please see info/svg-inkscape on CTAN:
    %%   http://tug.ctan.org/tex-archive/info/svg-inkscape
    %%
    \begingroup%
      \makeatletter%
      \providecommand\color[2][]{%
        \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
        \renewcommand\color[2][]{}%
      }%
      \providecommand\transparent[1]{%
        \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
        \renewcommand\transparent[1]{}%
      }%
      \providecommand\rotatebox[2]{#2}%
      \ifx\svgwidth\undefined%
        \setlength{\unitlength}{1680bp}%
        \ifx\svgscale\undefined%
          \relax%
        \else%
          \setlength{\unitlength}{\unitlength * \real{\svgscale}}%
        \fi%
      \else%
        \setlength{\unitlength}{\svgwidth}%
      \fi%
      \global\let\svgwidth\undefined%
      \global\let\svgscale\undefined%
      \makeatother%
      \begin{picture}(1,0.60119048)%
        \put(0,0){\includegraphics[width=\unitlength,page=1]{solidworks_model_view.pdf}}%
        \put(0.80420207,0.1664867){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$z$}}}%
        \put(0.77685686,0.12356509){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$x$}}}%
        \put(0.7926602,0.10007423){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{$y$}}}%
      \end{picture}%
    \endgroup%

答案1

好的,我刚刚也遇到了同样的问题。

我的解决方案是在文件开头添加一个\graphicspath{{figs/}},这样它就知道在哪里查找 .pdf 文件。我不确定为什么,但figs/在输入命令的开头添加\input{figs/AMB-SyRM4d.pdf_tex}是不够的。

希望这可以帮助。

答案2

我遇到了同样的问题。以下是对我有用的方法。我首先将 Texmaker 文件保存到某个文件夹中,例如 figures。然后我生成了 Inkscape pdf_tex 文件并将其保存在同一个 figures 文件夹中。然后我只需\input{filename.pdf_tex}在 tex 文件中运行即可。

答案3

如果有人仍然对此感到疑惑,我相信它在原始问题中不起作用的原因是因为 \import 命令使用不正确。您应该在文档开头包含包导入

\includepackage{import}

然后像这样使用导入命令

\import{path/to/file/}{thefile.pdf_tex}

对我来说,这工作正常,我不需要在文档开头更改图形路径。

答案4

也许这仍然对某些人有帮助。

/graphicspath在 Overleaf 上对我来说不起作用(我不想一直使用带有特定路径的导入,毕竟我的文件夹结构可能会在整个项目中发生变化)。但他们提到的一种解决方法是这里

简而言之,创建一个空文件(我在与 main.tex 相同的级别上执行此操作,但我不知道这是否是必需的),没有任何扩展名,调用它latexmkrc并添加

$ENV{'TEXINPUTS'}='./graphics//:'.$ENV{'TEXINPUTS'};

graphics是您感兴趣的最上层文件夹。

如上所述,我使用 Overleaf,但类似的东西也应该可以在其他平台或家里使用。

相关内容