代码哪里IfFileExists
读不出来graphicspath
\documentclass{article}
\usepackage{pgffor}
\extrafloats{1000}
\usepackage{graphicx} % for importing .pdf images
\graphicspath{{/home/masi/Documents/Images/}}
\begin{document}
\foreach \ii in {1,...,62} {
\IfFileExists{\ii.jpg}{1}{0}
}
\end{doument}
答案1
\graphicspath
只需在图形加载期间在本地设置路径,如果您想为输入等设置相同的路径,也可以替换
\graphicspath{{/home/masi/Documents/Images/}}
经过
\makeatletter
\def\input@path{{/home/masi/Documents/Images/}}
\makeatother
或者(更好)不要使用\graphicspath
,而是使用
TEXINPUTS=/home/masi/Documents/Images/: pdflatex document
因此可以在那里搜索而不需要文档中的任何路径。
答案2
大卫·卡莱尔的回答如果您作为文档作者需要“graphicx
意识” ,那么这很有用。\IfFileExists
但是,如果您以软件包编写者的身份阅读此问题,那么您可能正在寻找一种方法来处理在加载软件包之前使用过的用户\graphicspath{...}
和刚刚加载软件包的用户。
latexdef -p graphicx graphicspath
显示:
\graphicspath:
macro:#1->\def \Ginput@path {#1}
它\graphicspath
所做的就是将其参数存储在宏中\Ginput@path
,否则该宏很可能未定义。
因此如果\Ginput@path
定义了,我们可以将其内容添加到\input@path
仅用于测试\IfFileExists
(即,\input@path
测试后将恢复的原始定义)。
\makeatletter
% \input@path is not necessarily defined, but if it is,
% we don't want to erase its contents
\providecommand*{\input@path}{}
\newcommand{\IfImageExists}[3]{%
% enclosing the possible redefinition of \input@path
% and the \IfFileExists test in this group will
% make \input@path revert to its previous definition after the test
\begingroup
% \ifdefined comes from eTeX, but
% if you're using graphicx I suppose you're using eTeX
\ifdefined\Ginput@path
\edef\input@path{\input@path\Ginput@path}%
\fi
\IfFileExists{#1}{\endgroup #2}{\endgroup #3}%
\endgroup
}
\makeatother