9 March 2026

TeXmacs plugins

I like TeXmacs. There are several difficulties when I use it, but still, I like the concept: To have one big system that ensures high-quality typesetting. The output is like LaTeX's output, but TeXmacs tries to avoid supporting thousands of extra packages and the difficulty of interferences when some packages are incompatible.

What I really like is sessions. Users can put the inputs and outputs of conversations during computer algebra computations into TeXmacs documents, save them, and when reopening the document, sessions can be edited or continued. Of course, there are several limitations, but the basic concept is working well. Scientific results can be reproduced in a simple way.

I decided to write a plugin for GeoGebra Discovery's release page, version 2026Feb18. The results are promising, there are, however, some issues to fix in future releases, including full muting of Giac's and Tarski's error messages, and further muting of GeoGebra on demand.


In this figure the macOS version of TeXmacs is shown, after starting a GeoGebra Discovery session. The user is typing various commands, including one that is to be sent to the CAS View and to be computed symbolically. The red messages come from the standard error and could be removed by hand, but for the long term, it would be more elegant to not show them at all. All inputs are supported by GeoGebra automagically, except the input . which creates an immediate screenshot of the Graphics View and the picture will be inserted in the TeXmacs document as PostScript.

While there are some feature requests on my own side, the first public version is surprisingly nice. It is already mature enough to start writing a book with reproducible GeoGebra constructions in mind. The GeoGebra language seems rich enough to avoid using the toolbar, to drag and drop objects, to enable or disable them, to start an animation or stop it, among many other features.

Another plugin

Meanwhile a have second book in mind to write: on reproducible research concerning old historical texts, in particular, studying ancient versions of the Bible. My research project called bibref already reached a mature stage, but recording of the scientific results was still a question. Should I use LaTeX and copy-paste data from the application in the LaTeX document, or use something more handy? Here I decided to play with TeXmacs again, and I have a nice result which could be a good solution.

The bibref tool has a command line version, so the first steps when programming a new plugin were easier as for GeoGebra Discovery. In this second project I tried to be more pragmatical by focusing on tab completion as well. To be honest, it was extremely difficult to find the right way how the communication protocol should work between bibref and TeXmacs. Maybe I missed the correct and most relevant documentation, and by spending hours of conversations with an AI bot I had to conclude that at the end of the day, I am still almost alone.

Luckily, the tab completion works very efficiently now, however, I would like to see some syntax highlighting in the input code as well. Until now I did not find a solution how to do that. Here you can find two TeXmacs files and the installation notes of the new plugin. They show the current state of my work.


Writing the plugin for bibref was technically more challenging, because I had to extend the command line version of bibref to support automatic conversion of GraphViz files to PostScript. Luckily, the graphviz library has a good support to do that, not only for PostScript but also for SVG. As an extra result, the web variant of the command line version of bibref can display the SVG output directly in the terminal window:


Such a terminal session cannot be saved (at the moment), so TeXmacs is definitely better if reproducible data is prioritized.


Continue reading…

See also a filtered list of the entries on topics GeoGebra, technical developments or internal references in the Bible.


Zoltán Kovács
Linz School of Education
Johannes Kepler University
Altenberger Strasse 69
A-4040 Linz