Latex to word
Skill kennethkhoocy/applied-micro-skills/plugins/applied-micro/skills/latex-to-word
Convert between LaTeX and Microsoft Word for academic manuscripts in either direction, and assemble .tex from mixed sources. Fires on: converting .tex/LaTeX to Word/.docx ("tex to docx", "latex to word", "tex2docx", "convert to word", "pandoc convert"); converting .docx manuscripts to LaTeX for editing and back ("convert to latex", "manuscript", "footnotes", "reference doc", the docx-to-tex-to-docx round-trip / academic paper editing pipeline); high-fidelity delivery where plain pandoc loses tables, mangles cross-references, or fails on custom macros — booktabs/regression tables, OMML equations, cleveref, \estauto, \@@input, \thanks, TikZ, native Word tables, longtable, siunitx; and building .tex from mixed PDF/docx/LLM-generated sources. Replaces and reroutes the retired skills manuscript-editing-template-latex, latex-to-docx-fidelity, tex2docx, and latex-from-mixed-sources.From its SKILL.md
npx -y skills add kennethkhoocy/applied-micro-skills --skill latex-to-wordAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
6.6 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
LaTeX ↔ Word
This skill moves academic manuscripts between LaTeX and Microsoft Word and
assembles .tex from heterogeneous sources. It consolidates four former skills
into three workflows: a footnote-preserving round-trip for co-author editing
cycles, a high-fidelity one-way .tex → .docx engine for delivering finished
papers to Word-only journals or coauthors, and a set of knowledge patterns
for building a single .tex from PDF/docx/LLM-generated content. Read the deep
doc for the workflow you need before running anything.
Routing
| User intent | Workflow | Entry point | Deep doc |
|---|---|---|---|
| Deliver a finished LaTeX paper as high-fidelity Word (regression tables, math, cross-references must survive) | B — one-way tex→docx | scripts/convert.py | references/tex-to-docx-engine.md |
| Iterate on a manuscript with Word-based co-authors while editing in LaTeX (docx→tex→docx, footnotes preserved) | A — round-trip | gui.py, or scripts/docx_to_tex.py + scripts/tex_to_docx.py | references/roundtrip.md |
Build a .tex from PDF / .docx / LLM-generated text | C — assemble from mixed sources | knowledge patterns (no scripts) | references/mixed-sources.md |
Which workflow
- B is the default for "deliver my LaTeX paper as Word." The fidelity engine
builds native Word tables, OMML equations, real footnotes, embedded figures,
and resolves
\cref/\Cref/\eqreffrom the.aux. Use B whenever the paper has regression/booktabs tables, math, or cross-references that must survive — plain pandoc drops or mangles all of these. - A is for iterating with Word-based co-authors while you edit in LaTeX. Its
tex → docxstep is plain pandoc plus a style-templatedscripts/reference.docx(fast, formatting-only), so it does not build native tables or resolve crefs. Choose A when the exchange is prose and footnotes and speed matters; switch to B once the document depends on tables/math/cross-references. - C is knowledge-only — patterns for a pipeline that emits
.tex, applied when you author the pipeline. No script to invoke.
Quick start
Workflow B (one-way, high fidelity) — compile the source once so a current .aux
exists, then:
python scripts/convert.py path/to/main.tex --out main.docx
# optional: --aux main.aux --tables-dir tables --figures-dir figures \
# --font "Linux Libertine G" --no-render
Workflow A (round-trip) — either launch the GUI:
python gui.py
or drive the two version-aware helpers (they wrap pandoc + reference.docx and run
the footnote-count sanity check), using the input/ intermediate/ output/ layout:
python scripts/docx_to_tex.py v1 # input/input_v1.docx -> intermediate/intermediate_v1.tex
# edit intermediate/intermediate_v2.tex ...
python scripts/tex_to_docx.py v2 # intermediate/intermediate_v2.tex -> output/output_v2.docx
Workflow C — no command; read references/mixed-sources.md and apply the
two-track escaping / code-fence-stripping / \DeclareUnicodeCharacter patterns
in your own generator.
Tool requirements
- pandoc (3.x for the engine; ≥ 2.11 for the round-trip).
- xelatex / latexmk (TeX Live or MiKTeX) — required to produce the
.auxthe engine reads, and for TikZ/PGFPlots/algorithm rendering. - python-docx, lxml — native table and OOXML construction.
- Optional PyMuPDF (fitz) + Pillow — QA rasterization and image rendering.
- Optional Microsoft Word (COM, via
win32com) or LibreOffice (soffice) — final render-to-PDF check. scripts/toolcheck.pyresolves the pandoc / latexmk / xelatex executable locations forscripts/convert.py,scripts/render_latex_env.py, andscripts/gen_reference.py;gui.py, the round-trip helpers, andtests/run_tests.pystill call barepandoc/xelatex/latexmkfrom PATH.
Consolidation notes
This skill merges four predecessors; their old names route here via the description above:
- manuscript-editing-template-latex → workflow A (
references/roundtrip.md). - latex-to-docx-fidelity → workflow B (
references/tex-to-docx-engine.md). - latex-from-mixed-sources → workflow C (
references/mixed-sources.md). - tex2docx (retired). Its pandoc-postprocessing fix registry was diffed
against the fidelity engine: six of seven fixes were already subsumed
architecturally, because the engine prevents upstream what tex2docx patched
after the fact — tables, figures, and captions never pass through pandoc, so
the damage tex2docx repaired downstream never occurs. The two genuine gaps were
ported INTO the engine: the notes-punctuation normalizer
(
normalize_note_text, applied to table-notes text in both table engines) and\include{}expansion (inexpand_latex_inputs). See the "Ported from tex2docx" section ofreferences/tex-to-docx-engine.md.
tests/ holds the 46-fixture (t01–t46) regression harness driven by
tests/run_tests.py and scored by tests/qa_metrics.py. It ships source .tex
fixtures only — compiled PDFs, rendered PNGs, and .docx artifacts regenerate
on each run. Fix the converter under scripts/, never the fixtures.
Caution: gui.py bypasses permission prompts
gui.py invokes the Claude CLI with --dangerously-skip-permissions for its
auto-edit and auto-fix loops (the "Edits" box and the automatic XeLaTeX-error
repair). This bypasses the normal permission prompts, so any tool call Claude
makes in those loops runs without confirmation. Review gui.py (see the two
--dangerously-skip-permissions invocations) and understand what the auto loops
can do before enabling that path.
What ships with it: 89 files
568.7 KB alongside SKILL.md, 30 of them executable
references/
- mixed-sources.md4.4 KB
- roundtrip.md11.6 KB
- tex-to-docx-engine.md20.3 KB
scripts/
- assemble.pyruns334 B
- build_all_estout.pyruns364 B
- build_fulltabular.pyruns3.9 KB
- cleanup_tex.pyruns1.8 KB
- combine_sections.pyruns3.3 KB
- convert.pyruns173.6 KB
- crop_white.pyruns599 B
- detect_rules.pyruns1.3 KB
- docx_to_tex.pyruns1.8 KB
- extract_tables.pyruns1.0 KB
- fix_quotes.pyruns3.1 KB
- full_tabular_to_docx.pyruns31.9 KB
- gen_reference.pyruns4.9 KB
- gen_test_docx.pyruns16.1 KB
- inspect_lastrow.pyruns742 B
- mhchem_unicode.pyruns5.8 KB
- pdf_to_png.pyruns441 B
- postprocess_docx.pyruns4.3 KB
- reference.docx10.7 KB
- render_all_pages.pyruns461 B
- render_latex_env.pyruns8.0 KB
- render_ref.pyruns1.1 KB
- siunitx_expand.pyruns7.2 KB
- tex_table_to_docx.pyruns13.9 KB
- tex_to_docx.pyruns3.9 KB
- toolcheck.pyruns3.4 KB
tests/
- qa_metrics.pyruns14.9 KB
- run_tests.pyruns11.3 KB
- t01_booktabs/t01_booktabs.tex1.5 KB
- t02_longtable/t02_longtable.tex5.5 KB
- t03_tabularx_multirow/t03_tabularx_multirow.tex1.5 KB
- t04_threeparttable/t04_threeparttable.tex1.0 KB
- t05_siunitx/t05_siunitx.tex1.1 KB
- t06_math/t06_math.tex1.4 KB
- convert_bracket_footnotes.pyruns4.3 KB
- gui.pyruns24.6 KB
- README.md10.8 KB
49 more files not listed here. See all 89 in the repository.