Help
Try it out: the Examples dropdown
The fastest way to see the engine work is the examples dropdown
at the top of the source pane. It collects a curated mix of small math snippets,
tables, TikZ figures, upto a sample paper. Selecting a different example
replaces the project files in the editor and renders the result in the preview pane.
Pick an example, watch it convert, then try editing. The preview
re-renders 300 ms after you stop typing.
Editing & preview
- While a conversion is running you'll see a diagonal-stripe
watermark on the preview pane, a spinner cursor, and a live
status counter (
converting… (Xs)). Large source bundles can take 5–120 seconds. - Type LaTeX in the source pane; the preview re-renders 300 ms after you stop typing.
- Click the status bar to toggle the conversion log. That is useful when something looks off in the preview and you want to see the engine's conversion trace.
- If the preview pane is empty (no
.texfile in your project) the editor sits idle. Usecreateoruploadin the file panel to start a project.
Source ↔ preview sync
The editor and the preview stay anchored to each other through
source locators: as it converts, latexml-oxide
stamps every rendered construct with the source file, line, and column it
came from. Two navigation aids ride on that mapping — one in each
direction. Both work automatically; there is nothing to switch on.
- Scroll to preview location (editing → preview). Every time the preview re-renders after an edit, it scrolls to and briefly highlights the construct that matches where your caret was sitting. So you keep typing and the right part of the rendered page follows you — no hunting for what just changed.
- Scroll to editor location (preview → editing).
Double-click anywhere inside the preview to jump the
editor caret to the source that produced it: the matching line scrolls
to the centre of the source pane and pulses. If that construct came from
a different file (e.g. an
\inputted chapter), the editor switches to that buffer first. Single clicks are left alone, so reading, selecting text, and following links all work as usual.
A note on precision: line numbers are exact, but columns are best-effort — text inside a macro argument reports the column of the macro rather than of the character, so the highlight covers the whole matched construct (or whole line) rather than a single character. You always land on the right line. Double-clicking in the blank space between blocks, or anywhere that maps to no source (some generated content), simply does nothing.
The file panel
The leftmost column lists every file in your current session. Click any
file to open it in the editor. Switching the active file does
not trigger a re-conversion: the engine always renders the
project's main entry (auto-detected from
00README.json if present, otherwise via the same heuristic
arXiv uses), regardless of which buffer you're viewing.
Each row reveals a small × on hover that deletes the
file (or recursively removes the folder, with confirmation). Conversions
fire only on events that actually change what gets rendered:
edits, uploads, deletes, file creation, clearing, and example swaps.
The four header buttons
Above the file list, four buttons control the project as a whole.
The upload button has both a click and a drag-and-drop
behaviour; the rest are click-only.
| Button | Click | Drag |
|---|---|---|
create |
Prompts for a relative path (e.g. chapter1.tex) and writes an empty file there. |
— |
upload |
Pick any number of loose files, or a single
.zip / .tar.gz / .tgz
archive that the server unpacks into the project. |
Drop a folder, files, or an archive anywhere on the file panel (the whole sidebar is a drop target; it lights up while a drag hovers over it). Sub-directory layout is preserved. |
download |
Bundles every file plus the latest rendered
index.html and the CSS stylesheet pack into
a single ZIP. Extract anywhere and open
index.html for an offline copy. |
— |
clear |
Deletes every file in the project (with a confirmation dialog). The session itself stays open. Hovers red to flag the destructive action. | — |
Validating documents
The Validator tab checks a pasted or
uploaded document against the site's schemas and shows the report
inline. Under the hood it is a hosted Nu validator, reachable as a REST
endpoint: POST /api/validate with your document as
the request body. The Content-Type picks the schema
— text/html for the scholarly HTML5 profile
(the default), application/latexml+xml for the
engine's native XML, application/mathml+xml for
MathML 4 Core — and the response is the validator's
JSON report (an empty messages list means valid).
curl -X POST https://latexml.rs/api/validate \
-H 'Content-Type: text/html; charset=utf-8' \
--data-binary @paper.html
See the Schemas page for the full Content-Type table, output formats, and limits — and for the browseable reference documentation of all three schemas.
Themes
Click the chrome-theme button at the top-right to cycle through the two palettes. Your choice is remembered across reloads.
| Theme | Surface | Best for |
|---|---|---|
light |
Warm cream surfaces, burnt-orange accent, serif preview type. | Long-form reading; the default when your system prefers a light color scheme. |
dark |
Deep-ink surfaces, warm-amber accent. | Late-night editing without going jet-black; the default when your system prefers a dark color scheme. |