# Latex To Word

> >-

- **Type:** Skill
- **Install:** `agentstack add skill-kennethkhoocy-legal-scholarship-skills-latex-to-word`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [kennethkhoocy](https://agentstack.voostack.com/s/kennethkhoocy)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [kennethkhoocy](https://github.com/kennethkhoocy)
- **Source:** https://github.com/kennethkhoocy/legal-scholarship-skills/tree/main/plugins/legal-scholarship/skills/latex-to-word

## Install

```sh
agentstack add skill-kennethkhoocy-legal-scholarship-skills-latex-to-word
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 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`/`\eqref` from 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 → docx` step is plain pandoc plus a style-templated `scripts/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:

```bash
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:

```bash
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:

```bash
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 `.aux` the
  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.py` resolves the pandoc / latexmk / xelatex executable
  locations for `scripts/convert.py`, `scripts/render_latex_env.py`, and
  `scripts/gen_reference.py`; `gui.py`, the round-trip helpers, and
  `tests/run_tests.py` still call bare `pandoc`/`xelatex`/`latexmk` from 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** (in `expand_latex_inputs`). See the
  "Ported from tex2docx" section of `references/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.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [kennethkhoocy](https://github.com/kennethkhoocy)
- **Source:** [kennethkhoocy/legal-scholarship-skills](https://github.com/kennethkhoocy/legal-scholarship-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-kennethkhoocy-legal-scholarship-skills-latex-to-word
- Seller: https://agentstack.voostack.com/s/kennethkhoocy
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
