{"id":13836079,"url":"https://github.com/let-def/texpresso","last_synced_at":"2026-02-03T21:16:59.659Z","repository":{"id":158992685,"uuid":"634355269","full_name":"let-def/texpresso","owner":"let-def","description":"TeXpresso: live rendering and error reporting for LaTeX","archived":false,"fork":false,"pushed_at":"2025-08-11T02:12:00.000Z","size":1756,"stargazers_count":590,"open_issues_count":38,"forks_count":24,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-08-11T04:11:26.727Z","etag":null,"topics":["latex","tectonic","tex","texlive"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/let-def.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-29T21:09:22.000Z","updated_at":"2025-08-11T02:11:45.000Z","dependencies_parsed_at":"2023-11-15T02:43:23.604Z","dependency_job_id":"2627f7e4-9ec3-47be-b7a6-74b95a4cd082","html_url":"https://github.com/let-def/texpresso","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/let-def/texpresso","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/let-def%2Ftexpresso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/let-def%2Ftexpresso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/let-def%2Ftexpresso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/let-def%2Ftexpresso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/let-def","download_url":"https://codeload.github.com/let-def/texpresso/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/let-def%2Ftexpresso/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29057376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T20:13:53.544Z","status":"ssl_error","status_checked_at":"2026-02-03T20:13:40.507Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["latex","tectonic","tex","texlive"],"created_at":"2024-08-04T15:00:34.947Z","updated_at":"2026-02-03T21:16:59.633Z","avatar_url":"https://github.com/let-def.png","language":"C","readme":"\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/let-def/texpresso\"\u003e\n    \u003cimg width=256 height=256 src=\"doc/texpresso_logo_v2.png\", alt=\"texpresso\"\u003e\n  \u003c/a\u003e\n  \u003ch1\u003e\n    \u003cstrong\u003e\n      TeXpresso: live rendering and error reporting for LaTeX\n    \u003c/strong\u003e\n  \u003c/h1\u003e\n\u003c/div\u003e\n\n\n\u003e [!Note]\n\u003e TeXpresso is still in an early development phase.\n\u003e Changes and bug fixes are happening frequently, check the [CHANGELOG.md](CHANGELOG.md).\n\n**Important: this repository uses submodules. Clone using `git clone --recurse-submodules`.**\n\n## About\n\nTeXpresso provides a \"live rendering\" experience when editing LaTeX documents in a supported editor: change something in the .tex file, the render window will update almost immediately with your change. Write something invalid, you get an error message immediately.\n\nThis can radically improve the LaTeX editing experience compared to the usual rebuild-and-wait-for-viewer-to-update experience, especially for large documents.\n\nSee the [screencasts](#Screencasts) at the end of this file for a visual demo of TeXpresso capabilities.\n\n### Install\n\nTeXpresso has been tested on Linux and macOS and should work with both AMD64 and Apple Silicon architectures. See [INSTALL.md](./INSTALL.md) for dependency and build instructions.\n\n### Design\n\nThe TeXpresso system is built of the following parts:\n\n1. A TeX engine that renders LaTeX documents into PDF;\n   we use a modified version of the [Tectonic](https://tectonic-typesetting.github.io/en-US/) engine, modified to interact with the TeXpresso driver.\n\n   This is in the [tectonic/](tectonic/) git-submodule, and it produces the `texpresso-tonic` helper binary\n\n2. A PDF renderer that renders PDF documents into images.\n   We use [MuPDF](https://mupdf.com/).\n\n3. A viewer that shows the rendered images and allows simple user commands (see [Viewer controls](#Viewer_controls) below), built with [libSDL](https://www.libsdl.org/).\n\n4. A driver program that talks to the editor to be notified of changes to the LaTeX document, maintains an incremental view of the document and the rendering process (supporting incrementality, rollback, error recovery, etc.), talks to the LaTeX engine to re-render the modified portions of the document, and synchronizes with the viewer.\n\n   The driver is where the \"live\" magic lives. It is the `texpresso` binary, whose sources are in this repository.\n\nThe driver sends information between the editor and the renderer in both directions. In particular, it is possible to ask the editor to jump to a specific place in the LaTeX document by clicking on the viewer window or, conversely, to refresh the viewer window to display the document at the editor position.\n\n## Viewer controls\n\nKeyboard controls:\n- `←`, `→`: change page\n- `↑`, `↓`: move within the page\n- `p` (for \"page\"): switch between \"fit-to-page\" and \"fit-to-width\" zoom modes\n- `c` (\"crop\"): crop borders\n- `q` (\"quit\"): quit\n- `i` (\"invert\"): dark mode\n- `I` : toggle theming\n- `t` (\"top\"): toggle stay-on-top (keeping TeXpresso above the editor window)\n- `b` (\"border\"): toggle window borders\n- `F5`: start fullscreen presentation (leave with `ESC`)\n\nMouse controls:\n\n- click: select text in window (TODO: move Emacs buffer with SyncTeX)\n- control+click: pan page\n- wheel: scroll page\n- control+wheel: zoom\n\n## Supported editors\n\n### Emacs\n\nTeXpresso comes with an Emacs mode. The source can be found in\n[emacs/texpresso.el](emacs/texpresso.el).  Load this file in Emacs (using `M-X load-file`; it is also compatible with `require`).\n\nStart TeXpresso with `M-x texpresso`. The prompt will let you select the master/root TeX file.\nIt will try to start the `texpresso` command. If it is not possible, it will open\n`(customize-variable 'texpresso-binary)` to let you set the path to texpresso\nbinary (`\u003cwhere you cloned the repository\u003e/build/texpresso`).\n\nTo work correctly, `texpresso` needs `texpresso-tonic` helper; when copying them, make sure they are both in the same directory.\n\n`M-x texpresso-display-output` will open a small window listing TeX warnings and errors on the current page.\nUse `M-x texpresso-next-page` and `M-x texpresso-previous-page` to move between pages without leaving Emacs.\n\n### Neovim\n\nA Neovim mode is provided in a separate repository [texpresso.vim](https://github.com/let-def/texpresso.vim). It is not yet compatible with vanilla Vim, patches are welcome :bow:.\n\n### Visual Studio Code\n\nA vscode mode is being developed in [texpresso-vscode](https://github.com/DominikPeters/texpresso-vscode), thanks to @DominikPeters.\nLook for [TeXpresso](https://marketplace.visualstudio.com/items?itemName=DominikPeters.texpresso-basic) in the marketplace.\n\n## Screencasts\n\n**Neovim integration.**\nLaunching TeXpresso in vim:\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/b6a1966a-52ca-4e2e-bf33-e83b6af851d8\n\nLive update during edition:\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/cfdff380-992f-4732-a1fa-f05584930610\n\nUsing Quickfix window to fix errors and warnings interactively:\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/e07221a9-85b1-44f3-a904-b4f7d6bcdb9b\n\nSynchronization from Document to Editor (SyncTeX backward):\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/f69b1508-a069-4003-9578-662d9e790ff9\n\nSynchronization from Editor to Document (SyncTeX forward):\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/78560d20-391e-490e-ad76-c8cce1004ce5\n\nTheming, Light/Dark modes: 😎\n\nhttps://github.com/let-def/texpresso.vim/assets/1048096/a072181b-82d3-42df-9683-7285ed1b32fc\n\n**Emacs integration.** Here is a sample recording of me editing and browsing @fabiensanglard [Game Engine Black Book: Doom](https://github.com/fabiensanglard/gebbdoom) in TeXpresso (using my emacs theme):\n\nhttps://user-images.githubusercontent.com/1048096/235424858-a5a2900b-fb48-40b7-a167-d0b71af39034.mp4\n\n## Credits\n\nThanks to [@DominikPeters](https://github.com/DominikPeters) for contributing the VS Code extension.\nThanks to [@merv1n34k](https://github.com/merv1n34k) for contributing the logo.\n\nThanks our many contributors, [@gasche](https://github.com/gasche), [@haselwarter](https://github.com/haselwarter), [@alerque](https://github.com/alerque), [@sandersantema](https://github.com/sandersantema), [@t4ccer](https://github.com/t4ccer), [@schnell18](https://github.com/schnell18), and [@bowentan](https://github.com/bowentan) for improving features, portability and compatibility with many platforms.\n","funding_links":[],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flet-def%2Ftexpresso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flet-def%2Ftexpresso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flet-def%2Ftexpresso/lists"}