LaTeX3 Roadmap

One of the questions that comes up from time to time is what the ‘roadmap’ is for LaTeX3 development. While there is not an official plan, I certainly have some ideas on what I’d like to see addressed in a concrete way. This is all rather flexible, but I’ll try to outline some areas for attention.

Short term

The short term is about things which LaTeX3 does not critically depend on, and for which a lot of work is already done. This is very much an ongoing area:  small improvements spread across a range of topics. These items all fit into the concept of ‘LaTeX3 in LaTeX2e’, where this material can be loaded without affecting existing documents.

Floating point expressions

The current floating point implementation in LaTeX3 is based on carrying out assignments, and is pretty simple-minded in the way values are stored. Bruno Le Floch is working on an improved approach, which will allow floating point expressions to be parsed in an expandable way. This will be very handy for doing things like box rotations, but also in the future for Tikz-like drawing capabilities.

Extending key–value concepts

The current l3keys module is based loosely on pgfkeys. One area that is not implemented is the idea of a ‘key path’. Using a path model for setting keys has some advantages, so I’d like to add something like the ability to do

\keys_set:n
  {
    /module .cd ,
    key-a = value ,
    key-b .meta = { key-a = setting , /other-module/key = value }
  }

LaTeX3 niggles

There are a number of issues that have come up as LaTeX3 has seen more use. Fixing these is an ongoing problem, and we should probably look to deal with a few over the coming weeks. The supply is not going to run out!

Documentation improvements

A key aim for LaTeX3 is to document all of the material which is intended for others to use. Getting documentation right is hard, and so another ongoing area is to improve the documentation. We’ve already done a bit of work on this, but it’s certainly not complete.

Medium term

The medium term is about bigger ideas, but ones where there is some code written and we can see that results will appear within the next few months. These areas need discussion as much as writing code. Here, we move away from ‘LaTeX3 in LaTeX2e’ to code which will break existing documents unless they are adapted.

The galley

The galley is the vertical area into which text and other content is places. Galley management in LaTeX2e is basic, and this leads to odd effects with vertical spacing. For example, try

\end{itemize}
\vspace{3 pt}
\begin{itemize}

and see that you get 12 pt of space! We’ve already got three galley implementations, and are now working on a fourth! So the issue here is deciding what is the best approach: the different versions all have different levels of complexity. Hopefully we can resolve these ideas into a single working module within the next couple of months.

Font selection

The ‘New Font Selection Scheme’ in LaTeX2e is a pretty good approach to selecting fonts. So the first task here is more-or-less to convert the code to LaTeX3 syntax. There are then a few items to address, such as how to deal with small caps. Loading fonts also needs to be fitted in here: some combination of fontspec (for XeTeX and LuaTeX) with the existing pdfTeX mechanisms is going to be needed, and it’s a question of how to do this.

Long term

The long-term is again about big ideas, but here ones where the code is not yet written. Some of the concepts are sorted, but beyond that there is work to do.

The output routine

The biggest single challenge for LaTeX3 at an implementation level is getting the output routine right. Here, we have xor, an approach written by Frank Mittelbach. This works, but it’s in need of a serious overhaul as the code has developed over many years. So at the moment it’s rather a mix of LaTeX2e and LaTeX3 stuff. We’ve also got to discuss how the output routine should work, addressing things like flowing text across frames, grid typesetting and so on. This is all hard work.

Beyond the output routine

Once we have all of the above addressed, then we need to look at getting a format created that can actually typeset material. That means building the code level, galley, fonts and output routine into a stand-alone format. The result won’t be impressive, as it won’t have much in the way of mark-up abilities. However, it will allow testing without LaTeX2e. That’s the stage where we’ll need to add things like sectioning, float management, and all of the other stuff that can be done by LaTeX at the moment.

10 thoughts on “LaTeX3 Roadmap

  1. (Sorry for my bad English)

    I’m not sure it this is already in the “to do”, but I think that a good idea (perhaps related with the galley or the output routines) is to implement in LaTeX3 a good method to include wrapfigures.

    With LaTeX2e, the “best” way is to use the wrapfig package, but it has a lot problems. For instance; it does not works just before a list, a itemize, theorem…; it suppress the nobreak after a section tile or similar; and many other.

  2. Getting the interactions right there is one of the things that the galley is about. I doubt we’ll get it all in one go: there is probably have to be a series of ’rounds’ of additional functionality. However, we are certainly aware of the need to solve some of these issues in a transparent way.

  3. Joseph, thank you for all of your work!!! I’m curious — is there any chance that you will publish a book that will cover LaTeX3? Your online documentation is good, but I think a book would be nice.

  4. Joseph, sorry to jump the gun! I’m just a dreamer that gets excited too easily. If LaTeX3 is successfully finished, I think it will be because of your patience, persistence, and ability to manage a long-term project. Few people have those skills and are also skilful programmers.

    Thanks,
    Gerard

  5. Hello Joseph,

    a short remark to the “Extending key–value concepts” point.

    That would be a great feature. That would allow to create styles for different stuff. In siunitx it would allow for example to create a style for showing different results (that have different accurancies) without specifying each time the `round-precision’ option.

    Did you have something like that in mind?

    Best regards
    Stefan

  6. Thanks. Joseph. for laying out the to-do list. Can you offer any indication of when these things might happen? All of the timeframes you offer could easily mean days, months or years. While I certainly understand that you can’t predict the future, any rough guess at a timeframe would be very nice, especially for those of us on the outside looking in.

    I’m researching this question because I need to know when I will have to start learning more about LaTeX 3. I’ve been seeing mentions of LaTeX 3 for many years, perhaps a decade, and knowing almost nothing about it does not seem to have impacted my ability to do my work yet. I don’t imagine that a rollout is imminent (in the next few months), but is it less than a few years from now or more like another decade? I ask because it is clear from this discussion that I will have a lot to learn to get the most out of LaTeX 3. Therefore, if I can swing it, I would like to start before the rollout, but I don’t have time to do that way before the rollout.

    Best,
    John

  7. LaTeX3 development has been going on on-and-off for 20 years, so sudden developments seem unlikely! I’m keen to avoid ‘hostages to fortune’, but we are still easily 18 months to two years from a usable kernel which can work with user documents of any scale.

    At the moment, the ‘work done’ is mainly at the code level. So for end users, LaTeX2e is still the thing to learn. We are getting some concepts at the user level sorted, but that’s still very much for ‘people who want to test stuff’. We’re also not talking about altering the user basics too much, although designing documents will change. Hopefully, that part will begin to take real shape during 2012, and we’ll then look at the user end.

Leave a Reply