$ man manuscripta — the method

How a manuscript makes the round trip

Five sections: the two conversion directions, the merge, the engine that runs them, and why it is safe to hand it your only copy.

01

LaTeX → Word

tex2docx

You upload the flattened .tex and its compiled PDF. Every equation is set as native OMML — Word's own math format, editable in place — never as an image. Numbered equations keep visible numbers, including subequations (1a, 1b) and \nonumber; every \eqref and \ref resolves to the number the PDF shows. Citations from a manual thebibliography are restored as [n].

Figures get three chances — the .docx never ships without them:

// figure resolution order
1  project files — recursive search, zip subfolders included
2  missing on disk → caption-anchored crop from the compiled PDF
3  last resort → full-page renders into <name>_pdf_pages/
02

Word → LaTeX + PDF

docx2latex

The from-scratch direction most people need — no original .tex required. A Word manuscript becomes a clean LaTeX project on a built-in single- or double-column article template. OMML equations become real LaTeX math, figures are extracted and captioned, tables are rebuilt for the chosen layout, and Word's unicode habits — Greek letters, the U+2212 minus, ≤ ≈ ° — are made pdflatex-safe.

The PDF is compiled server-side, so you download both the source and a ready document. Templates use only stock TeX Live packages: the delivered .tex compiles anywhere, including Overleaf.

03

Word edits, merged into the original .tex

docx2tex --merge

You sent a .docx to a co-author; it came back full of prose edits. The merge is three-way: your original .tex, the base .docx you sent out, and the edited .docx that came back. Paragraphs are paired between base and edited; edits above a similarity threshold are transplanted into the .tex.

It is conservative by design. Macros, \cite, math spans and the preamble are kept byte-for-byte. Anything ambiguous — big rewrites, touched citations, edited math — lands in a .review.md report instead of silently corrupting the source.

// outputs
paper_updated.tex  — original source + accepted prose edits
paper.review.md    — every auto-applied edit + everything needing a human
04

The engine underneath

jobs

Every conversion is an isolated subprocess job with its own directory: uploads in, outputs out, and a merged stdout/stderr log streamed live to the console you watch. Jobs survive restarts honestly — anything caught mid-flight is marked interrupted, never lied about. A hard timeout means a pathological input cannot wedge the service, and a janitor deletes jobs older than 24 hours.

The UI is generated from a converter registry: the API describes each converter's inputs and options, and the page builds the form from that. A new converter appears with zero frontend work.

05

Why it's safe to hand it your only copy

security

Uploads are size-capped and streamed to disk with sanitised names; project zips are extracted with zip-slip protection and bomb limits. Downloads are containment-checked against the job's output directory. Conversions never touch a shell and are killed at the timeout.

The LaTeX → Word direction only parses LaTeX — no TeX engine runs on your source — which removes the classic \write18 attack surface entirely.

Want this inside your own network? talk to us about self-hosting →