15th ConTEXt Meeting: Bassenge, Belgium, September 20–25, 2021


New proposals (and requests) should be addressed to Taco Hoekwater.

PDF tools in Linux

Henning Hraban Ramm

There is still no Adobe Acrobat for Linux, but there are free options as well as a few commercial solutions.

The state of floats and columns, revisited

Henning Hraban Ramm


Crazy Printer technologies (working title)

Harald König


An Overview of Language Support in ConTeXt

Tomáš Hála, Tamara Kocurová, Adriana Kašparová et al.

This lecture summarises the long-term work of the members of the Club of Modern Computer Typesetting Technologies at Mendel University in Brno (CZ), which resulted in a publication providing an overview of the current state of language support in ConTeXt.


Tomáš Hála

At the beginning of the year, one needs to buy a diary. But how to get it when the stationery was closed on the basis of government regulations? This lecture describes how to prepare your own diary in ConTeXt (and with Lua).

Pairs and Paths

Taco Hoekwater

All about low-level pairs and paths, knots and pens, directions and angles, and intersections and times, in Metapost.

Wiki updates

Taco Hoekwater

What has happened on the wiki over the past year?

Reading a mail log, or: LPEG for intermediate TeX users

Taco Hoekwater

I use Lua(TeX) to parse and display information from server mail logs.

A cross-stitch pattern (de)construction

Taco Hoekwater

The road-trip I went through to make a cross-stitch pattern do what I want it to do, which involved breaking a PDF down to tiny pieces and then constructing a wholly new PDF


Hans Hagen

box lines

Boxes are the building blocks of any TeX engine. Although ConTeXt hides most of that behind commands and constructors like \framed it makes sense to know a bit what can be done at a lower level. Box lines are an example of an interface that sits between high level commands and primitives. In this talk we will discuss the low level ones as well as box lines.


The difference between global and local (grouped) in TeX is rather fundamental. Often counters are defined global but in LMTX we can also temporarily define local ones. From it's ancestors we inherit pushing and popping. Doing things after a group has been extended and we can also do things at a par break. I'll try to cover this here.


Occasionally a new (low level) command is introduced that doesn't fall into the often used category but is still interesting because of how is is implemented. Running over text using a match is an example of this. We can discuss the wish for similar additions.


Hans Hagen


Paragraph shapes are powerful on the one hand but limited on the other. In LMTX we can now use a high level interface that also picks up where a par break destroys the specified shape. This presentation will discuss the current implementation but users can come up with additional demands.


We have more control over hyphenation. Although this is work in progress, it is still good to know what can be done already, in ConTeXt as well as in the engine. Better handling of compound words in combinations with ligature prevention is an example.


The local control mechanisms permits sidestepping the so called main loop which makes it possible to make macros that behave like vardef in Metapost. Although one can end up in confusing situations due to the inner workings of the TeX with respect to scanning and expansion, it has some potential.


Hans Hagen

getting there

In order to deal with the inconsistencies between math fonts as well as user demands there has been some extensions to the Luametatex math engine. This year nearly all hard wired parameters have been made configurable and more detailed control over the rendering has been added. I will show some of that. A few new tricks might be discussed as well.


where we stand

This is the usual update on Luametatex and LMTX. It takes a while to get where I want to go but most loose ends are tight up. I will mention what has been done with the TeX engine, the Metapost machinery and the Lua subsystem (including libraries). I will show the impact of the new argument scanners on the ConTeXt code base. I will also spend some words on memory management.

overload protection

This is also a discussion. I will show what overload protection means and how it is implemented in TeX and Metapost. I will also show how it can to keep the code base consistent. The question is to what extend protection has to be enabled by default (there are levels).


Hans Hagen

compact mode

Compact fonts have been mentioned on the mailing list but what are they? I will show the difference with the traditional font mechanism and try to convince users that it might be a good default. I will explain some details of the impact it has on text as well as math, at the TeX end as well as in the engine.

missing glyphs

This is a short summary of how we (can) deal with missing characters: visualization as well as quick and dirty drop|-|ins.


Hans Hagen

scanners and injectors

We can extend the Metapost subsystem with commands that look much like primitives. We do so by using scanners. The communication between TeX and Metapost as well as between Metapost and Lua is influenced by this feature. Pushing back something to Metapost has also been improved. Both are responsible for recent low level changes in Metafun.

local positions

This is more a demonstration of a relative new variant on positioning information as for instance used for anchoring Metapost graphics. Users are invited to come up with ideas for usage.

Aha! and Gotchas - Our Statement Migration journey from proprietary software to ConTeXt and other Linux tools (GNU Parallel and mutool)

Ramkumar KB (remote presenter)

To introduce myself, my name is Ramkumar and I am located in Singapore. I work in a large global financial organisation and we are currently evaluating using ConTeXt for our PDF Statement Generation system. This was largely possible due to the new StatisticalCharts library becoming available in 2020 (in ConTeXt).
Such a work should be ideally part of the 15th Annual Meeting so that we could share our ideas about the journey that we are on. Mostly we are in the last stages - mainly in batch mode - where data systems generate 20,000 data inputs (JSON / XML) and the statement system needs to spit out 20,000 PDF statements - we are trying out different options (including Containers), as we need this PDF generation to be reasonably fast.

Embedding interactive elements and multimedia in PDF files

Michal Vlasák (remote presenter)

Recently, as part of my bachelor thesis, I looked into the state of multimedia (audio, video, 3D) and other relatively obscure PDF features, with the connection to TeX.

the PDF mess

Hans Hagen

Or "What to do with the somewhat useless and/or unreliable PDF features?". Buying competitors, embracing some technique and then ditching it has become popular with large companies. The same is true for PDF. Native simple support for video and audio, something that browsers can do easily, was replaced by a mechanism depending in Flash that now has been dropped so we're now stuck with some complex media subsystem. Over decades support for forms, attachments, notes, and media demanded adaptation to viewers. Where do we go? And why don't open source viewers not catch up? (Maybe we should compare a few.)

Rendering openstreetmaps

Hans Hagen

Triggered by a question on the mailing list I decided to see if we can use METAPOST to render openstreetmaps. It is indeed possible but not without taking some aspects into account. What colours to use? What is the right stacking order? How to deal with inconsistencies (a side effect of arbitrary contributions)? How to deal with a somewhat bloated encoding (the no way back problem)? How do formats like that evolve (when do bugs become features)? This all makes an interesting discussion.


Willi Egger

All about how typescripts work and how they relate to other font commands.

\definefontfamily (previously known as simplefonts)

Wolfgang Schuster (?)

How you can use \definefontfamily to simplify your font setup