TeXpressoManual Open the app →

TeXpresso manual

TeXpresso is a LaTeX editor in the browser that typesets as you type: there is no compile button to press, and the pages follow your edits within moments.

It runs XeLaTeX, or LuaLaTeX, entirely in your browser, with the packages of TeX Live. Your documents stay on your device: there is no account, and nothing to install.

Getting started

The first time, a welcome offers three ways to start: Take the tour, an example document (manual.tex, a short tour written in LaTeX), A new document, or Open my files.

The welcome: what TeXpresso is, and three ways to start: the tour, a new document, your files
The welcome, at the first visit.

In the tour, change a sentence, and watch the page on the right follow. The window has three parts:

The app: the file list on the left, the editor in the middle, the pages on the right
The example project: files, editor (with its problems below), and the preview.

Above them, from the left: the name of the project (a click lists your projects), the menus Project, Edit, View and Document, which hold every action with its keyboard shortcut (F10 reaches them from the keyboard), Share, the engine (XeLaTeX), the status (✓), and at the right Edit · Both · PDF and ?.

The Document menu open: main file, engine (XeLaTeX checked), TeX Live, rebuild from scratch
The Document menu, and its engines.

To write your own document, create a project (Project ▸ New project…), or bring one you have: drop its folder or its .zip on the window. Reset…, at the bottom of the file list, brings the example back.

This manual opens from ? at the top right of the app, in a tab of its own: keep it next to your document.

The first document takes a little longer: the app downloads the engine and the packages it needs. They are kept, and later documents start quickly, even offline.

How to work

TeXpresso is made for writing with the result in sight, alone or with coauthors. A typical project goes like this:

  1. Start a project. Drop the folder or the .zip of a document you have on the window, and choose Open it as a new project; or create an empty one with Project ▸ New project…. The project and its files stay in your browser (Projects).
  2. Write, and watch. Type in the editor: the pages follow within moments. Keep your eyes on the text; glance at the page when you want to see it. The pages show your cursor, and a click on them puts it there (Writing).
  3. Fix mistakes as they come. An error shows below the editor as soon as you make it, with a link to its line; the pages keep the last good state of the rest (Errors and output).
  4. Bring in your coauthors. Share makes a link; whoever opens it edits with you, at the same time, each with their color (Editing together). Working at different hours? Keep the changes on the server when the others leave: whoever comes back gets them (Changes kept for the absent).
  5. Keep a copy. Download the project as a .zip (⇩, or Project ▸ Download as .zip) from time to time, and to send it to a journal or a colleague who compiles elsewhere: it holds your sources, not the PDF. Or keep it in a folder of your disk, synced as you work (A folder on your disk), or in your Dropbox (A folder of your Dropbox), or commit it to a repository of GitHub (GitHub).

For slides, the same, with the preview showing one slide at a time, and full screen to present (Slides).

Writing

Every change is typeset as you type. Only the part of the document after your edit is computed again, and while you type, only up to the pages on screen: the ones after follow when you pause. Long documents stay responsive. When the edit changes references, the table of contents or citations, the app compiles again on its own until they settle.

Your edits are saved in the browser as you go. There is nothing to save by hand; to keep a copy elsewhere, download the project.

From the source to the page, and back

The cursor in a theorem of the source, and the same theorem marked in the pages
The cursor on line 13, in a theorem: the preview marks it.

The preview

The bar of the preview moves between pages (◀ ▶, or type a page number) and sets the zoom: Fit width, Fit page, or a size. Links in the document work: a double-click on a reference or an entry of the table of contents takes you to its target, and on a web link opens it in a new tab (a click puts the cursor there, as in the text around; on a touch screen, a tap follows the link).

The editor taking the whole width, the preview hidden
The editor only (Edit): it has the width.

Errors and output

Below the editor, Problems lists the errors and warnings of the document, with their file and line. Click one to go to its line. Output shows the log of TeX, as a terminal would. The ✓ at the top turns into ✕ when something goes wrong; hover over it for details. ▾ folds the panel away, to give the editor its height.

An unclosed \emph in the source; the Problems panel lists the error and the warnings it causes
An \emph{ left open: the error, and the undefined reference it causes.

Document ▸ Rebuild from scratch compiles the document again, with empty auxiliary files (.aux, .toc…). Use it if references or the table of contents ever look wrong.

When the errors show that the document was written for the other engine (\directlua under XeLaTeX, say), or when its first lines ask for it (% !TEX program = lualatex), Problems says so, with a button to switch; the engine at the top is highlighted meanwhile (Engines).

Files

A project is a folder of files: .tex sources, packages and classes of your own (.sty, .cls), bibliographies, pictures (PNG, JPEG, PDF).

A dialog: paper.zip, open it as a new project, add its files, extract into a folder, or keep the .zip
Bringing a .zip.
A paper with its sections in a folder and a figure, compiled
A paper brought as a .zip: main.tex (★, the main file), sections in a folder, a figure.

A folder on your disk

In Chrome, Edge or Opera on a computer, ⇄ links the project to a folder on your disk (also Project ▸ Sync with a folder…), synced both ways while the project is open: an edit in TeXpresso is written to the folder within a few seconds, and a change in the folder (another editor, git pull) comes into the project. The first time, if both have files, you choose: open the folder's files (the project's are removed), or merge the two, keeping the folder's or the project's version of a file that differs.

Other browsers (Firefox, Safari, and all browsers on phones and tablets) do not let a page write to a folder: there, ⇄ is greyed, and hovering or clicking it says so.

A folder of your Dropbox

☁, next to ⇄, syncs the project with a folder of your Dropbox the same way, in any browser: on another computer, the same folder brings the project back, and the Dropbox app keeps it on your disks too. The first time, a window asks you to log in to Dropbox and to let TeXpresso use your files; then you choose the folder (or make a new one), and, if both have files, how to join them, as for a folder on disk.

GitHub

The branch button, after ☁, links the project to a repository of GitHub (a branch of it, or a folder of that branch). Unlike a synced folder, nothing goes there as you type: under the files, Commit… sends the changes of the project as one commit, with the message you write, and Pull brings the commits made there (highlighted when there are some, checked every minute). The status says how many files changed since the last commit or pull.

TeXpresso reaches GitHub with a personal access token that you make on GitHub, kept in this browser only, for all its projects: in GitHub's settings, Developer settings, Fine-grained tokens, Generate new token; give it access to the repositories of your projects (or all of them), and, under Permissions, add Contents set to Read and write: a new token does not have it, and without it GitHub refuses to show the files of a repository (Pull) or to take new ones (Commit). The first time, the branch button asks for the token.

Files written by TeX

Under the files, Written by TeX lists the files the document writes: .aux, .toc, .out... The list starts folded: click its title to unfold it. A click on a file shows it; a right-click offers more.

Bibliographies (BibTeX)

With \bibliography{refs} and \bibliographystyle{plain}, BibTeX runs by itself between the passes of LaTeX, as latexmk would: when a citation, the style or the list of databases changes, or when you edit a .bib file of the project. Other edits do not run it. Its .bbl and .blg (its log, with its warnings) are under Written by TeX. Styles come from TeX Live (plain, alpha, abbrvnat...), or from a .bst file of the project.

A project with a .bbl but not the .bib it was made from (as on arXiv) uses that .bbl: BibTeX runs only when all its databases are there.

Projects and engines

The name of the project, at the top left, lists your projects, the current one first, then the last edited: a click opens one, and each has Rename, Duplicate and Delete; New project creates one. The same actions, for the current project, are in the Project menu.

The projects: talk (open), paper and My project, each with Rename, Duplicate and Delete
The projects of this browser.

Projects live in this browser only. Clearing the site's data, a private window, or another browser or device does not have them. Download a .zip of the projects you care about from time to time, or share them to have a copy in another browser.

A project is edited in one tab at a time, to avoid conflicting changes. Opening it in another tab moves the editing there; the first tab says so, and Edit here brings it back; or it opens another project, or a new one, instead.

Each project is compiled with a version of TeX Live (Document ▸ TeX Live, or the settings): the newest for new projects. A project keeps its version until you change it, so that its pages do not change under you.

Engines: XeLaTeX and LuaLaTeX

A project is compiled with XeLaTeX unless it says otherwise. The engine shows at the top, next to Share: a click on it, or Document ▸ Engine, switches to LuaLaTeX, with the versions of TeX Live that have it. The switch is the project's: for a shared project, it changes for everyone.

Slides (beamer)

For beamer presentations:

A beamer presentation: the frames menu above the editor, and one slide in the preview
The cursor in the frame “The idea”: the preview shows its slide.

Editing together

Share, at the top (or Project ▸ Share…), makes a link: anyone who opens it edits the project with you, at the same time, and sees your cursor. Send it as you would a document: whoever has the link can edit.

The share dialog: the link, your name, who is there, and the changes kept until a date
The share dialog, with the changes kept on the server.
Text added by a coauthor, underlined in his color, and a notice that his changes are in
Kenji’s sentence, added while Alice was away, underlined in his color.

The files go directly from browser to browser, encrypted, while the project is open in both. The server that puts them in touch sees neither the files nor the key of the link. Some company or mobile networks forbid direct connections: two people both on such networks may not see each other.

Changes kept for the absent

Changes go from browser to browser only while both are open. If you work at different times (in different time zones, say), your coauthor would only get your changes the next time you are both online.

So, when the last other person leaves, TeXpresso offers to keep the changes on the server (you can also turn it on in the share dialog). Then:

Kenji left. Keep your changes for them on the server? No, thanks; Keep the changes
The offer, when the last other person leaves.

The changes are encrypted in your browser with the key of the link: the server cannot read them. It keeps them without guarantee (it may be full, or down): the copy in each browser stays the reference. A project of more than about 20 MB cannot be kept.

Settings

Project ▸ Settings…. Settings are kept in this browser, and apply at once; most are also in the View menu.

The settings dialog
The settings.
SettingWhat it does
Show the cursor in the previewShows your cursor (or selection) in the pages, and scrolls to keep it on screen. On by default.
Show typing immediatelyWhat you type shows in the pages at once, before TeX catches up (without kerning, until it does). On by default, with the cursor shown.
Preview on the leftSwaps the editor and the preview.
Vim keysVim's modes and commands in the editor: Esc for normal mode, the mode shown below the text; :w saves at once.
Low powerOnly the pages on screen are compiled; the next ones when you scroll to them (Export PDF still makes the whole document). Saves battery on long documents. Off by default.
Send crash reportsWhen the engine or the app fails, sends the error, the app's version and your browser's name, never your documents. On by default.
ThemeLight, dark, or as your system.
Compiled withThe version of TeX Live of this project. Another version may typeset it a little differently; for a shared project, it changes for everyone.
EngineXeLaTeX or LuaLaTeX, for this project (Engines).
The app in the dark theme
The dark theme. The pages stay as they will print.

Phones and tablets

On a small screen, the menus gather under ☰, the file list moves into a drawer (the sidebar button, at the top left), and buttons at the bottom choose what to show: Files, Edit or PDF, and on a tablet Both. Buttons of the top bar that do not fit, this manual among them, are under ⋯.

On a phone: the editor
Edit
On a phone: the pages
PDF
On a phone: the top bar unfolded by ⋯
⋯ unfolds the top bar

While the on-screen keyboard is open, a row above it has the characters TeX needs and keyboards hide: \ { } [ ] $ ^ _ & % ~ #. A long press on the preview jumps to the source.

Offline, and as an app

Once opened, TeXpresso works without a connection: projects open, and documents compile with the packages they used before. A package used for the first time needs the connection once.

Where the browser offers it, Install at the top adds TeXpresso to your device as an app, with its own window and icon.

What leaves your browser

Your documents are not sent anywhere, except as you choose:

The app downloads TeX Live packages as your documents need them: the server sees which packages are fetched, not your documents.

Limits

JSPI

JSPI (JavaScript Promise Integration) is a recent addition to WebAssembly: it lets TeX, compiled to WebAssembly, pause in the middle of a run, to wait for a file to download or for your next edit, and go on from there. TeXpresso uses it to keep the run alive between edits, and to compile again only from the place of a change. The latest Chrome, Edge, Firefox and Safari have it. Without it, TeXpresso compiles the whole document after each change: it shows a warning once, then (JSPI not available) in the top bar. Updating the browser, or trying another one, fixes it.

Keyboard shortcuts

On a Mac, ⌘ replaces Ctrl.

KeysWhereDoes
F10AnywhereThe menus: then the arrows, Enter, Esc
Alt+EnterEditorShow the current line in the preview
Click, dragPreviewPut the cursor there, select
Double-click on a linkPreviewFollow it
Long pressPreview, touch screensJump to the source
Ctrl+Alt+GEditorGo to line
Ctrl+FEditorSearch and replace
Ctrl+Z, Ctrl+Shift+ZEditorUndo, redo
Ctrl+/EditorComment or uncomment the lines
Tab, Shift+TabEditorIndent, unindent
Alt+↑, Alt+↓EditorMove the line up, down
Ctrl+DEditorSelect the next occurrence
Esc, :wEditor, with Vim keysNormal mode; save
Arrows, Space, Page Up/Down, Home, EndSlidesMove between slides
EscPresentingLeave full screen
Enter, Shift+EnterFeedbackSend; new line

Help and feedback

TeXpresso is in beta. The Feedback panel, in the corner of the app, is a conversation with us: tell us what works, what does not, what you miss. A few words are enough, and we read every message. If you would like an answer, leave an e-mail.