I have EPS image files (with spaces in their names) in a directory ../../Images space bla bla bla/. The following MWE simulates the real scenario in a simplified way.


a space.eps
b space.png


\def\stripend#1 \stop{\unexpanded{#1}}
    \read\reader to \x
       {../../Images space bla bla bla/\expandafter\stripend\x \stop}%

Because I want to import all image formats and manipulate them with PSTricks, I have to use latex-dvips-ps2pdf sequence. xelatex is not my option because it runs much slower. Shortly speaking, the compilation fails. How to solve it?

Note that the available questions and the corresponding answers in this site do not help. I have read all, none works.

  • It works as is with pdflatex (if you replace .eps by an extension pdflatex knows so I think it's probably the graphicx xelatex driver that needs to use the web2c convention of using " to quote filenames more completely. – David Carlisle Sep 27 '12 at 9:20
  • @DavidCarlisle: Have you succeeded to compile it with quotes with xetex? – kiss my armpit Sep 27 '12 at 9:26
  • No and can't delve in that far at work, left comment as a hint of someone else looking at this.. – David Carlisle Sep 27 '12 at 10:01
  • 1
    My expl3 solution to tex.stackexchange.com/questions/74008/… works, provided you load also the grffile package. I suspect that also your current code will work with that package. – egreg Sep 27 '12 at 10:20
  • @egreg: your comment works but now i change to latex-dvips-ps2pdf. – kiss my armpit Sep 29 '12 at 17:16

The \special for dvips' EPS file support already uses quotes, e.g.:

PSfile="a b c/d e f.eps" llx=0 lly=0 urx=24 ury=24 rwi=240

However, the graphics package has to do much more:

  • File exists?
  • Without extension? Try out the extensions, given in the extension list.
  • Searching via \graphicspath.
  • Driver specific: \Gread@eps reads the PostScript file to find the bounding box.

Package grffile deals with the first three items, if option space is given. The last item needs patching (at least until I might update grffile):


\patchcmd\Gread@eps{\@inputcheck#1 }{\@inputcheck"#1"\relax}{}{}

\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}
  • I am sorry. Probably you forgot to update grffile. :-) – kiss my armpit Dec 4 '13 at 2:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.