LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Frank Mittelbach <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Date:
Sun, 29 Aug 2004 23:46:18 +0200
Content-Type:
text/plain
Parts/Attachments:
text/plain (86 lines)
Javier writes:

 > Thanks Donald,
 >
 > > Like much of original LaTeX, it is sloppy coding and profligate
 > > waste of TeX features.
 >
 > Then, we could say \parshape is here for "historical
 > reasons".

I beg to disagree with my learned collegue from Vancouver. Granted that the
original LaTeX is perhaps not the best coding in all parts it is far from
sloppy or a waste of TeX features given goals and means back then (so much for
Leslie's honour :-)

 > > different) for a different list.  The current definition is extremely
 > > obscure, ugly, and fragile in its redefinition of \par, needed to
 > > reset \parshape settings every paragraph.
 >
 > And for this very reason I was expecting an answer
 > like "well, this way one can do the following
 > wonderful things...", but it seems the reasons
 > are quite simpler ;-).

well it is also needed to handle the list logic of when the following text
should indent or not (which is essentially an \everypar issue but most likely
can't be done without changing \par in conjunction as well)

i don't really see that as so fragile, more problematical is that the
interfaces are not really suitable for extended further use to say it
politely, which of course makes them fragile if combined with other stuff

as far as my model of the galley is concerned there are four distinct levels:

 1 outer galley dimensions (something like columnwidth textheight)

 2 inner galley dimensions (horizontal indentations on left and right due to
   some high-level typographical structures, eg list --- in current latex
   represented, though not very nicely by \@totalleftmargin and \linewidth)

 3 paragraph shapes (something like cutout holes for pictures or initials or
   special shapes like "staggered" for heading designs) --- this level doesn't
   really exist in current LaTeX except for the trivial case which is block

 4 the justification level, eg raggedness, centering, partial centering etc,
   within the above shape

those ideas are further detailed in

 http://www.latex-project.org/code/experimental/galley.tgz

or

 http://www.latex-project.org/code/experimental/xfrontm.tgz (xhj.dtx)


 4) clearly needs \leftskip and \rightskip

 a more generalised 3) can best or only be implemented using \parshape and 2
 is sort of in the middle you can built it via one or the other (by
 calculating the combined values) but in the four level scheme i think
 \parshape is the correct choice


as far as the original list implmentation is concerned I agree that it is an odd
mixture in the sense that on one hand it goes for a parshape implementation on
level 2 but on the other also hijacks \rightskip so that there is no way to
orthogonally apply justification level commands to lists (or more precisely
they all need to know about \rightskip as well as about \@rightskip ...)

Donald's remark about

> I think lists could have been defined
> better using \leftskip/\rightskip, and that would allow safe
> reprocessing of page contents using \lastbox.

are interesting though. What kind of reprocessing do you have in mind?
\parshape boxes are shifted and the indentation doesn't show up anywhere is
that the problem? is that something worth exploring as a missing feature for
some xyzTeX requirement? because i don't really see that you can avoid using
\parshape in a more general model and then you have the problem even if you
may circumvent that in current LaTeX with a different implmentation that only
does levels 1,2,4

frank

ATOM RSS1 RSS2