Fwd: [tex-live] [Fwd: [OS X TeX] Bug in latest pdfTeX (and/or teTeX) with respect to \magnification?]

Bruno Voisin bvoisin at mac.com
Tue Dec 21 19:26:19 EST 2004

> De: Hartmut Henkel
> Date: 22 décembre 2004 01:10:41 GMT+01:00
> À: Bruno Voisin
> Cc: TeX on Mac OS X Mailing List
> Objet: Rép : [tex-live] [Fwd: [OS X TeX] Bug in latest pdfTeX (and/or 
> teTeX) with respect to \magnification?]
> On Tue, 21 Dec 2004, Bruno Voisin wrote:
>> Le 21 déc. 04, à 01:23, Gerben Wierda a écrit :
>>> I played post office with this question from Bruno:
>> Thanks for this, and to Hartmut for the clarification that followed.
>> So if I understood correctly, here is what happens:
>> - With previous versions of pdfTeX, up to TL2003, there were two ways
>> to set parameters: via TeX primitives in the TeX input file, and via
>> parameters in the configuration file pdftex.cfg. From the
>> documentation of TL2003:
> All you observed is right. Yes there were two ways, one pdftex.cfg file
> in a special non-TeX format, which was a rather heterogenous approach.
> So it was somehow decided to scrap this special file, and do everything
> consistently in the TeX language.
>>> A typical pdftex.cfg file looks like this, setting up output for A4
>>> paper size and the standard TEX offset of 1 inch, and loading two
>>> map files for fonts:
>>> 	[...]
>>> 	page_width	210 true mm	% A4 paper width
>>> 	page_height	297 true mm	% A4 paper height
>>> 	horigin		1 true in		% horizontal origin offset
>>> 	vorigin		1 true in		% vertical origin offset
>>> 	[...]
>>> The configuration file sets default values for these parameters, and
>>> apart from the map entry, they all can be over--ridden in the TEX
>>> source file. Dimensions can be specified as true, which makes them
>>> immune for magnification (when set).
>> The corresponding TeX primitives were:
>>> Most parameters in the configuration file have a corresponding
>>> internal register. When not set during the TEX run, pdfTEX uses the
>>> values as specified in the configuration file.
>>> internal name	parameters	type
>>> [...]
>>> \pdfhorigin		horigin		dimension
>>> \pdfvorigin		vorigin		dimension
>>> \pdfpageheight	page_height	dimension
>>> \pdfpagewidth 	page_width	dimension
>>> [...]
>> - With TL2004 the parameters have been suppressed, as well as the file
>> pdftex.cfg which is ignored, and all is set via the TeX primitives
>> which are initialized in the file pdftexconfig.tex read during the
>> creation of format files:
>>> % Set pdfTeX parameters for pdf mode (replacing pdftex.cfg file).
>>> % Thomas Esser, 2004. public domain.
>>> [...]
>>> \pdfpagewidth=594.99 true bp
>>> \pdfpageheight=841.99 true bp
>>> \pdfhorigin=1 true in
>>> \pdfvorigin=1 true in
>>> [...]
> These \dimen parameters aren't really initialized to true dimensions,
> the "true" has no effect here, as this stuff would be true dimensions
> only during initex, and the "true" would scale the dimension in initex
> only if it came _after_ a \mag != 1000. So one could leave the "true"
> out in pdftexconfig.tex, it's only sugar there. The \pdfpagewidth etc.
> values are then dumped into the format, and they are now treated like
> any other dimension, e. g. \hsize. So this way to do it should be more
> consistent. Yes and there is this slight backward incompatibility (i 
> had
> to change a few posters by adding true \pdfpagewidth etc. after the
> \mag; this were easy fixes).
>> - Now comes the question of \magnification. With TL2003, putting in a
>> plain TeX input file, processed by pdfTeX, the line
>> 	\magnification=\magstep1
>> magnified the text by 1.2 and reinitialized the size of the output box
>> (= the width and height of text) to their plain TeX default (= US
>> Letter paper). The parameters page_width, page_height, horigin and
>> vorigin, which had been set in pdftex.cfg in true units,...
> see the inconsistency: setting things to true _before_ \mag is given 
> has
> no effect. If it had, it was no TeX language here.
>> ...were not affected by the magnification and remained unchanged (= A4
>> paper for me).
>> - With TL2004, the line
>> 	\magnification=\magstep1
>> has the same effect on the size of text and output box as with TL2003.
>> It should also not affect the TeX primitives \pdfpagewidth,
>> \pdfpageheight, \pdfhorigin, \pdfvorigin, set in true units in the
>> file pdftexconfig.tex,
> as said above, these are _not_ set to true units. True things have only
> effect if they come _after_ a \mag.
>> but apparently it does: the page dimensions are also multiplied by
>> \magstep1 (= 1.2).
>> I verified in pdftex.log that the file pdftexconfig.tex has indeed
>> been read when creating pdftex.fmt. So what can be happening? Is this
>> normal, or a bug?
> Well, i believe this will be the normal way, and causing a little
> trouble to legacy documents where \mag != 1000.
>> This behaviour might be a problem with respect to backwards
>> compatibility and compatibility with other TeX engines: take story.tex
>> and add at its beginning the single line
>> 	\magnification=\magstep1
>> That is a perfectly legitimate plain TeX file, not using any
>> dvips-specific or eTeX-specific or anything-specific extension, and
>> yielding a given output with TeX + dvips + GhostScript. Then process
>> the same file with pdfTeX, you'll get a different output. At least
>> that's what it does on my setup.
> Since pdftex combines a TeX engine plus a pdf backend, these media
> related parameters have to be fed somehow to pdftex. So the case is
> different from a split TeX + dvips approach, and it's something to be
> decided whether there should be a few special dimensions like
> \pdfpagewidth and friends that would not be handled like other
> dimensions after a \mag. Now this special case has been removed.
> And you could as well tell dvips that it should scale the media size by
> the -T option.
>> Or am I making a lot of fuss for nothing, and is the page size, as
>> displayed by Acrobat Reader, for example, irrelevant, given that when
>> you send the file to a printer only the size of the text and the
>> position of the origin will be taken into account, so that the printed
>> output will be the same for dvips and pdfTeX? (Assuming that you
>> disabled Acrobat's automatic rescaling to fit the page size specified
>> in the GUI printer driver.)
> It's relevant, one needs to have a MediaBox fitting to the document 
> also
> for scaled output.
>> I had not noticed before the fact that \magnification reinitialized
>> the page size to US Letter, since I had always followed it by
>> specification of \hsize, \vsize, \hoffset and \voffset to fit with A4
>> paper. At least now I understand why, in the letter example at the
>> beginning of Appendix E of the TeXbook, Knuth says
>> 	\magnification=\magstep1
>> 	\input letterformat
>> (letterformat.tex setting \hsize, \vsize and \voffset), and not
>> 	\input letterformat
>> 	\magnification=\magstep1
>> Thus the moral of the story seems to be: after setting \mag or
>> \magnification, always redefine TeX page size parameters (\hsize,
>> \vsize, \hoffset and \voffset) and pdfTeX page size parameters
>> (\pdfpagewidth, \pdfpageheight, \pdfhorigin and \pdfvorigin), in true
>> units.
> Yes. Or maybe pre-scale before the \mag.
>> It's a pity these two sets of parameters are not made transparently
>> dependent on each other, as they are in LaTeX, so that you don't have
>> to set one and the other.
> They are completely independent, as usual, e. g. like \hoffset is from
> \hsize. If you increase \hoffset, \hsize is not automatically 
> shrinking.
> This is automatically done by the geometry package, which in principle
> also could handle all these media related calculations, but AFAIK when
> \mag != 1000, even the geometry package with older pdftex had problems
> to do the right thing. The \pdfpagewidth... handling now seems to be
> more logical. Don't you agree?
> Regards, Hartmut
--------------------- 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 Post: <mailto:MacOSX-TeX at email.esm.psu.edu>

More information about the MacOSX-TeX mailing list