[OS X TeX] MacTeX inputs
Bruno Voisin
bvoisin at mac.com
Mon Nov 13 15:48:50 CET 2006
Le 13 nov. 06 à 15:03, Louis S VanSlyck a écrit :
> One can use pen color by:
>
> \input color
> {\color{red} This line is red.}
>
> Or one can insert a picture by:
>
> \input graphicx
> \includegraphics[scale=0.5]{Logo}
>
> But the two inputs seem to be mutually exclusive.
> Whichever \input command appears first causes an error at the
> second, and typeset fails.
Here the above works if you load graphicx.tex before color.tex.
This seems to be caused by the handling of the "@" character in
miniltx.tex, graphicx.tex and color.tex, apparently deficient:
miniltx.tex (called by graphicx.tex and color.tex) defines
\makeatletter and \makeatother, then uses \makeatletter immediately
but neglects to reset \makeatother before closing. There may be some
reasoning behind this, but I fail to see it for now.
\makeatletter is the standard LaTeX way of making "@" behave as a
letter, such that it can be used in command names, and \makeatother
is what makes the opposite, i.e. prohibit "@" to appear in command
names. The LaTeX format and the LaTeX packages start with
\makeatletter, use "@" in their internal command names, then end up
with \makeatother. In this way a LaTeX user won't be able to define
commands with an "@" in their names, and hence won't be able to
interfere inadvertently with the LaTeX internals.
However, miniltx.tex omits the final \makeatother. graphicx.tex is
apparently meant to be called first, as it uses @ in a command name,
immediately after calling miniltx.tex, and ends with \makeatother
(or, equivalently, \resetatcatcode):
> \input miniltx
> \def\Gin at driver{dvips.def}
> \input graphicx.sty
> \resetatcatcode
color.tex, by contrast, does use \makeatletter immediately after
calling miniltx.tex:
> \input miniltx
> \makeatletter
> \def\Gin at driver{dvips.def}
> \input color.sty
> \resetatcatcode
Hence it looks like graphicx.tex must be called before color.tex.
Actually I would advise to include the code from graphicx.tex and
color.tex directly in your TeX input file, and to modify it so as to
make it more efficient: nowadays TeX includes a way to determine
automagically in which form it is called (pdfTeX, TeX + dvips, or
XeTeX), such that you can simply write in your TeX input file:
\input miniltx
\input color.sty
\input graphicx.sty
or
\input miniltx
\input color.sty
\input graphicx.sty
and the appropriate driver file (pdftex.def, dvips.def or xetex.def)
will be selected on-the-fly and the proper graphics file format
(.pdf, .eps, .jpg, .tiff, etc.) selected as well. In modern TeX,
there is no need to write \def\Gin at driver{[...].def} for selecting
the driver file any longer.
Hope this helps,
Bruno Voisin------------------------- Info --------------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
& FAQ: http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Archive: http://tug.org/pipermail/macostex-archives/
More information about the macostex-archives
mailing list