[tug-summer-of-code] Project idea: LaTeX3 "microkernel"

Joseph Wright joseph.wright at morningstar2.co.uk
Sun Mar 8 13:19:59 CET 2009

Will Robertson wrote:
> The current expl3 is set up to provide this already. There is an option
> when l3names is processed to remove all of the old TeX primitives from
> the user namespace; this automatically makes any documents processed
> "secure", since users can't change catcodes and the only commands
> provided to them are "document-level" macros.

What about \ExplSyntaxOn?

> However, this to be useful requires all the rest of LaTeX3 to be
> organised, and that's what this microkernel project is all about getting
> started with. We're not talking about actually being able to write
> proper documents in LaTeX3 yet, just to be able to create the format and
> write "hello world".
> To be absolutely clear here: there is *no* user interface to LaTeX3 yet.
> All of our work recently has been in the programming subsystem that is
> intended to also be used for LaTeX2e packages.

My idea would be that a microkernel would start with things which seem
most likely to survive (in concept, if not in implementation) from
LaTeX2e to LaTeX3.  So concepts-wise:
  - Some kind of document class idea (pre-set layout: probably *not*
    extra functionality)
  - Some division between a header and a body
  - Some "end of body" command to mirror the "start of body" command
  - Some basic formatting macros
would be somewhere to start.

As a work-in-progress, I'd envisage not changing the LaTeX2e interface
in the first pass. Hence my "Hello World" document example looks exactly
like a LaTeX2e one.

Depending on time, I'd hope that a successful microkernel project would
then look at some more extended concepts (although probably sticking to
LaTeX2e syntax):
  - Some basic document divisions
  - Some basic lists (enumeration, itemisation, ...)
  - The concept of environments
with the target of reversing "l3in2e" to "l2ein3".  This would (I think)
be an interesting coding challenge for a student and would also be a
major contribution to LaTeX3 and therefore to TeX in general.
Joseph Wright

More information about the summer-of-code mailing list