我目前正在撰写博士论文,在包含使用 创建的pdf_tex
和文件时遇到了问题。我正在使用和。pdf
Inkscape
TeXStudio
PDFLaTeX
相关文件为:
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}
一切都运行良好。为什么我不能对\import
和pdf_tex
文件执行相同操作?
为了完整起见,以下是pdf_tex
Inkscape 生成的文件。有问题的\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,但类似的东西也应该可以在其他平台或家里使用。