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
Condense Mail Headers

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

Print Reply
Sender:
Mailing list for the LaTeX3 project <[log in to unmask]>
Subject:
From:
David Kastrup <[log in to unmask]>
Date:
Sun, 5 Jan 2003 15:03:11 +0100
Content-Type:
text/plain; charset=us-ascii
MIME-Version:
1.0
Reply-To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Parts/Attachments:
text/plain (100 lines)
Ok, I digged through quite a bit and pondered things and stuff, and
here are my opinions:

a) it is obvious that this is very much proof-of-concept quality
stuff.  A lot of serious work remains: one can't claim that for a
reasonably complete release of a LaTeX3 core (and I am just talking
about the core here, not even the base classes) more than maybe 30% of
the work are done.

b) much too much hardwired to be of general use.  The output routine
is focused on providing the functionality needed by the base classes,
and is very much limited to that.  One would have to patch around in
order to accommodate different needs.

For example, take a look at how magic penalties are allocated and
used: hardwired.  Similar for a lot of other stuff: hardwired.  The
output routine is supposed to cater for more uses than the old one,
but it does all of that hardwired.

Now suppose I don't need multicolumn support in a document class of
mine, but I need several columns of margin notes (inner column, and
two outer columns, one for verse numbers, one for marginal notes used
for references).  And I want margin notes in my footnotes as well.
Boom.

Now the attachment of marginal notes does not necessarily need to go
via the output routine: one can also pass a box containing
prospective magic penalties through a pass of \vsplit to \maxdimen,
reinstating all magic penalties that have no handler defined for that
pass, so that the material might still be treated in a later pass.
For example, if one split material into multiple columns, one might
place some marginal markers to the left of every column, but one might
also just place optical markers/comments for rare stuff in a single
column.  The former magic penalties would have to be treated before
the column split, the latter afterwards.  So how to go about this?
And we might have some margin note types where we would prefer if
they were broken across pages, some where we would prefer to have
them moved, and some where we would want them moved including the
referrer line.  All in one document.  So we want to have something
like

\newmagicpenalty\marginparApenalty

And then our footnote routine (and again, we want to be able to
allocate several different classes of footnotes) can just, before
inserting the material on the page, call

\treatmagicpenaltiesinbox{\footnoteAbox}%
  {footnoteApreparation}

And we would have had declared at some earlier time

\callmagic\marginparApenalty{footnoteApreparation}
  {\AttachMarginPar{\outputtempAbox}}

That way, the \treatmagicpenaltiesinbox call would prepare margin
pars in \outputtempAbox.  Actually, \outputtempAbox is too little
info: what kind of margin par and the width of the box available for it would also have to be declared at some time.

Anyhow, when the output routine finishes calling through all defined
hooks, all material will have been distributed along all the declared
boxes according to the algorithms associated with the various
penalties.

It becomes apparent that LaTeX would be split into two components: one
core part that can generally cater for all sorts of documents, and one
base part that will use the provided hooks in order to cater for the
need of the standard classes.  Whether a typical installation should
have one dumped format for the core, or one for core+base, or one
each, is a different question.

c) non-eTeX should not be supported.  Things like repeated \vsplit
and various uses of markers to synchronize matters simply become too
awkward and inefficient when one tries doing them with standard TeX.
You can bet that the necessary extensions will make it into stuff
like NTS and Omega, fast, when it turns out that LaTeX3 relies on
them in an early enough stage.  The sooner one turns on the thumb
screws, the less pain and hectic for people to adapt.

I see a lot of work cut out, and quite a bit of how to best tackle it.
Question: if people decide that it would make sense to do that in the
outlined manner, I don't see any reasonable time frame unless somebody
is going to spend quite a bit of work as his main occupation for a
while.  I know that there are funds for the LaTeX3 project, and I
would be interested in working on that matter, though I am not
planning on starving myself during that (I am already doing that sort
of stuff on other projects, and I can't keep it up forever.  My
savings are not unlimited).  What would be the channels where one
would propose work in that line and apply for a payment that will
support a person spending full-time on it?  Or would the only feasible
manner of getting to work on this imply having to get a separate job
paying the rent, and trying to manage the rest in spare time?  Of
course, much of the LaTeX work _is_ being done in that manner, and it
will certainly remain so, but I fear that at least for cooking up a
new LaTeX3 core, this model will fall short.  Good ideas for other
funding?

--
David Kastrup, Kriemhildstr. 15, 44793 Bochum

ATOM RSS1 RSS2