[XeTeX] xetex file organization

Bruno Voisin bvoisin at mac.com
Wed Nov 3 16:04:16 CET 2004

Hi Jonathan,

> I'm trying to reorganize the various files that are part of the XeTeX 
> distribution in order to fit the TDS better, and I'd appreciate any 
> comments.
> Here's what I'm thinking of so far:

Some comments (taking into account I'm not a specialist on the TDS, so 
if somebody says something different they're probably right):

> texmf.local/
> 	fonts/
> 		misc/
> 			xetex/
> 				fontmapping/
> 					(TECkit mapping file(s) for xetex font-mapping mechanism)

Looking at the mention in tds.dvi (p. 8) of fonts/lig/, and given (if I 
understood correctly) the TECkit mapping files are used by XeTeX to 
perform some kind of ligature, would it make sense to use 
fonts/lig/xetex/teckit/ instead? But then maybe the lig files, 
mentioned in tds.dvi, are specific to afm2pl and have a specific 
syntax, implying that another directory should be used, maybe 
fonts/tec/, or simply fonts/misc/ as you did. So in short I would 
suggest replacing


by either of


to parallel stuff like


Wait: looking again at the present texmf.tetex tree, there's another 
possibility which might be more appropriate:


to parallel stuff like


> 		opentype/
> 			xetex/
> 				bitstrea/
> 				bluesky/
> 				hoekwater/
> 				public/
> 					(...etc, as under current fonts/otf)

I would agree with Adam that, provided the OpenType format is something 
standard and not specific to XeTeX, it would make more sense to use


in accordance with the TDS recommendation of 

All the rest looks fine to me, but again I'm not a specialist. That 

> 	tex/
> 		generic/
> 			hyphen/
> 				(Unicode-compatible versions of hyphenation files;
> 				these are designed to still work with standard TeX as well)

Hopefully at some point in the future, when/if the capability of 
reading files in a specific encoding is added to XeTeX, this directory 
would become unnecessary (as well as the modified version of url.sty in 

> 		xelatex/
> 			[...]
> 			graphics/
> 				color.sty
> 				graphics.sty
> 				xetex.def

Hopefully, when xetex.def is added to the standard LaTeX graphics 
package and color.sty and graphics.sty are modified accordingly, this 
directory will become unnecessary.

On a related note, to provide a temporary fix for packages that assume 
either dvips or pdfTeX is used, and until these packages become 
XeTeX-aware, I would suggest adding modified config files, like 
color.cfg and graphics.cfg, allowing automatic detection of XeTeX 
(based on \XeTeXversion, for example) and selection of the [xetex] 
option when appropriate, yielding:

> 			graphics/
> 				color.sty
> 				graphics.sty
> 				xetex.def
> 				xelatex.ini

A simple modification of graphics.cfg, for example, would include:

	% Select an appropriate default driver
	  \chardef\x=0 %
	  % check pdfTeX
	      \chardef\x=1 %
	  % check VTeX
	    \chardef\x=2 %
	  % check XeTeX
	    \chardef\x=3 %
	  % default case
	  % pdfTeX is running in pdf mode
	  % VTeX is running
	  % XeTeX is running

Similarly, given that hyperref.sty includes some code doing automatic 
driver selection (by testing for \pdfoutput etc.), and that there is a 
hyperref.cfg defining dvips as the default driver, would it make sense 
to include a file


identical to the standard hyperref.cfg ecept for the addition of a line

XeTeXversion\endcsname\relax\def\Hy at driver{hdvipdfm}\fi

or similar (I'm not sure the above would work, it's untested, Ross 
would probably know better than me).

> I've included a "xetex" level in several cases here (under fonts/misc, 
> fonts/opentype, scripts) to make it easy to distinguish items 
> installed with xetex from other files that might be present. Is this a 
> reasonable thing to do?

See above.

> Even with this (or any other) file organization, I don't think the 
> Web2C 2.5.3 default of
> 	TEXINPUTS = .;$TEXMF/tex/{$progname,generic,}//
> in texmf.cnf by itself can be adequate for xelatex, as it needs to 
> find files within the main latex tree(s) as well as under the specific 
> xelatex program name. So we'll still need to add entries in texmf.cnf. 
> I'm thinking something like:
> 	TEXINPUTS.xetex = .;$TEXMF/tex/{xetex,generic,}//
> 	TEXINPUTS.xelatex = .;$TEXMF/tex/{xelatex,latex,generic,}//

Looks fine to me.


Bruno Voisin

More information about the XeTeX mailing list