[main]Notes on TeXmacs

Jolly coders

This page gather informations on the activities of the TeXmacs hacking group.

Jolly coders is a group of people interested in learning, hacking and in general exchanging about TeXmacs internal structure. The group started random gatherings in March 2021 and hope to continue to meet quasi-regularly for long time. For the moment the focus is to learn together about TeXmacs internal structure, the C++ and Scheme codebase, the interaction with external libraries and the various plugins, the behaviour of the converters, and many other topics related to TeXmacs.

Meetings are announced in a private mailing list. Write to m.gubinelli@gmail.com to ask to be included in the communications. Recordings of the meetings are kept whenever possible.

Current members

Basile Audoly, Miguel de Benito Delgado, Álvaro Tejero Cantero, Massimiliano Gubinelli, Joris van der Hoeven, Philippe Joyez, Pierre-Henri Jondot, Marc Lalaude-Labayle, Giovanni Piredda, Joy Yang Qiping, Peter Rapčan, Darcy Shen, Jeroen Wouters.

Journal of past gatherings

• 5.6.2021 – A small meeting with Joris, Luigi and Max. We informally discussed about advertising on social media, on the Italian translation and a bug in the multi-parts document. No recording has been made.

• 29.5.2021 – Darcy showed his progress with an improved Python plugin supporting pyenv to select a Python environment for the session. Then Joris used as a motivation a repetitive reformatting task for a long document to show us how to use scheme to perform extensive changes in a document including converting certain complext markup into another. The session was recorded.

• 23.5.2021 – Still unstructured discussions which has not been recorder (sorry!). A small group today: Jeroen, Joris, Luigi and Max. Topics were a bug on the activation of remote plugins which was nailed down and removed, Jeroen has still to test it but seems good to go. We discussed also how translations works (talk with Peter or Luigi if you want to know more) and Max reported some progress in support of more mathematical fonts via OpenType. We also chatted about the near future and advertisement for the upcomin release. Twit.

• 15.5.2021 – We discussed freely about the future of TeXmacs, the upcoming 2.1 release and the creation of an unstable branch where to test new features, possibly managed in git instead of svn. This new branch will host the integration of an alternative scheme implementation and the passage to qt 5 (or 6). We also addressed some of the open problems in LaTeX conversion, in particular the formatting of various kind of mathematical displays with multiple lines and complex horizontal alignments. Given the unstructured format this sessions was not recorded. Were present Basile, Jeroen, Joris, Max and Miguel.

• 9.5.2021 – Many topics today! Miguel showed up his Tufte-like article style and we discussed a bit some technical challenges of figure typesetting and how to make the markup dependend on whether we are on odd/even pages. Max showed a bibliography style to typeset publication lists to be used in CV or homepages. The we met all together on the TeXmacs server to try the chat rooms and the live document features. Finally Joris joined us and demonstrated a bit more the conservative conversion from/to LaTeX and explained some of the implementations details. This meeting was worth a couple of tweets: a first and then a second.

• 1.5.2021 – Miguel showed us his many enhancements to TeXmacs which still didn't make their way to the main trunk: autocompletion for references, another style of comments, and the wonderful integration he has set up for producing content for the Hugo static site generator, including a TeXmacs$$\rightarrow$$Markdown converter. We then discussed about conversion in general and conservative conversion. Joris showed us how the conservative conversion with LaTeX works. It is described also in more detail in the paper Conservative conversion between LaTeX and TeXmacs already mentioned in previous meetings. We discussed a possible conservative conversion for Markdown. The topic will certainly pop up again in future meetings. Towards the end we had a discussion on possible advertisement strategies to make a wider public aware of the existence and capabilities of TeXmacs. Obligatory tweet.

• 24.4.2021 – We continued the discussion of style files and the customization of styles and of tags like theorem, proposition, etc... Joris showed ways to introduce different color themes for various kinds of tags in such a way that this plays well with different styles (e.g. beamer, article, etc...) We also briefly discussed the possibility to improve the way users can access and customize options for plugins via the application preferences systems and dialogs. Then Joris gave an overview of the font selection system, and of the various C++ classes involved in unicode and math font support. Tweet.

• 17.4.2021 – Joris explained the organisation of the style files for beamer presentations: what are the various tags, how the overlays are organised, what are the possible improvements. In particular we discussed about a possible template system, better UI for interacting with overlays and screens, how to structure content on the slides, how the theming works, the various parameters for decorations. Towards the end we touched upon the theme of fonts and of their installation. A screenshot from twitter.

• 10.4.2021 – Darcy showed us his work on the Octave plugin and we worked out some issues in the plugin mechanisms: how to properly format numbers coming from Octave and how to support UTF8 output. Twitter trace.

• 9.4.2021 – We improved two standard styles for APS and AIP journals based on the RevTeX LaTeX package, this allowed us to discuss various issues related to writing style files and also some aspects of the conversions in LaTeX. We talked about the tags for the front matter of the papers (title, authors, etc...), the typesetting of the bibliography, some problems related to wrong interactions among styling macros. The obligatory twitter post.

• 3.4.2021 – Discussion on the behaviour of section headers within tables. This become an attempt to fix some suboptimal behaviour of the sectioning macros, and a deep dive on the algorithms TeXmacs uses to typeset lines in tables and to determine the size of horizontal cells in tables. A lot of macro code and some C++. Twitter post.

• 2.4.2021 – Joris explained the use of spreadsheets in TeXmacs and how the plugins can produce dynamic content, i.e. content in the typesetted document which change in response to computations in the plugin. He gave an example with Mathemagix (a programming language for computer algebra and analysis). We then also discussed the possibility of embedding documents within PDF and in general the problem of embedding data within documents. Finally some remarks on conservative conversions between various formats, i.e. conversions which can be incrementally updated, e.g. Conservative conversion between LaTeX and TeXmacs.

• 28.3.2021 – Hacking session on improving the navigation of the structure of the document (sections, subsections...). We modified the scheme code of the UI to produce properly indented structures for the menu listing all the sections and added some keybindings. Some screenshots in the twitter feed. We had also some (not recorded) discussion on live editing of documents and on versioning of documents. We will discuss these topics also in a further session.

• 20.3.2021 – Various aspects of the use of Scheme in TeXmacs, including embedding Scheme, the various dialects and the status of the Guile 3 and Chez Scheme ports. The design and use of tm-define. Features currently absent in TeXmacs like a structured table of contents or a double view on a document. Design choices in TeXmacs' user interface. Joris demonstrated the use of the search tool, including template variables and the filtering option.

• 19.3.2021 – The build systems. How the makefile works. Demo of the old widget library and of the Guile 3 port. Discussion on the Scheme code, the module system, the differences between Guile 1.8 and Guile 2/3.

• 14.3.2021 – Scheme/C++ interface, patching the S7 Scheme interpreter, generation of menus and widgets between C++ and Scheme.

• 13.3.2021 – General structure of the C++ codebase, various directories, abstract interfaces to the user interface, handling of events, example of the close window event.

• 12.3.2021 – The Xcode project, working on a bug related to exporting PDF images to the clipboard on a Mac.

Other sources for technical informations

• A couple of videos recorded during the 2012 TeXmacs workshop. In video 5 and video 6 Joris talks about TeXmacs internals, the C++ and Scheme code and how to write plugins. There is also video 4 on the TeXmacs document format, style files, and converters. For all the series go here.

• The developer pages in this blog (from the main page)

• The list of developments resources & ideas (here)

List of topics of interest to the group members

• Conversion to HTML/MathML. Creating accessible math content is creating major headaches in many maths departments in the UK , as legal requirements to do so are increasing. Providing HTML with MathML or MathJax is generally considered to be the best way to go, as users can control the font type and size, increase contrast or use screen readers to read out the document (URL)

• Plugins (Jupyter, Sage, Octave and Python)

• How to write templates for conference paper. and macro writing in general, e.g., how do you write a macro to add a new floating environment? Suggestion: write during a session a new style file, which we could then put somewhere where other people can use it. In addition to templates for conference papers, a style file for a curriculum vitae could be interesting.

• Using TeXmacs is the lack of autocompletion and error correction for English words.

• Get accustomed to TeXmacs codebase, configuring developing tools like Xcode.

• Bugfixing. Example, how to investigate bugs that result in segfaults, e.g. bug #60125 and bug #60015.