[XeTeX] spaces in filenames

Jonathan Kew jonathan_kew at sil.org
Thu Aug 10 12:04:58 CEST 2006


On 29 Jul 2006, at 9:28 pm, William Adams wrote:

> Was there ever a resolution on this?

There wasn't, but there is now. :)

I have just re-written the filename quoting code, and I think it  
works better now (and is more compatible with pdftex etc). If you  
check out and build the latest pre-0.995 code (rev 324 in  
Subversion), you should be able to handle names with spaces, without  
the .aux file problems (etc) that you've seen.

For your particular usage, there's one "gotcha" to watch out for: if  
the filename includes spaces, \jobname will return a quoted string.  
But fontspec's \setFOOfont{} macros want the name without quotes. So  
you'll need to strip quote marks from the \jobname string before  
using it in this context. Something like this should work, I think:

   \makeatletter
   \def\unquote at Jobname#1"#2"#3\end{\def\Jobname{#1}%
     \ifx\Jobname\empty\def\Jobname{#2}\fi}
   \expandafter\unquote at Jobname\jobname""\end
   \makeatother

   \setromanfont{\Jobname} % \Jobname is \jobname with quotes (if  
any) stripped

Strictly speaking, this is not always adequate: if the filename  
*includes* a double-quote character, then \jobname will return a  
single-quoted string instead; and there are even more complex/messy  
possibilities, if the name includes both types of quote marks. But  
for practical purposes, this will probably serve.

Ever considered how to handle a file named <Joyce's "Ulysses".tex>?!  
XeTeX can now do it:

   $ xetex Joyce\'s\ \"Ulysses\".tex
   This is XeTeX, Version 3.141592-2.2-0.995 (Web2C 7.5.5)
   entering extended mode
   (./Joyce's "Ulysses".tex [1] )
   Output written on Joyce's "Ulysses".pdf (1 page).
   Transcript written on Joyce's "Ulysses".log.

pdfTeX can't handle this case:

   $ pdftex Joyce\'s\ \"Ulysses\".tex
   This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5)
   entering extended mode
   ! I can't find file `"Joyce's Ulysses.tex"'.
   <*> "Joyce's Ulysses.tex"

   Please type another input file name: ^D
   ! Emergency stop.

(Running in a directory where the file *does* exist, of course.)

JK




More information about the XeTeX mailing list