我在目录中有 EPS 图像文件(名称中带有空格)../../Images space bla bla bla/
。以下 MWE 以简化的方式模拟了真实场景。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.list}
a space.eps
b space.png
\end{filecontents*}
\usepackage{grffile}
\parindent=0pt
\usepackage{graphicx}
\newread\reader
\begin{document}
\def\stripend#1 \stop{\unexpanded{#1}}
\openin\reader=\jobname.list\relax
\loop
\read\reader to \x
\unless\ifeof\reader
\section{\x}
\edef\x{%
\unexpanded{%
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]%
}%
{../../Images space bla bla bla/\expandafter\stripend\x \stop}%
}%
\x
\repeat
\closein\reader
\end{document}
因为我想导入所有图像格式并用 PSTricks 处理它们,所以我必须使用 latex-dvips-ps2pdf 序列。xelatex
这不是我的选择,因为它运行速度慢得多。简而言之,编译失败。如何解决?
请注意,此网站中提供的问题和相应的答案没有帮助。我已全部阅读,但无一有用。
答案1
dvips 对 EPS 文件的支持\special
已经使用了引号,例如:
PSfile="a b c/d e f.eps" llx=0 lly=0 urx=24 ury=24 rwi=240
然而,这个graphics
软件包的作用远不止于此:
- 文件已存在?
- 没有扩展?尝试扩展列表中提供的扩展。
- 通过 \graphicspath 搜索。
- 驱动程序特定:
\Gread@eps
读取 PostScript 文件来查找边界框。
如果给出选项,则软件包grffile
将处理前三项space
。最后一项需要修补(至少在我可能更新之前grffile
):
\documentclass{article}
\usepackage{graphicx}
\usepackage[space]{grffile}
\usepackage{etoolbox}
\makeatletter
\patchcmd\Gread@eps{\@inputcheck#1 }{\@inputcheck"#1"\relax}{}{}
\makeatother
\begin{document}
\includegraphics{a b c/d e f.eps}
\includegraphics{a b c/d e f}
\graphicspath{{a b c/}}
\includegraphics{d e f.eps}
\includegraphics{d e f}
\end{document}