# TeX & Friends (Planet by DANTE e.V.)

## 2021-11-19

### Some TeX Developments (by Joseph Wright)

#### siunitx v3 successes

The third major release of siunitx was out in May, after the TeX Live 2021 DVD. That means it’s been picked up primarily by more active users: people who install TeX between the ‘fixed’ DVD releases (or who use MiKTeX). It also didn’t initially appear on Overleaf, as they take a while to test TeX Live images before making them public.

I’ve been making maintenance releases between May and now, and have reached v3.0.36, picking off small (or less small) issues I’d missed initially. At the same time, Overleaf now have a TeX Live 2021 image (currently featuring siunitx v3.0.23). So I now have an increasing number of ‘normal’ users: people who don’t want to deal with testing, and just want their documents to work.

What I notice is that increased usage hasn’t raised any truly major issues. Yes, there have been corrections (see the ChangeLog for the detail), but they were mainly at the level of predictable issues: places that I’d not explored quite enough. I hope Overleaf will consider an in-place update to somewhere around the latest release: whilst the issues have been minor in the grand scheme, it would be good to get a reasonably bug-reduced version out there (I’m not claiming bug-free)!

So I’m seeing the release as in the end quite a big success: I’ve addressed the issues I knew about, got better testing, have cleaner interfaces and am already offering new features. My mind is therefore turning to v3.1: I have a list of issues to consider that I’d like to take for that release, plus I could pick off some others. I might of course not tackle all of these: I’m thinking starting over the Christmas period and looking to release in March/April 2022. By then of course we might be at v3.0.50, so it will also help to ‘reset’ the patch level!

#### A new theme

I’ve been meaning for a little while to look properly at my Jeykll theme for the site and tidy it up: it was a bit basic. Prompted in part by Will Robertson, I decided that now is the moment.

I consulted with my favourite duck internet buddy, Paulo Cereda, and he pointed my to the rather flexible Hamilton theme. You’ll see I’m tweaking it a bit, so there will be minor changes over time, but I think it looks good: balances off between not being totally plain with the fact I have zero design ability!

Paulo himself doesn’t have a blog, but he’s part of the excellent Island of TeX, most famous for arara. Paulo tells me they don’t use Jekyll, but rather Zola, but that didn’t stop him helping me :)

# The Fall 2021 LaTeX release is available

As we have announced previously, we have shifted the release dates for LaTeX slightly, to better align with the yearly release of TeX Live: a first release in May/June after TeX Live has updated and a second release around November.

The current release does not contain any major new modules, but is focused around consolidation and improvements of functionality introduced in previous releases. In the meantime we are working further on the future production of reliable tagged PDF output (see the article LaTeX Tagged PDF — A blueprint for a large project that describes the project we are engaged in), which will again take center stage in the Spring release 2022.

### Hook management improvements

There have been some improvements of the hook management as a result of feedback from developers and our own experience applying the new functionality. This includes one breaking change in behavior (relevant only to package developers), for which we offer compatibility code for now. Thus nothing will break right now, but going forward the new method needs to be used, because at some point in the future the compatibility code will be taken out.

• Standardizing generic hook names;
• Rationalizing the behavior of \RemoveFromHook;
• Providing \ActivateGenericHook;
• Providing a command to clear “next” hook code before invocation;
• Properly clean up after a one-time hook.

### New or improved commands

There are many enhancements and corrections that we documented in the ltnews article for this release (and a few very minor ones that only made it into the changes.txt file). The most important aspects from a user perspective are:

• Extending \ShowCommand to show commands defined with \NewDocumentCommand and friends;
• Extending \NewCommandCopy as well, to safely copy such commands to new names;
• Improving the math font family allocation to avoid running out of available math groups in complex documents. A number of math alphabets (controlled through the counter localmathalphabets) are now locally allocated and their math groups can be reused with different alphabets per formula;
• Adding \PackageNote and \PackageNoteOnLine to show notes that aren’t “warnings” on the terminal;
• Supporting an alt key with \includegraphics (anticipating future development);
• Providing a new \newcolumn command and an optional argument to \columnbreak for multicol;
• Altering the default for \tracinglostchars.

But read the whole ltnews article because there may be other gems that are useful for you.

The new features and most of the important bug fixes made in this release are documented in “LaTeX2e News Issue 34”. This document can be found on the LaTeX2e news page where you will also find release information for earlier LaTeX releases.

Happy LaTeXing — Frank

## 2021-11-14

### TUG

#### TUGboat 42:3 published

TUGboat volume 42, number 3, has been mailed to TUG members. It is also available online and from the TUG store. In addition, prior TUGboat issue 42:2 is now publicly available. Submissions for the next issue are welcome; the deadline is March 31, 2022 (early submissions are especially appreciated). Please consider joining or renewing your TUG membership if you haven't already (we'll send this year's issues immediately), and thanks.

# The final LaTeX pre-release for 2021-11-15 is available for testing

A few days ago we submitted the final pre-release of the LaTeX format to CTAN and by now it should be available to all users using MiKTeX or TeX Live (on any operating system).

## Main features included in the final pre-release for 2021-11-15

The upcoming release does not contain any major new modules, but is focused around consolidation and improvements of functionality introduced in previous releases. There have been some improvements of the hook management as a result of feedback from developers and our own experience applying the new functionality. This includes one breaking change in behavior (relevant only to package developers), for which we offer compatibility code for now. Thus nothing will break right now, but going forward the new method needs to be used, because at some point in the future the compatibility code will be taken out.

The hook management improvements are

• Standardizing generic hook names;
• Rationalizing the behavior of \RemoveFromHook;
• Providing \ActivateGenericHook;
• Providing a command to clear “next” hook code before invocation;
• Properly clean up after a one-time hook.

Other notable improvements include

• Extending \ShowCommand to show commands defined with \NewDocumentCommand and friends;
• Extending \NewCommandCopy as well, to safely copy such commands to new names;
• Improving the math font family allocation to avoid running out of available math groups in complex documents. A number of math alphabets (controlled through the counter localmathalphabets) are now locally allocated and their math groups can be reused with different alphabets per formula;
• Adding \PackageNote and \PackageNoteOnLine to show notes that aren’t “warnings” on the terminal;
• Supporting an alt key with \includegraphics (anticipating future development);
• Providing a new \newcolumn command and an optional argument to \columnbreak for multicol;
• Altering the default for \tracinglostchars.

There are also a number of smaller enhancements and some bug fixes as usual. The details are discussed in the draft publication of “LaTeX2e News Issue 34”. A full list is given in the changes.txt files that are part of the distribution.

## Outlook

We expect to ship the final release (with the same code base as this pre-release) as planned around mid November.

We are issuing this final pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2021-11-15 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release hits the streets.

Processing your documents with the pre-release is straightforward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straightforward.

Enjoy — Frank

## 2021-09-29

### TUG

#### TUGboat 42:2 published

TUGboat volume 42, number 2, the TUG 2021 conference proceedings, has been mailed to TUG members. It is also available online and from the TUG store. In addition, prior TUGboat issue 42:1 is now publicly available. Submissions for the next issue are welcome; the deadline for proposals is October 15 (early submissions are especially appreciated). Please consider joining or renewing your TUG membership if you haven't already (we'll send this year's issues immediately), and thanks.

# The second LaTeX pre-release for 2021-11-15 is available for testing

A few days ago we submitted a new LaTeX development format to CTAN and by now it should be available to all users using MiKTeX or TeX Live (on any operating system).

## Main features of the second pre-release for 2021-11-15

The first pre-release was just a copy of the main release for 2021-06-01 in order to avoid that people using the development release regularly get an old format.

The second pre-release now provides some improvements of the hook management as a result of feedback from developers and our own experience applying the new functionality. This includes one breaking change in behavior (relevant only to package developers), for which we offer compatibility code for now. Thus nothing will break right now, but going forward the new method needs to be used, because at some point in the future the compatibility code will be taken out.

Notable improvements already contained in the pre-release are

• Resolving some issues around the new hook functionality:
• Providing \ActivateGenericHook;
• Command to clear “next” hook code before invocation;
• Cleanup after a one-time hook;
• Changed the behavior of \RemoveFromHook;
• Standardizing generic hook names;
• Other improvements:
• \tracinglostchars got a new default
• \PackageNote was added to show notes that aren’t “warnings” on the terminal
• \ShowCommand got extended to show commands defined with ltcmd (former xparse)
• \NewCommandCopy got extended as well to safely these commands to new names
• alt key for \includegraphics (anticipating future development)

There are also a number of smaller enhancements and some bug fixes as usual. The more important ones are listed in the draft publication of “LaTeX2e News Issue 34”. A full list is given in the changes.txt files that are part of the distribution.

### Improving the hook management further

The breaking change mentioned above involves the name of generic file hooks. They used a special naming convention in the past and we now changed them to use the same structure as all other generic hooks, that is, their “variable” part (i.e., the file or package name) is always in the second position. For example, to execute some code after the array package was loaded you now say

\AddToHook{package/array/after}{...code...}


just like you would set up code to be executed after each tabular environment with

\AddToHook{env/tabular/after}{...code...}


For now the old syntax package/after/array is still supported, thus packages making use of this functionality have time to adapt to the new convention once the main release is out and distributed.

Other improvements to the hook management (e.g., the functionality to have packages implement generic hooks) are discussed in LaTeX2e News Issue 34 and in the relevant kernel documentation.

## Outlook

We expect to produce a third and final pre-release adding some more features and enhancements in late October.

We are issuing this second pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2021-11-15 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release hits the streets.

Processing your documents with the pre-release is straightforward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straightforward.

Enjoy — Frank

## 2021-09-06

### TUG

#### Computers&Typesetting: Jubilee printings

Pearson has published the 35th anniversary (Jubilee) printings of the complete C&T series, including all updates from the 2021 tune-up. They are available as both hardcover and pdf, with a 40% discount for TUG members. Details on the TUG books page. Happy reading!

## 2021-09-04

### LaTeX.net

#### DANTE Herbsttagung 2021

The following text is in German because it’s about the German language user group meeting 2021.

Im vergangenen Jahr sind leider beide DANTE-Tagungen wegen der Pandemie ausgefallen. Die Frühjahrstagung fand wegen der Kontaktbeschränkungen komplett online statt.

Auch die Herbsttagung wird virtuell stattfinden, über die Plattform „Online Schule Saarland“.

Das Programm, vom 17. bis 19. September 2021:

• Freitag, 17.9.: ab 19:30 Uhr Vorabendtreff
• Samstag,18.9.: ab 9 Uhr Begrüßung und Mitgliederversammlung , danach zwei Vorträge
• Color, xcolor und l3color: Farben in LaTeX (Ulrike Fischer)
• Futura PM – Eine geometrisch konstruierte Schriftart für (La)TeX (Philipp Müller)
• Sonntag, 19.9.: Stadtrundgang und Besuch historisches Museum

Siehe auch Programm und Tagungs-Seite.

An dieser Stelle auch ein Danke von mir an DANTE für die Unterstützung bei den Serverkosten dieser Webseite TeX-talk.net sowie der LaTeX-Foren TeXwelt.de, goLaTeX.de, LaTeX.org, TeXnique.fr, und weiteren Webseiten wie TeXfragen.de, LaTeX.net.br, TeXdoc.org, CTAN.net, TeXlive.net, TeX.my, TeXample.net, TikZ.net, pgfplots.net, TeXblog.net, mychemistry.eu, TeX.co, LaTeX.net und weiteren.

Photo by Amador Loureiro on Unsplash

## 2021-08-29

### LaTeX.net

#### The Island of TeX in 2020 and 2021

In 2020, the Island of TeX introduced Docker images for easily reproducible builds as well as a semi-official response to the need for continuous integration. These images were among the first using vanilla TeX Live, providing the required tools for running software included in TeX Live – for example, Java Virtual Machine, Python, and so forth. Additionally, the island provides TeX Live releases from 2014 on and let the user decide whether they want to pull all the documentation and source files into their CI configuration.

With attention came the idea to more officially publish our images as texlive/texlive, which the island gladly did. Now IoT manages the releases at Docker Hub as well: https://hub.docker.com/r/texlive/texlive.

Docker Hub is the world’s largest repository of container images with an array of content sources including container community developers, open source projects and independent software vendors building and distributing their code in containers.

Apart from applications in continuous integration, the Docker images have lured the island into creating another tool based on them. TeXdoc online is the successor to TeXdoc.net (which now redirects).

This tool provides a RESTful API for texdoc. A REST ful API is a stateless interface to web applications responding to typical HTTP requests with uniform responses. Usually, JSON is used for the response format. Following this principle, this software responds to HTTP GET requests with JSON representing documentation-related objects. There are several endpoints you can access.

The front end of TeXdoc online is structured in a similar way to TeXdoc.net. The main feature is still searching for packages. Topics are handled differently, though. We use CTAN’s JSON API to fetch their topics and packages belonging to these topics. Any user visiting the landing page will be shown six random categories with a few packages each. If a category holds several packages, four of them are selected at random. Users have the option to show all topics and list the packages for any topic they are interested in. Also, each package entry can be automatically queried for documentation.

Deploying the software is straightforward. You can get an executable JAR file with all dependencies included that you can simply run using your local Java installation. Running the JAR bundle will open a local web server that can be accessed from your browser. As an alternative to running the JAR file, the island also provides a dockerized image. This image is based on IoT’s TeX Live images, which makes it quite large in terms of file size but also eliminates the need for a local TeX installation. Using Docker is the preferred solution for hosting your own instance of TeXdoc online.

The Docker image also provides daily updates. The container will update daily at midnight (container time) and thus stays up to date as long as
the current version of TeX Live is supported. The island’s continuous integration ensures that you can always pull the latest tag and receive the latest and greatest TeX documentation, which when pulled and run will update itself.

To ease deployment, IoT provides a ready-made configuration for Docker Compose, an orchestration tool for Docker containers. It uses the Caddy web server to provide automatic HTTPS with local certificates or, on public domains, Let’s Encrypt certificates.

After finishing TeXdoc online to a production-ready degree, the island turned to the development of another handy tool, Albatross. This command line tool, with a silly yet adorable name, solves a very common problem: finding system fonts that provide a certain glyph. Users may provide the glyphs themselves or their corresponding Unicode code points in hexadecimal notation.

IoT also migrated checkcites, a tool for checking missing or unused references, from Paulo’s personal repository to the island. The team also decided to rewrite it from Lua to Kotlin — this is still a work in progress. And the island is going from a monolithic implementation to a modular one, which is also a work in progress.

In 2020, IoT finished version 5 of arara, a major rewrite from Java to Kotlin, mainly working on features from user feedback, especially directory support and the processing of multiple files. The team got hooked by the idea of aligning release schedules of arara with TeX Live releases enabling IoT to make (small) breaking changes more often. So the island had big plans and started to work on version 6 right after releasing version 5. As with checkcites, the team walked the extra mile and arara went from a monolithic implementation to a modular one, plus an enhanced feature set and optimized workflow.

In version 5, the implementation had everything contained in one big block. In version 6, IoT made a split between an API, a core implementation, the engine and the CLI application to separate concerns. This was the first step in the direction of splitting out components that are bound to one platform. Aditionally, the team hopes to enable other people to develop their own tools based on the arara libraries if they wish to. With multiple library components this should be easy. The developers of the TeXify IDEA plugin expressed their interest in this to integrate proper arara support in TeXify.

For version 7, the team wants to take larger steps towards platform-independence. Hence, IoT will make use of Kotlin/Multiplatform (MPP) to use a single codebase for all target platforms. Some components will have to be rewritten, some need different interfaces for different platforms but in the end, the team hopes to provide an even more multitalented tool.

Up to now, arara has been developed as a file-based build tool. The tool does not track dependencies nor does it manage projects. You throw a file at it and it makes the best out of it. The team is evaluating support for projects and dependencies. Other feature candidates include cleaner logs and granularity switchs, new DSL-based rules and configurations, and better integration with existing workflows.

The team has many plans and hopes to realize as much as possible. The island is a vibrant environment for the development of TeX-related tools; IoT wants to enhance the user experience, from newbie to expert, and promote use and diffusion of modern methodologies and technologies. If you are interested in helping the island develop ideas or even implementing some code, visas for the island are free and easy to get, so feel free to reach out.

## 2021-08-24

### Some TeX Developments (by Joseph Wright)

Usually, I keep my day job (as a university lecturer in chemistry) and my LaTeX work separate. Of course, I use LaTeX at work for things like lecture handouts, but most of the time the two areas don’t directly intersect.

So it was quite interesting to be talking yesterday at a chemistry conference (the ACS Fall 2021 Meeting) about siunitx. I’d been invited by Stuart Chalk to a session on units and data reuse: much more like metrology/computer science than my usual day-to-day wet chemistry!

It was good to see that many of the things I do in siunitx fit into wider efforts by people who do day-to-day work on units. The idea of logical mark-up for unit input, the ability to decompose units into parts and the realities of less-than-ideal input from users were all there. Hopefully, siunitx will help with the work being done by groups such as DRUM (Digital Representation of Units of Measure) to make information more computer-readable. I’ll also be looking at QUDT for inspiration about the real technical detail of the myriad of units in real use.

I also managed to get in a few comments about some LaTeX work that’s important for data reuse more widely: tagged PDFs and tex4ht. So it was a pretty productive use of an evening!

## 2021-07-06

### TUG

#### TUG 2021 presentation proposal deadline is July 9

The deadline for presentation proposals for TUG'21 is July 9. Please send in submissions as soon as possible. The conference will be held online, August 5-8. More info: call for papers, register (no charge), conference home page.

## 2021-07-04

### LaTeX.net

#### Scientific WorkPlace/Word/Notebook discontinued

MacKichan Software, Inc. stopped it’s business on June 30, 2021. Their products Scientific WorkPlace (SWP), Scientific Word, and Scientific Notebook, that are based on LaTeX, will not be sold or supported anymore.

The future plan for Scientific Word is to become Open Source after removing non-free/non-open components.

Image by Theodore Norvell

## 2021-06-03

### TikZ

StackExchange, bekannt als StackOverflow, ist an Prosus verkauft worden f체r 1,8 Milliarden Dollar. Das beinhaltet die TeX StackExchange Q&A Seite (TeX.SE). Prosus ist ein Technology-Investor und eine Holding Company die bereits Unternehmen wie Udemy, Codecadamy und Brainly (“Your 24/7 homework helper”) besitzt. Nach $153 Millionen Investor-Kapital, Einstellen eines fr체heren Investment-Bankers als Kopf, mehreren Entlassungs-Runden, Ausscheiden von Moderatoren, Effizienter-Werden duch Standardisieren der Sites, Aussteige-Spekulationen, war es nicht wirklich 체berraschend. Die offizielle Kommunikation und Joel Spolskys Bekanntmachung sagen “business as usual” und dass alles genauso weiterl채uft. Also, nix zu sehen hier. Es gibt auch nichtkommerzielle (La)TeX Q&A Seiten und Foren, unterst체tzt durch TeX user groups und vor allem DANTE, wie: LaTeX.org, TeXwelt.de, TeXnique.fr, and goLaTeX.de. ### LaTeX.net #### StackExchange has been sold The StackExchange network by Stack Overflow Inc., has been sold to Prosus for 1.8 billion dollars. That includes the TeX Stack Exchange Q&A site aka TeX.SE. Prosus is a technology investor and holding company that already owns some learning sites such as Udemy, Codecadamy, and Brainly (“Your 24/7 homework helper”). After$153 Million funding, hiring a former investment banker to lead the company, several round of layoffs, community moderators leaving, becoming more efficient by standardizing site designs, exiting rumours, it was not surprising. Official communication and Joel Spolskys announcement say “business as usual” and that it would operate in the same way. Like, nothing to see here.

There are also not-for-profit (La)TeX Q&A sites and forums, supported by TeX user groups and especially DANTE, such as: LaTeX.org, TeXwelt.de, TeXnique.fr, and goLaTeX.de.

# The Spring 2021 LaTeX release is available

This year Spring in LaTeX’s counting is somewhat delayed, but this fits the weather—at least here in Germany were we had April weather throughout most of May. We plan to keep it this way in future releases: a first release in May/June and a second release around November as this better fits with the release cycle of the TeXLive distribution.

The focus of this release is to provide further important building blocks for the future production of reliable tagged PDF output (see the article LaTeX Tagged PDF — A blueprint for a large project that describes the project we are engaged in); these enhancements are discussed below.

### Extending the hook concept to paragraphs

Largely triggered by the need for better control of paragraph text processing, in particular when producing tagged PDF output, we have changed LaTeX so that the kernel gains control both at the start and at the end of each paragraph. This is done in a manner that is (or should be) transparent to both packages and documents. We have also included four public hooks to enable adding code to paragraphs in a controlled manner. The documentation on this is available as ltpara-doc.pdf.

These hooks will enable us to automatically tag paragraphs and enables us to identify when paragraphs are broken across columns or pages, because those need special handling in tagged PDF.

### Extending the hook concept to commands

With this release we extended the set of “generic” hooks to commands: in theory each document-level command has now two hooks cmd/<command>/before and cmd/<command>/after in which packages (or the user in the preamble) can add code using the hook management machinery.

If you know the etoolbox package, then you can think of them as being similar to the use of \preto and \appto from that package, but with the difference that if different packages try to do that, the added code chunks can be controlled and ordered as needed using the hook mechanism. The documentation for this functionality can be found in ltcmdhook-doc.pdf.

In practice, not all commands can accept such generic hooks: some (especially those that take optional arguments) will break if you try using an /after hook with them. However, many will and that allows us in the future to easily patch the many commands to enable tagged PDF without touching or updating package code.

### A large number of other enhancements and corrections

There are many other enhancements and corrections that we documented in the ltnews article for this release (and a few very minor ones that only made it into the changes.txt file). The most important ones from a user perspective are:

• Further improvements of file name parsing; in particular we made the parsing much faster again (it got a little slow with the functional enhancements we introduced in the last releases)
• Better handling of font series and font shape changes
• Improved copy & paste from documents produced with pdfTeX

But read the whole ltnews article because there may be other gems that are useful for you.

The new features and most of the important bug fixes made in this release are documented in “LaTeX2e News Issue 33”. This document can be found on the LaTeX2e news page where you will also find release information for earlier LaTeX releases.

Happy LaTeXing — Frank

## 2021-05-24

### TikZ

#### Das coffeestains-Paket

Nach einem kurzen Gespr채ch auf TeXnique.fr hat Patrick Bideault das coffeestains-Paket auf TikZ portiert. Das urspr체nglich von Hanno Rein in 2009 entworfene Paket erfuhr damit eine Modernisierung und l채uft einwandfrei mit pdfLaTeX, XeLaTeX, und LuaLaTeX auf TeX Live 2021. Damit steht einer weiteren breiten Anwendung in den Homeoffices dieser Welt nichts im Wege.

Ein Anwendungsbeispiel mit viel Kaffee:

\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{coffeestains}
\begin{document}
\coffeestainA{1}{1}{0}{6cm}{4cm}
\coffeestainB{0.8}{1}{-60}{-4cm}{4cm}
\coffeestainC{0.3}{1}{180}{0cm}{0cm}
\coffeestainD{0.5}{0.5}{100}{-1cm}{2cm}
\blinddocument
\end{document}

Die Syntax ist, verk체rzt: \coffeestain(A|B|C|D){Transparenz}{Skalierung}{Drehwinkel}{X-Offset}{Y-Offset}. Mehr steht in der Dokumentation, die auch mit viel Kaffee entstanden ist.

## 2021-05-22

### TikZ

#### Flaggen der Welt

Wilhelm Haager hat im April 2021 das Paket worldflags veröffentlicht. Damit kann man Flaggen aller Nationen und einiger weiterer Gebiete und Organisationen in TikZ zeichnen, sowohl als TikZ-Bild als auch als pic-Baustein. Durch eine Vielzahl Optionen kann man Breite, Höhe, “Hängen”, Spiegel, Drehen und mehr einstellen. Die einfachste Nutzung ist geht schon z.B. mit

\worldflag{BR}

was eine brasilianische Flagge zeichnet:

Mit etwas mehr Arbeit anhand des Beispiels im Handbuch mit Fahnenstangen:

\documentclass[border=10pt]{standalone}
\usepackage{worldflags}
\begin{document}
\begin{tikzpicture}[x=1mm,y=1mm]
\def\w{30}\def\d{20}
color(1mm)=(brown); color(2mm)=(black)}
\flagsdefault[width=15mm,hang=20]
\pic (fr) [country=FR,width=16mm,rotate=-\w] at (\d,0) {worldflag};
\pic (de) [country=DE,width=15mm,rotate=\w,turn=180] at (-\d,0) {worldflag};
rotate around={-\w:(fr-nw)}](fr-nw)-|++(-2,-60)-|cycle;
rotate around={\w:(de-nw)}](de-nw)-|++(2,-60)-|cycle;
\node [rotate={50},below left  = 1.5cm and -0.6cm of de-nw] {\TeX welt.de};
\node [rotate={-50},below left  = 1.2cm and 0.9cm of fr-ne] {\TeX nique.fr};
\end{tikzpicture}
\end{document}

Die Flaggen wurden mithilfe der Konstruktions-Angaben von vexilla-mundi.com gezeichnet, einige komplexere Embleme wurden aus SVG-Daten von Wikipedia mittels Inkscape in TikZ-Code übersetzt.

## 2021-05-20

### LaTeX.net

#### Wenn mal was in den Planeten rutscht

Wie hier notiert, ist es ja total einfach, LaTeX als kompletten und aktuellen Compiler in Blogs online zu verwenden.

Während ich gerade ein 10 Jahre altes Buch überarbeite damit es aktualisiert wird, verwende ich pro Kapitel eine Blog-Seite, um die sich im Kapitel entwickelnden Codes auf einer einzigen Seite zu haben und mit einem Klick zu übersetzen und zusammen zu überarbeiten bis es final ist. Ich hab halt sonst keinen Editor, der 12 Code-Beispiele auf einer Seite hat und jeden Teil mit einem Klick übersetzt, und das eben auch mit dem Smartphone unterwegs.

Lustigerweise rutscht es in Feed-Aggregatoren wie planet.dante.de obwohl es als Draft gespeichert ist und eigentlich nicht öffentlich sichtbar sein sollte.

Daher, sorry für den noise auf dem DANTE Planeten für zumindest einen reingerutschten Beitrag, wo auch noch User-Testcode von einem Forum-Beitrag drin war. Eigentlich mache ich das sonst auf einer separaten Buch-Webseite, die allen Code direkt on-page compilierbar enthält, analog LaTeX-Cookbook.net.

Sehen wir uns demnächst mit der Buch-Webseite und mehr Inhalten.

### TUG

#### TUGboat 42:1 published

TUGboat volume 42, number 1, a regular issue, has been mailed to TUG members. It is also available online and from the TUG store. In addition, prior TUGboat issue 41:3 is now publicly available. Submissions for the next issue, the TUG 2021 conference proceedings, are welcome; the deadline for proposals is June 24 (early submissions are especially appreciated). Please consider joining or renewing your TUG membership if you haven't already (you'll get this issue immediately), and thanks.

## 2021-05-17

### Some TeX Developments (by Joseph Wright)

#### Moving from siunitx v2 to v3

With v3 of siunitx out, I am as expected getting quite a few questions about moving from v2. In the main, this is quite easy as there is a decent amount of compatibility code. Here, I’ll pick out a few cases where you might want some adjustments.

## Working with Overleaf

One thing that people sometimes need is to work with the latest version but allow their input to work with the older version: that’s particularly true if you work with people using Overleaf, as it will be some time before they update to v3. You can of course just stick to the v2 interfaces, but if you’d prefer to have v3 if possible, then you will need to define \qty and \unit (and maybe others) conditionally. I’d recommend doing that using

\usepackage{siunitx}
\ifdefined\qty\else
\ifdefined\NewCommandCopy
\NewCommandCopy\qty\SI
\else
\NewDocumentCommand\qty{O{}mm}{\SI[#1]{#2}{#3}}
\fi
\fi
\ifdefined\unit\else
\ifdefined\NewCommandCopy
\NewCommandCopy\unit\si
\else
\NewDocumentCommand\unit{O{}m}{\si[#1]{#2}}
\fi
\fi


That then leaves options, but almost always these should be set in the preamble, so are a ‘one shot’. You can of course add to my tests above to know which version is in use, and set selectively.

## Working with products or complex values

For people who’ve been using products or complex numbers in \SI in v2, one could use a similar approach to the above to ‘keep’ the functionality by setting it equivalent to the new \qtyproduct or \complexqty commands: of course, if you want both then you’ve got to make bigger changes. For example, to retain the ability to use products in \SI, you’d use

\usepackage{siunitx}
\ifdefined\qtyproduct\else
\ifdefined\DeclareCommandCopy
\DeclareCommandCopy\SI\qtyproduct
\else
\DeclareDocumentCommand\SI{O{}mm}{\qtyproduct[#1]{#2}{#3}}
\fi
\fi


at the cost that the code is a bit slower than \qty for input without products. Complex values would be handed the same way, just changing the command you use as a ‘replacement’.

## Using litres (liters)

In v2, \litre and \liter produced different output: that was not the best interface decision. So in v3 they are the same, but that means of course that you might see a change. Luckily, you can set the output you want and get the same in both v2 and v3.

\DeclareSIUnit\litre{l}


#### siunitx v3

I’ve just released version 3 of siunitx: its a major update, in which the internals have largely been re-written. The following is a short(ish) summary of the major benefits and changes.

## The benefits

The major changes under the hood mean I can get better performance out of version 3 than there was in version 2. For most users, you’ll see something like a two-times speed-up of any use of siunitx. That shows up most if you have complex tables.

The new font control system means that I have to do a lot less to match the running font. So it is a lot easier to ‘do nothing’ than it was with version 2 (where basically you have to undo all of the font changes made by siunitx to get back to where you started!).

There’s new functionality across the board for number processing, and that means I can do more. Most obviously, there is now the ability to round numbers based on their uncertainties. I’ve also removed the oddities and limitations for interaction between parts of the code. Uncertainties can now be formatted using the NIST approach: a long-standing request.

For programmers, there is now a formal documented code-level API and a full set of tests (running using l3build), so it’s a lot easier to be sure what is supposed to happen. You can also re-use bits of siunitx to support other code much more easily than in the past.

Finally, I’ve now got more ability to add new features: I now know how I’m going to deal with multi-part uncertainties, for example. That includes having proper internal structures to make future development easier.

## The changes

Now to the things to watch out for: taken from the new manual, and perhaps a bit more formal than the usual blog post!

A significant number of key-value settings have new, more descriptive, names. Where possible, older names are mapped to newer ones internally: you will be warned in the log if this is the case.

It is possible to use the LaTeX kernel mechanism to load the last version 2 release for documents that cannot be successfully processed using version 3. This can be achieved using

\usepackage{siunitx}[=2021-04-09]


or

\usepackage{siunitx}[=v2]


In version 3, the document commands have been revised to be more descriptive. As such, the commands \SI,\SIlist, \SIrange and \si remain available but are not recommended for use in new use.

Some changes have been made to the semantics of commands or options. Most notably

• prefixes cannot now be given without units;
• prefixes can only be interconverted with numbers as part of a quantity, not as stand-alone units.

The font control system has been completely re-written for version 3. The method used is entirely different from version 2. Emulation is therefore not provided for some aspects: if you need non-standard font settings, you will need to adjust your source.

The input approach for version 3 is slightly more structured and restricted than for version 2. As well as the updated names for document commands, this means that

• Products of numbers must now be given using the dedicated \numproduct and \qtyproduct commands;
• Quotients of numbers are only supported as literals;
• Complex values need to be given using the dedicated command \complexnum.

The letter used for a numerical tabular column can now be selected by the user: the letter S has been retained as the standard interface. The unit column (s) has been removed from this release. It can be emulated using the collcell package, for example

\usepackage{collcell}
\newcolumntype{s}{>{\collectcell\unit}c<{\endcollectcell}}


or

\usepackage{collcell}
\newcolumntype{s}{>{\collectcell\si}c<{\endcollectcell}}


A new approach has been taken to providing non-Latin symbols for use in units: these are now handled directly where needed, for example in the definition of the \micro prefix.

If you are using table-column-width to have fixed-width columns, you also now need table-fixed-width to set this option active.

## 2021-05-16

### LaTeX.net

#### Der Online-Compiler TeXlive.net

Ursprünglich auf TeX.co veröffentlicht.

Es gibt ja viele Internet-Foren, Blogs, Wikis und andere Webseiten mit Codebeispielen für TeX und LaTeX. Gerade in Foren ist es üblich, Problem-Beispiele zu posten, und Antworten enthalten oft vollständige Lösungs-Codes. Optimalerweise mit Screenshots zum Komfort aller Leser. Man kann sich den Code herauskopieren und in seinem eigenen LaTeX-Editor ausprobieren.

Was, wenn man den Code mit einem einzigen Klick direkt auf der Webseite übersetzen könnte? Am besten auch auf dem Tablet oder Mobiltelefon, wo auch immer man gerade liest?

Das geht nun mit TeXlive.net.

Am besten sieht man es am Beispiel:

\documentclass[border=10pt]{standalone}
\usepackage{smartdiagram}
\usepackage{metalogo}
\begin{document}
\smartdiagram[bubble diagram]{\TeX\ engines,
\TeX\ (dvi), pdf\TeX, \XeTeX, \LuaTeX, Con\TeX t}
\end{document}

Einfach “Run LaTeX here” klicken. Dann übersetzt LaTeX den Code und er wird hier direkt dargestellt. Durch Klicken auf >> rechts oben kann man die PDF-Datei speichern.

Auch gut zum Testen und ausprobieren: den Code kann man hier direkt auf der Webseite editieren und wieder auf den Ausgabe-erzeugen-Schalter klicken. Das finde ich extrem praktisch in Foren, wo man ein angegebenes Problembeispiel direkt bearbeiten und testen kann, um eine Lösung zu finden und mitzuteilen. Probier einfach aus, indem Du die Diagramm-Texte oben oder das unten folgende Mathematik-Beispiel etwas editierst und erneut übersetzt.

Wie hier zu sehen, erfolgt Angabe der Engine, des Formats, oder des Ausgabeformats durch einen Kommentar

% !TEX name

wobei name z.B. sein kann: latex, pdflatex, xelatex, lualatex, pdftex, luatex, xetex, context, oder für die Ausgabe pdfjs, pdf, log (Logfile), make4ht, LaTeXML or lwarp, und Tools wie makeindex mit Parametern. Siehe auch Beispiele und Dokumentation.

Die Auslastungs-Statistik von TeXlive.net zeigt, dass täglich ungefähr 2000 verschiedene Nutzer ca. 4000 Dokumente übersetzen, an Wochenenden weniger. Das kommt daher, weil TeXlive.net schon in vielen Webseiten genutzt wird und die Nutzer aktiv die Codebeispiele ausprobieren. Hier einige willkürliche Beispiele, die zeigen, dass es auf verschiedensten Web-Plattformen läuft:

TeXlive.net unterstützt ca. 20 Compiler Engines/Formate einschließlich (pdf)LaTeX, XeLaTeX, LuaLaTeX, plain (pdf)TeX, LuaTeX, XeTeX und ConTeXt sowie Ausgabe via pdfjs, Browser PDF plugin, HTML-Ausgaben mit make4ht, lwarp, oder LaTeXML und Tools wie makeindex, BiBTeX, und biber, kombinierbar.

Warum nicht auch direkt übersetzbaren Code in Twitter-Beiträge einbetten? Das geht mit LaTeX-Dokumenten direkt in einer URL, z.B.: texlive.net/run?$T_{f(x;a)}=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}$.

Zum Datenschutz: TeXlive.net als Compiler erhält den übergebenen Code, übersetzt ihn und liefert die Ausgabe zurück. Die bei der Übersetzung anfallenden Dateien (PDFs, Logfiles) werden in einer stündlichen Routine gelöscht wenn sie ab 1 Stunde alt sind, d.h. sie liegen 1-2 Stunden vor bis zur automatischen Löschung. Wie bei Webseiten üblich, sieht auch TeXlive.net die IP-Adresse des Aufrufenden (bzw. seines Providers). Webserver-Logdaten (für technische Zwecke (Troublehooting, Performance-Statistik, Schutz gegen Angriffsversuche) werden nach ab 14 Tagen Alter automatisch gelöscht.

Die Software für TeXlive.net wurde von David Carlisle geschrieben, ursprünglich für LearnLaTeX.org, eine multilinguale Tutorial-Seite für LaTeX-Einsteiger, die auch den Online-Compiler in den Lektionen verwendet. Der Server arbeitet mit einem aktuellen TeX Live 2021. Wie die obengenannten Foren und weiteren Webseiten läuft TeXlive.net auf von DANTE e.V. projektfinanzierter Hardware, das sind zwei bei Hetzner laufende Root-Server. Danke an DANTE dafür.

## 2021-05-10

### Some TeX Developments (by Joseph Wright)

#### siunitx v3 beta 2

Following up on the recent first beta for siunitx, I’ve now made a second beta available. There was only one issue picked up so far by testers, plus of course those I’ve spotted myself. In particular, I’ve allowed a way to set the text font manually if simply resetting back to the standard one doesn’t work. I’ve also sneaked in a late addition: the ability to parse and print uncertainties the way NIST seem to suggest they should appear.

Assuming that I get no major issues coming up, I plan to put this out as the first v3 release in a couple of weeks time: before the next LaTeX kernel update!

## 2021-05-09

### LaTeX.net

#### LaTeX Beginners Guide Chapter 7: Cross-Referencing

Internal draft for codes.

# The third and final LaTeX pre-release for 2021-06-01 is available for testing

A few days ago we submitted a new LaTeX development format to CTAN and by now this should be available to all users using MiKTeX or TeX Live (on any operating system).

Because of the freeze for TeXLive 2021 we have decided to move the release date for LaTeX from May to June, to give everybody enough time for testing the new release features.

## Main features of the second pre-release for 2021-06-01

The final pre-release contains all the features, corrections and enhancements that we intend to release in June. The more important ones are listed in the draft publication of LaTeX2e News Issue 33. A full list is given in the changes.txt files that are part of the distribution. Notable improvements are

• better support for copy-and-paste from LaTeX-generated PDF documents by including glyphtounicode mappings;
• support for producing several footnote marks to one footnote with the help of the \footref command;
• additional support for package and class option lists that use key/value syntax;
• extending the general hook management system to paragraphs and commands as discussed below.

### Extending the general hook management system to paragraphs and commands

In addition to the bug fixes and enhancements, the next release also extends LaTeX’s general hook management system by supporting paragraph hooks executed at the beginning and end of every paragraph, documented in ltpara-doc.pdf.

This functionality is essential for the production of automatically tagged PDF documents and resolves one of the major obstacles in this area. It is thus an important step in our multi-year journey towards accessible and well-tagged PDF documents. See articles in PDF, Tagging, Accessibility.

Even though this new functionality may not be of direct interest to most users (as long as it is not yet used for processing accessible PDF) it is nevertheless important that it gets tested to ensure that there aren’t any conflicts with existing packages that also try to manipulate the paragraph processing in one way or the other. So please make use of the development format whenever you have a chance, see below for how to do this with ease.

The release will also support generic hooks on all user-level commands; in theory that is, in practice there are some restrictions as explained in the documentation in ltcmdhooks-doc.pdf.

Again this is an important step towards tagged PDF as it will help integrating the necessary code in various user-level commands without extensive code alterations that would otherwise be required. In addition this functionality is also of interest to packages that for one or the other reason currently patch code of other packages or from the kernel as the hook management helps to do this in controlled ways avoiding typical incompatibilities between packages.

### Kernel support for the new LaTeX PDF management

We also added the necessary support in the LaTeX kernel and uploaded the new LaTeX PDF management — so far as a separate package for testing. This code is another important step towards well-tagged PDF documents as it provides backend-independent interfaces to central PDF dictionaries, tools to create annotations, form Xobjects, to embed files, and to handle PDF standards. During a test phase this code is provided through an external package named pdfmanagement-testphase. Please help with the testing here too. You can access the documentation through texdoc pdfmanagement-testphase.

## Outlook

This is the final prerelease, the same code (modulo any corrections found during testing) is planned as the official June 2021 release.

We are issuing this final pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2021-06-01 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release in June hits the streets.

Processing your documents with the pre-release is straightforward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straightforward.

If you encounter any issue with this prerelease, please open a bug report at https://github.com/latex3/latex2e/issues following the guidelines given there (especially providing a processable test document).

In case of incompatibility problems with the prerelease it is, of course, acceptable to report them to us, even if \RequirePackage{latexbug} tells you to report them elsewhere (it would help if you do that too).

Enjoy — Frank

## 2021-04-16

### Some TeX Developments (by Joseph Wright)

#### siunitx v3 beta

I’ve been talking about a new version of siunitx for ages. Progress has been slow but I’ve now put my back into it and got to a feature-complete version: I’m calling this v3.0.0-beta. As this is a beta release, it’s not ready for production just yet, but it is ready for proper testing. I’ve made the TDS-style zip file available here; if you know how to use this kind of file, please download and test!

As I’ve said before, there are a lot of internal improvements in the code. There are also some big changes which do show to users. The major changes are

• The name for commands for units and quantities have changed: \unit and \qty. The old names (\si and \SI) are still about, but I’d encourage people to move to the new ones.
• Font set up is entirely revised, which means that there are new settings to use if you want to adjust the output. The new approach should be faster and cleaner than the old one, but you might have to pick new options.
• Products of numbers now have a dedicated interface: \numproduct, with a matching \qtyproduct for quantities
• Complex numbers also have decided interfaces: \complexnum and \complexqty: this makes parsing a lot easier
• A small number of ideas have been removed: most notably parsing quotients
• I’ve updated the units provided to match the 9th SI Brochure: that means a few units are removed (for example ängström and bar)

To support users and to avoid breaking any documents, the new code is accompanied by a (likely) final version 2 file. That can be loaded using

\usepackage{siunitx}[=v2]


where needed.

What I’m looking for now is feedback on what works, what I’ve missed, etc. Feedback is best in issues on GitHub. You might notice I’m already planning v3.1 and v3.2: the new structures should make more development possible. But at the moment I’m mainly trying to finalise v3.0.

## 2021-04-08

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Gittermuster erstellen mit gridpapers

Hier ein Beispiel dafür, wie man mit dem gridpapers Paket Muster auf Papier bringen kann, hier ein Punktmuster.

%!TEX TS-program = Arara
% arara: pdflatex: {shell: yes}
\documentclass[12pt,ngerman]{scrartcl}
\areaset{8cm}{16cm}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\pagestyle{empty}
\usepackage[pattern=dot,%
colorset=std,
geometry={left=2.25cm,right=1.25cm,top=1cm,bottom=1.25cm},%
textarea,%
patternsize={5mm},%
dotsize={1pt}
]{gridpapers}

\begin{document}
~

\end{document}


Auszug aus der A4-Seite:

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2021-03-13

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Dymo Labels mit LaTeX und ticket.sty gestalten

Hier ein kurzes Beispiel, wie man mit LaTeX auch Dymo-Labels erzeugen kann, im Beispiel für die Label-Größe 57*32mm. Zum allgemeinen Verständnis von ticket.sty siehe auch meinen DTK Artikel in Ausgabe 1/2021.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[landscape,paperheight=57mm,paperwidth=32mm,left=0mm,top=0mm,right=0mm,bottom=0mm]{geometry}
%\usepackage[sfdefault]{plex-sans}
\usepackage{palatino}

\begin{filecontents}[overwrite]{Dymo5732.tdf}
\unitlength=1mm
\hoffset=-25.4mm
\voffset=-29mm
\ticketNumbers{1}{1}
\ticketSize{57}{32} % Breite und Hoehe der Labels in mm
\ticketDistance{0}{0} % Abstand der Labels
\end{filecontents}

\usepackage[Dymo5732]{ticket}

\renewcommand{\ticketdefault}{}%
\makeatletter
\@boxedfalse % Rahmen um Ticket
\@emptycrossmarkfalse % Falzmarken
\@cutmarkfalse % Schnittmarken
\makeatother

\newcommand{\myticket}[2]{
\ticket{%
\put(10,10){\scalebox{#1}{\bfseries #2}}
}}

\newcommand{\myticketml}[4]{
\ticket{%
\put(5,20){\scalebox{#1}{\bfseries #2}}
\put(5,15){\scalebox{#1}{\bfseries #3}}
\put(5,10){\scalebox{#1}{\bfseries #4}}
}}

\begin{document}
\myticket{2}{Steuern}
\end{document}


PDF

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2021-03-09

### LaTeX.net

#### Compiling LaTeX online via TeXlive.net

Blogs, forums, Q&A sites, FAQ sites, and web sites in general can now provide one-click LaTeX compiling on smartphones, tablets, and PCs.

The TeXlive.net server provides a backend with a TeX Live 2020 installation. The server software was written by David Carlisle and is hosted on a virtual machine provided by Stefan Kottwitz, with financial support from DANTE for the hardware.

The tutorial site LearnLatex.org already switched to TeXlive.net.

That’s how it looks like on a web page:

\documentclass[border=10pt]{standalone}
\usepackage{smartdiagram}
\begin{document}
\smartdiagram[descriptive diagram]{
and line styles for nodes and arrows}},
{Position, {Place nodes using a matrix,
relative or absolute positioning}},
{Relation, Insert edges or arrows
between selected nodes},
{Label, Add labels on edges or arrows}}
\end{document}

Click on “Run LaTeX here” to open an embedded PDF viewer with the document output. And yes, you can edit the document right on the web page and compile again.

TeXLive.net, LaTeX.net and many further web sites are supported by DANTE e.V., the German language user group. Our 2021 DANTE spring meeting starts today, join us!

## 2021-03-07

### LaTeX.net

#### DANTE Frühjahrstagung 2021

The following text is in German because it’s about the German language user group meeting 2021.

Im vergangenen Jahr sind leider beide DANTE-Tagungen wegen der Pandemie ausgefallen.

Dieses Jahr wird die FrÃ¼hjahrstagung stattfinden, jedoch wegen der KontaktbeschrÃ¤nkungen komplett online.

Anmelden kann man sich online auf www.dante.de/veranstaltungen/dante2021/anmeldung/ und das ist kurz und einfach und kostenfrei.

Mitglieder erhalten spÃ¤ter einen PIN-Code, mit dem man sich an Abstimmungen wÃ¤hrend der Mitgliederversammlung beteiligen kann. Wie es geht, wird dann in der Versammlung erlÃ¤utert.

Wichtig: Die Anmeldung sollte bis spÃ¤testens Dienstag erfolgen.

Das Programm, vom 9. bis 11. MÃ¤rz 2021:

• Dienstag, 9.3.: ab 19:30 Uhr Vorabendtreff
• Mittwoch,10.3.: 17 Uhr BegrÃ¼ÃŸung, danach 3 VortrÃ¤ge zu
• SpaÃŸ mit LaTeX fÃ¼r Zuhaus-Unterricht, Videokonferenzen und mehr
• Lehr-UnterstÃ¼tzung durch automatisiert generierte personalisierte Aufgaben und LÃ¶sungen
• PDF Ressourcen-Management mit LaTeX als Baustein fÃ¼r barrierefreies PDF
• Donnerstag, 11.3.: ab 9 Uhr Mitgliederversammlung, danach VortrÃ¤ge bis ca. 19 Uhr zu
• GUST e-foundry Schriftprojekt
• TikZ-Zeichnungen
• englischsprachiger TeX Frage/Antwort-Webseite
• Erstellen von ausfÃ¼llbaren PDF-Formularen mit LaTeX
• Erzeugung von TeX-Ausgaben aus XML
• Automatisiertem Tabellensatz aus XML und LaTeX

Siehe auch Programm und Tagungs-Seite.

Wie lÃ¤uft das ab?

Basis ist die Videokonferenz-Software Zoom, lizensiert durch die UniversitÃ¤t Magdeburg als Veranstalter. Teilnehmer erhalten einen Zugangs-Link mit Meeting-ID und Kennwort. DarÃ¼ber kann man sich einloggen und mit einem Webbrowser oder der Zoom-App auf dem PC oder dem Handy teilnehmen. Da hat man zunÃ¤chst einfach mal das passive Zuschauen und ZuhÃ¶ren der VortrÃ¤ge, weiterhin kann man aber auch in aktive RÃ¤ume wechseln zum Unterhalten in kleinerem Kreis. Das sieht man dann schon.

Das Teilnehmen sollte recht einfach sein – kommt dazu! Die Organisation war und ist bestimmt herausfordernd – vielen Dank an Mathias Magdowski, Martin Sievers, weitere Organisatoren und den Vorstand, und an die Vortragenden!

An dieser Stelle auch ein Danke von mir an DANTE fÃ¼r die UnterstÃ¼tzung bei den Serverkosten dieser Webseite LaTeX.net sowie der LaTeX-Foren TeXwelt.de, goLaTeX.de, LaTeX.org, TeXnique.fr, und weiteren Webseiten wie TeXfragen.de, LaTeX.net.br, TeXdoc.org, CTAN.net, TeXlive.net, TeX.my, TeXample.net, pgfplots.net, TeX-talk.net, mychemistry.eu, TeX.co, TeXblog.net und weiteren.

Photo by Raphael Schaller on Unsplash

# The second LaTeX pre-release for 2021-05-01 is available for testing

A few days ago we submitted a new LaTeX development format to CTAN and by now this should be available to all users using MiKTeX or TeX Live (on any operating system).

## Main features of the second pre-release for 2021-05-01

The first pre-release was just a copy of the main release for 2020-10-01 in order to avoid that people using the development release regularly get an old format.

The second pre-release now provides a number of smaller enhancements and resolves roughly forty issues. The more important ones are listed in the draft publication of LaTeX2e News Issue 33. A full list is given in the changes.txt files that are part of the distribution. Notable improvements are

• better support for copy-and-paste from LaTeX-generated PDF documents by including glyphtounicode mappings;
• support for producing several footnote marks to one footnote with the help of the \footref command;
• additional support for package and class option lists that use key/value syntax;
• extending the general hook management system to paragraphs as discussed below.

### Extending the general hook management system to paragraphs

In addition to the bug fixes and enhancements, this second pre-release also extends LaTeX’s general hook management system by supporting paragraph hooks executed at the beginning and end of every paragraph.

This functionality is essential for the production of automatically tagged PDF documents and resolves one of the major obstacles in this area. It is thus an important step in our multi-year journey towards accessible and well-tagged PDF documents. See articles in PDF, Tagging, Accessibility.

Even though this new functionality may not be of direct interest to most users (as long as it is not yet used for processing accessible PDF) it is nevertheless important that it gets tested to ensure that there aren’t any conflicts with existing packages that also try to manipulate the paragraph processing in one way or the other. So please make use of the development format whenever you have a chance, see below for how to do this with ease.

### Kernel support for the new LaTeX PDF management

We also added the necessary support in the LaTeX kernel and uploaded the new LaTeX PDF management — so far as a separate package for testing. This code is another important step towards well-tagged PDF documents as it provides backend-independent interfaces to central PDF dictionaries, tools to create annotations, form Xobjects, to embed files, and to handle PDF standards. During a test phase this code is provided through an external package named pdfmanagement-testphase. Please help with the testing here too. You can access the documentation through texdoc pdfmanagement-testphase.

## Outlook

We expect to produce a third and probably final pre-release adding some more features and enhancements in early April.

We are issuing this second pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2021-05-01 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release in May hits the streets.

Processing your documents with the pre-release is straightforward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straightforward.

Enjoy — Frank

## 2021-02-24

### TUG

#### TUG election deadline of March 1

Nominations for the TeX Users Group election for this year are due March 1 (7am PST; no extensions or exceptions). The positions of TUG president and of several directors are up for election. A nomination form and full details are available.

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Nützliche Kommandozeilen-Einzeiler für LaTeX

Unter https://gist.github.com/iwishiwasaneagle/2f91f63f3cb0107b94b501aa284a18ca gibt es eine Sammlung an nützlichen Einzeilern für die Arbeit mit LaTeX.

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2021-02-14

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Aktienkurse mit Python und LaTeX auswerten

Hier ein einfaches Beispiel, wie man mit Python und LaTeX ein PDF mit Kursinformationen erstellen kann.

Zuerst der Python-Teil, der die Apple-Kursdaten seit dem 1.1.2021 in einen Dataframe lädt und dann in eine LaTeX-Tabelle schreibt:

import pandas

history.to_latex('aapl.tex')


Dann noch der LaTeX-Teil, der a) den Python-Code aus dem LaTeX-Lauf heraus ausführt und b) die erzeugte Tabellen-Datei nur dann einbindet, wenn sie wirklich auch erzeugt wurde.

\documentclass[12pt,ngerman]{scrartcl}
\usepackage[a4paper, top=1cm,bottom=1cm,left=1cm, right=1cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage{booktabs}

\makeatletter
\newcommand{\testfileexists}[1]{%
\IfFileExists{#1}%
{\def\inputtestedfile{\@@input #1 }}
{\let\inputtestedfile\@empty}%
}
\makeatother

\begin{document}

\write18{python runpy.py}

\testfileexists{aapl}
\inputtestedfile

\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

# A new team member?

In these rather dark times, some light-hearted news.

Courtesy of Paulo Cereda (the designer of our hummingbird) a picture of his pet camouflaging himself as a project member:

Looking forward to his contributions. â€” Enjoy Frank

## 2020-12-23

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Farbige Boxen in LaTeX mit tcolorbox

Hier einige Beispiele für farbige Boxen mit dem tcolorbox Paket, entnommen der Paketbeschreibung

\documentclass[12pt,ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage{paralist}
\usepackage{xcolor}
\usepackage{blindtext}
\usepackage{microtype}

\usepackage{empheq}
\usepackage[most]{tcolorbox}
\tcbuselibrary{theorems}

\newtcbtheorem[number within=section]{mytheo}{My Theorem}%
{colback=green!5,colframe=green!35!black,fonttitle=\bfseries}{th}

\begin{document}

\begin{tcolorbox}
Hallo Welt!
\end{tcolorbox}

\begin{tcolorbox}
\blindtext
\end{tcolorbox}

This is another \textbf{tcolorbox}.
\tcblower
Here, you see the lower part of the box.
\end{tcolorbox}

\begin{mytheo}{This is my title}{theoexample}
This is the text of the theorem. The counter is automatically assigned and,
in this example, prefixed with the section number. This theorem is numbered with
\ref{th:theoexample}, it is given on page~\pageref{th:theoexample}.
\end{mytheo}

$$\tcbset{fonttitle=\footnotesize} \tcboxmath[colback=yellow!25!white,colframe=blue]{ a^2 = 16 } \quad \Rightarrow \quad \tcboxmath[colback=blue!25!white,colframe=red,title=Implication]% { a = 4 ~\vee~ a=-4. }$$

\newtcbox{\otherbox}[1][]{nobeforeafter,math upper,tcbox raise base,
enhanced,frame hidden,boxrule=0pt,interior style={top color=green!10!white,
bottom color=green!10!white,middle color=green!50!yellow},
fuzzy halo=1pt with green,#1}
\begin{empheq}[box=\otherbox]{align}
a&=\sin(z)\\
E&=mc^2 + \int_a^b x\, dx
\end{empheq}
$$\tcbhighmath{E} = \otherbox{mc^2}$$

\newtcolorbox{mybox}[2][]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=-2mm},
title=#2,#1}
\begin{mybox}[colback=yellow]{Hello there}
This is my own box with a mandatory title
and options.
\end{mybox}

\begin{tcolorbox}[enhanced,
size=minimal,auto outer arc,
width=2.1cm,octogon arc,
colback=red,colframe=white,colupper=white,
fontupper=\fontsize{6mm}{6mm}\selectfont\bfseries\sffamily,
halign=center,valign=center,
square,arc is angular,
borderline={0.2mm}{-1mm}{red} ]
STOP
\end{tcolorbox}

\begin{tcolorbox}[enhanced,
size=minimal,auto outer arc,
width=2.1cm,octogon arc,
colback=green,colframe=white,colupper=black,
fontupper=\fontsize{6mm}{6mm}\selectfont\bfseries\sffamily,
halign=center,valign=center,
square,arc is angular,
borderline={0.2mm}{-1mm}{green}]
GO
\end{tcolorbox}
\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2020-12-22

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Kurszertifikate mit LaTeX erstellen

Das pgfornaments Paket erlaubt es, spezielle Schmuckzeichen für beispielsweise Kurszertifikate zu nutzen. Hier ein Beispiel, das ich gern für die Teilnehmerinnen und Teilnehmer meiner LaTeX-Kurse nutze.

\documentclass[16pt,ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{eso-pic,calc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage{paralist}
\usepackage{xcolor}
\usepackage[a4paper,landscape,bottom=1.5cm]{geometry} % left=0pt,right=0pt,top=0pt,bottom=0pt
\usepackage{palatino,dashrule}
\usepackage{pgfornament}
\pagestyle{empty}

\setlength{\parindent}{0pt}

\makeatletter
\begingroup
\setlength{\@tempdima}{5mm}%
\setlength{\@tempdimb}{\paperwidth-\@tempdima-3cm}%
\setlength{\@tempdimc}{\paperheight-\@tempdima}%
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimc}){%
\pgfornament[color=magenta,anchor=north west,width=3cm]{63}}
\put(\LenToUnit{\@tempdima},\LenToUnit{\@tempdima}){%
\pgfornament[color=magenta,anchor=south west,width=3cm,symmetry=h]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima+\paperheight-1cm}){%
\pgfornament[color=magenta,anchor=north east,width=3cm,symmetry=v]{63}}
\put(\LenToUnit{\@tempdimb},\LenToUnit{\@tempdima+\paperheight-21cm}){%
\pgfornament[color=magenta,anchor=south east,width=3cm,symmetry=c]{63}}
\endgroup
}
\let\strippt\strip@pt
\makeatother

\begin{document}

\centering\Huge

\textbf{Zertifikat}
\vspace{20mm}
\begin{center}
Max Mustermann%\hdashrule[0.75ex]{14cm}{1pt}{3mm}
\end{center}
\vspace{1cm}\huge

hat erfolgreich am zweitägigen \LaTeX-Kurs der Musteruni teilgenommen. \vspace{2cm}\LARGE\flushleft

Musterau, \hfill\hdashrule[0.75ex]{9.5cm}{1pt}{2mm}

\today

\begin{center}
\vfill\pgfornament[width=0.7\textwidth]{88}
\end{center}
\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

#### Schöne Matrizen mit nicematrix

Um ansprechende Matrizen zu setzen gibt es mit dem nicematrix Paket ein recht neues Paket, das sich alle anschauen sollten, die viel mit Matrizen zu tun haben. Die folgenden Beispiele sind der Dokumentation entnommen, teilweise braucht man mehrere LaTeX-Läufe für das finale Ergebnis.

%!TEX TS-program = Arara
% arara: pdflatex: {shell: yes}
\documentclass[12pt,ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{xcolor}

\usepackage{tikz}
\usepackage{siunitx}
\usepackage{nicematrix}
\NiceMatrixOptions{cell-space-top-limit = 1pt,cell-space-bottom-limit = 1pt}
\begin{document}

$$\begin{pmatrix} \frac12 & -\frac12 \\ \frac13 & \frac14 \\ \end{pmatrix} = \begin{pNiceMatrix} \frac12 & -\frac12 \\ \frac13 & \frac14 \\ \end{pNiceMatrix}$$

$$A = \begin{pNiceMatrix}[baseline=2] \frac{1}{\sqrt{1+p^2}} & p & 1-p \\ 1 & 1 & 1 \\ 1 & p & 1+p \end{pNiceMatrix}$$

\NiceMatrixOptions{cell-space-top-limit=1pt,cell-space-bottom-limit=1pt}

$$A=\begin{pNiceArray}{cc|cc}[baseline=line-3] \dfrac1A & \dfrac1B & 0 & 0 \\ \dfrac1C & \dfrac1D & 0 & 0 \\ \hline 0 & 0 & A & B \\ 0 & 0 & D & D \\ \end{pNiceArray}$$

$$\begin{NiceArray}{*{5}{c}}[hvlines] \diagbox{x}{y} & e & a & b & c \\ e & e & a & b & c \\ a & a & e & c & b \\ b & b & c & e & a \\ c & c & b & a & e \end{NiceArray}$$

\NiceMatrixOptions{code-for-first-row = \color{red},
code-for-first-col = \color{blue},
code-for-last-row = \color{green},
code-for-last-col = \color{magenta}}

$$\begin{pNiceArray}{cc|cc}[first-row,last-row=5,first-col,last-col,nullify-dots] & C_1 & \Cdots & & C_4 & \\ L_1 & a_{11} & a_{12} & a_{13} & a_{14} & L_1 \\ \Vdots & a_{21} & a_{22} & a_{23} & a_{24} & \Vdots \\ \hline & a_{31} & a_{32} & a_{33} & a_{34} & \\ L_4 & a_{41} & a_{42} & a_{43} & a_{44} & L_4 \\ & C_1 & \Cdots & & C_4 & \end{pNiceArray}$$

$$\begin{pNiceArray}{ScWc{1cm}c}[nullify-dots,first-row] {C_1} & \Cdots & & C_n \\ 2.3 & 0 & \Cdots & 0 \\ 12.4 & \Vdots & & \Vdots \\ 1.45 \\ 7.2 & 0 & \Cdots & 0 \end{pNiceArray}$$

$\begin{NiceMatrix}[ code-before = { \tikz \draw [fill = red!15] (row-7-|col-4) -- (row-8-|col-4) -- (row-8-|col-5) -- (row-9-|col-5) -- (row-9-|col-6) |- cycle ; } ]1 \\ 1 & 1 \\ 1 & 2 & 1 \\ 1 & 3 & 3 & 1 \\ 1 & 4 & 6 & 4 & 1 \\ 1 & 5 & 10 & 10 & 5 & 1 \\ 1 & 6 & 15 & 20 & 15 & 6 & 1 \\ 1 & 7 & 21 & 35 & 35 & 21 & 7 & 1 \\ 1 & 8 & 28 & 56 & 70 & 56 & 28 & 8 & 1 \end{NiceMatrix}$

$$\begin{bNiceMatrix} C[a_1,a_1] & \Cdots & C[a_1,a_n] & \hspace*{20mm} & C[a_1,a_1^{(p)}] & \Cdots & C[a_1,a_n^{(p)}] \\ \Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ C[a_n,a_1] & \Cdots & C[a_n,a_n] & & C[a_n,a_1^{(p)}] & \Cdots & C[a_n,a_n^{(p)}] \\ \rule{0pt}{15mm} & \Vdotsfor{1} & & \Ddots & & \Vdotsfor{1} \\ C[a_1^{(p)},a_1] & \Cdots & C[a_1^{(p)},a_n] & & C[a_1^{(p)},a_1^{(p)}] & \Cdots & C[a_1^{(p)},a_n^{(p)}] \\ \Vdots & \Ddots & \Vdots & \Hdotsfor{1} & \Vdots & \Ddots & \Vdots \\ C[a_n^{(p)},a_1] & \Cdots & C[a_n^{(p)},a_n] & & C[a_n^{(p)},a_1^{(p)}] & \Cdots & C[a_n^{(p)},a_n^{(p)}] \end{bNiceMatrix}$$

\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

#### Das subcaption Paket als subfigure Ersatz

Um mehreren nebeneinander gesetzten Bildern separate Bildunterschriften zu geben, war das subfigure Paket lange Standard. Mit dem subcaption Paket von Axel Sommerfeldt gibt es einen würdigen Nachfolger, der aktiv gepflegt wird.

Hier ein Beispiel, zum Übersetzen bitte eigene Bilder nutzen:

\documentclass[12pt,ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{subcaption}

\begin{document}

\begin{figure}
\centering
\subcaptionbox{Eine Katze \label{cat1}}
{\includegraphics[width=0.49\textwidth]{Bilder/Katze1}}
\subcaptionbox{Die selbe Katze \label{cat2}}
{\includegraphics[width=0.49\textwidth]{Bilder/Katze2}}
\caption{Zwei Katzenbilder}\label{katzenbilder}
\end{figure}

Abbildung \ref{cat1} auf Seite \pageref{katzenbilder}

Abbildung \ref{cat2} auf Seite \pageref{katzenbilder}

Abbildung \ref{katzenbilder} auf Seite \pageref{katzenbilder}

\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

#### Flyer mit LaTeX gestalten

Um einen einfachen Flyer zu erstellen gibt es nichts besseres als die leaflet-Klasse. Hier ein einfaches Beispiel, die Katzenbilder muss man zum Übersetzen auskommentieren oder ersetzen.

\documentclass[12pt,ngerman]{leaflet}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage{paralist}
\usepackage{xcolor}
\usepackage{palatino}
\usepackage{blindtext}
\usepackage{microtype}

\author{Uwe Ziegenhagen}
\title{Mein erster Flyer}

\begin{document}
\maketitle
\thispagestyle{empty}

\section{Foo}

\blindtext[2]

\section{Bar}

\includegraphics[width=\textwidth]{Bilder/Katze2}

\blindtext

\section{Hello}

\blindtext[4]

\section{World}

\blindtext

\section{Hallo Welt}

\blindtext

\includegraphics[width=\textwidth]{Bilder/Katze1}

\end{document}


leaflet-01

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2020-12-18

### Weblog von Markus Kohm

#### Alle Jahre wieder …

Hallo,

es ist ja fast so etwas wie eine Tradition, am Jahresende für alles mögliche zu Spenden aufzurufen. Ich bin da keine Ausnahme. Seit Jahren bitte ich immer mal wieder zu dieser Zeit, um Unterstützung für den Betrieb des Servers, auf dem komascript.de gehosted wird. Viele nehmen das dann auch zum Anlass, meine Wunschliste zu durchforsten und mir ein persönliches Geschenk zukommen zu lassen. Dieses Jahr soll das ein wenig, aber nicht ganz anders sein.

Während dieses Jahr für viele ein sehr hartes Jahr war, bin ich persönlich und auch meine Familie vergleichsweise gut bis hierher gekommen. Obwohl auch wir nicht von Covid-19 und anderen Krankheiten verschont blieben, bleibt mir vor allem die Solidarität, die wir dabei erfahren haben, in Erinnerung. Während andere sich über Maskenpflicht und Abstandsregeln aufgeregt haben, habe ich schlicht bedauert, dass dergleichen notwendig ist. Vielleicht ist es einfach leichter, dergleichen zu akzeptieren, wenn man unmittelbar erlebt hat, wie sogar bei relativ leichtem Verlauf, die Krankheit selbst eine weit größere Belastung ist als all diese Maßnahmen. Vielleicht bin ich auch einfach gewohnt, Kontakte auf Distanz zu pflegen. Dass mir das eine oder andere Hobby quasi weggebrochen ist, hatte schließlich den Vorteil, dass ich mich auf andere Dinge konzentrieren konnte.

Aber, wie gesagt, ich kenne auch Menschen, die nicht so leicht durch dieses Jahr gekommen sind. Nicht nur persönliche Freunde haben in diesem Jahr extreme Schicksalsschläge erlitten und leiden noch immer darunter. In aller Welt gibt es Menschen, die schon ohne Pandemie tagtäglich, um ihre Zukunft ringen. Durch die Pandemie ist dieses Los zusätzlich erschwert. Unter den Schwachen sind Kinder die Schwächsten. Jahr für Jahr ist mir deshalb die Sternsingeraktion ein besonderes Anliegen. Normalerweise ziehen in der Zeit von Weihnachten bis Dreikönig Kinder von Tür zu Tür und sammeln Spenden unter dem Motto: Kinder helfen Kindern. Mit dem Geld werden weltweit unterschiedliche Projekte unterstützt, die unmittelbar die Situation von Kindern verbessern helfen. Jedes Jahr wird ein Projekt besonders hervorgehoben. In diesem Jahr ist das die Hilfe für Kinder in der Ukraine. Normalerweise kommen dank des überwältigenden Engagements von einigen ehrenamtlichen Erwachsenen, aber vor allem vieler, vieler engagierter Kinder und spendenwilligen Erwachsenen aber auch Kindern(!) allein in unserer kleinen Gemeinde dadurch jährlich mehrere Tausend Euro zusammen. Im letzten Jahr waren es insgesamt 62,6 Mio. Euro für 1623 Projekte in 108 Ländern. Für die Empfängerprojekten ist das deutlich mehr als ein Tropfen auf den heißen Stein. In diesem Jahr ist auch das anders. Die Diözese Freiburg hat kurzfristig selbst das Einwerfen von Flyern mit Spendenaufrufen zur Sternsingeraktion in die Briefkästen wegen Corona vorerst untersagt. Es ist zu befürchten, dass damit eine wirklich wichtige Aktion, die mir sehr am Herzen liegt, weitgehend ausfällt. Daher habe ich beschlossen, dieses Jahr (erneut) darum zu bitten, mir eine persönliche Freude dadurch zu machen, zum Jahresende 2020 und zum Jahresanfang 2021 mich durch eine Spende an die Sternsingeraktion 2020/21 zu beschenken. Der Link führt direkt zur Sternsingersammlung meiner Seelsorgeeinheit. Auch 5€ können bereits helfen. Ich selbst erfahre natürlich nicht, wer da was gespendet hat. Wer mir einfach formlos mitteilt, dass er meinem Aufruf gefolgt ist und deshalb auch gerne auf meine Sponsorenliste möchte, den nehme ich natürlich gerne trotzdem in selbige auf. Beträge will ich gar keine wissen. Ihr könnt euch übrigens auch digital von den Sternsingern besuchen lassen.

Bitte seid in dieser Ausnahmezeit solidarisch. Wenn ihr gesund seid, wünsche ich euch es zu bleiben. Wenn ihr es leider nicht seid, wünsche ich euch, rasche und vollständige Genesung. Achtet auf euch selbst und noch viel mehr auf andere.

Bis demnächst
Markus

## 2020-12-05

### TeX & Friends (by Jürgen Fenn)

#### The future of text

Ein Lesetipp für die kommenden Wochen dürfte dieses Werk sein:

• Hegland, Frode, Hrsg. 2020. The Future of Text. 1. Auflage. Future Text Publishing. doi:10.48197/fot2020a, (zugegriffen: 5. Dezember 2020).

Worum geht es?

Welcome to Future Text Publishing, producers of ‘The Future of Text’, the largest survey of the future(s) of text ever undertaken.

The book is a collection of dreams for how we want text to evolve as well as how we understand our current textual infrastructures, how we view the history of writing, and much more. The aim is to make it inspire a powerfully rich future of text in a multitude of ways today and to still have value in a thousand years and beyond. It should serve as a record for how we saw the medium of text and how it relates to our world, our problems and each other in the early twenty first century.

Und das ganze ist open end angelegt. Die zweite Auflage wird ab Februar 2021 vorbereitet.

# Tagged PDF feasibility study published

At the TUG 2020 online conference we announced the start of a multi-year project to automatically generate tagged PDF with LaTeX, which is an important aspect of producing “accessible” documents. Back then we promised that further information about the project is forthcoming.

We have now added the feasibility study (which was the starting point for the project) to this website:

### LaTeX Tagged PDF Feasibility Evaluation Study

This forty-page document contains information about a multi-year project, started by the LaTeX Project Team in 2020, that will extend LaTeX to produce tagged, and hence accessible, PDF with minimal manual intervention. It explains in detail both the project goals and the tasks that need to be undertaken, concluding with a detailed project plan. It is our blueprint for for how we think the project should be undertaken.

The Introduction contains an overview of the beneﬁts of the project and explains why LaTeX documents make a good starting point for the production of tagged PDF. More information about this blueprint and the project can be found in the article “LaTeX Tagged PDF — A blueprint for a large project” TUGboat, Volume 41-3 (2020), which will appear shortly.

The original version of this study dates from late 2019 and was addressed primarily to an audience within Adobe which consisted of engineers and managers with a wide knowledge of digital typography and electronic publishing but not necessarily much background within the specialized world of TeX, LaTeX and friends. This version of the study was updated in September 2020 with some minor redactions, corrections and clarifications.

In addition the TUGboat article referred to above is also available for reading:

### LaTeX Tagged PDF — A blueprint for a large project

• Frank Mittelbach
• Chris Rowley
• TUGboat 41:3, 2020
• Abstract

In Frank’s talk at the TUG 2020 online conference we announced the start of a multi-year project to enhance LaTeX to fully and naturally support the creation of structured document formats, in particular the “tagged PDF” format as required by accessibility standards such as PDF/UA.

In this short article we outline the background to this project and some of its history so far. We then describe the major features of the project and the tasks involved, of which more details can be found in the Feasibility Study that was prepared as the ﬁrst part of our co-operation with Adobe.

This leads on to a description of how we plan to use the study as the basis for our work on the project and some details of our planned working methodologies, illustrated by what we have achieved so far and leading to a discussion of some of the obstacles we foresee.

Finally there is also a summary of recent, current and upcoming activities on and around the project.

You will find both documents, as well as other documents about the “Tagged PDF Project” and related topics, on the PDF, Tagging and Accessibility page in the publications area of the site.

## 2020-11-15

### TUG

#### TUGboat 41:3 published

TUGboat volume 41, number 3, a regular issue, has been mailed to TUG members. It is also available online and from the TUG store. In addition, prior TUGboat issue 41:2 is now publicly available. Submissions for the next issue are welcome; the deadline is March 31 (early submissions are especially appreciated). Please consider joining or renewing your TUG membership if you haven't already (you'll get this issue immediately), and thanks.

# Tutorial on the L3 programming layer (expl3)

In Spring 2020 the LaTeX3 programming language expl3 was integrated into the LaTeX format to make it directly accessible to package developers and for future LaTeX kernel programming. Since that date LaTeX announces itself with something like

LaTeX2e <2020-10-01> patch level 2
L3 programming layer <2020-10-27> xparse <2020-03-03>


Up to now the documentation for expl3 that we provide consists of a short introduction (expl3.pdf), its reference manual (interface3.pdf) and its source code (source3.pdf) all of which you can easily access using the texdoc program, e.g.,

texdoc interface3


What was missing, however, was a tutorial to help progammers to get familiar with the features and approaches when they want to use the L3 programming layer in their own packages. Such a tutorial has now been written by Ziyue “Alan” Xiang, currently a PhD student at Purdue University and we strongly recommend to check it out if you are interested in L3 programming or in understanding code written in it:

Thanks Alan for your work; it is much appreciated!

Enjoy — Frank

## 2020-11-02

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Warum TeXworks manchmal nicht die PDF Anzeige aktualisiert / When TeXworks does not update the PDF

Vor einiger Zeit fiel mir auf, dass TeXworks die PDF-Anzeige manchmal nicht aktualisiert. Wann genau dies aber geschah und wann nicht, konnte ich aber nicht feststellen. Gestern schließlich brachte eine Google-Suche nach „texworks not refreshing the pdf“ eine TSX-Frage [1] ans Licht, in der der Autor dieses Fehlverhalten untersucht hatte: Das PDF wurde immer dann nicht aktualisiert, wenn die entsprechende TeX-Datei im Wurzelverzeichnis eines Laufwerks lag. Muss man erst einmal drauf kommen…

Ein Bug-Request [2] war schnell geschrieben, in der neuesten Development-Version ist dieser Bug bereits gefixt.

English Summary

In TeXworks (at least in version 0.6.5) the PDF is not updated after compilation if the TeX file had been placed in a top-level directory. A bug report was raised, it will be fixed in future versions.

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2020-10-31

### LaTeX.net

#### Happy Halloween!

Lockdown is coming in Germany.

Time for some virtual Halloween. Did you visit CTAN today? Browse it if you are not scared!

And if you wonder what halloweenmath (in the article header image) is about – that’s today’s maths style. Examples from the manual:

# The fall 2020 LaTeX release is available

This release introduces a number of important enhancements.

### A general hook management system for LaTeX

Most LaTeX users and package writers will know the handful of hooks that LaTeX has been offering until now, the most important one perhaps being \AtBeginDocument. These are important hooks, but they are far too few so that in many cases package developers had to directly patch the internals of LaTeX. This resulted in many problems.

With the new hook management system, LaTeX will get many more hooks that package writers (and authors) can use to add code in a controlled and reliable way. New hooks have been added in a number of places by using the new system and more will follow over time. Available now are:

• Hooks to add code before and after environments (formerly offered through the etoolbox package);
• Hooks used when loading files, packages, or classes (similar to what the filehook package now provides);
• Hooks in the page-building process (e.g., functionality previously available through packages such as atbegshi or atveryend and a few others).

The important point here is not so much that the functionality of these packages has been integrated into the LaTeX kernel, but that the hook management system provides a single structured way for different packages to reliably add and order code. This will resolve many of the inter-package interoperability issues which formerly could be resolved (if at all) only by loading the packages in a specific order, or by the use of complex and fragile code inside the packages to account for various scenarios in user documents.

The hook management system is currently described in these three documents:

• texdoc lthooks — The description of the interfaces and the core hooks already added to the kernel.
• texdoc ltshipout — The documentation of the hooks available during the page production process.
• texdoc ltfilehook — hooks that can be used before or after a file gets loaded.

### Providing xparse as part of the format

In the previous release we added the LaTeX3 programming layer to the LaTeX format to improve the loading speed when packages using expl3 are used. In this release we are now extending this support by integrating xparse so that the extended interface for defining document-level commands becomes available out of the box.

This enables users and most importantly package developers to easily define LaTeX commands with multiple optional arguments or other syntax features with ease. For details, check out the xparse documentation, e.g., via texdoc xparse.

### Improving the font series handling

In the previous release we extended NFSS (the new font selection scheme) to better support modern fonts that offer different font faces, e.g., condensed, semi-bold, etc., and make them work seamlessly with each other. Experiences with the extended interface showed that for some use cases adequate support was still missing or that in special setups the algorithms sometimes selected a wrong font series value. These cases have now been resolved and additional support commands have been added. For example, with

\IfFontSeriesContextTF{〈context〉} {〈true code〉}{〈false code〉}


you can now define commands that behave differently depending on the current font series context. The 〈context〉 to check has to be specified as either bf or md. The command then chooses the 〈true code〉 or the 〈false code〉 based on where it is used (e.g., inside \textbf (or \bfseries) or not).

### A large number of other enhancements and corrections

There are nearly fifty other enhancements and corrections that we documented in the ltnews article for this release (and a few very minor ones that only made it into the changes.txtfile) The most important ones from a user perspective are:

• Support for length expression in coordinates of picture commands as an alternative to decimal numbers denoting a multiple of \unitlength, e.g., \put(0,.2\textheight){...}
• New commands to make copies of robust commands (\let wouldn’t work for them)
• A new \ShowCommand command to display the full definition of a robust command (works also on other commands)

But read the whole ltnews article because there may be other gems that are useful for you.

The new features and most the important bug fixes made in this release are documented in “LaTeX2e News Issue 32”. This document can be found on the LaTeX2e news page where you will also find release information for earlier LaTeX releases.

Happy LaTeXing — Frank

## 2020-09-27

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

Vermutlich ist es nicht so bekannt, dass man LaTeX-Pakete auch per REST-API auf CTAN hochladen kann. Das ist insbesondere dann praktisch, wenn man öfter Pakete aktualisieren muss, wie ich es beispielsweise mit der DTK Bibliografie mehrmals im Jahr mache.

Manfred Lotz vom CTAN-Team hat dazu ein Python-Skript geschrieben (https://gitlab.com/Lotz/pkgcheck/blob/master/ctan_upload.py), das diese API befüttert.

Ich habe sein Skript noch ein wenig angepasst (ich erstelle auch die ZIP-Datei damit und kopiere die richtigen Dateien an ihren Platz), mein Skript findet ihr im Github unter https://github.com/dante-ev/dtk-bibliography/blob/master/pack_and_upload_to_ctan.py. Für den Upload selbst benötigt man noch eine TOML-Datei, in der die Upload-Informationen als Key-Value-Paare stehen. Ein Beispiel für eine solche TOML-Datei findet ihr bei Manfred unter https://gitlab.com/Lotz/pkgcheck/-/blob/master/pkgcheck.toml.

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

## 2020-09-22

### TUG

#### TUGboat 41:2 published

TUGboat volume 41, number 2, the TUG 2020 (online) proceedings, has been mailed to TUG members. It is also available online and from the TUG store. In addition, prior TUGboat issue 41:1 is now publicly available. Submissions for the next issue are welcome; the deadline is October 15. Please consider joining or renewing your TUG membership if you haven't already (you'll get this issue immediately), and thanks.

# Talks from the online TUG Conference 2020 are now available on YouTube

The first TUG online conference in July was quite a success with many interesting talks on many subjects of TeX usage and related topics. The talks are now appearing one after another on YouTube, thanks to the work of a few individuals who have prepared them (and the question/answer sessions) for publication.

If you have missed the conference (or if you want listen to one of the talks again) you will find them on the TeX Users Group Channel on YouTube. So far only a subset of the talks have been added; the remaining ones will probably appear pretty soon.

There are also several talks by members of the LaTeX Project team. These are:

Enjoy — Frank

# The third and final LaTeX pre-release for 2020-10-01 is available for testing

A few days ago we submitted a new LaTeX development format1 to CTAN and by now this should be available to all users using MiKTeX or TeX Live (on any operating system).

## Main features of the final pre-release for 2020-10-01

In the previous pre-releases, distributed in May and July, the following main features (besides bug fixes) were made available:

• The functionality of the xparse package was added directly to the LaTeX kernel.
• LaTeX’s font series handling was improved.
• A general hook management system was added to improve package interoperability and enable easier customization.

In this final prerelease we have fully integrated the hook management system (previously it was added at the end, overwriting earlier definitions in the kernel). In addition the following features were added:

• The picture environent now supports dimensions (and not only numbers multiplied by \unitlength) in places where coordinates have to be specified. This is basically incorporating into the kernel the functionality of the picture.sty package by Heiko Oberdiek.
• A \ShowCommand was added to show the definition of robust commands in an easy manner.
• A \NewCommandCopy was added to allow making copies of robust commands (which can’t be done using \let).
• docstrip and l3docstrip were merged so that one can now always use docstrip even with expl3-based sources.

### Other fixes and improvements

There have been a larger number of smaller bug fixes and enhancements. A full list of all fixes and additions is given in a draft version of ltnews32, which you should be able to read by running

texdoc ltnews32


on the command line (or by any other means available with your operating system—somewhere there should be a file called ltnews32.pdf that you can open with a PDF reader). The draft version of this file is also available from our website as LaTeX2e News Issue 32 draft.

### A general hook management system for LaTeX (the main feature of the 2020 fall release)

Most LaTeX users and package writers will know the handful of hooks that LaTeX has been offering until now, the most important one perhaps being \AtBeginDocument. These are important hooks, but they are far too few so that in many cases package developers had to directly patch the internals of LaTeX. This resulted in many problems.

With the new hook management system, LaTeX will get many more hooks that packages writers (and authors) can use to add code in a controlled and reliable way. New hooks have been added in a number of places by using the new system and more will follow over time. Available now are:

• Hooks to add code before and after environments (formerly offered through the etoolbox package);
• Hooks used when loading files, packages, or classes (similar to what the filehook package now provides);
• Hooks in the page-building process (e.g., functionality previously available through packages such as atbegshi or atveryend and a few others).

The important point here is not so much that the functionality of these packages has been integrated into the LaTeX kernel, but that the hook management system provides a single structured way for different packages to reliably add and order code. This will resolve many of the inter-package interoperability issues which formerly could be resolved (if at all) only by loading the packages in a specific order, or by the use of complex and fragile code inside the packages to account for various scenarios in user documents.

The hook management system is currently described in these three documents:

• texdoc lthooks — The description of the interfaces and the core hooks already added to the kernel.
• texdoc ltshipout — The documentation of the hooks available during the page production process.
• texdoc ltfilehook — hooks that can be used before or after a file gets loaded.

## Outlook

We expect this to be the final pre-release matching the code that goes into the 2020-10-01 release, except for any bug fixes that are found between now and the release date.

We are issuing this final pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2020-10-01 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release hits the streets.

Processing your documents with the pre-release is straight forward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straight forward.

Enjoy — Frank

1. The internal version number for this pre-release is LaTeX2e <2020-10-01> pre-release-8, the first 5 pre-releases just mirrored the patch releases we did for 2020-02-02.

## 2020-08-30

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Mailman Spammer mit Python blocken

Für Dante e.V. betreue ich einige E-Mail-Listen auf mailman-Basis, die seit einigen Tagen von Spammern geflutet werden. Jeden Tag sind dutzende bis hunderte Aufnahme-Requests in der Liste, die ich manuell wegwerfen müsste. Nachdem ich dies einmal händisch getan hatte, musste eine automatische Lösung gefunden werden.

Die Lösung bestand darin, einen Treiber für Firefox („geckodriver“) zu installieren, der das Fernsteuern des Browsers erlaubt. Dann kann mittels selenium Modul die Steuerung aus Python heraus erfolgen. Unten der wesentliche Quellcode als Basis für eigene Arbeiten, den Teil zum Erkennen von legitimen Anfragen habe ich weggelassen.

Nachtrag vom 25.10.2020: Siehe auch die Erweiterung unter https://www.uweziegenhagen.de/?p=4420

# -*- coding: utf-8 -*-
"""
"""

from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options

opts = Options()
#opts.set_headless() # Ich will sehen, wie selenium arbeitet
browser.implicitly_wait(3)

# einloggen
browser.get('<url panels')="" mailman="" search_form="browser.find_element_by_name('&lt;passwortfeld_ID" admin="" des="">')
search_form.submit()

#wegwerfen Button pro Zeile
fields = browser.find_elements_by_xpath("//input[@value='3']")
emails = browser.find_elements_by_xpath('//td[contains(text(),"@")]')

if len(fields) == len(emails):
zipped_list = list(zip(emails, fields))

for i in zipped_list:
email, field = i
field.click()

</adminpasswort></url>

### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

# The second LaTeX pre-release for 2020-10-01 is available for testing

A few days ago we submitted a new LaTeX development format1 to CTAN and by now this should be available to all users using MiKTeX or TeX Live (on any operating system).

## Main features of the second pre-release for 2020-10-01

The first pre-release, distributed at the end of May, had the following two main features (beside bug fixes):

• the functionality of the xparse package was added directly to the LaTeX kernel
• LaTeX’s font series handling was improved

This second pre-release adds one major new component to LaTeX: a general hook management system to improve package interoperability and enable easier customization and extension of LaTeX.

### A general hook management system for LaTeX

Most LaTeX users and package writers will know the handful of hooks that LaTeX has been offering until now, the most important one perhaps being \AtBeginDocument. These are important hooks, but they are far too few so that in many cases package developers had to directly patch the internals of LaTeX. Thus resulted in many problems.

With the new hook management system, LaTeX will get many more hooks that package writers (and authors) can use to add code in a controlled and reliable way. New hooks have been added in a number of places by using the new system and more will follow over time. Available now are:

• Hooks to add code before and after environments (formerly offered through the etoolbox package);
• Hooks used when loading files, packages, or classes (similar to what the filehook package now provides);
• Hooks in the page-building process (e.g., functionality previously available through packages such as atbegshi or atveryend and a few others).

The important point here is not so much that the functionality of these packages has been integrated into the LaTeX kernel, but that the hook management system provides a single structured way for different packages to reliably add and order code. This will resolve many of the inter-package interoperability issues which formerly could be resolved (if at all) only by loading the packages in a specific order, or by the use of complex and fragile code inside the packages to account for various scenarios in user documents.

The hook management system is currently described in these three documents (for the final release they will be consolidated):

• texdoc lthooks — The description of the interfaces and the core hooks already added to the kernel.
• texdoc ltshipout — The documentation of the hooks available during the page production process.
• texdoc ltfilehook — hooks that can be used before or after a file gets loaded.

### Other fixes and improvements

A full list of all fixes and additions is given in a draft version of ltnews32 which you should be able to read by running

texdoc ltnews32


on the command line (or by any other means available at your operating system—somewhere there should be a file called ltnews32.pdf that you can open with a PDF reader). The draft version of this file is also available from our website as LaTeX2e News Issue 32 draft.

## Outlook

We expect to produce a third and final pre-release incorporating the user feedback we receive and consolidating some of the documentation. A few additional outstanding issues are expected to get fixed as well, but nothing major — the main functionality planned for the fall release is available already now with the second pre-release.

We are issuing this second pre-release now in the hope that you will help us by making sure that all the enhancements and fixes we have provided are safe and that they do not have any undesired side effects, so please help with the testing if you can.

This development format allows you to test the upcoming LaTeX release scheduled for 2020-10-01 with your documents or packages. Such testing is particularly important for package maintainers to verify that changes to the core LaTeX haven’t introduced incompatibilities with existing code. We try to identify any such problems beforehand but such an undertaking is necessarily incomplete, which is why we are asking for user testing.

Besides developers, we also ask ordinary users to try out the new release, because the more people that test the new format, the higher the chances that any hidden problems are identified before the final release in October hits the streets.

Processing your documents with the pre-release is straight forward. All you have to do is to replace the invocation command by appending -dev to the executable, e.g., on the command line you would run

pdflatex-dev myfile    or    lualatex-dev myfile    or    xelatex-dev myfile


instead of using pdflatex, lualatex or xelatex. If you use an integrated editing environment, then it depends on the system how to configure it to use an alternative format; but in any case the necessary modification should be straight forward.

Enjoy — Frank

1. The internal version number for the pre-release is LaTeX2e <2020-10-01> pre-release-7, the first 5 pre-releases just mirrored the patch releases we did for 2020-02-02.

# New articles by project members

We have added five articles recently published in TUGboat to the site.

• Enrico discusses aspects of mathematical typesetting,
• Frank’s article discusses a new package that implements an improved algorithm for float handling,
• Joseph looks a case changing in the Unicode world and the LaTeX3 tools available,
• Ulrike’s article gives a sort overview about the work going on in providing tagged PDF documents and
• Ulrike and Marcel discuss the use of LuaLaTeX with Harfbuzz in a case study.

You will find all of them on the Publications from 2020 page.

## 2020-07-19

### Uwes kleines Technikblog - Kategorie LaTeX (by Uwe Ziegenhagen)

#### Appendixnotes für Beamer-Präsentationen

Remark: An English version of this article has been published on latex.net.

Stellen wir uns vor, dass wir in einer Präsentation eine Abschlussarbeit verteidigen müssen. Es kann sein, dass weitergehende Fragen kommen, die dann tiefergehend beantwortet werden müssen.

Wir könnten das entsprechende Material direkt in die Präsentation setzen, müssen dann beim Vortrag aber eventuell Folien überspringen, was auch kein guter Präsentationsstil ist. Die zusätzlichen Inhalte einfach nur ans Ende setzen ist auch schlecht, im schlimmsten Fall muss man dann während der Präsentation hin- und herspringen.

Eine elegante Lösung gibt es mit dem beamerappendixnote Paket. Es nutzt zwei Befehle, \appxnote und \printappxnotes, um Material für den Anhang zu integrieren.

Der erste Befehl erstellt den Link zum Anhang und den anzuzeigenden Link-Text, der zweite Befehl setzt alle Appendix-Notizen.

\documentclass[12pt,ngerman]{beamer}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{beamerappendixnote}

\begin{document}

\begin{frame}
\frametitle{Some Beamer Slide}

\begin{itemize}
\item Some stuff
\item that requires
\item more background
\end{itemize}

\appxnote{Proof}{We can easily prove this.}

\end{frame}

\printappxnotes

\end{document}


### Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

üääü­üöü–üöü–üöü–

### LaTeX.net

#### Sorting Glossaries with bib2gls

In previous posts I discussed the glossaries package (which can be extended with the glossaries-extra package) and also using makeindex or xindy to sort the terms that had been indexed in the document. This post describes another tool, bib2gls, which can be used instead of makeindex or xindy.

Makeindex and xindy are both general purpose indexing applications, but bib2gls was designed specifically for use with glossaries-extra and works in a very different way. With makeindex and xindy, commands like \gls add indexing information to an external file. This information consists of the sort value, hierarchical information (if the term has a parent entry), the associated formatting code to display the entry in the glossary and the location (normally the page number) where the indexing occurred. The indexing application sorts and collates this information and writes all the code needed to format the glossary in another file, which is input by \printglossary.

By contrast, bib2gls doesnâ€™t create a file containing the code to typeset the glossary. Instead, it parses bib files containing definitions of terms, symbols and abbreviations, then selects the entries that are required by the document and writes the LaTeX code (using commands provided by glossaries-extra.sty) that defines these terms in a file thatâ€™s input by the preamble-only command \GlsXtrLoadResources. All the indexing information (such as the locations) is stored in internal fields associated with each entry. If a glossary is required, it can be displayed with \printunsrtglossary (or \printunsrtglossaries, which does \printunsrtglossary for each defined glossary).

This means that you can have a large database of all entries defined in a bib file (or across multiple bib files) that can be managed in an application such as jabref. If you have a document that only requires, say, 10 from a database of 1000 entries, then LaTeX only needs to use the resources required to define those 10 entries, which can improve the document build time.

## \printunsrtglossary

The \printunsrtglossaries command was briefly mentioned inÂ an earlier post. When using bib2gls it helps to understand how \printunsrtglossary works. The â€œunsrtâ€� part of the name stands for â€œunsortedâ€� because this command simply iterates over all defined entries in the order in which they were defined. There is no attempt to sort entries or gather child entries, although letter group headings are inserted whenever a change in group is detected. As was previously illustrated, this can cause strange results. Consider the following example:

\documentclass{article}

\usepackage[style=indexgroup]{glossaries-extra}

\newglossaryentry{parrot}{name={parrot},
description={mainly tropical bird with bright plumage}
}

description={nocturnal insectivore with large claws}
}

\newglossaryentry{zebra}{name={zebra},
description={wild African horse with black-and-white stripes}
}

\newglossaryentry{duck}{name={duck},
description={a waterbird with webbed feet}
}

\newglossaryentry{aardvark}{name={aardvark},
description={nocturnal African burrowing mammal}
}

\newglossaryentry{macaw}{name={macaw},
parent={parrot},
description={long-tailed, colourful parrot}
}

\newglossaryentry{mallard}{name={mallard},
parent={duck},
description={dabbling duck with long body and broad bill}
}

\newglossaryentry{ara}{name={Ara},
parent={macaw},
description={neotropical genus of macaw}
}

\newglossaryentry{northernpintail}{name={northern pintail},
parent={duck},
description={long-necked, small-headed duck with curved back}
}

\newglossaryentry{anodorhynchus}{name={Anodorhynchus},
parent={macaw},
description={genus of large blue macaws}
}

\begin{document}
\printunsrtglossary
\end{document}

This produces a strange result (click to view larger version).

The list is in the order of definition. The parent key simply provides the hierarchical level for the benefit of the glossary style. The level starts at 0 for top-level (parentless) entries, then 1 for an entry that has a parent but no grandparent, 2 for an entry with a grandparent but no great-grandparent, etc. The glossary style may (or may not) apply a different format for entries according to their hierarchical level. In the case of the indexgroup style used here, different indenting is applied. In this example, this has led to a rather strange visual appearance that makes it look as though â€œmacawâ€�, â€œmallardâ€� and â€œnorthern pintailâ€� are sub-items of â€œaardvarkâ€�, and the macaw genera appear to be sub-items of â€œmallardâ€� and â€œnorthern pintailâ€�.

The default behaviour of bib2gls is to hierarchically sort all the required entries before writing them to the file thatâ€™s input by \GlsXtrLoadResources. This means that \printunsrtglossary should then list them in an appropriate order.

While \printunsrtglossary iterates over all the entries for the given glossary, it inserts the group headers as follows:

1. If the current entry doesnâ€™t have a parent, then:
1. find the group label associated with the current entry
2. if the group label is different to the previous group label then:
1. if thereâ€™s no previous group label just insert \glsgroupheading{label}
2. if there is a previous group label insert \glsgroupskip\glsgroupheading{label}

The way the group label is obtained depends on the glossaries-extra package options and on bib2gls settings. Whether or not the group heading is actually displayed depends on the glossary style. Some styles simply redefine \glsgroupheading to do nothing (but \glsgroupskip may still create a vertical space).

## Switching to bib2gls

Letâ€™s rewrite the above example so that it uses bib2gls. The first thing that needs to be done is to create a bib file that contains all the entry definitions. If you already have an existing .tex file that contains all your entries then bib2gls comes with a convenient command-line application called convertgls2bib, which can parse a .tex file for commands like \newglossaryentry and \newabbreviation and create a bib file suitable for use with bib2gls. For example, if the above document is contained in the file myDoc.tex then run the following from a command prompt:

convertgls2bib -p myDoc.tex entries.bib

(The -p switch indicates that convertgls2bib should only parse the document preamble.) This will create the file entries.bib that contains the following:

% Encoding: UTF-8
@entry{parrot,
name = {parrot},
description = {mainly tropical bird with bright plumage}
}

description = {nocturnal insectivore with large claws}
}

@entry{zebra,
name = {zebra},
description = {wild African horse with black-and-white stripes}
}

@entry{duck,
name = {duck},
description = {a waterbird with webbed feet}
}

@entry{aardvark,
name = {aardvark},
description = {nocturnal African burrowing mammal}
}

@entry{macaw,
parent = {parrot},
name = {macaw},
description = {long-tailed, colourful parrot}
}

@entry{mallard,
parent = {duck},
name = {mallard},
description = {dabbling duck with long body and broad bill}
}

@entry{ara,
parent = {macaw},
name = {Ara},
description = {neotropical genus of macaw}
}

@entry{northernpintail,
parent = {duck},
name = {northern pintail},
description = {long-necked, small-headed duck with curved back}
}

@entry{anodorhynchus,
parent = {macaw},
name = {Anodorhynchus},
description = {genus of large blue macaws}
}


The definitions now need to be removed from myDoc.tex and the record package option is required. The stylemods option is also useful (but not essential). This will load the glossaries-extra-stylemods package, which modifies the predefined styles provided by glossaries.sty to make them easier to adjust and also to make them integrate better with bib2gls.

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

The \GlsXtrLoadResources command is also required. This writes information to the aux file for the benefit of bib2gls as well as inputting the file created by bib2gls (if it exists). By default, bib2gls will only select entries that have been indexed in the document (using commands like \gls) and any dependent entries. In this example, I want to select all entries that have been defined in my entries.bib file, which means I need to use the selection=all option.

\GlsXtrLoadResources[src=entries,selection=all]

The src option indicates the name or names of the bib files where the entry data is defined. In this case, thereâ€™s only one file. If I have additional files, they need to be specified in a comma-separated list. Note that this means that braces will be required to prevent the comma from being parsed as part of the key=value list. For example, if I also have entries in the file abbreviations.bib, then I would need:

\GlsXtrLoadResources[src={entries,abbreviations},selection=all]

The complete document is now:

\documentclass{article}

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

\begin{document}
\printunsrtglossary
\end{document}


The document build process is similar to using makeglossaries, but bib2gls is used instead:

pdflatex myDoc
bib2gls myDoc
pdflatex myDoc

(Alternatively, use xelatex etc instead of pdflatex.) This produces the glossary shown below:

The ordering is now correct: aardvark, armadillo, duck (with sub-entries mallard and northern pintail), parrot (with sub-entry macaw that has sub-entries Anadorhynchus and Ara) and zebra. However, there are no letter group headings, even though the indexgroup style has been used. This is because bib2gls doesnâ€™t set the group labels by default (not all glossaries require them). If you need the glossary separated into letter groups then you should instruct bib2gls to set the group labels using the --group (or -g) switch:

pdflatex myDoc
bib2gls --group myDoc
pdflatex myDoc

If you are using arara you need to add the following lines to your document:

arara: pdflatex
arara: bib2gls: { group: on }
arara: pdflatex

(For other ways of integrating bib2gls into your document build see Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build.) With the --group switch, the glossary now looks like:

Naturally you also need to use a glossary style that supports groups.

If the document source is in the file myDoc.tex then bib2gls will create a file called myDoc.glstex that corresponds to the first \GlsXtrLoadResources command. If there are multiple instances of this command then myDoc-1.glstex will correspond to the second \GlsXtrLoadResources, myDoc-2.glstex will correspond to the third \GlsXtrLoadResources etc. These files simply contain LaTeX code and so can be inspected in a text editor.

In order to make it easier to perform minor adjustments, the glstex files provide wrapper commands. For example, terms that are defined with @entry in the bib file are defined in the glstex file using \bibglsnewentry, which has the definition provided before the first instance of its use:

\providecommand{\bibglsnewentry}[4]{%
\longnewglossaryentry*{#1}{name={#3},#2}{#4}%
}

This uses \longnewglossaryentry* instead of \newglossaryentry to allow for paragraph breaks in the description. If you try the above example document and look at the glstex file, you will see the entry definitions. These include the sort key for informational purposes. If youâ€™re not sure why bib2gls ordered the entries a certain way, checking the sort key in the glstex file can show you the value used by the selected bib2gls sort method. For example, the â€œnorthern pintailâ€� entry is defined in the glstex file as follows:

\bibglsnewentry{northernpintail}%
{parent={duck},
sort={northern|pintail|}}%
{northern pintail}%
{long-necked, small-headed duck with curved back}

Note that the sort value is northern|pintail| because the default sort method is a locale-sensitive word sort that discards spaces and (some) punctuation and marks up the end of each word with a marker (the pipe character | by default). Any remaining non-letter characters may by ignored by the comparison function (the comparator). This is appropriate for entries where the name is a word or phrase but may not be appropriate for other types of entries, such as symbols.

## Sort Fallbacks

In general, you typically shouldnâ€™t set the sort field in the bib file, but instead use bib2glsâ€™s fallback system to choose the most appropriate field. If the sort field is explicitly set then the fallback isnâ€™t used. The fallback depends on the entry type used in the bib file. For example, if a term was defined in the bib file using @entry then the sort fallback is obtained from the name field. However, if the term was defined using @symbol (or @number) then the sort fallback is obtained from the label, and if the term was defined using @abbreviation (or @acronym) then the sort fallback is obtained from the short field

Suppose now that in addition to my entries.bib file described above, I also have a file called abbreviations.bib that contains:

% Encoding: UTF-8

@abbreviation{xml,
short={XML},
long={extensible markup language},
description={a markup language that defines a set of rules for
encoding documents}
}

@abbreviation{html,
short={HTML},
long={hypertext markup language},
description={the standard markup language for creating web pages}
}


and a file called constants.bib that contains:

% Encoding: UTF-8

@number{pi,
description={ratio of circumference of a circle to its diameter},
name={\ensuremath{\pi}},
user1={3.14159}
}

@number{e,
description={Euler's number},
name={\ensuremath{e}},
user1={2.71828}
}

@number{root2,
description={Pythagoras' constant},
name={\ensuremath{\surd2}},
user1={1.41421}
}

@number{gelfondscons,
description={Gelfond's constant},
name={\ensuremath{e^\pi}},
user1={23.140692}
}

@number{zero,
description={zero},
name={\ensuremath{0}}
}

@number{one,
description={one},
name={\ensuremath{1}}
}


I can now modify my document as follows:

\documentclass{article}

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-desc}

\begin{document}
\printunsrtglossaries
\end{document}

Note that I have to set the abbreviation style before \GlsXtrLoadResources. This produces the following glossary:The sort value for the mathematical constants has been obtained from the label. For example, Pythagorasâ€™ constant has the label root2 and so ends up in the â€œRâ€� letter group, whereas Ï€ (which has the label pi) is in the â€œPâ€� letter group. The sort value for the extensible markup language (XML) term has been obtained from the short field (XML) so it ends up in the â€œXâ€� letter group. The fallback values can be changed. For example:

\documentclass{article}

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-desc}
abbreviation-sort-fallback=long,
symbol-sort-fallback=description,
selection=all]

\begin{document}
\printunsrtglossaries
\end{document}

This will now use the long field as the fallback for abbreviations (@abbreviation or @acronym) and the description field as the fallback for symbols (@symbol or @number).The â€œextensible markup language (XML)â€� entry is now in the â€œEâ€� letter group and Pythagorasâ€™ constant is now in the â€œPâ€� letter group, but Ï€ (pi) is now in the â€œRâ€� letter group.

## Sub-Blocks

Iâ€™m now going to make a strange modification to the above document:

\documentclass{article}

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-desc}

sort={en-reverse},
symbol-sort-fallback=description,
selection=all]

abbreviation-sort-fallback=long,
selection=all]

\begin{document}
\printunsrtglossary
\end{document}


This splits the data in the three bib files into three separate resource commands (\GlsXtrLoadResources).

The first \GlsXtrLoadResources selects all the terms defined in entries.bib and sorts them according to my locale (since thereâ€™s no language set in the document) which happens to be en-GB (British English). These terms are written to the myDoc.glstex file, which is input by the first resource command on the next LaTeX run.

The second command selects all the terms defined in constants.bib and sorts them according to en-reverse (reverse English, that is, Zâ€“A) and writes them to myDoc-1.glstex, which is input by the second resource command.

The third command selects all the terms defined in abbreviations.bib and sorts them according to my locale and writes them to myDoc-2.glstex, which is input by the third resource command.

Remember that \printunsrtglossary simply iterates over all entries in the order in which they are defined (via commands like \longnewglossaryentry or \newabbreviation, not the order in which they are defined in the bib files). This results in the order: (first glstex file) aardvark and armadillo (both assigned to the â€œAâ€� letter group), duck (assigned to the â€œDâ€� letter group) followed by its child entries, parrot (assigned to the â€œPâ€� letter group) followed by its descendants, zebra (assigned to the â€œZâ€� letter group) then (second glstex file) zero (assigned to the â€œZâ€� letter group), Ï€ (assigned to the â€œRâ€� letter group), Pythagorasâ€™ constant (assigned to the â€œPâ€� letter group), one (assigned to the â€œOâ€� letter group), Gelfondâ€™s constant (assigned to the â€œGâ€� letter group), and Eulerâ€™s number (assigned to the â€œEâ€� letter group) then (third glstex file) extensible markup language (assigned to the â€œEâ€� letter group) and hypertext markup language (assigned to the â€œHâ€� letter group).

Note that thereâ€™s no visual indication between the sub-blocks. The â€œZâ€� letter group contains zebra from the end of the first sub-block and zero from the start of the second sub-block. The â€œEâ€� letter group contains Eulerâ€™s number from the end of the second sub-block and extensible markup language from the start of the third sub-block. Note also that there are two â€œPâ€� letter groups: one from the first sub-block and the other from the second.

This is a contrived example. Itâ€™s more typical to use multiple resource commands to process multiple glossaries that require different settings or to gather together all entries in a sub-block into a custom group. (See also Logical Glossary Divisions (type vs group vs parent).)

The following modification demonstrates custom groups:

\documentclass{article}

\usepackage[record,stylemods,style=indexgroup]{glossaries-extra}

\setabbreviationstyle{long-short-desc}

\glsxtrsetgrouptitle{cons}{Mathematical Constants}

group=cons,% group label
symbol-sort-fallback=description,
selection=all]

\glsxtrsetgrouptitle{abbrvs}{Abbreviations}

group=abbrvs,% group label
abbreviation-sort-fallback=long,
selection=all]

\begin{document}
\printunsrtglossary
\end{document}


This assigns the constants to a group labelled cons with the title â€œMathematical Constantsâ€� and assigns the abbreviations to a group labelled abbrvs with the title â€œAbbreviationsâ€�.

## Multiple Glossaries

The following demonstrates multiple glossaries:

\documentclass{article}

\usepackage[abbreviations,symbols,record,stylemods=mcols]{glossaries-extra}

\setabbreviationstyle{long-short-desc}

type=symbols,
symbol-sort-fallback=description,
selection=all]

type=abbreviations,
abbreviation-sort-fallback=long,
selection=all]

\begin{document}
\printunsrtglossary[style=indexgroup]
\printunsrtglossary[type=symbols,style=mcolindex,nogroupskip]
\printunsrtglossary[type=abbreviations,style=index]
\end{document}

This uses the abbreviations and symbols package options to create the additional glossaries. Note that the use of multiple glossaries means that I can apply a different style to each glossary. (The stylemods=mcols option indicates to load glossary-mcols.sty as well as loading glossaries-extra-stylemods.sty.) The mcolindex style doesnâ€™t display the group headings but it does still create a vertical gap with \glsgroupskip. Iâ€™ve added the nogroupskip option to suppress it. The index style likewise doesnâ€™t show the group heading but does create a vertical gap. I havenâ€™t used the nogroupskip option for the abbreviations glossary so the inter-group gap is visible.

The type=abbreviations resource option wasnâ€™t actually necessary in the above example. Entries defined in the bib file with @abbreviation are written to the glstex file using the provided command:

\providecommand{\bibglsnewabbreviation}[4]{%
\newabbreviation[#2]{#1}{#3}{#4}%
}


Note that this uses \newabbreviation which automatically assigns the entry to the â€œabbreviationsâ€� glossary if the abbreviations package option is used. This means that both the main glossary and the abbreviations can be processed in one resource command:

\GlsXtrLoadResources[
src={entries,abbreviations},
abbreviation-sort-fallback=long,
selection=all]

This only needs to be split into two resource commands if there are conflicting settings. For example, suppose I want bib2gls to ignore the description fields in the abbreviations.bib file but not the entries.bib file. Then I would need:

\GlsXtrLoadResources[src={entries},selection=all]

\setabbreviationstyle{long-short}
ignore-fields={description},
selection=all]


## Categories

In an earlier post I mentioned categories, which can be assigned using the category key. Itâ€™s possible to assign this key using the resource command with the same name. For example, I could make all my entries in the constants.bib file have the category â€œsymbolâ€� like this:

\GlsXtrLoadResources[src={constants},
type=symbols,
category=symbol,
symbol-sort-fallback=description,
selection=all]

Alternatively I could use category={same as entry}, which would make the category the same as the bib entry type without the leading @ (in this case number), or category={same as type}, which would make the category the same as the type (in this case symbols), or category={same as base}, which would make the category the same as the basename of the bib file without the .bib extension (in this case constants).

The other post described how to define a post-link category hook using \glsdefpostlink. This allows additional content to be added after commands like \gls for a particular category. Thereâ€™s a similar hook thatâ€™s implemented after the description is displayed with the standard glossary styles.

\glsdefpostdesc{category}{definition}

This is something you can also use with makeindex and xindy, but the bib2gls resource options make it easier to change the category for specific documents without having to alter the entry definition.

Some of the terms defined in constants.bib have the user1 field set to the approximate numerical value. Assigning a category and post-description hook makes it easy to display this value in the glossary. Note that the post-description hook comes before the punctuation inserted with the postdot or postpunc package options.

\documentclass{article}

\usepackage[postdot,abbreviations,symbols,record,stylemods={mcols}]{glossaries-extra}

\glsdefpostdesc{number}{%
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{\space ($\approx\glscurrentfieldvalue$)}{}%
}

type=symbols,
category={same as entry},
symbol-sort-fallback=description,
selection=all]

\setabbreviationstyle{long-short}
ignore-fields={description},
selection=all]

\begin{document}
\printunsrtglossary[style=indexgroup]
\printunsrtglossary[type=symbols,style=mcolindex,nogroupskip]
\printunsrtglossary[type=abbreviations,style=index]
\end{document}

For example, Eulerâ€™s number is now followed by â€œ (â‰ˆ2.71828)â€�. The closing full stop (automatically inserted by the postdot package option) comes after the parenthetical material. Note that zero and one donâ€™t have the user1 field set as the value given in the name field is the exact numerical value.

## Numeric Sorting

There are some numerical sorting methods available to use with bib2gls, such as sort=integer for integers or sort=double for double-precision floating point values. For locale-sensitive numbers (that include thousand separators) you need to use sort=numeric or sort=numberformat instead. Letâ€™s suppose that I now want the mathematical constants ordered according to their approximate value. As before I can use symbol-sort-fallback to change the fallback field to user1, but that will leave a blank sort value for zero and one, which donâ€™t have that field set.

With bib2gls version 2.7 or above, I can use the field concatenation operator symbol-sort-fallback=user1+name. This will construct the sort fallback value from a combination of the user1 value and the name. This means that, for example, Eulerâ€™s number will have the sort value 2.71828 \ensuremath{e} and â€œoneâ€� will have the sort value  \ensuremath{1}. The non-numeric content can then be stripped off using:

sort-replace={{[^0-9\string\.\string\-]+}{}}

The following is a modification of the previous example document. Iâ€™ve decided to provide my own custom glossary for the mathematical constants instead of using the one provided by the symbols package option for illustrative purposes.

\documentclass{article}

\usepackage[postdot,abbreviations,record,stylemods={mcols}]{glossaries-extra}

\glsdefpostdesc{number}{%
\glsxtrifhasfield{useri}{\glscurrententrylabel}%
{\space ($\approx\glscurrentfieldvalue$)}{}%
}

\newglossary*{constants}{Mathematical Constants}

type=constants,
category={same as entry},
sort=double,
symbol-sort-fallback=user1+name,
sort-replace={{[^0-9\string\.\string\-]+}{}},
selection=all]

\setabbreviationstyle{long-short}
ignore-fields={description},
selection=all]

\begin{document}
\printunsrtglossary[style=indexgroup]
\printunsrtglossary[type=constants,style=mcolindex,nogroupskip]
\printunsrtglossary[type=abbreviations,style=index]
\end{document}

The list of mathematical constants is now ordered according to the associated numeric value: 0, 1, Pythagorasâ€™ constant (1.41421), Eulerâ€™s number (2.71828), Ï€ (3.14159) and Gelfondâ€™s constant (23.140692). Note that the main glossary and list of abbreviations are still ordered according to the locale-sensitive word sort method.

(If you decide to change the glossary label, you may need to delete the glstex files before you can rebuild the document.)

## The TeX Parser Library


%draw the top and bottom of the cube
\draw[very thick] (0,0,0) rectangle (2,2,0);
\draw[very thick] (0,0,2) rectangle (2,2,2);

%draw the edges of the cube
\draw[very thick] (0,0,0) -- (0,0,2);
\draw[very thick] (0,2,0) -- (0,2,2);
\draw[very thick] (2,0,0) -- (2,0,2);
\draw[very thick] (2,2,0) -- (2,2,2);

\end{tikzpicture}

If you look carefully at the rotated diagram, you’ll notice that the rectangles are drawn with the correct beginning and end points, but the overall shape conforms to the original coordinate system of the page.

About the Author:Jeff Hein is the author of the tikz-3dplot package. He maintains a blog for this package on tikz3dplot.wordpress.com.