[XeTeX] geometry.sty FIX for XeTeX 0.994
Bruno Voisin
bvoisin at mac.com
Wed Jun 7 11:05:13 CEST 2006
Le 7 juin 06 à 10:01, Ralf Stubner a écrit :
> Will Robertson <wspr81 at gmail.com> writes:
>
>> Use the following to temporarily fix the problem until geometry is
>> updated; note that it works whether the document is typeset using
>> either the XeTeX or pdfTeX backends:
>>
>> \ifdefined\XeTeXversion
>> \newcount\pdfoutput
>> \pdfoutput0\relax
>> \fi
>> \usepackage[dvipdfm]{geometry}
>
> The most appropriate place for something like this is probably the
> geometry.cfg that is shipped with XeTeX's TEXMF tree.
I don't think that's enough. The "controversial" part of geometry.sty
is:
\def\Gm at checkdrivers{%
\ifx\pdfpagewidth\@undefined\else
\ifnum\pdfoutput=\@ne
\Gm at setdriver{pdftex}%
\fi
\fi
\ifx\VTeXversion\@undefined\else
\ifnum\OpMode=\@ne
\Gm at setdriver{vtex}%
\else
\ifnum\OpMode=\tw@
\Gm at setdriver{vtex}%
\fi
\fi
\fi
\ifx\Gm at driver\Gm at dvips
\Gm at specialtrue
\else
\ifx\Gm at driver\Gm at dvipdfm
\Gm at specialtrue
\fi
\fi}%
It seems to add to the explicit choice of driver, either through an
option such as \usepackage[dvipdfm]{geometry} or in the config file
geometry.cfg, another implicit check inside the package geometry.sty
itself. Specifically, the above code sets the driver to [pdftex] if
\pdfoutput is 1, and to [vtex] if \OpMode is 1 or 2; it's only
afterwards that the driver setting (either explicit or implicit) is
taken into account, with \Gm at special set to true in case the driver
is either [dvips] or [dvipdfm]. And because of the way this works,
the implicit driver setting, when it applies, seems to take over any
explicit setting.
Thus, in this case, I think the config file geometry.cfg provided by
Jonathan is not enough: the package file geometry.sty itself must be
changed. I think that geometry.sty should replace its implicit checks
for [pdftex] and [vtex] by calls for ifpdf.sty and ifvtex.sty:
\RequirePackage{ifpdf}
\RequirePackage{ifvtex}
and then use the switches \ifpdf and \ifvtex that these packages
provide.
An alternative, possibly more viable in the long term, is the
preparation of a package ifxetex.sty, based on the code in ifpdf.sty
and ifvtex.sty and taking into account the introduction and/or
evolution in time of the command \XeTeXversion.
Bruno Voisin
More information about the XeTeX
mailing list