Received: from webgate.proteosys.de (mail.proteosys-ag.com [62.225.9.49]) by lucy.proteosys (8.11.0/8.9.3/SuSE Linux 8.9.3-0.1) with ESMTP id f3A74H403792 for ; Tue, 10 Apr 2001 09:04:17 +0200 Received: by webgate.proteosys.de (8.11.0/8.11.0) with ESMTP id f3A74GH29721 . for ; Tue, 10 Apr 2001 09:04:16 +0200 Received: from mail.Uni-Mainz.DE (mailserver1.zdv.Uni-Mainz.DE [134.93.8.30]) by mailgate1.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f3A74FV03543 for ; Tue, 10 Apr 2001 09:04:15 +0200 (MET DST) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C0C18C.7510EE80" Received: from mailgate1.zdv.Uni-Mainz.DE (mailgate1.zdv.Uni-Mainz.DE [134.93.8.56]) by mail.Uni-Mainz.DE (8.9.3/8.9.3) with ESMTP id JAA18945 for ; Tue, 10 Apr 2001 09:04:14 +0200 (MEST) Received: from mail.listserv.gmd.de (mail.listserv.gmd.de [192.88.97.5]) by mailgate1.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f3A74CV03531 for ; Tue, 10 Apr 2001 09:04:12 +0200 (MET DST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from mail.listserv.gmd.de (192.88.97.5) by mail.listserv.gmd.de (LSMTP for OpenVMS v1.1a) with SMTP id <2.923461C3@mail.listserv.gmd.de>; Tue, 10 Apr 2001 9:03:28 +0200 Received: from RELAY.URZ.UNI-HEIDELBERG.DE by RELAY.URZ.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8b) with spool id 493491 for LATEX-L@RELAY.URZ.UNI-HEIDELBERG.DE; Tue, 10 Apr 2001 09:04:08 +0200 Received: from ix.urz.uni-heidelberg.de (mail.urz.uni-heidelberg.de [129.206.119.234]) by relay.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id JAA07955 for ; Tue, 10 Apr 2001 09:04:07 +0200 (MET DST) Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by ix.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id JAA56954 for ; Tue, 10 Apr 2001 09:04:07 +0200 Received: from sender.ngi.de (sender.ngi.de [212.79.47.18]) by relay.uni-heidelberg.de (8.10.2+Sun/8.10.2) with ESMTP id f3A745f13402 for ; Tue, 10 Apr 2001 09:04:05 +0200 (MET DST) Received: from istrati.zdv.uni-mainz.de (manz-3e364fbc.pool.mediaWays.net [62.54.79.188]) by sender.ngi.de (Postfix) with ESMTP id 3736E96D5F for ; Tue, 10 Apr 2001 08:54:20 +0200 (CEST) Received: (from latex3@localhost) by istrati.zdv.uni-mainz.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id JAA31701; Tue, 10 Apr 2001 09:01:42 +0200 In-Reply-To: References: Return-Path: X-Mailer: VM 6.75 under Emacs 20.4.1 X-Authentication-Warning: istrati.zdv.uni-mainz.de: latex3 set sender to frank@mittelbach-online.de using -f Content-class: urn:content-classes:message Subject: Re: Justification/std template Date: Tue, 10 Apr 2001 08:01:42 +0100 Message-ID: <15058.45014.726051.430547@istrati.zdv.uni-mainz.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: From: "Frank Mittelbach" Sender: "Mailing list for the LaTeX3 project" To: "Multiple recipients of list LATEX-L" Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 4032 This is a multi-part message in MIME format. ------_=_NextPart_001_01C0C18C.7510EE80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > You mean in addition to the fact that the xhj package abstract claims = you > shouldn't use galley2 directly in more than 2% of the cases? seems we have some misunderstanding here. i do believe that the above statetemt is right (or rather should be right), i.e., that in most circumstances one should only use higher level interfaces that use = galley internally rather than galley itself. I understood you as trying to get justification without internally using the galley interface at all. > > >but i think that if you want extended control like offered by the = galley > >interface you can't simply turn it on and off but have to stay = within its > >model. > > That's not at all what I was doing. I simply had expected that = changes to > justification would be contained by the normal grouping mechanism = (because > they are in 2e) and the fact that they aren't suggests that there are > things missing from the basic interfaces. hmm, sounds bad, doesn't it? well i just looked up how i implemented = list environments (since they would need that too) and what I found was this: \GALsavegalleystate: ... \GALrestoregalleystate: i think my original motivation was that the grouping mechanism as such = is too fragile to provide proper control in case of the galley structures as = too many things within TeX's model of the galley happen at different places, e.g = the \parindent is evalutated at the beginning, the baselineskip (to the = previous paragraph even) is calculated at the end of the paragraph, etc. so by = making all things global i was able to control the changes better and in a = safer way. the down effect is that you have to include in environments like yours explicit state saving end restoring code. clearly something open to refinement (again the whole implementation is = meant as a trial prototype! - improve it) > For my present needs I can just > switch to using instances of the `single' template instead since the > justification was changed for each new paragraph anyhow. I suspect = however > that having changes of the justification (or whatever) apply for the > duration of an environment will be a rather frequent request and one > shouldn't have to go to the "special needs" interface to achieve it. = It > could be that you have to start a new galley level for the = environment, but > then that should probably be given as an example somewhere. ah here you say it anyhow. however, the fact that such environments = start a new galley level (as they do effectively with the state saving action) = means that they to some extend decouple themselves from the outer environment = and I remember that this was bothersome in one or the other case I was playing = with. So better suggestions are welcome. > It is a bit annoying that the galley stuff makes all old code so = completely > ineffective. Would it be possible to create some templates which (at = each > \par and in \everypar, I suspect) simply have the mechanisms look in = the > registers which take the names of the primitive parameters and uses = the > values found there? It would (hopefully) enable old code to work in = the > extent that it isn't overridden by settings using the LaTeX2e* = interfaces. the comepltexity of the galley2 implementation isn't due to me being = naughty, it is more or less in my believe due to the nature of the beast. in = other words, I started out with the idea of hooking into \par and \everypar = (which is essentially what I do) and ended up with this type of code (and this = is in fact already the second prototype) better programmers up front then --- any takers? frank ------_=_NextPart_001_01C0C18C.7510EE80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: Justification/std template

 > You mean in addition to the fact that the = xhj package abstract claims you
 > shouldn't use galley2 directly in more = than 2% of the cases?

seems we have some misunderstanding here. i do believe = that the above
statetemt is right (or rather should be right), i.e., = that in most
circumstances one should only use higher level = interfaces that use galley
internally rather than galley itself. I understood = you as trying to get
justification without internally using the galley = interface at all.

 >
 > >but i think that if you want extended = control like offered by the galley
 > >interface you can't simply turn it on = and off but have to stay within its
 > >model.
 >
 > That's not at all what I was doing. I = simply had expected that changes to
 > justification would be contained by the = normal grouping mechanism (because
 > they are in 2e) and the fact that they = aren't suggests that there are
 > things missing from the basic = interfaces.

hmm, sounds bad, doesn't it? well i just looked up how = i implemented list
environments (since they would need that too) and = what I found was this:

  \GALsavegalleystate:
  ...
  \GALrestoregalleystate:

i think my original motivation was that the grouping = mechanism as such is too
fragile to provide proper control in case of the = galley structures as too many
things within TeX's model of the galley happen at = different places, e.g the
\parindent is evalutated at the beginning, the = baselineskip (to the previous
paragraph even) is calculated at the end of the = paragraph, etc. so by making
all things global i was able to control the changes = better and in a safer way.

the down effect is that you have to include in = environments like yours
explicit state saving end restoring code.

clearly something open to refinement (again the whole = implementation is meant
as a trial prototype! - improve it)

 > For my present needs I can just
 > switch to using instances of the `single' = template instead since the
 > justification was changed for each new = paragraph anyhow. I suspect however
 > that having changes of the justification = (or whatever) apply for the
 > duration of an environment will be a = rather frequent request and one
 > shouldn't have to go to the "special = needs" interface to achieve it. It
 > could be that you have to start a new = galley level for the environment, but
 > then that should probably be given as an = example somewhere.

ah here you say it anyhow. however, the fact that such = environments start a
new galley level (as they do effectively with the = state saving action) means
that they to some extend decouple themselves from the = outer environment and I
remember that this was bothersome in one or the other = case I was playing with.

So better suggestions are welcome.

 > It is a bit annoying that the galley stuff = makes all old code so completely
 > ineffective. Would it be possible to = create some templates which (at each
 > \par and in \everypar, I suspect) simply = have the mechanisms look in the
 > registers which take the names of the = primitive parameters and uses the
 > values found there? It would (hopefully) = enable old code to work in the
 > extent that it isn't overridden by = settings using the LaTeX2e* interfaces.

the comepltexity of the galley2 implementation isn't = due to me being naughty,
it is more or less in my believe due to the nature of = the beast. in other
words, I started out with the idea of hooking into = \par and \everypar (which
is essentially what I do) and ended up with this type = of code (and this is in
fact already the second prototype)

better programmers up front then --- any = takers?

frank

------_=_NextPart_001_01C0C18C.7510EE80--