TeXmacs Upsilon: an enhanced, bleeding-edge TeXmacs to try (macOS, Linux, Windows, and in the browser)

Hello everyone,

I’d like to introduce TeXmacs Upsilon, an enhanced and bleeding-edge version of GNU TeXmacs with experimental features. For the past few weeks I have been collecting several lines of work on TeXmacs in one tree (the branch upsilon_texmacs in the mgubi/texmacsGitHub repository) so that they can be built, used and tested together. It is stock TeXmacs (the SVN trunk) with these additions merged in. Each one is still kept as its own branch, so it can be proposed upstream separately. I would be very grateful if some of you could try it and tell me what breaks.

Inside TeXmacs, Help ▸ TeXmacs Upsilon features gives a tour of everything below, with the menus to use and links to the manual.

What is in it

Fixes and speed

  • Many bug fixes not yet upstream, for bugs reported on Savannah and on GitHub: the Scheme bridge, LaTeX import/export, BibTeX, list views, editing modes, keyboard maps, Windows paths, and more.
  • Incremental typesetting: only the parts of a document that change are typeset again, so typing in long documents is faster. Styles and files are cached until they change on disk.

Fonts and mathematics

  • OpenType mathematics: formulas laid out from the MATH table of any OpenType math font, with stretchy delimiters and accents taken from the font. Text fonts get their OpenType features, and families get their weights and variants (Format ▸ Weight).
  • About two dozen math fonts paired with matching text fonts, most of them shipped, plus a font inspector.
  • More fonts (DejaVu, Gentium Plus, the Antykwas, Iwona, Kurier, IBM Plex weights…).
  • A font design page: one tab per part of a document (text, mathematics, sans serif, typewriter, blackboard bold, calligraphic, fraktur) showing samples. You can apply a choice to the document and save it under a name.

Interfaces

  • Besides Qt there is a native Cocoa interface for macOS, and Vue, an interface drawn entirely by TeXmacs. Both are drawn on the GPU (Metal on macOS, OpenGL elsewhere), with MuPDF as a fallback.
  • Light and dark themes, icon bars at the left or at the top, responsive tabs and smooth zoom.
  • New icon sets: neo-classical (the default), monochrome and Lucide.

Scheme interpreters

  • s7 replaces Guile 1.8 by default. It needs nothing installed and starts much faster (the first window appears in about 0.7 s instead of 1.9 s).
  • An experimental femtolisp backend: a small Scheme that works directly on TeXmacs’ byte strings and caches its compiled files. It boots about as fast as s7, is faster on conversions such as the LaTeX export, and works on the desktop and in the browser.
  • Guile is still available as a build option, and the same Scheme code serves all three.

Documents and references

  • Git integration (Version ▸ Git): a side panel, commits, log, branches, tags, stashes, push/pull/clone, comparison with any revision, and structured three-way merges of TeXmacs documents, which also work as a git merge driver.
  • Zotero citations, read live from the Zotero desktop app: search, key completion, bibliography files kept in sync with Zotero, and group libraries.
  • CSL bibliography styles (the styles used by Zotero, Mendeley and Pandoc), processed by TeXmacs itself: csl-apa, csl-ieee, csl-chicago-… and any other .csl file you place next to the document.
  • New converters: Markdown import/export and Word/OpenDocument (.docx/.odt) import/export.

Program code

  • Syntax of 22 languages through tree-sitter, for source files, code blocks in documents and session inputs. This gives colours, folds, an outline, structural selection and moves, bracket handling, indentation and comment toggling.
  • A language server (LSP) client for source files, which open in tabs of their own: diagnostics, completion, hover, signatures, references, renaming, quick fixes, formatting and symbols. The code blocks of a document in the same language are seen by their server as one file, so definitions in one block are known in the next.

Chatbots

  • AI sessions inside a document with ChatGPT, Claude, Gemini, Mistral, Ollama, OpenRouter and Albert. Answers are streamed, you can attach files to your questions, costs are shown, and API keys are kept in an encrypted wallet.

Documentation and tests

  • Developer documentation inside TeXmacs (Help ▸ Developer documentation): about 400 pages, roughly 250 of them on the internals of the source code.
  • Many new tests: C++ unit tests, nearly sixty Scheme regression suites, document regressions, and a headless typesetting of the whole manual. All of them run in CI on every platform.

TeXmacs in the browser

The same source tree also compiles to WebAssembly. You can try it now, with nothing to install:

:point_right: https://mgubi.github.io/texmacs/

What works in the page:

  • editing and typesetting, all menus and dialogs, a tab per document;
  • files stored in the browser (upload, drag and drop, zip projects, downloads, backups) and PDF export;
  • the system clipboard and spell checking;
  • the Markdown and office converters, the font design page, and program code with tree-sitter;
  • plug-ins that run inside the page: Python (Pyodide), R (webR), TikZ (TikZJax), Asymptote, JavaScript and the AI sessions.

It draws with WebGPU in Chromium-based browsers and with WebGL2 elsewhere. Add ?gpu=0 to the address to draw with MuPDF instead. Help ▸ TeXmacs in the browser lists what does not work yet (anything that needs to run a program on your computer, such as language servers or Git) and the recent changes.

Builds

All the builds are rebuilt by the CI from the latest upsilon_texmacs and published at https://github.com/mgubi/texmacs/releases/tag/upsilon-latest

  • macOS (Apple silicon and Intel, macOS 13 or later): two DMGs, one for Cocoa and one for Vue, plus a Qt build for Apple silicon (zip). They are signed ad hoc and not notarized, so macOS refuses to open them the first time. Right-click the app and choose Open, or run xattr -dr com.apple.quarantine /Applications/TeXmacs.app
  • Linux (built on Ubuntu 24.04, x86_64): a tarball with Qt 6 and one with Vue.
  • Windows (x86_64): a zip with Qt 6 and one with Vue. Unpack it and run TeXmacs-Windows\bin\texmacs.exe (there is no installer).
  • From source: branch upsilon_texmacs of https://github.com/mgubi/texmacs. Run cd src && ./configure && make as usual. Pick the interface with --with-gui=qt|cocoa|vue|… and the Scheme with --with-scheme=s7|femtolisp|guile. The README describes each option.

Warning: this is work in progress. Keep backups of important documents, and expect rough edges, especially in the Cocoa and Vue interfaces, with femtolisp, and in the browser.

Please test and report

Any feedback is welcome, whether it is a crash, a document that renders differently from official TeXmacs, a missing feature in one of the interfaces, or something that is simply confusing. Please open an issue at

https://github.com/mgubi/texmacs/issues

or reply here. When possible, include:

  • which build you used (OS, interface, and for the browser the commit shown in Help ▸ TeXmacs in the browser);
  • the steps that trigger the problem, and a small .tm file if the problem depends on the document.

Thanks for trying it!

Max

6 Likes

Yeees! I was thinking that TeXmacs needed something exactly like this, basically a “rolling release” GitHub repo that simplifies contribution on one side and fruition of the new features on the other.

Thanks for your time and work in managing this project!

1 Like

I think it needs clarity in the UI on how permanent files stored in the browser are especially given the Safari feature that allows you to automatically delete history items after a specific time interval.

Thanks, good point. The browser version now asks the browser to keep its files, and the Files panel says at the top whether they are kept, with the date of your last backup and a Back up button. After a week without a backup it also reminds you. Details in https://github.com/mgubi/texmacs/issues/406.

great jobs. :tada::tada::tada:

Thanks for your work.

1 Like