Compositor 1.25

After a very long pause since the last release, Compositor 1.25 is finally available, with one innocent-looking feature addition, fueled by some bigger improvements under the hood.

But first of all, sorry once again to keep you all waiting for so long. The main reason for the long hiatus was that in 2023 I had three major house renovation projects going on, and that consumed a lot of my time and energy. Preparation for the first project started in early February last year, and the last project was only completed in late October.

So work on a new release only started in earnest in early Winter 2023. My goal for this release was to finally get support for URLs working over the winter. What sounds like a very modest goal had previously presented itself as quite a challenge.

My first (failed) attempt at adding support for the \url command was back in 2019 (would you believe it!). A slightly frustrated Karl leaves this comment on the ticket back then:

What looked like a straightforward command to add (on the surface similar in shape to, say, \emph{}) turned out to be much more involved. And it became more and more obvious that my understanding of the inner workings of TeX was still lacking – a lot. I didn’t really understand what was going on.

So back to the documentation I went. I was reading the Texbook while drinking my morning coffee, stared at the TeX source code during lunch breaks, and was reading TeX by Topic in the evenings on the couch, over and over again, for many weeks.

And slowly I understood what was missing. One of the problems highlighted by the \url.sty macros was that I had been ignoring TeX’s token list conversion functions (e.g., \string, or \meaning) up until now. Also, the url macros send their arguments through repeated transforms, and it turned out Compositor’s token list node tracking code had lots of holes in it, so the source position information got lost along the way.

Assured by his newly-gained knowledge, a much more cheerful Karl leaves another comment on the ticket:

And, a few weeks later, victory is proclaimed:

My hope is that the internal improvements I made in the course of adding support for URL formatting will make many of the upcoming features a lot easier and quicker to implement. That’s why I did not want to give up on what looks like a minor feature addition from the outside.

Ok, end of story time.

Here’s what’s new in this release. As usual, the complete list of fixed bugs and new features can also be found on Github.

Improvements

Add “Insert / URL” and “Format / URL” menu items #397

There’s finally support for URL formatting via two new menu items:

Insert / URL Format / URL

The former inserts a placeholder URL at the caret location, while the latter wraps the current selection in a \url command:

Note that the \url command is provided by the url package. I chose the url package over hyperref, because the latter is really big and complex. Maybe there will be support for hyperref in the future.

Other


Next Up

Release 1.26 will focus on a new source editor UI.