[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

	fonts/misc/xetex/fontmapping/

by either of

	fonts/lig/xetex/teckit/
	fonts/misc/xetex/teckit/
	fonts/tec/xetex/teckit/
	fonts/map/xetex/teckit/

to parallel stuff like

	fonts/map/dvips/updmap/

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

	xetex/teckit/

to parallel stuff like

	omega/ocp/
	omega/otp/

> 		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

	fonts/opentype/bitstrea/
	               bluesky/
	               [...]

in accordance with the TDS recommendation of 
fonts/<type>/<supplier>/<typeface>/.

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

> 	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 
texmf.gwtex).

> 		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.cfg
> 				color.sty
				graphics.cfg
> 				graphics.sty
> 				xetex.def
> 				xelatex.ini

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

	% Select an appropriate default driver
	\begingroup
	  \chardef\x=0 %
	  % check pdfTeX
	  \@ifundefined{pdfoutput}{}{%
	    \ifcase\pdfoutput
	    \else
	      \chardef\x=1 %
	    \fi
	  }%
	  % check VTeX
	  \@ifundefined{OpMode}{}{%
	    \chardef\x=2 %
	  }%
	  % check XeTeX
	  \@ifundefined{XeTeXversion}{}{%
	    \chardef\x=3 %
	  }%
	\expandafter\endgroup
	\ifcase\x
	  % default case
	  \ExecuteOptions{dvips}%
	\or
	  % pdfTeX is running in pdf mode
	  \ExecuteOptions{pdftex}%
	\or
	  % VTeX is running
	  \ExecuteOptions{vtex}%
	\else
	  % XeTeX is running
	  \ExecuteOptions{xetex}%
	\fi

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

	tex/
		xelatex/
			hyperref/
				hyperref.cfg

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

	\expandafter\ifx\csname 
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.

FWIW,

Bruno Voisin



More information about the XeTeX mailing list