Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(5.0.2195.6713); Sun, 29 Aug 2004 23:58:10 +0200 Received: by mail.proteosys.com (8.12.10/8.12.2) with ESMTP id i7TLw7KE014004 for ; Sun, 29 Aug 2004 23:58:08 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.119.176]) by relay2.uni-heidelberg.de (8.12.10/8.12.10) with ESMTP id i7TLoeBp002433; Sun, 29 Aug 2004 23:50:41 +0200 (MET DST) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C48E13.45D00500" Received: from listserv (listserv.uni-heidelberg.de [129.206.119.176]) by listserv.uni-heidelberg.de (8.12.7/8.12.7/SuSE Linux 0.6) with ESMTP id i7RE1TO4005599; Sun, 29 Aug 2004 23:47:46 +0200 Received: from LISTSERV.UNI-HEIDELBERG.DE by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8e) with spool id 530363 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sun, 29 Aug 2004 23:47:45 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.12.7/8.12.7/SuSE Linux 0.6) with ESMTP id i7TLljlc028368 for ; Sun, 29 Aug 2004 23:47:45 +0200 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by relay2.uni-heidelberg.de (8.12.10/8.12.10) with ESMTP id i7TLo9Bp002337 for ; Sun, 29 Aug 2004 23:50:09 +0200 (MET DST) Received: from [212.227.126.207] (helo=mrelayng.kundenserver.de) by moutng.kundenserver.de with esmtp (Exim 3.35 #1) id 1C1XYt-0000rN-00 for LATEX-L@listserv.uni-heidelberg.de; Sun, 29 Aug 2004 23:50:07 +0200 Received: from [80.129.7.225] (helo=istrati.mittelbach-online.de) by mrelayng.kundenserver.de with asmtp (TLSv1:EDH-RSA-DES-CBC3-SHA:168) (Exim 3.35 #1) id 1C1XYt-0002dY-00 for LATEX-L@listserv.uni-heidelberg.de; Sun, 29 Aug 2004 23:50:07 +0200 Received: (from frank@localhost) by istrati.mittelbach-online.de (8.11.2/8.11.2/SuSE Linux 8.11.1-0.5) id i7TLkIF14057; Sun, 29 Aug 2004 23:46:18 +0200 In-Reply-To: <000601c485e6$acd48e40$ad3f6750@PROPIETAFMI1K9> References: <001f01c48531$4489f4c0$95f86750@PROPIETAFMI1K9> <000601c485e6$acd48e40$ad3f6750@PROPIETAFMI1K9> Return-Path: X-Mailer: VM 6.96 under Emacs 20.7.1 X-OriginalArrivalTime: 29 Aug 2004 21:58:10.0703 (UTC) FILETIME=[463B49F0:01C48E13] X-Authentication-Warning: istrati.mittelbach-online.de: frank set sender to frank@mittelbach-online.de using -f X-Scanned-By: MIMEDefang at proteosys.com X-Provags-ID: kundenserver.de abuse@kundenserver.de auth:923c546e49b26a7485eda6910e23f403 X-ProteoSys-SPAM-Score: 0 () Content-class: urn:content-classes:message Subject: Re: \parshape in lists Date: Sun, 29 Aug 2004 22:46:18 +0100 Message-ID: A<16690.20138.648582.339847@istrati.mittelbach-online.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: \parshape in lists Thread-Index: AcSOE0ZWGLGTLIDSQw+hEH/SHW5A6A== From: "Frank Mittelbach" Sender: "Mailing list for the LaTeX3 project" To: Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 4812 This is a multi-part message in MIME format. ------_=_NextPart_001_01C48E13.45D00500 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 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 ------_=_NextPart_001_01C48E13.45D00500 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: \parshape in lists

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

------_=_NextPart_001_01C48E13.45D00500--