Advanced features of xkeyval for LaTeX3

Currently, LaTeX3 only provides parsing of key–value input into separated keys and values. I’ve written the keys3 package as a possible implementation of keyval for LaTeX3: this is based on pgfkeys from the pgf system. However, there are some features of the xkeyval package that I’ve not yet covered. In particular, I’m wondering about the “preset” keys system (\presetkeys and relatives) and the “pointer” system (\savekeys and so on). I’ve not really used these, so I’m not sure what might be needed for LaTeX3.

I think that LaTeX3 needs to have built-in keyval support which can cover everything that can be done by add-ons in LaTeX2e. I’d appreciate ideas on what needs to be added to keys3 to achieve this.

Developement Timetables

The need to have public timetables for large projects is something I mention quite a bit on the LaTeX-L list. The LaTeX3 project has run for many years, and at the moment there is no public indication of when a “LaTeX3 kernel” might be available. As I’ve mentioned that I’m working on siunitx v2, I guess I’d be hypocritical if I didn’t have some kind of public statement about how things are going.

The plan at the moment is something like:

  • Christmas period. Re-code number output and tables.
  • January. Look at extending unit system to cope with more cases.
  • February. Additional items (such as awkward symbols). Write basic documentation for v2.
  • March. Public beta one for testing. Continue to write documentation
  • June. Depending on feedback and success, release siunitx v2.

As you can see, I’m hoping to get everyhting revised for TeXLive 2009, having learnt from getting siunitx v1 out. Of course, this is subject to change (and other committments), but I think it’s pretty achievable.

Guidelines to authors

Author guidelines for journal submissions still seem to be based in the era when you typed a manuscript and posted it to the editorial office. I’ve just had a question about my achemso package and the guidelines for Analytical Chemistry. They want Figure and Table captions in a list on their own, and they still want graphics on separate pages from the text. Reviewing papers where people stick to these rules is harder than when the rules are ignored, and the content is in-line.

Most of the journals now want electronic submissions only, but haven’t altered their own guidelines to reflect the very different workflow this produces. It is a two-way street, and I at least tend to “vote with my feet” and submit things that are easier for the reviewer to read, whatever the publishers say.

achemso v3.1

My achemso package (for submissions to the American Chemical Society) has been updated to v3.1. This brings two main developments. First, JACS Communications now automatically format in the journal style. This was asked for by the editorial office, and hopefully shows the approximate page requirement. Second, I’ve completely revised author affiliations. The original system was much too inflexible (just one main affiliation per author), and I’ve had a lot of questions about this. The new system gives you three macros:

  • \affiliation
  • \altaffiliation
  • \alsoaffiliation

The last one is new, and should enable pretty much any combination of different addresses.

Storing lists of tokens

LaTeX3 separates out macros which do something (functions) from those used to store information. As has been pointed out to me, the later are lists of tokens not characters. TeX already provides us with toks (token registers), and so LaTeX3 calls macros that store token lists “token list pointers”. There’s been some discussion recently about this name, and Will Robertson has suggested just “token lists” would be better. I quite like the idea (pointers makes it sound like some low-level memory thing), but I’m not sure if the team will go for it.

TeXworks for package authors

The TeXworks project is targetted at making life easier for new users of TeX. The clean, Mac-inspired interface certainly makes writing TeX documents very easy, as does the buit-in PDF viewer with SyncTeX ability. As a long time user of a more “traditional” editor (WinEdt), I’ve found that TeXworks is good for all of my editing, to the point that I’m not longer using WinEdt. The parred-down feature set really suits my way of working (I’ve never liked all of the editor icons in a traditional IDE), and even at this pre-release stage the advanced features (such as regex searching) are impressive.

Toward siunitx 2

My siunitx package has attracted a lot of attention, and I’ve had a lot of requests for new features. To get these working, I’m having to re-code the package from the ground up. There are lots of problems with the code as it stands, as it is cobbled together from the previous packages in many cases.

So far, I’ve recoded the system that parses numbers, taking out a lot of the loops and making it hopefully much faster. I’ve also got about half of the table system redone: this collects up the table contents in a more efficient (and intelligent) manner than the old code. The next step is to look at the output formatting system, where I have several ideas to make everything smoother.

One area that I’m keen to improve is the user options. The current system is too complex, so I’m looking at doing something tree-based. The options are all being divided into groups, which should make things easier to follow.

Another area for lots of attention is table output. This seems to be the thing that I get most questions about. Lots to work on there, but so far nothing is done. I need to look over all of the suggestions I’ve had and find a way to please everyone (not easy).

Some TeX Developments

Where to start? Writing a blog on what is going in with my own (La)TeX development, and what is happening in the TeX world, seems like a handy thing to do. For my own packages (for example siunitx) it would be nice to give an insight into what is going on with the code, and where I am currently working. In the wider TeX world, there are things I’ve taken an interest in (such as TeXworks and LaTeX3) which I can make the odd comment on. There might even be some non-TeX stuff here, but I’ll see (focus is the key, and all that).