What about a simplistic solution, in which you have a flag to 1) change regardless of floats - it's your problem or 2) not change if floats are present? After all, you, the writer are putting out floats. They don't come from the Land of Floats. If you want to change dimensions, you either set the flag to force dimensional change or you don't put out the floats. As I say, simplistic.
Paul Thompson
25 Signal Hill Blvd
Belleville, IL 62223-1650
----- Original Message ----
From: Frank Mittelbach <[log in to unmask]>
To: [log in to unmask]
Sent: Friday, February 8, 2008 2:58:10 PM
Subject: Re: Internal and external page setup control
Hi Paul,
> Ha! I do this in newlfm. What I do is specify page dimensions in a
> register. During shipout, after shipping out the old page, I bring
the new
> dimensions in and substitute for the old.
so far so good. clearly one has to store changes somewhere and then use
them
in the OR to change things for the next page. But I fear that your code
exhibits precisely the problems that I was talking about. You see, for
the
application you mention (e.g., changing the first page on a letter or
article)
that will work out fine, but the problems come when you are in the
middle of
the document and you have many waiting floats to take up space.
so how do you specify the values for your registers inside the
document?
assuming you have some command do do this, this command will be seen by
LaTeX
somewhere in the document and at this point your registers for the
"next" page
will change. but effectively the text surrounding this command may be
typeset
on a later page (potentially more than one page ahead). so in the end
you will
have the effect that some code that you placed on page 5 (in the final
document) changes the page setting on page 3 or 4.
if everything is tied to explicit page breaks then things are not too
bad but
if not then you are in trouble especially if you page make up is a
little more
complicated than just cutting columns, ie if it involves floats, and
possibly
changes to the vertical dimensions of the columns.
just thing about a command that allows me to specify how floats can be
layed
out on a particular page (like on this page i don't want to have bottom
floats
or on this page I don't want any floats, to use some simple ones. so if
such a
command is placed directly into the input stream a user would expect to
see it
acting on the page where the surrounding text finally falls. and there
is the
catch: you can even envision kind of "impossible documents" ie those
the never
finish compiling: one iteration you get this command on page 4 say but
you
already use a float on that page when you encounter it. so you iterate
and on
the next run you use this specific layout with no floats on page 4 but
doing
so you put more (or less depending on the style) text onto this page
therefore
you command moves to another page. which is then wrong, so you iterate
and by
doing so you move the command again to ...
in current LaTeX the algorithms are simple enough to prevent this from
happening as something like \thispagestyle{foo} will not change the
textual
page content. The only way to get this behavior right now is by using
roman
numerals as page number and do reference to pages inside the text. if
you
carefully construct such a document you can get this behavior because
the
length of the number sequence in roman numerals is not steadily
increasing. but this is so rare and difficult to do that nearly nobody
ever
saw that in real life. with more complicated placement algorithms for
floats
and vertical column sizes this danger becomes a reality if you allow to
change
the algorithm midway from within the document.
So I'm still wondering about how to best specify such changes. If only
allowed
from the outside things are easy but if from the inside it is tricky as
you
can't explain to somebody. "well, just place your command between the
words
shown on page 5 to change the look and feel on page 4"
cheers
frank
|