我尝试了两种方法来包含来自多个目录的图形,一种使用graphicspath
,另一种使用宏。
图形路径方法是:
\documentclass{beamer}
\usepackage{graphicx}
\graphicspath{{/path\_1/figs/}{/path\_2/figs}}
\begin{document}
\begin{frame}
\includegraphics[options]{fig.png} % where fig.png is in one of the two directories
\end{frame}
\end{document}
该方法的错误graphicspath
如下:
[1{/home/user/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
LaTeX Warning: File `fig.png' not found on input line [x].
! Package pdftex.def Error: File `fig.png' not found.
宏方法包括定义保存图像路径的“变量”(宏/命令),然后使用变量(目录)和文件名(字符串文字)构建完整路径。我尝试使用def
和newcommand
,也尝试使用以确保首先扩展expandafter
参数(includegraphics
1,2)。
\documentclass{beamer}
\usepackage{graphicx}
\def\mydir{/path\_1/figs/} % defining via \def
%\newcommand{\mydir}{/path\_1/figs/} % also tried defining via \newcommand
\begin{document}
\begin{frame}
% all the following fail
\includegraphics[options]{\mydir{}fig.png}% 1
\expandafter\includegraphics[options]{\mydir{}fig.png}% 2
\expandafter\includegraphics\expandafter[options]{\mydir{}fig.png}% 3
\expandafter{\includegraphics[options]}{\mydir{}fig.png}% 4
\end{frame}
\end{document}
宏方法的错误各不相同;下面的错误根据上面每行的注释进行编号。
错误 #1-3:
[1{/home/user/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
! Missing number, treated as zero.
N
l.[x] \end{frame}
#4 的错误:
[1{/home/user/.texlive2016/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
! Argument of \beamer@readarg has an extra }.
<inserted text>
\par
l.[x] \end{frame}
我很想知道如何让这两种方法都发挥作用,以及对替代方法的建议。使用“变量”(宏)的一个优点是,由于明确指定了所需目录,因此同名文件可以存在于各种图像目录中,而不会引起歧义。
答案1
问题第一部分的解决方案:
不要_
在图形路径中逃避
答案2
我遇到了完全相同的问题。通过在第二个目录名称后面添加一个斜杠解决了该问题。
应该:
\graphicspath{{/path_1/figs/}{/path_2/figs/}}