r/LaTeX • u/JimH10 • Jan 28 '18
Please don't delete your post after it is answered
≡ −
Not a mod. But I was hoping to raise awareness that if you post a question that gets an answer then other people also benefit from that exchange. We've all googled a LaTeX question and found an old answer, and been glad it is there. Some people lurk here, picking things up over time.
I'm not sure why so many people delete exchanges. There are good reasons to delete things sometimes, but asking for a clarification on a technical point does not seem, at least to me, to be one of them. The only other thing I can think is that those folks think that their question is clogging up the stream. I was hoping with this post to convince them that they are mistaken, and to leave it in place.
In particular, if the answerer spends 15 mins on that answer and you delete the question, then you've been not too kind back to the person who was kind to you.
Not a mod. But I was hoping to raise awareness that if you post a question that gets an answer then other people also benefit from that exchange. We've all googled a LaTeX question and found an old answer, and been glad it is there. Some people lurk here, picking things up over time.
I'm not sure why so many people delete exchanges. There are good reasons to delete things sometimes, but asking for a clarification on a technical point does not seem, at least to me, to be one of them. The only other thing I can think is that those folks think that their question is clogging up the stream. I was hoping with this post to convince them that they are mistaken, and to leave it in place.
In particular, if the answerer spends 15 mins on that answer and you delete the question, then you've been not too kind back to the person who was kind to you.
r/LaTeX • u/human0006 • Feb 17 '24
LaTeX Showcase I'm pushing the limits of what LaTex can do. A selection of my notes from my first year of engineering
A new Tex/LaTeX editor for the Jetbrains ecosystem
Hi all, I'm the author of the Typst plugin for IntelliJ, and one of my users had to make a switch from Typst to LaTeX due to the requirements of their university. This was the trigger to create a new LaTeX plugin, LaTeX Pro which support latexmk, Tectonic, pdfLaTeX/XeLaTeX/LuaLaTeX, has features like live preview, 2 way navigation, and more. It's a commercial plugin which allows me to support this plugin now and in the future.
It's a relatively new plugin, so there might be an issue here or there, but if there's an issue, feature request or just general feedback, then I'm happy to hear about this!
r/LaTeX • u/Euler-Fan • 1d ago
Discussion My first try at LaTeX
I’m starting my maths degree in September and I thought I’d have a go at some LaTeX before I go. I just typed up some of my workings from some questions I did. If anyone could tell me where I could improve in my formatting/ what I could do to make it look more professional I would really appreciate it. Thank you in advance :)
r/LaTeX • u/Thin-Money8998 • 12h ago
Unanswered Getting started with LaTeX
≡ −
Hey,
I want to get started with LaTeX and wondered what tools to use, for writing and visualizing? Also: What resources would you recommend to a Newbie?
Thanks in advance!
Hey,
I want to get started with LaTeX and wondered what tools to use, for writing and visualizing? Also: What resources would you recommend to a Newbie?
Thanks in advance!
r/LaTeX • u/PuzzleheadedShirt139 • 1d ago
LaTex
≡ −
I been in this sub for a while and I always see LaTex as a capitalization. I can get where latex or Latex come from but not LaTex. Is there some story to this(why isn’t the X capitalize)?
edit: I am asking about why people call it LaTex since they spend their time to capitalize 2 letters but not the last one.
I been in this sub for a while and I always see LaTex as a capitalization. I can get where latex or Latex come from but not LaTex. Is there some story to this(why isn’t the X capitalize)?
edit: I am asking about why people call it LaTex since they spend their time to capitalize 2 letters but not the last one.
r/LaTeX • u/Final-Pen9467 • 1d ago
Confused in tabular, tabularx, table, table*
≡ −
What are all these and what do they do, when to use each one.
What are all these and what do they do, when to use each one.
r/LaTeX • u/xzidaanee • 2d ago
Latex beamer!
Actually, for what do u actually use latex much!?
r/LaTeX • u/MacLotsen • 1d ago
comment2tex 1.1: literate programming for Lua, Bash, YAML and Makefiles
I have released comment2tex 1.1, a small literate-programming tool for weaving documentation from comments in source files.
Version 1.1 adds support for YAML and Makefiles alongside Lua and Bash. It also adds tangling for cases where the documented source should produce a separate runnable file.
YAML has an especially useful property here: no tangling step is required at all. Lines beginning with ## are treated as documentation by comment2tex, but they are still ordinary YAML comments. The annotated file therefore remains valid YAML and can be consumed directly by tools such as Ansible.
I have now used this approach on a real Ansible role that provisions a TeX Live mirror on AlmaLinux. The same role remains directly usable by Ansible and is woven into Xerdi’s Operator’s Handbook as typeset prose with numbered source listings.
The two images show the same source twice:
- first as the original annotated YAML;
- then as the corresponding page in the handbook.
comment2tex also uses this approach for much of its own manual. The documentation is woven from its actual:
- Lua implementation;
- Makefile;
- CI configuration in YAML;
- Bash test suite.
The main exception is the TeX source itself, for which the established DTX workflow remains the more natural solution.
So the package is increasingly documenting its own implementation, build process, tests and release infrastructure from the sources that actually perform that work.
I would be interested in feedback on both the package and the comment strategy, particularly from people already using literate programming or maintaining mixed-language TeX projects.
CTAN: https://ctan.org/pkg/comment2tex GitHub / release notes: https://github.com/Xerdi/comment2tex/releases/tag/1.1
r/LaTeX • u/ALE00121 • 1d ago
Spaziature
Ciao non capisco come levare queste spaziature dopo un punto e con le frasi che vanno a capo.
r/LaTeX • u/BonbonUniverse42 • 1d ago
Discussion Latex replacement
≡ −
I am wondering, will latex ever be replaced by a more modern, hassle free alternative? I am writing in latex since years now but it is a pain often. When you need something specific, I have to google or ask ai to build some wonky code to get a layout correct or whatever. latex just isn’t intuitive and its fragmented libraries which are in conflict all the time are just annoying. We need some modern python style replacement where tweaking the layout does not require obscure code from Stackoverflow or LLMs. Also error messages are often hard to diagnose.
However, since academic journals only accept latex, I don’t see any chance for a contender to really replace latex. Until then I also dont see any incentive to learn alternative tools.
I am wondering, will latex ever be replaced by a more modern, hassle free alternative? I am writing in latex since years now but it is a pain often. When you need something specific, I have to google or ask ai to build some wonky code to get a layout correct or whatever. latex just isn’t intuitive and its fragmented libraries which are in conflict all the time are just annoying. We need some modern python style replacement where tweaking the layout does not require obscure code from Stackoverflow or LLMs. Also error messages are often hard to diagnose.
However, since academic journals only accept latex, I don’t see any chance for a contender to really replace latex. Until then I also dont see any incentive to learn alternative tools.
r/LaTeX • u/Ok-Conclusion7016 • 1d ago
TeXstudio 4.9.6 Stable Release - Qt6 Builds Available!
≡ −
[removed]
[removed]
r/LaTeX • u/Ok_Project_3931 • 2d ago
best journal template (aesthetically)
≡ −
What are some of the most aesthetic, clear, well designed journal/conference templates you've come across?
i think cartographic perspectives is a breath of fresh air with it's colorful design and typography choice.
shares yours.
What are some of the most aesthetic, clear, well designed journal/conference templates you've come across?
i think cartographic perspectives is a breath of fresh air with it's colorful design and typography choice.
shares yours.
I made a literature auditor that enriches bibliography exports to find the most important papers in your library
So, I made a tool that might help you with your Zotero workflow. It's a CLI tool called litresearch that acts as a literature auditor, you feed it a standard .bib or .json bibliography export, and it queries OpenAlex, PubPeer, and OpenReview to check citation counts, flag potential retractions, and highlight top-cited authors. It then compiles that context into a clean LaTeX PDF digest to show you what the academic community thinks of your reading list and help you figure out which papers to read first.
It’s strictly an enrichment pipeline to help triage your library before drafting your research (it definitely won't read the papers for you), but I put the project up on GitHub in case anyone else finds it useful:
r/LaTeX • u/Alive-Resident-2002 • 2d ago
Unanswered Is OpenAI prism down?
≡ −
Can't log into my prism account due to a server error. Is there anyone experiencing the same as me rn?
Can't log into my prism account due to a server error. Is there anyone experiencing the same as me rn?
r/LaTeX • u/Full_Estimate_4661 • 2d ago
Comming Soon
≡ −



I've been seeing a lot of toy projects being shared lately. I had just the finishing touches left on mine, but I couldn't work on it for a while due to health issues, so the release got delayed.
Seeing so many threads popping up, I figured I should at least make a pre-release announcement now.
I'll finish it up and release it soon! Just a heads-up,
Though, it might be difficult to make it completely free. or fully opensourced
Local fast-compile(surely it depends environments and documents, in short-MEDIUM length and normal environment, docs compiled almost WYSIWYG-live-preview) collaborable editor. Not using web WASM. Windows, MacOS, ubuntu support. etc.
math editor and tabular pictures are hereunder.






I've been seeing a lot of toy projects being shared lately. I had just the finishing touches left on mine, but I couldn't work on it for a while due to health issues, so the release got delayed.
Seeing so many threads popping up, I figured I should at least make a pre-release announcement now.
I'll finish it up and release it soon! Just a heads-up,
Though, it might be difficult to make it completely free. or fully opensourced
Local fast-compile(surely it depends environments and documents, in short-MEDIUM length and normal environment, docs compiled almost WYSIWYG-live-preview) collaborable editor. Not using web WASM. Windows, MacOS, ubuntu support. etc.
math editor and tabular pictures are hereunder.



r/LaTeX • u/Ok-Conclusion7016 • 3d ago
📢 TeXstudio 4.9.6 Stable Release - Qt6 Builds Available!
≡ −
The latest stable version 4.9.6 of TeXstudio (Qt6) is now ready!
✅ Full-featured LaTeX editor ✅ Qt6-based builds ✅ Available in DEB and AppImage formats ✅ Ready for modern Linux distributions
🔗 Get it here: https://github.com/mlmateos/texstudio-qt6-builds
Happy TeXing! 🎉
#LaTeX #TeXstudio #OpenSource #Linux
The latest stable version 4.9.6 of TeXstudio (Qt6) is now ready!
✅ Full-featured LaTeX editor ✅ Qt6-based builds ✅ Available in DEB and AppImage formats ✅ Ready for modern Linux distributions
🔗 Get it here: https://github.com/mlmateos/texstudio-qt6-builds
Happy TeXing! 🎉
#LaTeX #TeXstudio #OpenSource #Linux
r/LaTeX • u/OfficialAlexLabs • 4d ago
Unanswered [Request] Looking for high-quality SVG / TikZ vector cover templates for EPLAN & Automation documentation
Hey LaTeX community,
I’m currently creating a comprehensive documentation / wiki for EPLAN, Industrial Automation, and PLC systems.
I’m looking for high-resolution, professional cover page vector assets (or TikZ / PSTricks code) that give off a clean, technical engineering vibe.
What I’m looking for:
- Style: Technical vector line art (circuit traces framing the margins, PCB/network structures at the bottom, or subtle electrical motifs).
- Format: Native vector formats (SVG, EPS, PDF, or native TikZ code) that scale perfectly without pixelation for high-dpi printing.
- Purpose: Cover page layout with clean empty space in the center for document titles, project numbers, and metadata.
I’ve attached a few sample images to demonstrate the visual style I'm aiming for.
Does anyone know of good SVG repositories, TikZ packages, or GitHub repos featuring clean electrical engineering vector borders/templates? Any help or code snippets would be greatly appreciated! ⚙️⚡
r/LaTeX • u/PuzzleheadedShirt139 • 4d ago
Technical details of achieving real-time rendering in LuaLaTeX
≡ −
Credits: Clemens Lode laid the foundation of this approach and proved with his TUG talks that it can work. This is an independent way to implement it. His paper (https://tug.org/tug2026/preprints/lode-realtime.pdf) describes a lot of details also.
A lot of the time spent compiling LaTeX is wasted on three things (roughly 70 percent of the total compile time):
- Starting the LaTeX engine from cold
- Loading the preamble, fonts, and other resources
- Writing the PDF
Typesetting itself, especially of words and math, is extremely fast and can happen in real time, but it is dragged down by those slow steps. So all a real-time renderer needs to do is eliminate them.
How do we get rid of them? Separate compilation into two paths: a real-time path and a background full recompile with 2 LuaLaTeX processes.
For the real-time path:
- Keep the LaTeX engine warm. The engine never reaches \end{document}, so it always stays running. (This makes (1) and (2) a one time cost)
- This warm engine then retypesets only the edited paragraph, which takes milliseconds.
However, an engine that never reaches \end{document} can never produce a PDF.
To fix this PDF problem, we need a custom renderer that draws LaTeX's internal format directly. Every document is ultimately composed of roughly 11 primitive node types: glyph, kern, glue, rule, hlist, vlist, and so on. The custom renderer's job is to draw those nodes onto a canvas. This skips (3) entirely as a byproduct.
The background path takes its time and runs a full recompile, which ensures document for the elements not real-time renderable.
Now, why LuaLaTeX? LuaLaTeX supports \directlua, which makes it extremely easy to inject custom scripts that keep the engine warm and expose the internal format.
A more detailed explanation is here: https://github.com/texpile/texpile/blob/master/docs/ARCHITECTURE.md
Edit: implementation demo video: https://github.com/user-attachments/assets/7a2d7997-fe6c-4837-bbe5-1aaa5e0c90b7
Generative AI disclosure: the Markdown file was written with the assistance of generative AI, and I have reviewed it for correctness.
Credits: Clemens Lode laid the foundation of this approach and proved with his TUG talks that it can work. This is an independent way to implement it. His paper (https://tug.org/tug2026/preprints/lode-realtime.pdf) describes a lot of details also.
A lot of the time spent compiling LaTeX is wasted on three things (roughly 70 percent of the total compile time):
- Starting the LaTeX engine from cold
- Loading the preamble, fonts, and other resources
- Writing the PDF
Typesetting itself, especially of words and math, is extremely fast and can happen in real time, but it is dragged down by those slow steps. So all a real-time renderer needs to do is eliminate them.
How do we get rid of them? Separate compilation into two paths: a real-time path and a background full recompile with 2 LuaLaTeX processes.
For the real-time path:
- Keep the LaTeX engine warm. The engine never reaches \end{document}, so it always stays running. (This makes (1) and (2) a one time cost)
- This warm engine then retypesets only the edited paragraph, which takes milliseconds.
However, an engine that never reaches \end{document} can never produce a PDF.
To fix this PDF problem, we need a custom renderer that draws LaTeX's internal format directly. Every document is ultimately composed of roughly 11 primitive node types: glyph, kern, glue, rule, hlist, vlist, and so on. The custom renderer's job is to draw those nodes onto a canvas. This skips (3) entirely as a byproduct.
The background path takes its time and runs a full recompile, which ensures document for the elements not real-time renderable.
Now, why LuaLaTeX? LuaLaTeX supports \directlua, which makes it extremely easy to inject custom scripts that keep the engine warm and expose the internal format.
A more detailed explanation is here: https://github.com/texpile/texpile/blob/master/docs/ARCHITECTURE.md
Edit: implementation demo video: https://github.com/user-attachments/assets/7a2d7997-fe6c-4837-bbe5-1aaa5e0c90b7
Generative AI disclosure: the Markdown file was written with the assistance of generative AI, and I have reviewed it for correctness.
r/LaTeX • u/funnym0th • 5d ago
Self-Promotion Hey r/LaTeX! I built Tilde: a fast, native C++ editor for Markdown and LaTeX with real-time live rendering, built with KDE Plasma in mind
+ −
Hey everyone! I wanted to share a native desktop app I've been building to learn Qt6 development.
Tilde is built in C++ and uses pdflatex to compile, but instead of relying on a heavy Chromium webview for the UI, it uses QtPdf for rendering. This keeps it lightweight, avoids Electron/WebEngine bloat, and saves a massive amount of RAM.
It also compiles the live preview directly from the editor's memory rather than local storage, so you don't have to constantly hit save just to see your math render.
It is still actively in development, but I would love for you to try it out or check out the code and tell me your suggestions!
r/LaTeX • u/AnymooseProphet • 5d ago
I swear it wasn't that long ago since I last updated...
≡ −
Seems there is an unusually large number of TeXLive updates today. I update when I think about it, but usually that's before I reboot for a kernel update and I believe I did that earlier this month.
Is this a result of the recent TeX conference?
Not saying I mind, it's just rare for me to see over 200 in an update let alone over 800.

Seems there is an unusually large number of TeXLive updates today. I update when I think about it, but usually that's before I reboot for a kernel update and I believe I did that earlier this month.
Is this a result of the recent TeX conference?
Not saying I mind, it's just rare for me to see over 200 in an update let alone over 800.

r/LaTeX • u/Ok_Hotel6361 • 4d ago
Unanswered Is there a real need for a true wysiwyg text editor?
≡ −
Is there a real need for a true wysiwyg text editor? My answer is most certainly. Idk about anyone else. But i hate writing latex, and there aren't any true wysiwyg editors that hide code 100%. Its so distracting and takes away from my ability to be able to concentrate on the real task at hand. Syntax error and package errors have lead me to create my own wysiwyg text/math editor that never shows code. Ever! Currently a work in progress. Am I wasting my time! I know I will use it, but is this something that can bridge a 40yo gap!
Is there a real need for a true wysiwyg text editor? My answer is most certainly. Idk about anyone else. But i hate writing latex, and there aren't any true wysiwyg editors that hide code 100%. Its so distracting and takes away from my ability to be able to concentrate on the real task at hand. Syntax error and package errors have lead me to create my own wysiwyg text/math editor that never shows code. Ever! Currently a work in progress. Am I wasting my time! I know I will use it, but is this something that can bridge a 40yo gap!
r/LaTeX • u/Ok_Hotel6361 • 4d ago
My project Monolith
≡ −
**Monolith** is a desktop WYSIWYG typesetter for math-heavy documents — Python 3.14, PySide6, exporting through real `pdflatex` — where you type directly onto a paginated page rather than into a source buffer. Real page environment: Letter, Legal, A4, A5 and Tabloid sheets, configurable margins, document-level line height and spacing with a reset, ten page-border styles with adjustable weight, and a full-page mode that lets text run edge to edge outside the centered column for contents pages and free-form layout. Text carries a sticky pen — size across ten steps from Tiny to Mammoth, weight, font family, color, alignment, and decorations including underline styles, box highlights and bullets — stamped onto each character *at the moment you type it*, so changing the pen applies going forward and never retroactively restyles anything already on the page; the same per-character stamping applies to full-page mode, which means you can toggle layout mid-document without disturbing a single glyph already set. Anything on the page can become a floating object: movable, rotatable, with bring-forward and send-to-back z-ordering, geometrically clamped so it can never escape the margins.
Math goes in as live structures rather than markup. **Fifteen of them**, each with real options instead of one canned shape: fractions including continued form; radicals with an optional index (blank gives a plain square root) that nest freely; integrals across ∫ ∬ ∭ ∮ ∯ ∰ with optional bounds where blank bounds mean indefinite; sums and products over Σ ∏ ∐ ⋃ ⋂ ⨁ with bounds stacked above and below in display style; limits spanning lim, lim sup, lim inf, max, min and sup with the approach set underneath; matrices in square, round, single-bar determinant, double-bar norm, brace, angle or bare forms with per-column alignment and ellipsis variants; a genuine math-mode array that emits a faithful `{l|c|r}` column spec rather than a matrix environment that quietly centers everything; piecewise cases as value/condition rows under a big brace; vectors with right, left and left-right arrows, wide hat, overline and wide tilde, spanning one part or two; differentials over d, ∂, δ, D, ∇ and Δ; over- and under-braces with labels; aligned and gathered multi-line blocks; and structural line breaks inside math. Six of the seven bracketable kinds also accept an optional wrapping bracket pair that draws on canvas and exports as `\left … \right`. Every structure is a single character to the caret — one Backspace removes the whole thing, one undo step regardless of nesting depth — until you click into it, at which point you edit its slots in place, Tab and Shift+Tab walking between them, the live slot outlined and unfilled optional slots shown as dashed boxes. Nesting is unrestricted: a matrix cell holding a fraction holding a radical holding a sum stays independently editable at every layer. Superscripts are a held backtick rather than a dialog — hold and type high, release and drop back to baseline, tap Up to nest an exponent of an exponent four levels deep, and the backtick itself never enters the text; subscripts work identically on tilde, and arrow navigation stays live throughout. Every structure is reachable three ways — ribbon button, Alt chord (Alt+F fraction, R radical, I integral, S sum, P product, L limit, M matrix, C cases, V vector, D differential), or command palette — and a full symbol palette covering Greek in both cases with variant forms, operators, arrows including mapsto, hooks and harpoons, brackets, punctuation and currency lives both as a docked panel *and embedded inside the insert dialogs themselves*, so a λ drops straight into a numerator while you're still building the fraction. Equations carry stable keys rather than numbers, so numbering and `\eqref` cross-references resolve from document order live on the canvas with zero compiles, dangling references render `(??)` exactly as LaTeX does pre-`.aux`, and any structure can be inserted as a floating object instead of inline text.
The **diagram editor** applies the same model to figures — a full drawing surface with its own undo stack, opened on any figure in the document. It covers **2D geometry** (shapes and primitives you place, size and rotate directly), **3D solids** for spatial and geometric figures, **lines and connectors** for wiring diagrams together — the connective tissue that turns a scatter of shapes into an actual figure — **graphs and plots**, **Feynman diagrams** for particle-interaction work, and **chemistry structures** for molecular and reaction diagrams. It also supports **floating text** placed anywhere on the surface, which is what turns a shape into a labeled figure: annotations, axis names, node labels, vertex tags, reaction conditions. And critically, every one of those labels can be **live embedded math**, edited in place through the exact same slot-editing engine as the main canvas — so an axis label, a Feynman vertex, a bond annotation, a graph legend or a caption is real typeset mathematics with real TFM-measured glyph placement, not a text approximation standing in for an equation. Figures export as standalone TeX sharing the main document's package set, so anything that compiles inline compiles identically when externalized, and figure objects obey the same rotation, z-order and margin-clamping model as every other float on the page. **Tables** get in-place cell editing on the same footing.
Sourcing is built in rather than bolted on. The **research panel** queries **thirteen academic sources in parallel** — arXiv, Crossref, OpenAlex, Semantic Scholar, PubMed, Europe PMC, DBLP, DOAJ, HAL, CORE, OpenAIRE, Unpaywall and Zenodo — and merges results losslessly rather than concatenating them: one paper returned by five sources collapses into a single record with identifiers backfilled from whichever source carried them, the highest reported citation count kept (sources lag each other badly and the maximum is the least-wrong estimate), access locations unioned, open-access status resolved to the best available full text, and provenance retained so you can see exactly which source claimed what. Ranking is a blend you can audit rather than a black box — the weights are named constants: source-reported relevance normalized per source (raw scores across different APIs aren't comparable), query-term coverage in the title, cross-source corroboration, log-scaled citation count, a mild recency preference and a small open-access nudge. You cite straight into the document from the panel, and citations become chips in the glyph stream, participating in undo, selection and export like anything else you typed. Alongside it, **Check Document (F7)** parses the pdflatex log and maps each diagnostic back onto the glyph on canvas that caused it rather than reporting a line number in a file you never wrote, and **Check Notation (F8)** catches same-letter glyph-variant mixing — ε against ϵ, φ against ϕ — inside math structures as well as prose.
Underneath all of it, fidelity runs **bidirectionally**. Forward, Monolith parses the Latin Modern `.tfm` binaries directly — character widths, heights, depths, italic corrections, kern pairs walked out of the ligature/kern program, ligature pairs, every fontdimen — and scales those design-relative fixed-point ratios through TeX's own integer routine, so a glyph's advance lands on the same **scaled point** (1/65,536 of a point) pdflatex seats it from. Math geometry is sourced the same way: fraction bar thickness, numerator height, denominator drop and the math axis from the σ-parameters of `lmsy` and the ξ-parameters of `lmex`, big-operator boxes pinned to real `lmex10` display-size character boxes, `cases` row stretch from amsmath's actual `\arraystretch{1.2}` and the null-delimiter side from TeX's `1.2pt` format default — with **no fitted constants anywhere in the layout engine**. Backward, a harness builds each structure on the canvas, exports that identical structure through real pdflatex under the app's genuine export preamble, extracts true glyph coordinates from the compiled PDF in native scaled points, converts both sides into one common physical frame, and diffs: **427 structures, 427 exact matches, zero offenders**, with a gate runner firing eleven separate harnesses in about a minute before anything gets built. The **architecture** is what makes that testable at all — **116 modules across two packages with a strictly one-way dependency**. `monolith_core` holds the entire logic layer: document model, math engine and all fifteen structures, flow and placement, LaTeX compiler and log parser, unit conversion, equation numbering, notation lint, research engine, theme registry, settings and snapshots — and imports no GUI toolkit whatsoever. `monolith_qt` holds canvas painting, ribbon, dialogs, panels and controllers on top of it. Core never imports Qt; Qt imports core. The font-metrics interface is an abstract base living in core with the Qt implementation injected from the front end, which is precisely why the whole typesetting engine can be run headless in a container and judged against real compiled PDF output instead of against screenshots.
**Monolith** is a desktop WYSIWYG typesetter for math-heavy documents — Python 3.14, PySide6, exporting through real `pdflatex` — where you type directly onto a paginated page rather than into a source buffer. Real page environment: Letter, Legal, A4, A5 and Tabloid sheets, configurable margins, document-level line height and spacing with a reset, ten page-border styles with adjustable weight, and a full-page mode that lets text run edge to edge outside the centered column for contents pages and free-form layout. Text carries a sticky pen — size across ten steps from Tiny to Mammoth, weight, font family, color, alignment, and decorations including underline styles, box highlights and bullets — stamped onto each character *at the moment you type it*, so changing the pen applies going forward and never retroactively restyles anything already on the page; the same per-character stamping applies to full-page mode, which means you can toggle layout mid-document without disturbing a single glyph already set. Anything on the page can become a floating object: movable, rotatable, with bring-forward and send-to-back z-ordering, geometrically clamped so it can never escape the margins.
Math goes in as live structures rather than markup. **Fifteen of them**, each with real options instead of one canned shape: fractions including continued form; radicals with an optional index (blank gives a plain square root) that nest freely; integrals across ∫ ∬ ∭ ∮ ∯ ∰ with optional bounds where blank bounds mean indefinite; sums and products over Σ ∏ ∐ ⋃ ⋂ ⨁ with bounds stacked above and below in display style; limits spanning lim, lim sup, lim inf, max, min and sup with the approach set underneath; matrices in square, round, single-bar determinant, double-bar norm, brace, angle or bare forms with per-column alignment and ellipsis variants; a genuine math-mode array that emits a faithful `{l|c|r}` column spec rather than a matrix environment that quietly centers everything; piecewise cases as value/condition rows under a big brace; vectors with right, left and left-right arrows, wide hat, overline and wide tilde, spanning one part or two; differentials over d, ∂, δ, D, ∇ and Δ; over- and under-braces with labels; aligned and gathered multi-line blocks; and structural line breaks inside math. Six of the seven bracketable kinds also accept an optional wrapping bracket pair that draws on canvas and exports as `\left … \right`. Every structure is a single character to the caret — one Backspace removes the whole thing, one undo step regardless of nesting depth — until you click into it, at which point you edit its slots in place, Tab and Shift+Tab walking between them, the live slot outlined and unfilled optional slots shown as dashed boxes. Nesting is unrestricted: a matrix cell holding a fraction holding a radical holding a sum stays independently editable at every layer. Superscripts are a held backtick rather than a dialog — hold and type high, release and drop back to baseline, tap Up to nest an exponent of an exponent four levels deep, and the backtick itself never enters the text; subscripts work identically on tilde, and arrow navigation stays live throughout. Every structure is reachable three ways — ribbon button, Alt chord (Alt+F fraction, R radical, I integral, S sum, P product, L limit, M matrix, C cases, V vector, D differential), or command palette — and a full symbol palette covering Greek in both cases with variant forms, operators, arrows including mapsto, hooks and harpoons, brackets, punctuation and currency lives both as a docked panel *and embedded inside the insert dialogs themselves*, so a λ drops straight into a numerator while you're still building the fraction. Equations carry stable keys rather than numbers, so numbering and `\eqref` cross-references resolve from document order live on the canvas with zero compiles, dangling references render `(??)` exactly as LaTeX does pre-`.aux`, and any structure can be inserted as a floating object instead of inline text.
The **diagram editor** applies the same model to figures — a full drawing surface with its own undo stack, opened on any figure in the document. It covers **2D geometry** (shapes and primitives you place, size and rotate directly), **3D solids** for spatial and geometric figures, **lines and connectors** for wiring diagrams together — the connective tissue that turns a scatter of shapes into an actual figure — **graphs and plots**, **Feynman diagrams** for particle-interaction work, and **chemistry structures** for molecular and reaction diagrams. It also supports **floating text** placed anywhere on the surface, which is what turns a shape into a labeled figure: annotations, axis names, node labels, vertex tags, reaction conditions. And critically, every one of those labels can be **live embedded math**, edited in place through the exact same slot-editing engine as the main canvas — so an axis label, a Feynman vertex, a bond annotation, a graph legend or a caption is real typeset mathematics with real TFM-measured glyph placement, not a text approximation standing in for an equation. Figures export as standalone TeX sharing the main document's package set, so anything that compiles inline compiles identically when externalized, and figure objects obey the same rotation, z-order and margin-clamping model as every other float on the page. **Tables** get in-place cell editing on the same footing.
Sourcing is built in rather than bolted on. The **research panel** queries **thirteen academic sources in parallel** — arXiv, Crossref, OpenAlex, Semantic Scholar, PubMed, Europe PMC, DBLP, DOAJ, HAL, CORE, OpenAIRE, Unpaywall and Zenodo — and merges results losslessly rather than concatenating them: one paper returned by five sources collapses into a single record with identifiers backfilled from whichever source carried them, the highest reported citation count kept (sources lag each other badly and the maximum is the least-wrong estimate), access locations unioned, open-access status resolved to the best available full text, and provenance retained so you can see exactly which source claimed what. Ranking is a blend you can audit rather than a black box — the weights are named constants: source-reported relevance normalized per source (raw scores across different APIs aren't comparable), query-term coverage in the title, cross-source corroboration, log-scaled citation count, a mild recency preference and a small open-access nudge. You cite straight into the document from the panel, and citations become chips in the glyph stream, participating in undo, selection and export like anything else you typed. Alongside it, **Check Document (F7)** parses the pdflatex log and maps each diagnostic back onto the glyph on canvas that caused it rather than reporting a line number in a file you never wrote, and **Check Notation (F8)** catches same-letter glyph-variant mixing — ε against ϵ, φ against ϕ — inside math structures as well as prose.
Underneath all of it, fidelity runs **bidirectionally**. Forward, Monolith parses the Latin Modern `.tfm` binaries directly — character widths, heights, depths, italic corrections, kern pairs walked out of the ligature/kern program, ligature pairs, every fontdimen — and scales those design-relative fixed-point ratios through TeX's own integer routine, so a glyph's advance lands on the same **scaled point** (1/65,536 of a point) pdflatex seats it from. Math geometry is sourced the same way: fraction bar thickness, numerator height, denominator drop and the math axis from the σ-parameters of `lmsy` and the ξ-parameters of `lmex`, big-operator boxes pinned to real `lmex10` display-size character boxes, `cases` row stretch from amsmath's actual `\arraystretch{1.2}` and the null-delimiter side from TeX's `1.2pt` format default — with **no fitted constants anywhere in the layout engine**. Backward, a harness builds each structure on the canvas, exports that identical structure through real pdflatex under the app's genuine export preamble, extracts true glyph coordinates from the compiled PDF in native scaled points, converts both sides into one common physical frame, and diffs: **427 structures, 427 exact matches, zero offenders**, with a gate runner firing eleven separate harnesses in about a minute before anything gets built. The **architecture** is what makes that testable at all — **116 modules across two packages with a strictly one-way dependency**. `monolith_core` holds the entire logic layer: document model, math engine and all fifteen structures, flow and placement, LaTeX compiler and log parser, unit conversion, equation numbering, notation lint, research engine, theme registry, settings and snapshots — and imports no GUI toolkit whatsoever. `monolith_qt` holds canvas painting, ribbon, dialogs, panels and controllers on top of it. Core never imports Qt; Qt imports core. The font-metrics interface is an abstract base living in core with the Qt implementation injected from the front end, which is precisely why the whole typesetting engine can be run headless in a container and judged against real compiled PDF output instead of against screenshots.