Some of my projects are accessible on Gitlab, and Github. some of them are being mirrored on my site. The mirror synchronization is automated and happens only once a day so expect things to be slightly behind schedule.Below I introduce a selection. The projects usually come with a manual or some other form of documentation that describes their usage and provides usage examples. Contributions welcome.
Entry point for the repo mirror:·


By default, the Linux console comes with a very traditionalist palette. Luckily, it also provides an appropriate ioctl(2) to change that. vtcol is a smallish frontend to it, written in Rust. Recommended usage: early in the boot process from inside the initramfs. Example configuration files for Arch Linux can be found in the repository.


The ongoing effort of the LuaLaTEX project of providing a font handling infrastructure for the LaTEX and Plain TEX formats. Luaotfload is built around the LuaTEX fontloader implemented by Hans Hagen of Pragma ADE, facilitating access to the engine’s rich functionality. In addition to a custom-packaged version of the fontloader itself, Luaotfload provides font management, typrographical goodies like letterspacing and colored fonts, and a rudimentary API geared towards package developers. To a certain extent it also serves as a testing grounds until LuaTEX stabilizes at version 1.0.
Luaotfload was originally developed by Élie Roux, Khaled Hosny, and a few others. After a maintainance hiatus threatened to make the LuaTEX engine unusable with LaTEX, I took over the project in 2012 and have been heading development since. I also curate a collection of tests, but it’s not fully automated as one would like due to the highly irregular nature of the inputs involved – proprietary fonts, platform idiosyncrasies – involved and the visual judgment required in the verification of the results.


Lets you define transliteration macros to apply to parts of the input. Example use case: (1) In your document (.tex file), write \transliterate[mode=ru_cz]{Я узнал, что у меня есть огромная семья.}; (2) result in PDF: “Ja uznal, čto u menja estь ogromnaja semьja” – transliterated according to the rules common in Slavic linguistics. Very handy if you plan on writing a text first, suspending the decision as to the representation of foreign language sections. Currently supports input in Cyrillic: Russian, OCS, Bulgarian, BCS; also Ancient Greek, and – not overly practical, I am aware of that – Glagolitic script.


TEX, in addition to being the greatest typesetting engine, excels equally as a document processor. As such, particularly interesting task is encrypting text on the fly without touching the source – teach that to your WYSIWYG office software! Enigma implements a standard issue German Army machine with three-rotors. The text is preprocessed according to the usual letter substitutions, encrypted with a user-defined machine, and inserted into the text. Optionally, the machine can group its output into blocks of five characters each. Enigma provides both a package for Plain and LaTEX and a module for ConTEXt. Most of the code is portable between formats, with some format-specific routines due to the different callback / action models. An included mtx-script allows encryption from the command line without running TEX.

Cyrillic Numbers

One of the practical advantages of ConTEXt over any competing format is that it provides hooks for extending existing functionality everywhere. Defining custom counters couldn’t be any simpler: write a macro that converts an integer to the desired format and register it with \defineconversion – done! (See core-con.mkiv for details.) Cyrillic numerals are not only cumbersome to write, but also may be accompanied by a graphical element, the titlo, a special mark indicating that a sequence of letters denotes a numeral rather than a word. The Cyrillic number module combines all these into a single macro generator that allows for fine-tuning number converters. These implicitly call MetaPost – the third language embedded in LuaTEX – to draw one of several titla above the numbers, if requested.


reStructuredText (reST) is a minimalist markup language. Its rich featureset that ab initio allows for composing complex structured documents distinguishes it from competing markups. It does not lack a notation for footnotes, nor does it require third-party extensions to represent elements as basic as tables. Also, unlike Wikitext, reST does not permit embedding arbitrary HTML code, and is thus a lot easier to parse. Nevertheless, the reStructuredText spec is demanding, as the parser must infer many properties from very little markup. The reStructuredText module (t-rst) implements a reST as an LPEG grammar and outputs ConTEXt markup or typesets the result directly. It also provides an inline mode for interleaving reST markup and TEX code.