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