Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

docrev

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

docrev - npm Package Compare versions

Comparing version
0.9.17
to
0.9.18
+180
issues.md
# docrev — Open Issues
Three issues identified during real-world use on the ADAPT proposal build. Working through one by one.
Status legend: `[ ]` planned · `[~]` in progress · `[x]` shipped
---
## Issue 1 — Allow custom pandoc filters / args through `rev build` `[x]`
### Problem
Source markdown with custom raw-LaTeX commands needs a pandoc filter to convert them for docx (e.g. `\tofill{X}` → bold `[X]`). `rev build docx` has no escape hatch:
- `rev build --help` exposes no `--filter` / `--lua-filter` / `--pandoc-arg`.
- `rev.yaml` exposes `docx.reference` and `docx.keepComments` but no generic pandoc passthrough.
Working around it requires letting `rev build` produce `paper.md` as a side effect, then calling pandoc manually — which defeats the point of `rev build`.
### Design (agreed)
**rev.yaml**: top-level `pandoc-args` (applied to every format) plus per-format `<format>.pandoc-args` (concatenated *after* the top-level list so format-specific can override):
```yaml
pandoc-args:
- --lua-filter=tofill_filter.lua
docx:
pandoc-args:
- --lua-filter=docx_only.lua
pdf:
pandoc-args:
- --variable=papersize:a4
```
**CLI**: repeatable `--pandoc-arg <arg>` on `rev build`, appended *after* config args so CLI wins:
```bash
rev build docx --pandoc-arg=--lua-filter=tofill.lua --pandoc-arg=--shift-heading-level-by=1
```
**Verbose mode**: `rev build --verbose` already exists but doesn't echo the pandoc invocation. Print the full `pandoc <args>` command (one line per format) so users can copy-paste to replicate manually.
### Touch points
- `lib/build.ts` — `BuildConfig` + `DEFAULT_CONFIG` (add `pandocArgs: string[]`; add `pandocArgs` to each format config), `buildPandocArgs()` (append top-level then format-specific), `runPandoc()` (echo command under verbose), `loadConfig()` (read hyphenated `pandoc-args` key and map to camelCase `pandocArgs`).
- `lib/commands/build.ts` — add `--pandoc-arg <arg>` (repeatable via custom collector), forward through `BuildOptions`, ensure CLI args are appended last.
- `lib/schema.ts` — declare `pandoc-args` (array of strings) at top level and inside each format object.
- `skill/SKILL.md` + `skill/REFERENCE.md` — document new field and flag with a `--lua-filter=` example.
- `test/build.test.js` — cover (a) top-level only, (b) format-specific only, (c) both concatenated in order, (d) CLI overrides config.
### Open questions
None. Hyphenated YAML key + camelCase TS field is consistent with how the rest of the schema is read (we're already free-form on the JS side, just need a small key transform in `loadConfig`).
---
## Issue 2 — Output filename is auto-truncated mid-word and not configurable `[x]`
### Problem
Default output landed at `output/adapt-alien-dark-diversity-across-plant-communitie.docx` — title slugified and hard-truncated at 50 chars (`communitie` missing the trailing `s`). No `-o` flag, no `output:` field in `rev.yaml`.
Root cause: `lib/build.ts:1055-1056` (`runPandoc`) and `lib/commands/build.ts:591-592` (`--show-changes` path):
```ts
const baseName = config.title
? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50)
: 'paper';
```
`.slice(0, 50)` is a blind cut.
### Design (agreed)
**rev.yaml**: per-format `output:` map. Extensions optional — added if missing.
```yaml
output:
docx: ADAPT_proposal_draft.docx
pdf: ADAPT_proposal_draft.pdf
```
**CLI**: `-o, --output <path>` on `rev build`. When multiple formats are built, applies as basename to all (extension swapped per format); for single-format builds, used verbatim.
**Truncation fix**: when no `output:` is configured, slug at last `-` boundary at-or-before 50 chars instead of mid-word. Also bump the cap to 80 — 50 is conservative.
**Doc fix**: surface the default `output/` directory in `rev build --help` and SKILL.md "Project Structure" tree (already mentioned in passing — make it explicit).
### Touch points
- `lib/build.ts` — `BuildConfig` (`output?: Record<string, string>`), `DEFAULT_CONFIG`, `runPandoc()` (resolve filename: `config.output[format]` → CLI `-o` → slug). Helper: `resolveOutputName(config, format, cliOverride)`.
- `lib/commands/build.ts` — add `-o, --output <path>` flag, wire into `BuildOptions`; same fix applied to the `--show-changes` branch's `baseName` construction.
- `lib/schema.ts` — declare `output` as object mapping format → string.
- `skill/SKILL.md` — "Project Structure" tree explicitly notes `output/`; new `output:` example under config.
- `test/build.test.js` — cover (a) `output:` per-format honored, (b) `-o` CLI override, (c) word-boundary truncation when title >50 chars.
### Resolved
- `-o` relative paths resolve under `outputDir`; absolute paths bypass it. Same rule applies to values in `output:`.
- Cap raised from 50 → 80 chars; fallback truncates at the last `-` boundary at-or-before the cap so words stay whole (the ADAPT title now slugs cleanly without losing the trailing "s" on "communities").
- `--show-changes` and `--dual` derived filenames (`-changes.docx`, `_comments.docx`, `_comments.pdf`) follow the chosen base name.
- Fixed an unrelated misleading example in SKILL.md that showed `output: { docx: { reference-doc: ... } }` — the real config key is `docx.reference` (top-level), not nested under `output:`.
---
## Issue 3 — Raw LaTeX figure blocks silently disappear in docx builds `[x]`
### Problem
Source markdown with `\begin{figure}[H]\includegraphics{...}\end{figure}` blocks renders correctly in the PDF target but produces a docx where all figures are silently missing. Pandoc strips the raw LaTeX because docx has no LaTeX rendering pipeline. No warning is emitted.
This catches you only on careful inspection — a less careful user would ship a docx with no figures and not notice until a reviewer asks.
### Design (agreed)
Three layers, combined:
**1. Warn during build (always on).** In `applyFormatTransforms()` for docx, scan for raw LaTeX figure environments (`\begin{figure}` … `\end{figure}` containing `\includegraphics`). Emit:
```
Warning: 3 raw LaTeX figure block(s) won't render in docx.
intro.md:42 \begin{figure}[H] ... \includegraphics{figures/map.pdf} ...
methods.md:118
results.md:201
Hint: use ![caption](path){#fig:label width=80%} for format-portable figures, or
pass --pandoc-arg=--lua-filter=<your.lua> to translate them yourself.
```
Counted by file/line so the user can jump to fix.
**2. Auto-translate the common shape (opt-out via `docx.translateRawFigures: false`).** Convert
```latex
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{figures/map.pdf}
\caption{Map of study sites.}
\label{fig:map}
\end{figure}
```
```markdown
![Map of study sites.](figures/map.pdf){#fig:map width=80%}
```
Cover the 80% case. If the block has anything more exotic (`\subfloat`, `\rotatebox`, multi-`\includegraphics`), skip auto-translate, warn loudly, and leave the block as-is.
Width conversion: `0.8\textwidth` → `80%`; bare `8cm` → `8cm`; missing → omit.
**3. Document.** SKILL.md "Cross-References" section currently mentions `@fig:label` and `{#fig:label}` but doesn't show how to *insert* a figure. Add:
```markdown
![Caption text.](figures/foo.pdf){#fig:foo width=80%}
```
Note this is the format-portable form. Also mention that raw `\begin{figure}` blocks are PDF-only.
### Touch points
- `lib/build.ts` — new helper `detectRawLatexFigures(content): {file?, line, block}[]` and `translateRawLatexFigures(content): {translated, untranslatedCount}`. Wire into `applyFormatTransforms()` for docx (after `convertDynamicRefsToDisplay`).
- `lib/build.ts` — propagate warnings up via the existing `warnings: string[]` returned by `build()`. `rev build` already prints from there.
- `lib/commands/build.ts` — surface warnings in normal output (not just verbose).
- `lib/schema.ts` — declare `docx.translateRawFigures: boolean` (default true).
- `skill/SKILL.md` — figure-insertion example under "Cross-References".
- `test/build.test.js` — cover (a) detection counts blocks correctly, (b) auto-translate of `\includegraphics{path}`, (c) auto-translate of `\includegraphics[width=0.8\textwidth]{path}` → `width=80%`, (d) exotic block → not translated, warned, left alone, (e) opt-out via `translateRawFigures: false`.
### Open questions
- Should auto-translate also handle bare `\includegraphics{...}` outside a `figure` env? Lean no — keep scope to figure environments. If a user writes raw `\includegraphics` without wrapping, that's a deliberate choice we shouldn't second-guess.
- Width unit handling: `0.8\textwidth` → `80%` is unambiguous. `\linewidth` → `100%`? Yes. Other relative units → leave raw and warn.
---
## Working order
1. **Issue 1** first — unblocks immediate workflow needs and provides the manual escape hatch for issue 3 even before auto-translate ships.
2. **Issue 2** next — small, low-risk, quality-of-life win.
3. **Issue 3** last — biggest behavior change; benefits from the verbose pandoc echo (Issue 1) for debugging the lua-filter fallback path.
/* ── Base ──────────────────────────────────────────────── */
html, body {
height: 100%;
}
body {
background-color: #F5F6F8;
color: #3E3F3A;
display: flex;
flex-direction: column;
min-height: 100vh;
padding-top: 4rem;
font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}
.container { flex: 1; }
footer { margin-top: auto; }
/* ── Navbar (pkgdown-style subtle tint, not bg-primary) ── */
.navbar {
background: color-mix(in oklab, color-mix(in oklab, var(--bs-body-bg) 95%, var(--bs-primary)) 95%, var(--bs-body-color));
border-bottom: 1px solid #DFD7CA;
line-height: initial;
}
.navbar .nav-link.active {
font-weight: 600;
color: var(--bs-primary) !important;
}
/* ── Links ─────────────────────────────────────────────── */
a { color: #325D88; }
a:hover { color: #1E3D5C; }
/* ── Headings ──────────────────────────────────────────── */
h1 { font-size: 2rem; font-weight: 600; margin-bottom: 1rem; }
h2 {
font-size: 1.4rem; font-weight: 600;
margin-top: 2rem; margin-bottom: .65rem;
padding-bottom: .3rem;
border-bottom: 1px solid #DFD7CA;
}
h3 { font-size: 1.1rem; font-weight: 600; margin-top: 1.5rem; }
h4 { font-size: 1rem; font-weight: 600; margin-top: 1.2rem; }
/* ── Code ──────────────────────────────────────────────── */
pre, div.sourceCode {
background-color: #EEEEED;
border: 1px solid #DFD7CA;
border-radius: .375rem;
padding: .9rem 1.1rem;
font-size: .85rem;
overflow-x: auto;
margin: 1em 0;
}
code {
background-color: #EEEEED;
color: #3E3F3A;
border-radius: .25rem;
padding: .1em .35em;
font-size: .875em;
}
pre code, div.sourceCode code {
background: none;
padding: 0;
border-radius: 0;
font-size: inherit;
color: inherit;
}
div.sourceCode { padding: 0; }
div.sourceCode pre { border: none; margin: 0; }
/* ── Tables ────────────────────────────────────────────── */
table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: .9rem;
}
thead th {
background-color: #DFD7CA;
color: #3E3F3A;
font-weight: 600;
padding: .5rem .75rem;
border-bottom: 2px solid #c8c0b4;
text-align: left;
}
td, th { padding: .4rem .75rem; border-bottom: 1px solid #e8e2d8; }
tbody tr:hover { background-color: rgba(223,215,202,.2); }
/* ── TOC sidebar ───────────────────────────────────────── */
aside#toc, aside .toc, aside nav.toc { font-size: .875rem; }
aside h2.h6 {
text-transform: uppercase;
font-size: .68rem;
letter-spacing: .07em;
color: #6c757d;
font-weight: 600;
margin-bottom: .5rem;
border: none;
padding: 0;
}
aside .toc, aside #TOC {
position: sticky;
top: 5rem;
max-height: calc(100vh - 6rem);
overflow-y: auto;
}
aside ul {
list-style: none;
padding-left: .9rem;
margin: 0;
}
aside > nav > .toc > ul,
aside .toc > ul { padding-left: 0; }
aside li { margin: .1rem 0; }
aside a {
color: #6c757d;
text-decoration: none;
display: block;
line-height: 1.55;
}
aside a:hover { color: #325D88; }
/* ── Home page cards ───────────────────────────────────── */
.doc-card {
border: 1px solid #DFD7CA;
border-radius: .375rem;
padding: 1.1rem 1.25rem;
height: 100%;
background: #fff;
transition: border-color .15s, box-shadow .15s;
}
.doc-card:hover {
border-color: #325D88;
box-shadow: 0 2px 8px rgba(50,93,136,.1);
}
.doc-card h5 { font-size: 1rem; font-weight: 600; margin-bottom: .4rem; }
.doc-card p { font-size: .875rem; color: #6c757d; margin-bottom: .6rem; }
.doc-card a.stretched-link::after { z-index: 1; }
/* ── Badges row ────────────────────────────────────────── */
.badge-row { margin-bottom: 1rem; line-height: 2; }
.badge-row img { margin-right: .25rem; }
/* ── ── ── DARK MODE ── ── ── ──────────────────────────── */
[data-bs-theme="dark"] body { background-color: #343739; color: #DFD7CA; }
[data-bs-theme="dark"] .navbar {
background: color-mix(in oklab, color-mix(in oklab, #343739 92%, var(--bs-primary)) 95%, #DFD7CA);
border-bottom-color: #495057;
}
[data-bs-theme="dark"] a { color: #7ba8d0; }
[data-bs-theme="dark"] a:hover { color: #a5c4e8; }
[data-bs-theme="dark"] .navbar .nav-link.active { color: #7ba8d0 !important; }
[data-bs-theme="dark"] h1,
[data-bs-theme="dark"] h2,
[data-bs-theme="dark"] h3,
[data-bs-theme="dark"] h4 { color: #DFD7CA; }
[data-bs-theme="dark"] h2 { border-color: #495057; }
[data-bs-theme="dark"] pre,
[data-bs-theme="dark"] div.sourceCode {
background-color: #2C2F31;
border-color: #495057;
color: #DFD7CA;
}
[data-bs-theme="dark"] code {
background-color: #2C2F31;
color: #DFD7CA;
}
[data-bs-theme="dark"] div.sourceCode span[class] { color: #DFD7CA !important; }
[data-bs-theme="dark"] thead th {
background-color: #3d4043;
color: #DFD7CA;
border-color: #495057;
}
[data-bs-theme="dark"] td,
[data-bs-theme="dark"] th { border-color: #3d4043; }
[data-bs-theme="dark"] tbody tr:hover { background-color: rgba(73,80,87,.3); }
[data-bs-theme="dark"] aside a { color: #8e9499; }
[data-bs-theme="dark"] aside a:hover { color: #7ba8d0; }
[data-bs-theme="dark"] .doc-card {
background: #2C2F31;
border-color: #495057;
}
[data-bs-theme="dark"] .doc-card:hover { border-color: #7ba8d0; }
[data-bs-theme="dark"] .doc-card p { color: #8e9499; }
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Commands — docrev</title>
<meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
<style>
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="assets/extra.css">
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
<div class="container">
<a class="navbar-brand me-2" href="index.html">docrev</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="workflow.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="commands.html">Commands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="configuration.html">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
<svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/>
</svg>
<svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/>
</svg>
</button>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
<path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container template-article">
<div class="row">
<main id="main" class="col-md-9">
<h1 id="command-reference">Command Reference</h1>
<p>Complete list of <code>rev</code> commands.</p>
<h2 id="build-create">Build &amp; Create</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev build [formats...]</code></td>
<td>Build PDF/DOCX/TEX from sections</td>
</tr>
<tr>
<td><code>rev build pdf</code></td>
<td>Build PDF only</td>
</tr>
<tr>
<td><code>rev build docx</code></td>
<td>Build DOCX only</td>
</tr>
<tr>
<td><code>rev build tex</code></td>
<td>Build LaTeX only</td>
</tr>
<tr>
<td><code>rev build all</code></td>
<td>Build PDF + DOCX + TEX</td>
</tr>
<tr>
<td><code>rev build --toc</code></td>
<td>Include table of contents</td>
</tr>
<tr>
<td><code>rev build --dual</code></td>
<td>Output clean + comments DOCX (with threaded comments)</td>
</tr>
<tr>
<td><code>rev build --show-changes</code></td>
<td>Export DOCX with visible track changes</td>
</tr>
<tr>
<td><code>rev new &lt;name&gt;</code></td>
<td>Create new project (prompts for sections)</td>
</tr>
<tr>
<td><code>rev new &lt;name&gt; -s intro,methods,results</code></td>
<td>Create with specified sections</td>
</tr>
<tr>
<td><code>rev new --list</code></td>
<td>List available templates</td>
</tr>
<tr>
<td><code>rev install</code></td>
<td>Check/install dependencies (pandoc-crossref)</td>
</tr>
</tbody>
</table>
<h2 id="import-export">Import &amp; Export</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev import &lt;docx&gt;</code></td>
<td>Bootstrap project from Word (creates sections + rev.yaml)</td>
</tr>
<tr>
<td><code>rev import &lt;docx&gt; &lt;md&gt;</code></td>
<td>Import changes by diffing Word against your MD</td>
</tr>
<tr>
<td><code>rev sync [docx] [sections...]</code></td>
<td>Sync feedback from Word to section files</td>
</tr>
<tr>
<td><code>rev sync</code></td>
<td>Auto-detect most recent .docx</td>
</tr>
<tr>
<td><code>rev sync reviewed.docx methods</code></td>
<td>Sync only methods section</td>
</tr>
<tr>
<td><code>rev sync annotated.pdf</code></td>
<td>Extract comments from PDF into markdown</td>
</tr>
<tr>
<td><code>rev extract &lt;docx&gt;</code></td>
<td>Extract plain text from Word</td>
</tr>
<tr>
<td><code>rev archive</code></td>
<td>Move reviewer .docx files to archive folder</td>
</tr>
<tr>
<td><code>rev archive --by Smith</code></td>
<td>Specify reviewer name</td>
</tr>
<tr>
<td><code>rev archive --dry-run</code></td>
<td>Preview without moving</td>
</tr>
</tbody>
</table>
<p><strong>Word Import Features:</strong> - Extracts text
preserving structure - Extracts comments with author and anchor
text - Converts OMML equations to LaTeX - Extracts embedded images
to <code>media/</code> directory</p>
<h2 id="pdf-comments">PDF Comments</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt;</code></td>
<td>Extract and display comments from annotated PDF</td>
</tr>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt; --with-text</code></td>
<td>Also extract the highlighted text content</td>
</tr>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt; --append &lt;file.md&gt;</code></td>
<td>Append extracted comments to markdown file</td>
</tr>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt; --json</code></td>
<td>Output comments as JSON</td>
</tr>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt; --by-page</code></td>
<td>Group comments by page (default)</td>
</tr>
<tr>
<td><code>rev pdf-comments &lt;pdf&gt; --by-author</code></td>
<td>Group comments by author</td>
</tr>
<tr>
<td><code>rev build pdf --dual</code></td>
<td>Build clean PDF + annotated PDF with margin notes</td>
</tr>
</tbody>
</table>
<p><strong>Supported PDF Annotations:</strong> - Sticky notes
(Text annotations) - Text boxes (FreeText) - Highlights with
comments (text extraction supported) - Underlines with comments
(text extraction supported) - Strikethrough/deletion suggestions
(text extraction supported) - Squiggly underlines (text extraction
supported)</p>
<p><strong>Text Extraction:</strong> Use <code>--with-text</code>
to extract the actual text that was highlighted, underlined, or
struck through. This is slower but shows exactly what the reviewer
marked.</p>
<p><strong>PDF Dual Export:</strong> When building with
<code>--dual</code>, produces: - <code>paper.pdf</code> — clean
version for submission - <code>paper_comments.pdf</code> —
CriticMarkup comments rendered as LaTeX margin notes</p>
<h2 id="review-edit">Review &amp; Edit</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev review &lt;file&gt;</code></td>
<td>Interactive accept/reject TUI for track changes</td>
</tr>
<tr>
<td><code>rev status</code></td>
<td>Show project overview (words, comments, changes)</td>
</tr>
<tr>
<td><code>rev status &lt;file&gt;</code></td>
<td>Show annotation counts for specific file</td>
</tr>
<tr>
<td><code>rev comments &lt;file&gt;</code></td>
<td>List all comments with context</td>
</tr>
<tr>
<td><code>rev comments &lt;file&gt; --export comments.csv</code></td>
<td>Export comments to CSV</td>
</tr>
<tr>
<td><code>rev resolve &lt;file&gt; -n 1</code></td>
<td>Mark comment #1 as resolved</td>
</tr>
<tr>
<td><code>rev strip &lt;file&gt;</code></td>
<td>Output clean Markdown (annotations applied)</td>
</tr>
</tbody>
</table>
<h2 id="comment-navigation">Comment Navigation</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev next</code></td>
<td>Show next pending comment</td>
</tr>
<tr>
<td><code>rev next -n 3</code></td>
<td>Show 3rd pending comment</td>
</tr>
<tr>
<td><code>rev prev</code></td>
<td>Show last pending comment</td>
</tr>
<tr>
<td><code>rev prev -n 2</code></td>
<td>Show 2nd from last pending</td>
</tr>
<tr>
<td><code>rev first</code></td>
<td>Show first comment (all, not just pending)</td>
</tr>
<tr>
<td><code>rev first methods</code></td>
<td>First comment in methods section</td>
</tr>
<tr>
<td><code>rev last</code></td>
<td>Show last comment</td>
</tr>
<tr>
<td><code>rev todo</code></td>
<td>List all pending comments as checklist</td>
</tr>
<tr>
<td><code>rev todo --by-author</code></td>
<td>Group pending comments by author</td>
</tr>
</tbody>
</table>
<h2 id="track-changes">Track Changes</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev accept &lt;file&gt;</code></td>
<td>List track changes</td>
</tr>
<tr>
<td><code>rev accept &lt;file&gt; -n 1</code></td>
<td>Accept change #1</td>
</tr>
<tr>
<td><code>rev accept &lt;file&gt; -a</code></td>
<td>Accept all changes</td>
</tr>
<tr>
<td><code>rev reject &lt;file&gt; -n 1</code></td>
<td>Reject change #1</td>
</tr>
<tr>
<td><code>rev reject &lt;file&gt; -a</code></td>
<td>Reject all changes</td>
</tr>
</tbody>
</table>
<h2 id="cross-references">Cross-References</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev refs [file]</code></td>
<td>Show figure/table registry and reference status</td>
</tr>
<tr>
<td><code>rev migrate &lt;file&gt;</code></td>
<td>Convert hardcoded refs (Fig. 1) to dynamic (<span
class="citation" data-cites="fig:label">@fig:label</span>)</td>
</tr>
</tbody>
</table>
<p><strong>Supported patterns:</strong> - <code>Figure 1</code> →
<code>@fig:label</code> - <code>Fig. 2a</code> →
<code>@fig:label</code> - <code>Figs. 1-3</code> →
<code>@fig:one; @fig:two; @fig:three</code> -
<code>Figures 1, 2, and 3</code> → multiple refs -
<code>Fig. 1a-c</code> → expands letter suffixes</p>
<h2 id="comments-replies">Comments &amp; Replies</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev config user "Name"</code></td>
<td>Set your name for replies</td>
</tr>
<tr>
<td><code>rev config sections "a,b,c"</code></td>
<td>Set default sections for new projects</td>
</tr>
<tr>
<td><code>rev reply &lt;file&gt;</code></td>
<td>Interactive reply to reviewer comments</td>
</tr>
<tr>
<td><code>rev reply &lt;file&gt; -n 1 -m "text"</code></td>
<td>Reply to specific comment (non-interactive)</td>
</tr>
</tbody>
</table>
<p><strong>Comment Threading:</strong> Adjacent comments from
different authors become threaded replies in Word:</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>{&gt;&gt;Guy Colling: Question?&lt;&lt;} {&gt;&gt;Gilles Colling: Answer.&lt;&lt;}</span></code></pre></div>
<h2 id="bibliography-dois">Bibliography &amp; DOIs</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev doi check [file.bib]</code></td>
<td>Validate DOIs in bibliography (Crossref + DataCite)</td>
</tr>
<tr>
<td><code>rev doi lookup [file.bib]</code></td>
<td>Search for missing DOIs by title/author/year</td>
</tr>
<tr>
<td><code>rev doi fetch &lt;doi&gt;</code></td>
<td>Fetch BibTeX entry from DOI</td>
</tr>
<tr>
<td><code>rev doi add &lt;doi&gt;</code></td>
<td>Fetch and add DOI entry to bibliography</td>
</tr>
</tbody>
</table>
<p><strong>Options:</strong> -
<code>--confidence low|medium|high</code> - Filter lookup results
- <code>--strict</code> - Fail if articles are missing DOIs - Skip
entries: add <code>nodoi = {true}</code> or <code>% no-doi</code>
comment</p>
<h2 id="validation-analysis">Validation &amp; Analysis</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev citations [file.bib]</code></td>
<td>Validate citations against bibliography</td>
</tr>
<tr>
<td><code>rev figures [file]</code></td>
<td>List figures/tables with reference counts</td>
</tr>
<tr>
<td><code>rev equations list</code></td>
<td>List all equations in section files</td>
</tr>
<tr>
<td><code>rev equations from-word &lt;docx&gt;</code></td>
<td>Extract equations from Word to LaTeX</td>
</tr>
<tr>
<td><code>rev response [files]</code></td>
<td>Generate response letter from comments</td>
</tr>
<tr>
<td><code>rev anonymize &lt;file&gt;</code></td>
<td>Prepare document for blind review</td>
</tr>
<tr>
<td><code>rev validate --journal &lt;name&gt;</code></td>
<td>Check manuscript against journal requirements</td>
</tr>
<tr>
<td><code>rev validate --list</code></td>
<td>List 21 available journal profiles</td>
</tr>
</tbody>
</table>
<h2 id="multi-reviewer-git">Multi-Reviewer &amp; Git</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev merge &lt;md&gt; &lt;docx...&gt;</code></td>
<td>Merge feedback from multiple Word documents</td>
</tr>
<tr>
<td><code>rev diff [ref]</code></td>
<td>Compare sections against git history</td>
</tr>
<tr>
<td><code>rev history [file]</code></td>
<td>Show revision history for sections</td>
</tr>
</tbody>
</table>
<h2 id="convenience-commands">Convenience Commands</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev word-count</code></td>
<td>Show word counts per section</td>
</tr>
<tr>
<td><code>rev word-count --limit 5000</code></td>
<td>Warn if over limit</td>
</tr>
<tr>
<td><code>rev word-count -j &lt;journal&gt;</code></td>
<td>Use journal word limit</td>
</tr>
<tr>
<td><code>rev stats</code></td>
<td>Project dashboard (words, figures, citations)</td>
</tr>
<tr>
<td><code>rev search &lt;query&gt;</code></td>
<td>Search across all section files</td>
</tr>
<tr>
<td><code>rev search -i &lt;query&gt;</code></td>
<td>Case-insensitive search</td>
</tr>
<tr>
<td><code>rev backup</code></td>
<td>Create timestamped backup zip</td>
</tr>
<tr>
<td><code>rev backup --name v1</code></td>
<td>Custom backup name</td>
</tr>
<tr>
<td><code>rev export</code></td>
<td>Export project as distributable zip</td>
</tr>
<tr>
<td><code>rev preview &lt;format&gt;</code></td>
<td>Build and open document</td>
</tr>
<tr>
<td><code>rev watch [format]</code></td>
<td>Auto-rebuild on file changes</td>
</tr>
<tr>
<td><code>rev lint</code></td>
<td>Check for broken refs, missing citations</td>
</tr>
<tr>
<td><code>rev clean</code></td>
<td>Remove generated files</td>
</tr>
<tr>
<td><code>rev clean --all</code></td>
<td>Also remove backups and exports</td>
</tr>
<tr>
<td><code>rev check</code></td>
<td>Pre-submission check (lint + grammar + citations)</td>
</tr>
<tr>
<td><code>rev open</code></td>
<td>Open project folder</td>
</tr>
<tr>
<td><code>rev open paper.pdf</code></td>
<td>Open specific file</td>
</tr>
</tbody>
</table>
<h2 id="grammar-spelling">Grammar &amp; Spelling</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev grammar</code></td>
<td>Check grammar/style issues</td>
</tr>
<tr>
<td><code>rev grammar --rules</code></td>
<td>List available grammar rules</td>
</tr>
<tr>
<td><code>rev grammar --learn &lt;word&gt;</code></td>
<td>Add word to custom dictionary</td>
</tr>
<tr>
<td><code>rev grammar --list</code></td>
<td>Show custom dictionary</td>
</tr>
<tr>
<td><code>rev spelling</code></td>
<td>Check spelling in all sections</td>
</tr>
<tr>
<td><code>rev spelling --british</code></td>
<td>Use British English dictionary</td>
</tr>
<tr>
<td><code>rev spelling --learn &lt;word&gt;</code></td>
<td>Add word to global dictionary</td>
</tr>
<tr>
<td><code>rev spelling --learn-project &lt;word&gt;</code></td>
<td>Add word to project dictionary</td>
</tr>
</tbody>
</table>
<h2 id="direct-docx-editing">Direct DOCX Editing</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 59%" />
</colgroup>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev annotate &lt;docx&gt; -m "Comment" -s "text"</code></td>
<td>Add comment to Word doc</td>
</tr>
<tr>
<td><code>rev apply &lt;md&gt; &lt;docx&gt;</code></td>
<td>Apply annotations as track changes</td>
</tr>
<tr>
<td><code>rev comment &lt;docx&gt;</code></td>
<td>Interactive comment mode</td>
</tr>
</tbody>
</table>
<h2 id="shell-completions">Shell Completions</h2>
<div class="sourceCode" id="cb2"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Bash - add to ~/.bashrc</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="bu">eval</span> <span class="st">&quot;</span><span class="va">$(</span><span class="fu">rev</span> completions bash<span class="va">)</span><span class="st">&quot;</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a><span class="co"># Zsh - add to ~/.zshrc</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a><span class="bu">eval</span> <span class="st">&quot;</span><span class="va">$(</span><span class="fu">rev</span> completions zsh<span class="va">)</span><span class="st">&quot;</span></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="co"># PowerShell - add to $PROFILE</span></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a><span class="ex">Invoke-Expression</span> <span class="er">(</span><span class="fu">rev</span> completions powershell <span class="kw">|</span> <span class="ex">Out-String</span><span class="kw">)</span></span></code></pre></div>
<h2 id="collaboration-git">Collaboration &amp; Git</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev contributors</code></td>
<td>Show author contributions across all sections</td>
</tr>
<tr>
<td><code>rev contributors &lt;file&gt;</code></td>
<td>Show who wrote what in a specific file</td>
</tr>
<tr>
<td><code>rev contributors &lt;file&gt; --blame</code></td>
<td>Line-by-line blame output</td>
</tr>
<tr>
<td><code>rev history</code></td>
<td>Show revision history</td>
</tr>
<tr>
<td><code>rev diff</code></td>
<td>Compare sections against git history</td>
</tr>
</tbody>
</table>
<h2 id="orcid-integration">ORCID Integration</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev orcid &lt;id&gt;</code></td>
<td>Fetch author info from ORCID</td>
</tr>
<tr>
<td><code>rev orcid &lt;id&gt; --yaml</code></td>
<td>Output as YAML for rev.yaml authors</td>
</tr>
<tr>
<td><code>rev orcid &lt;id&gt; --badge</code></td>
<td>Generate markdown badge</td>
</tr>
</tbody>
</table>
<h2 id="self-update">Self-Update</h2>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev upgrade</code></td>
<td>Update docrev to latest version</td>
</tr>
<tr>
<td><code>rev upgrade --check</code></td>
<td>Check for updates without installing</td>
</tr>
</tbody>
</table>
</main>
<aside class="col-md-3 d-none d-md-block">
<nav id="toc" data-toggle="toc" aria-label="On this page">
<h2 class="h6">On this page</h2>
<div class="toc"><ul>
<li><a href="#command-reference" id="toc-command-reference">Command
Reference</a>
<ul>
<li><a href="#build-create" id="toc-build-create">Build &amp;
Create</a></li>
<li><a href="#import-export" id="toc-import-export">Import &amp;
Export</a></li>
<li><a href="#pdf-comments" id="toc-pdf-comments">PDF Comments</a></li>
<li><a href="#review-edit" id="toc-review-edit">Review &amp;
Edit</a></li>
<li><a href="#comment-navigation" id="toc-comment-navigation">Comment
Navigation</a></li>
<li><a href="#track-changes" id="toc-track-changes">Track
Changes</a></li>
<li><a href="#cross-references"
id="toc-cross-references">Cross-References</a></li>
<li><a href="#comments-replies" id="toc-comments-replies">Comments &amp;
Replies</a></li>
<li><a href="#bibliography-dois" id="toc-bibliography-dois">Bibliography
&amp; DOIs</a></li>
<li><a href="#validation-analysis"
id="toc-validation-analysis">Validation &amp; Analysis</a></li>
<li><a href="#multi-reviewer-git"
id="toc-multi-reviewer-git">Multi-Reviewer &amp; Git</a></li>
<li><a href="#convenience-commands"
id="toc-convenience-commands">Convenience Commands</a></li>
<li><a href="#grammar-spelling" id="toc-grammar-spelling">Grammar &amp;
Spelling</a></li>
<li><a href="#direct-docx-editing" id="toc-direct-docx-editing">Direct
DOCX Editing</a></li>
<li><a href="#shell-completions" id="toc-shell-completions">Shell
Completions</a></li>
<li><a href="#collaboration-git"
id="toc-collaboration-git">Collaboration &amp; Git</a></li>
<li><a href="#orcid-integration" id="toc-orcid-integration">ORCID
Integration</a></li>
<li><a href="#self-update" id="toc-self-update">Self-Update</a></li>
</ul></li>
</ul></div>
</nav>
</aside>
</div>
</div>
<footer class="border-top py-3 mt-auto">
<div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
<span>docrev 0.9.15</span>
<span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
(function () {
var html = document.documentElement;
var sun = document.getElementById('icon-sun');
var moon = document.getElementById('icon-moon');
function apply(t) {
html.setAttribute('data-bs-theme', t);
sun.style.display = t === 'dark' ? 'none' : '';
moon.style.display = t === 'dark' ? '' : 'none';
}
apply(localStorage.getItem('docrev-theme') || 'light');
document.getElementById('theme-toggle').addEventListener('click', function () {
var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
localStorage.setItem('docrev-theme', next);
apply(next);
});
})();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Configuration — docrev</title>
<meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
<style>
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="assets/extra.css">
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
<div class="container">
<a class="navbar-brand me-2" href="index.html">docrev</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="workflow.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link" href="commands.html">Commands</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="configuration.html">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
<svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/>
</svg>
<svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/>
</svg>
</button>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
<path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container template-article">
<div class="row">
<main id="main" class="col-md-9">
<h1 id="configuration">Configuration</h1>
<h2 id="rev.yaml">rev.yaml</h2>
<p>The project configuration file.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;Your Paper Title&quot;</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="fu">version</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;1.0&quot;</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="fu">authors</span><span class="kw">:</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> First Author</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> Institution</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">email</span><span class="kw">:</span><span class="at"> author@example.com</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> Second Author</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> Another Institution</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a><span class="fu">sections</span><span class="kw">:</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> introduction.md</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> methods.md</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> results.md</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> discussion.md</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a><span class="fu">bibliography</span><span class="kw">:</span><span class="at"> references.bib</span></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="fu">csl</span><span class="kw">:</span><span class="at"> nature.csl</span><span class="co"> # Citation style (optional)</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a><span class="co"># Cross-reference settings (pandoc-crossref)</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a><span class="fu">crossref</span><span class="kw">:</span></span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figureTitle</span><span class="kw">:</span><span class="at"> Figure</span></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tableTitle</span><span class="kw">:</span><span class="at"> Table</span></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Fig.</span><span class="kw">,</span><span class="at"> Figs.</span><span class="kw">]</span></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tblPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Table</span><span class="kw">,</span><span class="at"> Tables</span><span class="kw">]</span></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">eqnPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Eq.</span><span class="kw">,</span><span class="at"> Eqs.</span><span class="kw">]</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">secPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Section</span><span class="kw">,</span><span class="at"> Sections</span><span class="kw">]</span></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a><span class="co"># PDF output settings</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">documentclass</span><span class="kw">:</span><span class="at"> article</span></span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> 12pt</span></span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> margin=1in</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="fl">1.5</span></span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">toc</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">numbersections</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span></span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a><span class="co"># Word output settings</span></span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a><span class="fu">docx</span><span class="kw">:</span></span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">reference</span><span class="kw">:</span><span class="at"> template.docx</span><span class="co"> # Optional reference doc for styling</span></span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">keepComments</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span><span class="co"> # Preserve CriticMarkup comments</span></span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">toc</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span></code></pre></div>
<h2 id="template-variables">Template Variables</h2>
<p>Use in section files (processed during build):</p>
<table>
<thead>
<tr>
<th>Variable</th>
<th>Description</th>
<th>Example Output</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>{{date}}</code></td>
<td>Current date</td>
<td>2025-12-30</td>
</tr>
<tr>
<td><code>{{date:MMMM D, YYYY}}</code></td>
<td>Custom format</td>
<td>December 30, 2025</td>
</tr>
<tr>
<td><code>{{year}}</code></td>
<td>Current year</td>
<td>2025</td>
</tr>
<tr>
<td><code>{{version}}</code></td>
<td>From rev.yaml</td>
<td>1.0</td>
</tr>
<tr>
<td><code>{{title}}</code></td>
<td>Document title</td>
<td>Your Paper Title</td>
</tr>
<tr>
<td><code>{{author}}</code></td>
<td>First author</td>
<td>First Author</td>
</tr>
<tr>
<td><code>{{authors}}</code></td>
<td>All authors</td>
<td>First Author, Second Author</td>
</tr>
<tr>
<td><code>{{word_count}}</code></td>
<td>Total words</td>
<td>5,432</td>
</tr>
</tbody>
</table>
<p><strong>Example usage:</strong></p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># Methods</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>Last updated: {{date:MMMM D, YYYY}}</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>Word count: {{word_count}}</span></code></pre></div>
<h2 id="user-configuration">User Configuration</h2>
<p>Set your name for comment replies:</p>
<div class="sourceCode" id="cb3"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">&quot;Your Name&quot;</span></span></code></pre></div>
<p>Set default sections for new projects:</p>
<div class="sourceCode" id="cb4"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config sections <span class="st">&quot;intro,methods,results,discussion&quot;</span></span></code></pre></div>
<p>This creates <code>~/.revrc</code>:</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode json"><code class="sourceCode json"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">{</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;userName&quot;</span><span class="fu">:</span> <span class="st">&quot;Your Name&quot;</span><span class="fu">,</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> <span class="dt">&quot;defaultSections&quot;</span><span class="fu">:</span> <span class="ot">[</span><span class="st">&quot;intro&quot;</span><span class="ot">,</span> <span class="st">&quot;methods&quot;</span><span class="ot">,</span> <span class="st">&quot;results&quot;</span><span class="ot">,</span> <span class="st">&quot;discussion&quot;</span><span class="ot">]</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">}</span></span></code></pre></div>
<p>When <code>defaultSections</code> is set, <code>rev new</code>
uses these sections automatically. When not set,
<code>rev new</code> prompts for sections interactively.</p>
<h2 id="dictionaries">Dictionaries</h2>
<p><strong>Global dictionary</strong>
(<code>~/.rev-dictionary</code>):</p>
<div class="sourceCode" id="cb6"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--learn</span> myword <span class="co"># Add word</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--forget</span> myword <span class="co"># Remove word</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--list</span> <span class="co"># Show dictionary</span></span></code></pre></div>
<p><strong>Project dictionary</strong>
(<code>.rev-dictionary</code> in project root):</p>
<div class="sourceCode" id="cb7"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> spelling <span class="at">--learn-project</span> myterm</span></code></pre></div>
<p><strong>Grammar dictionary</strong> (same locations):</p>
<div class="sourceCode" id="cb8"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> grammar <span class="at">--learn</span> acronym</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> grammar <span class="at">--forget</span> acronym</span></code></pre></div>
<h2 id="journal-profiles">Journal Profiles</h2>
<p>21 built-in journal profiles for validation. Six also provide
<strong>build formatting defaults</strong> (CSL citation style,
PDF settings):</p>
<div class="sourceCode" id="cb9"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">--list</span> <span class="co"># List all profiles ([formatting] = build support)</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">-j</span> nature <span class="co"># Check against Nature requirements</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> word-count <span class="at">-j</span> ecology-letters <span class="co"># Use journal word limit</span></span></code></pre></div>
<p>Profiles include: nature, science, pnas, elife, cell, plos-one,
ecology-letters, global-change-biology, etc.</p>
<h3 id="setting-a-journal">Setting a Journal</h3>
<p>In <code>rev.yaml</code>:</p>
<div class="sourceCode" id="cb10"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">journal</span><span class="kw">:</span><span class="at"> nature</span></span></code></pre></div>
<p>Or via CLI flag (overrides rev.yaml):</p>
<div class="sourceCode" id="cb11"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf docx <span class="at">-j</span> nature</span></code></pre></div>
<h3 id="config-cascade">Config Cascade</h3>
<p>When a journal with formatting is set, settings are applied in
three layers:</p>
<ol type="1">
<li><strong>Defaults</strong> — docrev built-in defaults (12pt,
margin=1in, linestretch=1.5, etc.)</li>
<li><strong>Journal formatting</strong> — from the journal profile
(e.g., Nature uses 11pt, 2.5cm margins, double spacing)</li>
<li><strong>Your rev.yaml</strong> — explicit settings always
win</li>
</ol>
<p>This means you can set <code>journal: nature</code> and still
override individual settings:</p>
<div class="sourceCode" id="cb12"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">journal</span><span class="kw">:</span><span class="at"> nature</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="fl">1.5</span><span class="co"> # override Nature&#39;s double spacing</span></span></code></pre></div>
<h3 id="csl-citation-styles">CSL Citation Styles</h3>
<p>Journal profiles specify a CSL style name. docrev resolves CSL
files in this order:</p>
<ol type="1">
<li>File path in project directory (e.g.,
<code>nature.csl</code>)</li>
<li>Cached file in <code>~/.rev/csl/</code></li>
<li>Bare name passed to pandoc –citeproc (works for some built-in
styles)</li>
</ol>
<p>Download and cache a style:</p>
<div class="sourceCode" id="cb13"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--fetch-csl</span> nature <span class="co"># downloads to ~/.rev/csl/nature.csl</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--fetch-csl</span> apa <span class="co"># works with short names</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--list-csl</span> <span class="co"># list cached files</span></span></code></pre></div>
<p>Known short names: apa, chicago, vancouver, ieee, nature,
science, cell, pnas, plos, elife, ecology-letters, ama, acs,
harvard, mla, elsevier, springer, biomed-central.</p>
<h3 id="custom-profiles-with-formatting">Custom Profiles with
Formatting</h3>
<p>Custom profiles (YAML files in <code>~/.rev/profiles/</code> or
<code>.rev/profiles/</code>) can include a <code>formatting</code>
section:</p>
<div class="sourceCode" id="cb14"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">id</span><span class="kw">:</span><span class="at"> my-journal</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a><span class="fu">name</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;My Journal&quot;</span></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="fu">url</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;https://journal.example.com/guidelines&quot;</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a><span class="co"># Validation requirements</span></span>
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a><span class="fu">wordLimit</span><span class="kw">:</span></span>
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">main</span><span class="kw">:</span><span class="at"> </span><span class="dv">6000</span></span>
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">abstract</span><span class="kw">:</span><span class="at"> </span><span class="dv">250</span></span>
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a><span class="fu">references</span><span class="kw">:</span></span>
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">max</span><span class="kw">:</span><span class="at"> </span><span class="dv">50</span></span>
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">doiRequired</span><span class="kw">:</span><span class="at"> </span><span class="ch">true</span></span>
<span id="cb14-12"><a href="#cb14-12" aria-hidden="true" tabindex="-1"></a><span class="fu">sections</span><span class="kw">:</span></span>
<span id="cb14-13"><a href="#cb14-13" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">required</span><span class="kw">:</span></span>
<span id="cb14-14"><a href="#cb14-14" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Abstract</span></span>
<span id="cb14-15"><a href="#cb14-15" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Introduction</span></span>
<span id="cb14-16"><a href="#cb14-16" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Methods</span></span>
<span id="cb14-17"><a href="#cb14-17" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Results</span></span>
<span id="cb14-18"><a href="#cb14-18" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> Discussion</span></span>
<span id="cb14-19"><a href="#cb14-19" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-20"><a href="#cb14-20" aria-hidden="true" tabindex="-1"></a><span class="co"># Build formatting defaults</span></span>
<span id="cb14-21"><a href="#cb14-21" aria-hidden="true" tabindex="-1"></a><span class="fu">formatting</span><span class="kw">:</span></span>
<span id="cb14-22"><a href="#cb14-22" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">csl</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;vancouver&quot;</span></span>
<span id="cb14-23"><a href="#cb14-23" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">pdf</span><span class="kw">:</span></span>
<span id="cb14-24"><a href="#cb14-24" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> 11pt</span></span>
<span id="cb14-25"><a href="#cb14-25" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> margin=2cm</span></span>
<span id="cb14-26"><a href="#cb14-26" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">linestretch</span><span class="kw">:</span><span class="at"> </span><span class="dv">2</span></span>
<span id="cb14-27"><a href="#cb14-27" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">numbersections</span><span class="kw">:</span><span class="at"> </span><span class="ch">false</span></span>
<span id="cb14-28"><a href="#cb14-28" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">docx</span><span class="kw">:</span></span>
<span id="cb14-29"><a href="#cb14-29" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">reference</span><span class="kw">:</span><span class="at"> </span><span class="ch">null</span></span>
<span id="cb14-30"><a href="#cb14-30" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">crossref</span><span class="kw">:</span></span>
<span id="cb14-31"><a href="#cb14-31" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">figPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Fig.</span><span class="kw">,</span><span class="at"> Figs.</span><span class="kw">]</span></span>
<span id="cb14-32"><a href="#cb14-32" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">tblPrefix</span><span class="kw">:</span><span class="at"> </span><span class="kw">[</span><span class="at">Table</span><span class="kw">,</span><span class="at"> Tables</span><span class="kw">]</span></span></code></pre></div>
<p>Create a new profile template (includes formatting
section):</p>
<div class="sourceCode" id="cb15"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> profiles <span class="at">--new</span> <span class="st">&quot;My Journal&quot;</span></span></code></pre></div>
<h3 id="cli-reference">CLI Reference</h3>
<table>
<thead>
<tr>
<th>Command</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rev validate --list</code></td>
<td>List all profiles with formatting tags</td>
</tr>
<tr>
<td><code>rev validate -j nature</code></td>
<td>Validate against journal requirements</td>
</tr>
<tr>
<td><code>rev build -j nature</code></td>
<td>Build with journal formatting defaults</td>
</tr>
<tr>
<td><code>rev profiles --new "Name"</code></td>
<td>Create custom profile template</td>
</tr>
<tr>
<td><code>rev profiles --fetch-csl name</code></td>
<td>Download CSL style to cache</td>
</tr>
<tr>
<td><code>rev profiles --list-csl</code></td>
<td>List cached CSL styles</td>
</tr>
<tr>
<td><code>rev profiles --dirs</code></td>
<td>Show profile directory locations</td>
</tr>
</tbody>
</table>
</main>
<aside class="col-md-3 d-none d-md-block">
<nav id="toc" data-toggle="toc" aria-label="On this page">
<h2 class="h6">On this page</h2>
<div class="toc"><ul>
<li><a href="#configuration" id="toc-configuration">Configuration</a>
<ul>
<li><a href="#rev.yaml" id="toc-rev.yaml">rev.yaml</a></li>
<li><a href="#template-variables" id="toc-template-variables">Template
Variables</a></li>
<li><a href="#user-configuration" id="toc-user-configuration">User
Configuration</a></li>
<li><a href="#dictionaries" id="toc-dictionaries">Dictionaries</a></li>
<li><a href="#journal-profiles" id="toc-journal-profiles">Journal
Profiles</a>
<ul>
<li><a href="#setting-a-journal" id="toc-setting-a-journal">Setting a
Journal</a></li>
<li><a href="#config-cascade" id="toc-config-cascade">Config
Cascade</a></li>
<li><a href="#csl-citation-styles" id="toc-csl-citation-styles">CSL
Citation Styles</a></li>
<li><a href="#custom-profiles-with-formatting"
id="toc-custom-profiles-with-formatting">Custom Profiles with
Formatting</a></li>
<li><a href="#cli-reference" id="toc-cli-reference">CLI
Reference</a></li>
</ul></li>
</ul></li>
</ul></div>
</nav>
</aside>
</div>
</div>
<footer class="border-top py-3 mt-auto">
<div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
<span>docrev 0.9.15</span>
<span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
(function () {
var html = document.documentElement;
var sun = document.getElementById('icon-sun');
var moon = document.getElementById('icon-moon');
function apply(t) {
html.setAttribute('data-bs-theme', t);
sun.style.display = t === 'dark' ? 'none' : '';
moon.style.display = t === 'dark' ? '' : 'none';
}
apply(localStorage.getItem('docrev-theme') || 'light');
document.getElementById('theme-toggle').addEventListener('click', function () {
var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
localStorage.setItem('docrev-theme', next);
apply(next);
});
})();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Home — docrev</title>
<meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
<style>
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="assets/extra.css">
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
<div class="container">
<a class="navbar-brand me-2" href="index.html">docrev</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="workflow.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link" href="commands.html">Commands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="configuration.html">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
<svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/>
</svg>
<svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/>
</svg>
</button>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
<path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container template-home">
<div class="row">
<main id="main" class="col-12">
<h1 id="docrev">docrev</h1>
<div class="badge-row">
<p><a href="https://www.npmjs.com/package/docrev"><img
src="https://img.shields.io/npm/v/docrev" alt="npm" /></a> <a
href="https://www.npmjs.com/package/docrev"><img
src="https://img.shields.io/npm/dm/docrev"
alt="npm downloads" /></a> <a href="https://nodejs.org"><img
src="https://img.shields.io/node/v/docrev" alt="node" /></a> <a
href="https://opensource.org/licenses/MIT"><img
src="https://img.shields.io/badge/License-MIT-blue.svg"
alt="License: MIT" /></a> <a
href="https://github.com/gcol33/docrev/actions/workflows/ci.yml"><img
src="https://github.com/gcol33/docrev/actions/workflows/ci.yml/badge.svg"
alt="CI" /></a></p>
</div>
<p>A CLI for writing documents in Markdown while collaborating
with Word users.</p>
<p>Write in <code>.md</code> files under version control; build
Word or PDF when you need to share. When reviewers return their
annotated copy, <code>rev sync</code> pulls the feedback into your
markdown sections, where you reply to comments, accept or reject
changes, and rebuild. Equations, figures, citations, and
cross-references survive both directions.</p>
<h2 id="the-problem">The Problem</h2>
<p>After a few rounds of feedback, the project directory looks
like this:</p>
<pre><code>manuscript_v1.docx
manuscript_v2_john_comments.docx
manuscript_v2_jane_comments.docx
manuscript_v3_merged_final.docx
manuscript_v3_merged_final_REAL.docx
manuscript_v3_merged_final_REAL_submitted.docx</code></pre>
<p>By the third filename, there’s no canonical version. Jane’s
comments are in one file, John’s track changes in another, your
reconciliation attempt in a third; whether you merged the right
sources depends on what you remember from last Tuesday.</p>
<p>docrev keeps the markdown as the canonical version, under git.
The DOCX is rebuilt each time you share; reviewer comments and
track changes come back into your section files when you sync,
where you reply to or accept them in the terminal.</p>
<h2 id="install">Install</h2>
<div class="sourceCode" id="cb2"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">npm</span> install <span class="at">-g</span> docrev</span></code></pre></div>
<p>Requires <a href="https://nodejs.org">Node.js</a> 18+. Building
DOCX or PDF needs <a href="https://pandoc.org">Pandoc</a>. For
complex PDFs (math, cross-references, journal styles), LaTeX is
also needed — see the <a
href="troubleshooting.html">Troubleshooting</a> page.</p>
<h2 id="quick-start">Quick Start</h2>
<p>Write in Markdown with citations and cross-references:</p>
<div class="sourceCode" id="cb3"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>Climate change poses significant challenges <span class="co">[</span><span class="ot">@IPCC2021</span><span class="co">]</span>. As shown in</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>@fig:temperature, global temperatures have risen steadily.</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="al">![Temperature anomalies](figures/temperature.png)</span>{#fig:temperature}</span></code></pre></div>
<p>Build and share:</p>
<div class="sourceCode" id="cb4"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># → output/paper.docx</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="co"># → output/paper.pdf</span></span></code></pre></div>
<p>When collaborators return the Word doc with track changes:</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx <span class="co"># their comments → your markdown</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> todo <span class="co"># list all pending comments</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply methods.md <span class="at">-n</span> 1 <span class="at">-m</span> <span class="st">&quot;Clarified in revised text.&quot;</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="at">--dual</span> <span class="co"># clean + annotated versions</span></span></code></pre></div>
<h2 id="documentation">Documentation</h2>
<div class="row g-3 mt-1">
<div class="col-sm-6">
<div class="doc-card position-relative">
<h5>
Get Started
</h5>
<p>
The full revision cycle: import, build, sync, reply, resolve,
rebuild, archive.
</p>
<p><a href="workflow.html" class="stretched-link text-decoration-none">Revision
Workflow →</a></p>
</div>
</div>
<div class="col-sm-6">
<div class="doc-card position-relative">
<h5>
Commands
</h5>
<p>
Complete reference for all <code>rev</code> commands, grouped by
task.
</p>
<p><a href="commands.html" class="stretched-link text-decoration-none">Command
Reference →</a></p>
</div>
</div>
<div class="col-sm-6">
<div class="doc-card position-relative">
<h5>
Configuration
</h5>
<p>
<code>rev.yaml</code> options, journal profiles, custom templates,
CSL styles.
</p>
<p><a href="configuration.html" class="stretched-link text-decoration-none">Configuration
→</a></p>
</div>
</div>
<div class="col-sm-6">
<div class="doc-card position-relative">
<h5>
Troubleshooting
</h5>
<p>
Common issues with installation, builds, imports, and
cross-references.
</p>
<p><a href="troubleshooting.html" class="stretched-link text-decoration-none">Troubleshooting
→</a></p>
</div>
</div>
</div>
</main>
</div>
</div>
<footer class="border-top py-3 mt-auto">
<div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
<span>docrev 0.9.15</span>
<span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
(function () {
var html = document.documentElement;
var sun = document.getElementById('icon-sun');
var moon = document.getElementById('icon-moon');
function apply(t) {
html.setAttribute('data-bs-theme', t);
sun.style.display = t === 'dark' ? 'none' : '';
moon.style.display = t === 'dark' ? '' : 'none';
}
apply(localStorage.getItem('docrev-theme') || 'light');
document.getElementById('theme-toggle').addEventListener('click', function () {
var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
localStorage.setItem('docrev-theme', next);
apply(next);
});
})();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Troubleshooting — docrev</title>
<meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
<style>
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="assets/extra.css">
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
<div class="container">
<a class="navbar-brand me-2" href="index.html">docrev</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="workflow.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link" href="commands.html">Commands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="configuration.html">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="troubleshooting.html">Troubleshooting</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
<svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/>
</svg>
<svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/>
</svg>
</button>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
<path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container template-article">
<div class="row">
<main id="main" class="col-md-9">
<h1 id="troubleshooting">Troubleshooting</h1>
<p>Common issues and solutions for docrev.</p>
<h2 id="installation-issues">Installation Issues</h2>
<h3 id="pandoc-command-not-found">“pandoc: command not found”</h3>
<p>Pandoc is required for building documents.</p>
<p><strong>macOS:</strong></p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install pandoc</span></code></pre></div>
<p><strong>Windows:</strong></p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">winget</span> install JohnMacFarlane.Pandoc</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or download from https://pandoc.org/installing.html</span></span></code></pre></div>
<p><strong>Linux (Debian/Ubuntu):</strong></p>
<div class="sourceCode" id="cb3"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install pandoc</span></code></pre></div>
<p>Verify installation:</p>
<div class="sourceCode" id="cb4"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pandoc</span> <span class="at">--version</span></span></code></pre></div>
<h3 id="pandoc-crossref-command-not-found">“pandoc-crossref:
command not found”</h3>
<p>pandoc-crossref is optional but required for figure/table
cross-references.</p>
<p><strong>macOS:</strong></p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install pandoc-crossref</span></code></pre></div>
<p><strong>Windows:</strong> Download from
https://github.com/lierdakil/pandoc-crossref/releases</p>
<p><strong>Linux:</strong></p>
<div class="sourceCode" id="cb6"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Check your package manager or download from GitHub releases</span></span></code></pre></div>
<h3 id="latex-not-found-pdf-generation-fails">LaTeX not found (PDF
generation fails)</h3>
<p>PDF output requires a LaTeX distribution.</p>
<p><strong>macOS:</strong></p>
<div class="sourceCode" id="cb7"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">brew</span> install <span class="at">--cask</span> mactex-no-gui</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or smaller: brew install --cask basictex</span></span></code></pre></div>
<p><strong>Windows:</strong> Install MiKTeX from
https://miktex.org/download</p>
<p><strong>Linux:</strong></p>
<div class="sourceCode" id="cb8"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install texlive-latex-base texlive-fonts-recommended</span></code></pre></div>
<h2 id="build-errors">Build Errors</h2>
<h3 id="no-section-files-found">“No section files found”</h3>
<p><strong>Cause:</strong> No <code>.md</code> files in the
directory, or sections not specified in <code>rev.yaml</code>.</p>
<p><strong>Solutions:</strong> 1. Create section files:
<code>rev new</code> 2. Specify sections in <code>rev.yaml</code>:
<code>yaml sections: - introduction.md - methods.md</code>
3. Check you’re in the correct directory</p>
<h3 id="failed-to-parse-rev.yaml">“Failed to parse rev.yaml”</h3>
<p><strong>Cause:</strong> Invalid YAML syntax.</p>
<p><strong>Common fixes:</strong> - Check indentation (use spaces,
not tabs) - Quote strings with special characters - Validate with:
<code>rev check</code></p>
<p><strong>Example of correct YAML:</strong></p>
<div class="sourceCode" id="cb9"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">title</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;My Paper: A Study&quot;</span><span class="co"> # Quotes needed for colon</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">authors</span><span class="kw">:</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> John Doe</span><span class="co"> # 2-space indent</span></span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">affiliation</span><span class="kw">:</span><span class="at"> University</span></span></code></pre></div>
<h3 id="build-produces-empty-pdf">Build produces empty PDF</h3>
<p><strong>Causes:</strong> 1. Section files are empty 2. Pandoc
filter errors (check terminal output) 3. LaTeX errors</p>
<p><strong>Debug:</strong></p>
<div class="sourceCode" id="cb10"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--verbose</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build tex <span class="co"># Check the .tex file for errors</span></span></code></pre></div>
<h2 id="import-issues">Import Issues</h2>
<h3 id="comments-not-imported-from-word">Comments not imported
from Word</h3>
<p><strong>Causes:</strong> 1. Document uses older .doc format
(only .docx supported) 2. Comments are in review mode but not
finalized</p>
<p><strong>Solutions:</strong> 1. Save as .docx in Word 2.
Accept/reject track changes before importing if you want clean
text</p>
<h3 id="track-changes-garbled-or-missing">Track changes garbled or
missing</h3>
<p><strong>Cause:</strong> Complex nested changes or unsupported
Word features.</p>
<p><strong>Solution:</strong></p>
<div class="sourceCode" id="cb11"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> import document.docx <span class="at">--no-track-changes</span></span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="co"># Then manually review the Word file</span></span></code></pre></div>
<h3 id="cannot-read-file-errors">“Cannot read file” errors</h3>
<p><strong>Causes:</strong> 1. File is open in Word (Windows locks
open files) 2. File path contains special characters 3. Corrupted
.docx file</p>
<p><strong>Solutions:</strong> 1. Close the file in Word 2. Rename
file to remove special characters 3. Try opening in Word and
re-saving</p>
<h2 id="comment-issues">Comment Issues</h2>
<h3 id="comments-not-appearing-in-word-export">Comments not
appearing in Word export</h3>
<p><strong>Cause:</strong> Comments marked as resolved are hidden
by default.</p>
<p><strong>Solutions:</strong></p>
<div class="sourceCode" id="cb12"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments file.md <span class="at">--resolved</span> <span class="co"># Check resolved comments</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> resolve file.md <span class="at">-a</span> <span class="at">-u</span> <span class="co"># Unresolve all comments</span></span></code></pre></div>
<h3 id="reply-threading-not-working">Reply threading not
working</h3>
<p>Comments must be adjacent (no text between them) to thread in
Word.</p>
<p><strong>Works:</strong></p>
<div class="sourceCode" id="cb13"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a>text{&gt;&gt;Author1: comment&lt;&lt;}{&gt;&gt;Author2: reply&lt;&lt;}</span></code></pre></div>
<p><strong>Won’t thread:</strong></p>
<div class="sourceCode" id="cb14"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>text{&gt;&gt;Author1: comment&lt;&lt;} more text {&gt;&gt;Author2: reply&lt;&lt;}</span></code></pre></div>
<h3 id="author-name-not-set">Author name not set</h3>
<div class="sourceCode" id="cb15"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">&quot;Your Name&quot;</span></span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="co"># Or per-command:</span></span>
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply file.md <span class="at">--author</span> <span class="st">&quot;Your Name&quot;</span></span></code></pre></div>
<h2 id="cross-reference-issues">Cross-Reference Issues</h2>
<h3 id="figurestables-not-numbered">Figures/tables not
numbered</h3>
<p><strong>Causes:</strong> 1. pandoc-crossref not installed 2.
Labels not in correct format</p>
<p><strong>Correct format:</strong></p>
<div class="sourceCode" id="cb16"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="al">![Caption](image.png)</span>{#fig:label}</span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Col1 <span class="pp">|</span> Col2 <span class="pp">|</span></span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|------|------|</span></span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> a <span class="pp">|</span> b <span class="pp">|</span></span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a>: Caption {#tbl:label}</span></code></pre></div>
<h3 id="references-show-instead-of-numbers">References show “??”
instead of numbers</h3>
<p><strong>Causes:</strong> 1. Label doesn’t exist 2. Typo in
reference 3. pandoc-crossref not running</p>
<p><strong>Debug:</strong></p>
<div class="sourceCode" id="cb17"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> refs <span class="co"># List all labels</span></span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> refs <span class="at">--check</span> <span class="co"># Find broken references</span></span></code></pre></div>
<h2 id="pdf-issues">PDF Issues</h2>
<h3 id="fonts-missing-or-wrong">Fonts missing or wrong</h3>
<p><strong>LaTeX errors about fonts:</strong></p>
<div class="sourceCode" id="cb18"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Install more fonts</span></span>
<span id="cb18-2"><a href="#cb18-2" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> apt install texlive-fonts-extra <span class="co"># Linux</span></span>
<span id="cb18-3"><a href="#cb18-3" aria-hidden="true" tabindex="-1"></a><span class="co"># Or use standard fonts in rev.yaml:</span></span>
<span id="cb18-4"><a href="#cb18-4" aria-hidden="true" tabindex="-1"></a><span class="ex">pdf:</span></span>
<span id="cb18-5"><a href="#cb18-5" aria-hidden="true" tabindex="-1"></a> <span class="ex">mainfont:</span> <span class="st">&quot;Times New Roman&quot;</span></span></code></pre></div>
<h3 id="images-not-appearing">Images not appearing</h3>
<p><strong>Causes:</strong> 1. Image path incorrect (relative to
project root) 2. Image format not supported by LaTeX</p>
<p><strong>Solutions:</strong> 1. Use relative paths:
<code>![](images/fig1.png)</code> 2. Convert to PNG/PDF: LaTeX
prefers PDF for vector graphics</p>
<h3 id="pdf-too-large">PDF too large</h3>
<div class="sourceCode" id="cb19"><pre
class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="co"># In rev.yaml</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a><span class="fu">pdf</span><span class="kw">:</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">geometry</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;margin=0.75in&quot;</span><span class="co"> # Smaller margins</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a><span class="at"> </span><span class="fu">fontsize</span><span class="kw">:</span><span class="at"> </span><span class="st">&quot;11pt&quot;</span><span class="co"> # Smaller font</span></span></code></pre></div>
<h2 id="performance-issues">Performance Issues</h2>
<h3 id="doi-lookup-slow">DOI lookup slow</h3>
<p>DOI validation queries external APIs. For large
bibliographies:</p>
<div class="sourceCode" id="cb20"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doi check <span class="at">--no-lookup</span> <span class="co"># Skip online validation</span></span></code></pre></div>
<h3 id="build-taking-too-long">Build taking too long</h3>
<div class="sourceCode" id="cb21"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Build only what you need</span></span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># Skip PDF</span></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--no-toc</span> <span class="co"># Skip table of contents</span></span></code></pre></div>
<h2 id="encoding-issues">Encoding Issues</h2>
<h3 id="special-characters-corrupted">Special characters
corrupted</h3>
<p><strong>Cause:</strong> File encoding mismatch.</p>
<p><strong>Solutions:</strong> 1. Ensure files are UTF-8 encoded
2. In Word, save with “UTF-8” encoding option 3. Check your
editor’s encoding settings</p>
<h3 id="bibtex-entries-with-accents-fail">BibTeX entries with
accents fail</h3>
<p>Use LaTeX-style escapes or UTF-8:</p>
<div class="sourceCode" id="cb22"><pre
class="sourceCode bibtex"><code class="sourceCode bibtex"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="co">author = {M{\&quot;u}ller, Hans}</span></span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="co"># or with UTF-8:</span></span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a><span class="co">author = {Müller, Hans}</span></span></code></pre></div>
<h2 id="getting-help">Getting Help</h2>
<h3 id="debug-mode">Debug mode</h3>
<div class="sourceCode" id="cb23"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build <span class="at">--verbose</span> <span class="dv">2</span><span class="op">&gt;&amp;</span><span class="dv">1</span> <span class="kw">|</span> <span class="fu">tee</span> build.log</span></code></pre></div>
<h3 id="check-system-status">Check system status</h3>
<div class="sourceCode" id="cb24"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doctor</span></code></pre></div>
<h3 id="report-issues">Report issues</h3>
<p>https://github.com/gcol33/docrev/issues</p>
<p>Include: - <code>rev --version</code> output -
<code>rev doctor</code> output - Minimal reproducible example</p>
</main>
<aside class="col-md-3 d-none d-md-block">
<nav id="toc" data-toggle="toc" aria-label="On this page">
<h2 class="h6">On this page</h2>
<div class="toc"><ul>
<li><a href="#troubleshooting"
id="toc-troubleshooting">Troubleshooting</a>
<ul>
<li><a href="#installation-issues"
id="toc-installation-issues">Installation Issues</a>
<ul>
<li><a href="#pandoc-command-not-found"
id="toc-pandoc-command-not-found">“pandoc: command not found”</a></li>
<li><a href="#pandoc-crossref-command-not-found"
id="toc-pandoc-crossref-command-not-found">“pandoc-crossref: command not
found”</a></li>
<li><a href="#latex-not-found-pdf-generation-fails"
id="toc-latex-not-found-pdf-generation-fails">LaTeX not found (PDF
generation fails)</a></li>
</ul></li>
<li><a href="#build-errors" id="toc-build-errors">Build Errors</a>
<ul>
<li><a href="#no-section-files-found"
id="toc-no-section-files-found">“No section files found”</a></li>
<li><a href="#failed-to-parse-rev.yaml"
id="toc-failed-to-parse-rev.yaml">“Failed to parse rev.yaml”</a></li>
<li><a href="#build-produces-empty-pdf"
id="toc-build-produces-empty-pdf">Build produces empty PDF</a></li>
</ul></li>
<li><a href="#import-issues" id="toc-import-issues">Import Issues</a>
<ul>
<li><a href="#comments-not-imported-from-word"
id="toc-comments-not-imported-from-word">Comments not imported from
Word</a></li>
<li><a href="#track-changes-garbled-or-missing"
id="toc-track-changes-garbled-or-missing">Track changes garbled or
missing</a></li>
<li><a href="#cannot-read-file-errors"
id="toc-cannot-read-file-errors">“Cannot read file” errors</a></li>
</ul></li>
<li><a href="#comment-issues" id="toc-comment-issues">Comment Issues</a>
<ul>
<li><a href="#comments-not-appearing-in-word-export"
id="toc-comments-not-appearing-in-word-export">Comments not appearing in
Word export</a></li>
<li><a href="#reply-threading-not-working"
id="toc-reply-threading-not-working">Reply threading not
working</a></li>
<li><a href="#author-name-not-set" id="toc-author-name-not-set">Author
name not set</a></li>
</ul></li>
<li><a href="#cross-reference-issues"
id="toc-cross-reference-issues">Cross-Reference Issues</a>
<ul>
<li><a href="#figurestables-not-numbered"
id="toc-figurestables-not-numbered">Figures/tables not numbered</a></li>
<li><a href="#references-show-instead-of-numbers"
id="toc-references-show-instead-of-numbers">References show “??” instead
of numbers</a></li>
</ul></li>
<li><a href="#pdf-issues" id="toc-pdf-issues">PDF Issues</a>
<ul>
<li><a href="#fonts-missing-or-wrong"
id="toc-fonts-missing-or-wrong">Fonts missing or wrong</a></li>
<li><a href="#images-not-appearing" id="toc-images-not-appearing">Images
not appearing</a></li>
<li><a href="#pdf-too-large" id="toc-pdf-too-large">PDF too
large</a></li>
</ul></li>
<li><a href="#performance-issues"
id="toc-performance-issues">Performance Issues</a>
<ul>
<li><a href="#doi-lookup-slow" id="toc-doi-lookup-slow">DOI lookup
slow</a></li>
<li><a href="#build-taking-too-long"
id="toc-build-taking-too-long">Build taking too long</a></li>
</ul></li>
<li><a href="#encoding-issues" id="toc-encoding-issues">Encoding
Issues</a>
<ul>
<li><a href="#special-characters-corrupted"
id="toc-special-characters-corrupted">Special characters
corrupted</a></li>
<li><a href="#bibtex-entries-with-accents-fail"
id="toc-bibtex-entries-with-accents-fail">BibTeX entries with accents
fail</a></li>
</ul></li>
<li><a href="#getting-help" id="toc-getting-help">Getting Help</a>
<ul>
<li><a href="#debug-mode" id="toc-debug-mode">Debug mode</a></li>
<li><a href="#check-system-status" id="toc-check-system-status">Check
system status</a></li>
<li><a href="#report-issues" id="toc-report-issues">Report
issues</a></li>
</ul></li>
</ul></li>
</ul></div>
</nav>
</aside>
</div>
</div>
<footer class="border-top py-3 mt-auto">
<div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
<span>docrev 0.9.15</span>
<span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
(function () {
var html = document.documentElement;
var sun = document.getElementById('icon-sun');
var moon = document.getElementById('icon-moon');
function apply(t) {
html.setAttribute('data-bs-theme', t);
sun.style.display = t === 'dark' ? 'none' : '';
moon.style.display = t === 'dark' ? '' : 'none';
}
apply(localStorage.getItem('docrev-theme') || 'light');
document.getElementById('theme-toggle').addEventListener('click', function () {
var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
localStorage.setItem('docrev-theme', next);
apply(next);
});
})();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Get Started — docrev</title>
<meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
<style>
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="assets/extra.css">
</head>
<body>
<nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
<div class="container">
<a class="navbar-brand me-2" href="index.html">docrev</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-main">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="workflow.html">Get Started</a>
</li>
<li class="nav-item">
<a class="nav-link" href="commands.html">Commands</a>
</li>
<li class="nav-item">
<a class="nav-link" href="configuration.html">Configuration</a>
</li>
<li class="nav-item">
<a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
<svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707"/>
</svg>
<svg id="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
<path d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278"/>
</svg>
</button>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
<path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
</svg>
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container template-article">
<div class="row">
<main id="main" class="col-md-9">
<h1 id="revision-workflow">Revision Workflow</h1>
<p>The canonical version lives in your markdown files. Word is the
exchange format — you build it when you need to share, and sync it
when feedback comes back.</p>
<p>A revision cycle in brief:</p>
<ol type="1">
<li>Build a Word document and send it to reviewers.</li>
<li>They return it with track changes and comments.</li>
<li><code>rev sync</code> pulls the feedback into your markdown
sections.</li>
<li>Navigate comments with <code>rev next</code> and
<code>rev todo</code>, reply with <code>rev reply</code>, accept
or reject changes with <code>rev accept</code>.</li>
<li>Rebuild with <code>rev build docx --dual</code> — a clean
document and an annotated one with your replies threaded into the
original Word comments.</li>
<li>Archive the reviewer’s file. Repeat.</li>
</ol>
<hr />
<h2 id="starting-a-project">Starting a Project</h2>
<p>From an existing Word document:</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> import manuscript.docx</span></code></pre></div>
<p>docrev splits the document at top-level headings and creates
one <code>.md</code> file per section. Images land in
<code>figures/</code>, equations convert from OMML to LaTeX, and
any existing comments or track changes are preserved as
CriticMarkup annotations.</p>
<p>From scratch:</p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> new my-paper <span class="at">-s</span> intro,methods,results,discussion</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="bu">cd</span> my-paper</span></code></pre></div>
<p>The <code>-s</code> flag sets section names and skips the
interactive prompt. Set your preferred sections once and future
<code>rev new</code> calls use them automatically:</p>
<div class="sourceCode" id="cb3"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config sections <span class="st">&quot;intro,methods,results,discussion&quot;</span></span></code></pre></div>
<p>Either way, the project has this shape:</p>
<pre><code>my-paper/
├── rev.yaml ← config: title, authors, section order, journal profile
├── intro.md ← section files — edit these
├── methods.md
├── results.md
├── discussion.md
├── references.bib ← BibTeX bibliography
├── figures/ ← images referenced from sections
├── paper.md ← auto-combined on each build, not hand-edited
└── output/
├── my-paper.docx
└── my-paper.pdf</code></pre>
<p><code>paper.md</code> is regenerated from the section files in
the order set by <code>rev.yaml</code>; output files go to
<code>output/</code> by default. Set <code>outputDir: null</code>
in <code>rev.yaml</code> if you prefer them alongside
<code>paper.md</code>.</p>
<hr />
<h2 id="writing-in-markdown">Writing in Markdown</h2>
<p>Citations use pandoc-citeproc syntax — <code>[@key]</code> for
one source, <code>[@key1; @key2]</code> for multiple:</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>Global temperatures have risen by 1.1°C since pre-industrial levels <span class="co">[</span><span class="ot">@IPCC2021</span><span class="co">]</span>.</span></code></pre></div>
<p>Figures get a label so they can be referenced by number:</p>
<div class="sourceCode" id="cb6"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="al">![Temperature anomalies since 1880](figures/temperature.png)</span>{#fig:temperature}</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a>As shown in @fig:temperature, the trend has accelerated since 1970.</span></code></pre></div>
<p>Equations use standard LaTeX — inline with <code>$...$</code>,
display with <code>$$...$$</code>:</p>
<div class="sourceCode" id="cb7"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>The forcing relationship follows $\Delta T = \lambda \cdot \Delta F$, where</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a>$\lambda$ is the climate sensitivity parameter.</span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb7-4"><a href="#cb7-4" aria-hidden="true" tabindex="-1"></a>$$</span>
<span id="cb7-5"><a href="#cb7-5" aria-hidden="true" tabindex="-1"></a>\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i</span>
<span id="cb7-6"><a href="#cb7-6" aria-hidden="true" tabindex="-1"></a>$$ {#eq:mean}</span>
<span id="cb7-7"><a href="#cb7-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a>Reference with @eq:mean → &quot;Equation 1&quot;</span></code></pre></div>
<p>Simple tables take pipe syntax:</p>
<div class="sourceCode" id="cb8"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Site <span class="pp">|</span> Lat <span class="pp">|</span> Long <span class="pp">|</span> n <span class="pp">|</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|------|------|--------|----|</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> A <span class="pp">|</span> 45.2 <span class="pp">|</span> -120.5 <span class="pp">|</span> 48 <span class="pp">|</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> B <span class="pp">|</span> 52.1 <span class="pp">|</span> -105.3 <span class="pp">|</span> 61 <span class="pp">|</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a>: Study sites {#tbl:sites}</span></code></pre></div>
<p>For merged cells or multi-line cell content, use grid table
syntax:</p>
<div class="sourceCode" id="cb9"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Results <span class="pp">|</span></span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a>+========<span class="al">==+==========+==</span>========+</span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> Site <span class="pp">|</span> 2023 <span class="pp">|</span> 2024 <span class="pp">|</span></span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a><span class="pp">|</span> A <span class="pp">|</span> 100 <span class="pp">|</span> 150 <span class="pp">|</span></span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a>+----------+----------+----------+</span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true" tabindex="-1"></a>: Annual measurements {#tbl:results}</span></code></pre></div>
<p>Cross-references resolve automatically at build time —
<code>@fig:label</code>, <code>@tbl:label</code>,
<code>@eq:label</code>, <code>@sec:label</code> become “Figure 1”,
“Table 2”, “Equation 3”, “Section 4”. Use <code>rev migrate</code>
to convert hardcoded references (Fig. 1, Table 2) to dynamic ones
if you’re importing an existing document.</p>
<hr />
<h2 id="building-and-sharing">Building and Sharing</h2>
<div class="sourceCode" id="cb10"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="co"># → output/my-paper.docx</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="co"># → output/my-paper.pdf</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx pdf <span class="co"># both at once</span></span></code></pre></div>
<p>Set a journal profile to get the right citation style and PDF
formatting automatically:</p>
<div class="sourceCode" id="cb11"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="at">-j</span> nature</span></code></pre></div>
<p>Six profiles include formatting defaults — <code>nature</code>,
<code>science</code>, <code>cell</code>, <code>pnas</code>,
<code>plos-one</code>, <code>elife</code>. All 21 support
validation. To see the full list:</p>
<div class="sourceCode" id="cb12"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">--list</span></span></code></pre></div>
<p>For a live preview while you write:</p>
<div class="sourceCode" id="cb13"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> watch docx <span class="co"># rebuilds on every save</span></span></code></pre></div>
<hr />
<h2 id="syncing-reviewer-feedback">Syncing Reviewer Feedback</h2>
<p>When a reviewer returns a Word document with track changes and
comments:</p>
<div class="sourceCode" id="cb14"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx</span></code></pre></div>
<p>Track changes become CriticMarkup annotations inline in your
section files:</p>
<div class="sourceCode" id="cb15"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a>The sample size was {--100--}{++150++} participants.</span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a>Data was collected {~~monthly~&gt;weekly~~}.</span></code></pre></div>
<p>Comments land with the reviewer’s name:</p>
<div class="sourceCode" id="cb16"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a>{&gt;&gt;Reviewer 2: The confidence intervals here seem too narrow. Please clarify.&lt;&lt;}</span></code></pre></div>
<p>If your markdown has changed since you sent the document out —
new edits, reordered sections — run
<code>rev verify-anchors</code> first to see which comments will
land cleanly against the updated prose, then use
<code>--comments-only</code> to import only comments (not track
changes, which would overwrite your newer edits):</p>
<div class="sourceCode" id="cb17"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> verify-anchors reviewed.docx</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync reviewed.docx <span class="at">--comments-only</span></span></code></pre></div>
<p>For reviewers who annotate PDFs rather than Word files:</p>
<div class="sourceCode" id="cb18"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> sync annotated.pdf</span></code></pre></div>
<p>Supported annotation types: sticky notes, text boxes,
highlights, underlines, strikethrough, squiggly underlines. Use
<code>rev pdf-comments annotated.pdf --with-text</code> to extract
the text that was highlighted or struck through.</p>
<hr />
<h2 id="track-changes">Track Changes</h2>
<p>List what’s pending:</p>
<div class="sourceCode" id="cb19"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md</span></code></pre></div>
<p>Accept or reject individually, or all at once:</p>
<div class="sourceCode" id="cb20"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md <span class="at">-n</span> 1 <span class="co"># accept change #1</span></span>
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reject methods.md <span class="at">-n</span> 2 <span class="co"># reject change #2</span></span>
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> accept methods.md <span class="at">-a</span> <span class="co"># accept all</span></span></code></pre></div>
<p>For an interactive review with keyboard shortcuts
(a/r/s/q):</p>
<div class="sourceCode" id="cb21"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> review methods.md</span></code></pre></div>
<hr />
<h2 id="comments">Comments</h2>
<p>Navigate pending comments:</p>
<div class="sourceCode" id="cb22"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb22-1"><a href="#cb22-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> todo <span class="co"># list all pending as a checklist</span></span>
<span id="cb22-2"><a href="#cb22-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> next <span class="co"># show the next one</span></span>
<span id="cb22-3"><a href="#cb22-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> next <span class="at">-n</span> 3 <span class="co"># skip to the 3rd</span></span>
<span id="cb22-4"><a href="#cb22-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments methods.md <span class="co"># all comments in one section, with context</span></span>
<span id="cb22-5"><a href="#cb22-5" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> comments methods.md <span class="at">--author</span> <span class="st">&quot;Reviewer 2&quot;</span></span></code></pre></div>
<p>Reply with your name set once in config:</p>
<div class="sourceCode" id="cb23"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> config user <span class="st">&quot;Your Name&quot;</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> reply methods.md <span class="at">-n</span> 1 <span class="at">-m</span> <span class="st">&quot;Added clarification in the revised text.&quot;</span></span></code></pre></div>
<p>The reply appears adjacent to the original:</p>
<div class="sourceCode" id="cb24"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true" tabindex="-1"></a>{&gt;&gt;Reviewer 2: The confidence intervals seem too narrow.&lt;&lt;} {&gt;&gt;Your Name: Clarified; the intervals are bootstrap CIs at 95%.&lt;&lt;}</span></code></pre></div>
<p>Adjacent comments from different authors thread in Word
automatically. Comments must be adjacent — no text between them —
for threading to work.</p>
<p>Mark addressed:</p>
<div class="sourceCode" id="cb25"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb25-1"><a href="#cb25-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> resolve methods.md <span class="at">-n</span> 1</span></code></pre></div>
<hr />
<h2 id="multiple-reviewers">Multiple Reviewers</h2>
<p>When several reviewers return separate files,
<code>rev merge</code> reconciles them against a shared
baseline:</p>
<div class="sourceCode" id="cb26"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> merge reviewer_A.docx reviewer_B.docx</span></code></pre></div>
<p>docrev compares each file against <code>.rev/base.docx</code>
(saved automatically on every build) to isolate each reviewer’s
changes. Conflicts on the same passage are flagged for interactive
resolution.</p>
<hr />
<h2 id="rebuilding-and-responding">Rebuilding and Responding</h2>
<p>Once you’ve handled the feedback, rebuild:</p>
<div class="sourceCode" id="cb27"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build docx <span class="at">--dual</span></span></code></pre></div>
<p>This produces two files — <code>my-paper.docx</code> (clean,
for submission or the next round) and
<code>my-paper_comments.docx</code> (with your replies threaded
under the original Word comments). The same flag works for PDF,
rendering comments as LaTeX margin notes:</p>
<div class="sourceCode" id="cb28"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> build pdf <span class="at">--dual</span></span></code></pre></div>
<p>Generate a point-by-point response letter from the resolved
comments:</p>
<div class="sourceCode" id="cb29"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> response <span class="op">&gt;</span> response-letter.md</span></code></pre></div>
<hr />
<h2 id="archiving-and-repeating">Archiving and Repeating</h2>
<p>Move reviewer files out of the project folder:</p>
<div class="sourceCode" id="cb30"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="co"># → archive/20241215_143022_reviewed.docx</span></span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="at">--by</span> Smith <span class="co"># → archive/20241215_143022_Smith_my-paper.docx</span></span>
<span id="cb30-3"><a href="#cb30-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> archive <span class="at">--dry-run</span> <span class="co"># preview without moving</span></span></code></pre></div>
<p>Take a snapshot before a major revision round:</p>
<div class="sourceCode" id="cb31"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> backup <span class="at">--name</span> <span class="st">&quot;before-round-2&quot;</span></span></code></pre></div>
<p>The cycle continues: receive feedback, sync, handle changes and
comments, rebuild, archive.</p>
<hr />
<h2 id="pre-submission-checks">Pre-Submission Checks</h2>
<div class="sourceCode" id="cb32"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb32-1"><a href="#cb32-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> check <span class="co"># full check: lint, citations, grammar</span></span>
<span id="cb32-2"><a href="#cb32-2" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> doi check references.bib <span class="co"># validate all DOIs</span></span>
<span id="cb32-3"><a href="#cb32-3" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> validate <span class="at">-j</span> nature <span class="co"># journal-specific requirements</span></span>
<span id="cb32-4"><a href="#cb32-4" aria-hidden="true" tabindex="-1"></a><span class="fu">rev</span> word-count <span class="at">-j</span> nature <span class="co"># check against word limit</span></span></code></pre></div>
<p>For journals with strict requirements, running
<code>rev validate --list</code> shows which profiles are
available and which include formatting support
(<code>[formatting]</code> tag).</p>
<hr />
<h2 id="quick-reference">Quick Reference</h2>
<table>
<colgroup>
<col style="width: 40%" />
<col style="width: 60%" />
</colgroup>
<thead>
<tr>
<th>Task</th>
<th>Command</th>
</tr>
</thead>
<tbody>
<tr>
<td>Start from Word</td>
<td><code>rev import manuscript.docx</code></td>
</tr>
<tr>
<td>Start fresh</td>
<td><code>rev new my-paper</code></td>
</tr>
<tr>
<td>Build DOCX</td>
<td><code>rev build docx</code></td>
</tr>
<tr>
<td>Build clean + annotated</td>
<td><code>rev build docx --dual</code></td>
</tr>
<tr>
<td>Build PDF</td>
<td><code>rev build pdf</code></td>
</tr>
<tr>
<td>Sync feedback</td>
<td><code>rev sync reviewed.docx</code></td>
</tr>
<tr>
<td>Sync comments only (prose changed)</td>
<td><code>rev sync reviewed.docx --comments-only</code></td>
</tr>
<tr>
<td>Check anchor drift</td>
<td><code>rev verify-anchors reviewed.docx</code></td>
</tr>
<tr>
<td>Project status</td>
<td><code>rev status</code></td>
</tr>
<tr>
<td>List pending</td>
<td><code>rev todo</code></td>
</tr>
<tr>
<td>Next comment</td>
<td><code>rev next</code></td>
</tr>
<tr>
<td>Accept all changes</td>
<td><code>rev accept file.md -a</code></td>
</tr>
<tr>
<td>Reply to comment</td>
<td><code>rev reply file.md -n 1 -m "..."</code></td>
</tr>
<tr>
<td>Archive reviewer files</td>
<td><code>rev archive</code></td>
</tr>
<tr>
<td>Response letter</td>
<td><code>rev response</code></td>
</tr>
<tr>
<td>Pre-submit check</td>
<td><code>rev check</code></td>
</tr>
</tbody>
</table>
</main>
<aside class="col-md-3 d-none d-md-block">
<nav id="toc" data-toggle="toc" aria-label="On this page">
<h2 class="h6">On this page</h2>
<div class="toc"><ul>
<li><a href="#revision-workflow" id="toc-revision-workflow">Revision
Workflow</a>
<ul>
<li><a href="#starting-a-project" id="toc-starting-a-project">Starting a
Project</a></li>
<li><a href="#writing-in-markdown" id="toc-writing-in-markdown">Writing
in Markdown</a></li>
<li><a href="#building-and-sharing"
id="toc-building-and-sharing">Building and Sharing</a></li>
<li><a href="#syncing-reviewer-feedback"
id="toc-syncing-reviewer-feedback">Syncing Reviewer Feedback</a></li>
<li><a href="#track-changes" id="toc-track-changes">Track
Changes</a></li>
<li><a href="#comments" id="toc-comments">Comments</a></li>
<li><a href="#multiple-reviewers" id="toc-multiple-reviewers">Multiple
Reviewers</a></li>
<li><a href="#rebuilding-and-responding"
id="toc-rebuilding-and-responding">Rebuilding and Responding</a></li>
<li><a href="#archiving-and-repeating"
id="toc-archiving-and-repeating">Archiving and Repeating</a></li>
<li><a href="#pre-submission-checks"
id="toc-pre-submission-checks">Pre-Submission Checks</a></li>
<li><a href="#quick-reference" id="toc-quick-reference">Quick
Reference</a></li>
</ul></li>
</ul></div>
</nav>
</aside>
</div>
</div>
<footer class="border-top py-3 mt-auto">
<div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
<span>docrev 0.9.15</span>
<span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
(function () {
var html = document.documentElement;
var sun = document.getElementById('icon-sun');
var moon = document.getElementById('icon-moon');
function apply(t) {
html.setAttribute('data-bs-theme', t);
sun.style.display = t === 'dark' ? 'none' : '';
moon.style.display = t === 'dark' ? '' : 'none';
}
apply(localStorage.getItem('docrev-theme') || 'light');
document.getElementById('theme-toggle').addEventListener('click', function () {
var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
localStorage.setItem('docrev-theme', next);
apply(next);
});
})();
</script>
</body>
</html>
+1
-1

@@ -7,3 +7,3 @@ /**

*/
export type AnchorStrategy = 'direct' | 'normalized' | 'stripped' | 'partial-start' | 'partial-start-stripped' | 'partial-window' | 'partial-window-stripped' | 'context-both' | 'context-before' | 'context-after' | 'split-match' | 'empty-anchor' | 'failed';
export type AnchorStrategy = 'direct' | 'normalized' | 'stripped' | 'partial-start' | 'partial-start-stripped' | 'context-both' | 'context-before' | 'context-after' | 'split-match' | 'empty-anchor' | 'failed';
export interface AnchorSearchResult {

@@ -10,0 +10,0 @@ occurrences: number[];

@@ -1,1 +0,1 @@

{"version":3,"file":"anchor-match.d.ts","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,gBAAgB,GAChB,yBAAyB,GACzB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,GACjB,kBAAkB,CAuKpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAsBlG"}
{"version":3,"file":"anchor-match.d.ts","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,eAAe,GACf,wBAAwB,GACxB,cAAc,GACd,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,CAqBR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS7E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,GACjB,kBAAkB,CA2IpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,WAAW,CAAC;AAElF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAoBlG"}

@@ -136,25 +136,20 @@ /**

}
// Strategy 4: word window from anchor (prefix or interior).
// Sliding the window across the anchor catches the case where the
// anchor's prefix has been edited but a chunk in the middle/end
// survived intact (e.g. "Sensitivity analyses were performed by
// perturbing the prior variance" → drifted "Sensitivity analyses
// perturbed the prior variance" still contains "the prior variance").
// Strategy 4: first N words of anchor (long anchors)
const words = anchor.split(/\s+/);
if (words.length > 3) {
for (let n = Math.min(6, words.length); n >= 3; n--) {
for (let start = 0; start + n <= words.length; start++) {
const window = words.slice(start, start + n).join(' ');
const windowLower = window.toLowerCase();
if (windowLower.length < 15)
continue;
let occ = findAllOccurrences(textLower, windowLower);
if (occ.length > 0) {
const strategy = start === 0 ? 'partial-start' : 'partial-window';
return { occurrences: occ, matchedAnchor: window, strategy };
const partialAnchor = words.slice(0, n).join(' ').toLowerCase();
if (partialAnchor.length >= 15) {
occurrences = findAllOccurrences(textLower, partialAnchor);
if (occurrences.length > 0) {
return { occurrences, matchedAnchor: words.slice(0, n).join(' '), strategy: 'partial-start' };
}
occ = findAllOccurrences(strippedLower, windowLower);
if (occ.length > 0) {
const strategy = start === 0 ? 'partial-start-stripped' : 'partial-window-stripped';
return { occurrences: occ, matchedAnchor: window, strategy, stripped: true };
occurrences = findAllOccurrences(strippedLower, partialAnchor);
if (occurrences.length > 0) {
return {
occurrences,
matchedAnchor: words.slice(0, n).join(' '),
strategy: 'partial-start-stripped',
stripped: true,
};
}

@@ -164,16 +159,6 @@ }

}
// Strategy 5: context (before/after) only.
//
// For a non-empty anchor that already failed every text-based strategy
// above, we treat context as a degraded placement: classify it
// 'context-only' so callers can warn the user. We also reject
// implausible brackets — if both contexts match but the gap between
// them is far too small to contain the anchor (e.g. the anchored
// sentence was deleted), do not silently land the comment between
// the surviving sentences. Return 'failed' so the user is told to
// place it manually.
// Strategy 5: context (before/after) only
if (before || after) {
const beforeLower = before.toLowerCase();
const afterLower = after.toLowerCase();
const anchorLen = anchor.length;
if (before && after) {

@@ -184,17 +169,4 @@ const beforeIdx = textLower.indexOf(beforeLower.slice(-50));

const afterIdx = textLower.indexOf(afterLower.slice(0, 50), searchStart);
if (afterIdx !== -1) {
const gap = afterIdx - searchStart;
// Require the bracket to plausibly contain a remnant of the anchor.
// Below 30% of anchor length: anchor was deleted — refuse to place.
// Above 2× anchor length + slack: brackets are too far apart, the
// matcher has latched onto unrelated repeats of common context.
const minGap = Math.floor(anchorLen * 0.3);
const maxGap = Math.min(500, anchorLen * 2 + 50);
if (gap >= minGap && gap <= maxGap) {
return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
}
// Both brackets found but gap implausible: anchor likely deleted.
// Don't fall back to single-side context — that would silently
// place the comment in the wrong location.
return { occurrences: [], matchedAnchor: null, strategy: 'failed' };
if (afterIdx !== -1 && afterIdx - searchStart < 500) {
return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
}

@@ -246,4 +218,2 @@ }

case 'partial-start-stripped':
case 'partial-window':
case 'partial-window-stripped':
case 'split-match':

@@ -250,0 +220,0 @@ return 'drift';

@@ -1,1 +0,1 @@

{"version":3,"file":"anchor-match.js","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"anchor-match.js","sourceRoot":"","sources":["../../lib/anchor-match.ts"],"names":[],"mappings":"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"}

@@ -40,2 +40,4 @@ /**

monofont?: string;
/** Extra pandoc args appended for this format (after top-level pandocArgs). */
pandocArgs?: string[];
}

@@ -47,5 +49,14 @@ export interface DocxConfig {

toc?: boolean;
pandocArgs?: string[];
/**
* Auto-translate the common-shape raw `\begin{figure}...\end{figure}` block
* to portable `![caption](path){#fig:label width=N%}` markdown so figures
* survive the docx build (pandoc otherwise drops raw LaTeX silently).
* Default true. Set false to opt out — blocks then warn and are left alone.
*/
translateRawFigures?: boolean;
}
export interface TexConfig {
standalone?: boolean;
pandocArgs?: string[];
}

@@ -61,2 +72,3 @@ export interface BeamerConfig {

fit_images?: boolean;
pandocArgs?: string[];
}

@@ -76,2 +88,3 @@ export interface PptxConfig {

};
pandocArgs?: string[];
}

@@ -111,2 +124,15 @@ export interface TablesConfig {

outputDir?: string | null;
/**
* Per-format output filenames. Keys are format names (pdf/docx/tex/beamer/
* pptx); values are paths. Relative paths resolve under outputDir; absolute
* paths are honored as-is. Extension is added if missing. CLI `-o` wins
* over this map.
*/
output?: Record<string, string>;
/**
* Extra pandoc args applied to every format. Format-specific args
* (e.g. docx.pandocArgs) are appended *after* these, and CLI --pandoc-arg
* values are appended last.
*/
pandocArgs?: string[];
_configPath?: string | null;

@@ -123,4 +149,16 @@ }

config?: BuildConfig;
/**
* Internal: forces the exact output path. Used by dual-mode/temp builds that
* route to specific temp files. Bypasses the `output:` resolver.
*/
outputPath?: string;
/**
* CLI override (`-o, --output <path>`). Beats `config.output[format]` but
* loses to `options.outputPath`. Relative paths resolve under outputDir;
* absolute paths bypass outputDir.
*/
output?: string;
crossref?: boolean;
/** Extra pandoc args from CLI (--pandoc-arg). Appended after config args. */
pandocArgs?: string[];
_refsAutoInjected?: boolean;

@@ -213,6 +251,51 @@ _forwardRefsResolved?: number;

/**
* Build pandoc arguments for format
* A raw LaTeX `\begin{figure}...\end{figure}` block found in source markdown.
* `exotic` blocks contain features we don't auto-translate (multiple
* `\includegraphics`, `\subfloat`, `\rotatebox`, unrecognised width units);
* pandoc strips raw LaTeX silently in docx output, so users get warned about
* anything that won't be translated.
*/
export interface RawLatexFigure {
file?: string;
line: number;
block: string;
exotic: boolean;
}
/**
* Find raw LaTeX figure blocks containing `\includegraphics` in markdown.
* `file`, if given, is attached to each result. `line` is 1-based within the
* supplied content (the line where `\begin{figure}` sits).
*/
export declare function detectRawLatexFigures(content: string, file?: string): RawLatexFigure[];
/**
* Translate the 80% case: single `\includegraphics` figure with optional
* `\caption{...}` and `\label{...}`, wrapped in `\begin{figure}...\end{figure}`,
* to portable `![caption](path){#fig:label width=N%}` markdown. Exotic blocks
* (see `isExoticFigureBlock`) are left untouched.
*/
export declare function translateRawLatexFigures(content: string): {
translated: string;
translatedCount: number;
};
/**
* Walk section files and gather a warning for any raw LaTeX figure blocks that
* won't survive the docx build. Returns null when there's nothing to warn about.
*/
export declare function collectRawLatexFigureWarning(directory: string, config: BuildConfig): string | null;
/**
* Build pandoc arguments for format.
*
* Returns only the built-in args derived from config. Passthrough args
* (config.pandocArgs, config[format].pandocArgs, CLI --pandoc-arg) are
* appended later in runPandoc so they win against pptx/crossref defaults
* added there.
*/
export declare function buildPandocArgs(format: string, config: BuildConfig, outputPath: string): string[];
/**
* Collect passthrough pandoc args for a format in the canonical order:
* top-level config → format-specific config → CLI extras. Later wins for
* repeated flags.
*/
export declare function collectPandocPassthroughArgs(format: string, config: BuildConfig, extraArgs?: string[]): string[];
/**
* Resolve the absolute directory where final outputs should land.

@@ -222,3 +305,30 @@ * Honors config.outputDir; falls back to the project directory when null/empty.

export declare function resolveOutputDir(directory: string, config: BuildConfig): string;
/** Get file extension for a format, defaulting to `.pdf`. */
export declare function getFormatExtension(format: string): string;
/**
* Slugify a title for use as a default output filename. Lowercases, replaces
* non-alphanumeric runs with `-`, and truncates at the last `-` boundary
* at-or-before MAX_TITLE_FILENAME_LENGTH so words stay whole (the old blind
* `.slice` cut mid-word).
*/
export declare function slugifyTitle(title: string): string;
/**
* Resolve the final output path for a build.
*
* Priority: `options.outputPath` (internal force) > `cliOverride` (-o flag) >
* `config.output[format]` > slugified title fallback.
*
* Relative paths from `cliOverride`/`config.output` resolve under outputDir;
* absolute paths bypass outputDir. The fallback path always lives under
* outputDir.
*
* @param suffix - Appended before the extension (e.g. "-changes", "-slides").
* Suppressed when user supplied an explicit name via CLI or
* config — they pick their own suffix.
*/
export declare function resolveOutputPath(directory: string, config: BuildConfig, format: string, options?: {
cliOverride?: string;
suffix?: string;
}): string;
/**
* Run pandoc build

@@ -225,0 +335,0 @@ */

@@ -1,1 +0,1 @@

{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}

@@ -30,5 +30,10 @@ /**

const SUPPORTED_FORMATS = ['pdf', 'docx', 'tex', 'beamer', 'pptx'];
/** Maximum title length for output filename */
const MAX_TITLE_FILENAME_LENGTH = 50;
/**
* Maximum length for slugified-title output filenames. Only used when no
* explicit `output:` filename is configured. Long titles are truncated at the
* last `-` boundary at-or-before this length so words stay intact (the old
* blind `.slice(0, 50)` cut mid-word).
*/
const MAX_TITLE_FILENAME_LENGTH = 80;
/**
* Default rev.yaml configuration

@@ -65,2 +70,3 @@ */

toc: false,
translateRawFigures: true,
},

@@ -164,2 +170,17 @@ tex: {

/**
* In-place: copy `pandoc-args` → `pandocArgs` on an object (if not already set).
* Idempotent. Coerces a single string into a one-element array.
*/
function normalizePandocArgsKey(obj) {
if (!obj || typeof obj !== 'object')
return;
const hy = obj['pandoc-args'];
if (hy === undefined)
return;
if (obj.pandocArgs === undefined) {
obj.pandocArgs = Array.isArray(hy) ? hy : [hy];
}
delete obj['pandoc-args'];
}
/**
* Load rev.yaml config from directory

@@ -182,2 +203,11 @@ * @param directory - Project directory path

const userConfig = YAML.parse(content) || {};
// Accept hyphenated `pandoc-args` (the form pandoc itself uses) in addition
// to camelCase `pandocArgs`. Hyphenated is what we document; camelCase is
// accepted for users who already prefer that convention.
normalizePandocArgsKey(userConfig);
for (const fmt of ['pdf', 'docx', 'tex', 'beamer', 'pptx']) {
if (userConfig[fmt] && typeof userConfig[fmt] === 'object') {
normalizePandocArgsKey(userConfig[fmt]);
}
}
// Deep merge with defaults

@@ -583,2 +613,9 @@ let config = {

content = convertDynamicRefsToDisplay(content, registry);
// Pandoc strips raw LaTeX in docx output. Translate the common
// `\begin{figure}...\end{figure}` shape to portable markdown so figures
// actually appear; exotic blocks are left alone (warned about in build()).
if (config.docx?.translateRawFigures !== false) {
const { translated } = translateRawLatexFigures(content);
content = translated;
}
if (hasNumberedAffiliations(config)) {

@@ -637,5 +674,199 @@ const mdBlock = generateMarkdownAuthorBlock(config);

}
/** Match `\begin{figure}` / `\begin{figure*}` … `\end{figure}` blocks. */
function makeRawFigureRegex() {
return /\\begin\{figure\*?\}(?:\[[^\]]*\])?[\s\S]*?\\end\{figure\*?\}/g;
}
/**
* Build pandoc arguments for format
* Convert a LaTeX width spec to a markdown image attribute value.
* - `0.8\textwidth` → `80%`
* - `\linewidth` → `100%`
* - `8cm`, `2in`, `12pt` → kept verbatim
* Returns null for anything we don't translate (block stays "exotic").
*/
function convertLatexWidth(raw) {
const trimmed = raw.trim();
// Coefficient × relative length
const rel = trimmed.match(/^([\d.]+)\s*\\(textwidth|linewidth|columnwidth)$/);
if (rel) {
const pct = Math.round(parseFloat(rel[1]) * 100);
if (!isFinite(pct) || pct <= 0)
return null;
return `${pct}%`;
}
// Bare relative length
if (/^\\(textwidth|linewidth|columnwidth)$/.test(trimmed))
return '100%';
// Absolute units
if (/^[\d.]+\s*(cm|mm|in|pt|px|em|ex)$/.test(trimmed))
return trimmed.replace(/\s+/g, '');
return null;
}
/** Extract a balanced `{...}` argument that follows `command` in `text`. */
function extractBracedArg(text, command) {
const idx = text.indexOf(command);
if (idx === -1)
return null;
let i = idx + command.length;
while (i < text.length && /\s/.test(text[i]))
i++;
if (text[i] !== '{')
return null;
i++;
const start = i;
let depth = 1;
while (i < text.length) {
const ch = text[i];
if (ch === '\\' && i + 1 < text.length) {
i += 2;
continue;
}
if (ch === '{')
depth++;
else if (ch === '}') {
depth--;
if (depth === 0)
return text.slice(start, i);
}
i++;
}
return null;
}
/** True if a `\begin{figure}` block contains features we don't auto-translate. */
function isExoticFigureBlock(block) {
if (/\\subfloat\b/.test(block))
return true;
if (/\\rotatebox\b/.test(block))
return true;
const includes = (block.match(/\\includegraphics\b/g) || []).length;
if (includes !== 1)
return true;
const m = block.match(/\\includegraphics\s*(?:\[([^\]]*)\])?\s*\{([^}]+)\}/);
if (!m)
return true;
const opts = m[1] || '';
const widthMatch = opts.match(/(?:^|,)\s*width\s*=\s*([^,]+)/);
if (widthMatch && !convertLatexWidth(widthMatch[1]))
return true;
return false;
}
/**
* Find raw LaTeX figure blocks containing `\includegraphics` in markdown.
* `file`, if given, is attached to each result. `line` is 1-based within the
* supplied content (the line where `\begin{figure}` sits).
*/
export function detectRawLatexFigures(content, file) {
const figures = [];
const re = makeRawFigureRegex();
let m;
while ((m = re.exec(content)) !== null) {
const block = m[0];
if (!block.includes('\\includegraphics'))
continue;
const line = content.slice(0, m.index).split(/\r?\n/).length;
figures.push({ file, line, block, exotic: isExoticFigureBlock(block) });
}
return figures;
}
/**
* Translate the 80% case: single `\includegraphics` figure with optional
* `\caption{...}` and `\label{...}`, wrapped in `\begin{figure}...\end{figure}`,
* to portable `![caption](path){#fig:label width=N%}` markdown. Exotic blocks
* (see `isExoticFigureBlock`) are left untouched.
*/
export function translateRawLatexFigures(content) {
let translatedCount = 0;
const re = makeRawFigureRegex();
const translated = content.replace(re, (block) => {
if (!block.includes('\\includegraphics'))
return block;
if (isExoticFigureBlock(block))
return block;
const inc = block.match(/\\includegraphics\s*(?:\[([^\]]*)\])?\s*\{([^}]+)\}/);
if (!inc)
return block;
const optsStr = inc[1] || '';
const imgPath = inc[2].trim();
let width;
const widthMatch = optsStr.match(/(?:^|,)\s*width\s*=\s*([^,]+)/);
if (widthMatch) {
const w = convertLatexWidth(widthMatch[1]);
if (!w)
return block; // already filtered by isExoticFigureBlock, defensive
width = w;
}
const caption = (extractBracedArg(block, '\\caption') ?? '').trim();
const labelRaw = extractBracedArg(block, '\\label');
const attrs = [];
if (labelRaw) {
const label = labelRaw.trim();
const labelWithPrefix = /^[a-z]+:/i.test(label) ? label : `fig:${label}`;
attrs.push(`#${labelWithPrefix}`);
}
if (width)
attrs.push(`width=${width}`);
translatedCount++;
const attrStr = attrs.length > 0 ? ` {${attrs.join(' ')}}` : '';
return `![${caption}](${imgPath})${attrStr}`;
});
return { translated, translatedCount };
}
/**
* Format the warning surfaced for raw LaTeX figure blocks that won't render
* in docx. `translateEnabled` reflects whether auto-translate ran (true = the
* listed blocks are exotic leftovers; false = no translation was attempted).
*/
function formatRawLatexFigureWarning(figs, translateEnabled) {
const reason = translateEnabled ? 'too complex to auto-translate' : 'translateRawFigures: false';
const lines = [
`${figs.length} raw LaTeX figure block(s) won't render in docx (${reason}).`,
];
for (const f of figs) {
const loc = f.file ? `${f.file}:${f.line}` : `line ${f.line}`;
const pathMatch = f.block.match(/\\includegraphics\s*(?:\[[^\]]*\])?\s*\{([^}]+)\}/);
const pathInfo = pathMatch ? ` ${pathMatch[1].trim()}` : '';
lines.push(` ${loc}${pathInfo}`);
}
lines.push(' Hint: use ![caption](path){#fig:label width=80%} for format-portable figures,');
lines.push(' or pass --pandoc-arg=--lua-filter=<your.lua> to translate them yourself.');
return lines.join('\n');
}
/**
* Walk section files and gather a warning for any raw LaTeX figure blocks that
* won't survive the docx build. Returns null when there's nothing to warn about.
*/
export function collectRawLatexFigureWarning(directory, config) {
const translateEnabled = config.docx?.translateRawFigures !== false;
const all = [];
for (const section of findSections(directory, config.sections)) {
const sectionPath = path.join(directory, section);
if (!fs.existsSync(sectionPath))
continue;
try {
const content = fs.readFileSync(sectionPath, 'utf-8');
const figs = detectRawLatexFigures(content, section);
for (const f of figs) {
// When auto-translate is on, non-exotic blocks get rewritten cleanly —
// only the exotic leftovers need warning. When opted out, everything
// is at risk and we warn about every block.
if (translateEnabled && !f.exotic)
continue;
all.push(f);
}
}
catch {
// ignore unreadable sections
}
}
if (all.length === 0)
return null;
return formatRawLatexFigureWarning(all, translateEnabled);
}
/**
* Build pandoc arguments for format.
*
* Returns only the built-in args derived from config. Passthrough args
* (config.pandocArgs, config[format].pandocArgs, CLI --pandoc-arg) are
* appended later in runPandoc so they win against pptx/crossref defaults
* added there.
*/
export function buildPandocArgs(format, config, outputPath) {

@@ -758,2 +989,21 @@ const args = [];

/**
* Collect passthrough pandoc args for a format in the canonical order:
* top-level config → format-specific config → CLI extras. Later wins for
* repeated flags.
*/
export function collectPandocPassthroughArgs(format, config, extraArgs = []) {
const out = [];
if (config.pandocArgs && config.pandocArgs.length > 0) {
out.push(...config.pandocArgs);
}
const formatConfig = config[format];
if (formatConfig?.pandocArgs && formatConfig.pandocArgs.length > 0) {
out.push(...formatConfig.pandocArgs);
}
if (extraArgs.length > 0) {
out.push(...extraArgs);
}
return out;
}
/**
* Write crossref.yaml if needed

@@ -787,3 +1037,81 @@ */

}
/** File extension (with leading dot) for each supported pandoc format. */
const FORMAT_EXTENSIONS = {
tex: '.tex',
pdf: '.pdf',
docx: '.docx',
beamer: '.pdf',
pptx: '.pptx',
};
/** Get file extension for a format, defaulting to `.pdf`. */
export function getFormatExtension(format) {
return FORMAT_EXTENSIONS[format] ?? '.pdf';
}
/**
* Slugify a title for use as a default output filename. Lowercases, replaces
* non-alphanumeric runs with `-`, and truncates at the last `-` boundary
* at-or-before MAX_TITLE_FILENAME_LENGTH so words stay whole (the old blind
* `.slice` cut mid-word).
*/
export function slugifyTitle(title) {
if (!title)
return 'paper';
const slug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
if (!slug)
return 'paper';
if (slug.length <= MAX_TITLE_FILENAME_LENGTH)
return slug;
const cut = slug.slice(0, MAX_TITLE_FILENAME_LENGTH);
const lastDash = cut.lastIndexOf('-');
// Only truncate at a hyphen if it leaves a reasonable amount of content.
// Otherwise hard-cut (handles degenerate titles with no spaces at all).
if (lastDash >= MAX_TITLE_FILENAME_LENGTH / 2) {
return slug.slice(0, lastDash);
}
return cut;
}
/**
* Ensure `name` ends with `ext` (case-insensitive). If the user already supplied
* the correct extension, return unchanged; if they supplied none or a different
* one, append the format's canonical extension.
*
* Different-extension case (e.g. `output.docx` when building tex): we append
* rather than replace, since stripping looks like an unsafe guess. The result
* `output.docx.tex` is loud enough to flag the misconfiguration.
*/
function ensureExtension(name, ext) {
if (name.toLowerCase().endsWith(ext.toLowerCase()))
return name;
return name + ext;
}
/**
* Resolve the final output path for a build.
*
* Priority: `options.outputPath` (internal force) > `cliOverride` (-o flag) >
* `config.output[format]` > slugified title fallback.
*
* Relative paths from `cliOverride`/`config.output` resolve under outputDir;
* absolute paths bypass outputDir. The fallback path always lives under
* outputDir.
*
* @param suffix - Appended before the extension (e.g. "-changes", "-slides").
* Suppressed when user supplied an explicit name via CLI or
* config — they pick their own suffix.
*/
export function resolveOutputPath(directory, config, format, options = {}) {
const { cliOverride, suffix = '' } = options;
const ext = getFormatExtension(format);
const explicit = cliOverride ?? config.output?.[format];
if (explicit) {
const baseDir = path.isAbsolute(explicit)
? path.dirname(explicit)
: resolveOutputDir(directory, config);
const baseName = path.basename(explicit);
const stem = baseName.replace(/\.[^./\\]+$/, '');
return path.join(baseDir, ensureExtension(`${stem}${suffix}`, ext));
}
const slug = slugifyTitle(config.title);
return path.join(resolveOutputDir(directory, config), `${slug}${suffix}${ext}`);
}
/**
* Run pandoc build

@@ -793,22 +1121,11 @@ */

const directory = path.dirname(inputPath);
const baseName = config.title
? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50)
: 'paper';
// Map format to file extension
const extMap = {
tex: '.tex',
pdf: '.pdf',
docx: '.docx',
beamer: '.pdf', // beamer outputs PDF
pptx: '.pptx',
};
const ext = extMap[format] || '.pdf';
// For beamer, use -slides suffix to distinguish from regular PDF
// outputPath (internal force) wins over the resolver. For beamer, we keep
// the `-slides` suffix on the slug fallback to distinguish from a regular
// PDF build; when the user supplies an explicit name, they pick their own.
const suffix = format === 'beamer' ? '-slides' : '';
// Allow custom output path via options. Auto-named outputs go through the
// configured outputDir (default 'output/'); explicit paths are honored as-is
// so callers can route temp/intermediate artefacts where they want.
const outputPath = options.outputPath
? options.outputPath
: path.join(resolveOutputDir(directory, config), `${baseName}${suffix}${ext}`);
?? resolveOutputPath(directory, config, format, {
cliOverride: options.output,
suffix,
});
if (!options.outputPath) {

@@ -873,4 +1190,11 @@ const outDir = path.dirname(outputPath);

}
// Passthrough args go last so they win against built-in defaults.
args.push(...collectPandocPassthroughArgs(format, config, options.pandocArgs));
// Input file (use basename since we set cwd to directory)
args.push(path.basename(inputPath));
if (options.verbose) {
const quoted = args.map(a => /[\s"'$`]/.test(a) ? `"${a.replace(/"/g, '\\"')}"` : a).join(' ');
console.error(`[pandoc ${format}] (cwd: ${directory})`);
console.error(` pandoc ${quoted}`);
}
return new Promise((resolve) => {

@@ -979,2 +1303,8 @@ const pandoc = spawn('pandoc', args, {

}
// Warn about raw LaTeX figure blocks that won't render in docx (pandoc
// drops them silently). With auto-translate on (default), this surfaces
// only the exotic leftovers; with it off, every block.
const rawFigWarning = collectRawLatexFigureWarning(directory, config);
if (rawFigWarning)
warnings.push(rawFigWarning);
}

@@ -981,0 +1311,0 @@ const results = [];

@@ -1,1 +0,1 @@

{"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../lib/build.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqwB3E"}
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCzC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyxB3E"}

@@ -405,3 +405,5 @@ /**

.option('--aspectratio <ratio>', 'Beamer aspect ratio (169, 43)')
.option('--verbose', 'Show detailed output including postprocess scripts')
.option('--pandoc-arg <arg>', 'Extra arg to pass to pandoc (repeatable). Applied to every format being built; appended after rev.yaml pandoc-args so CLI wins.', (val, prev = []) => [...prev, val], [])
.option('-o, --output <path>', 'Output filename or path. Relative paths resolve under outputDir; absolute paths bypass it. Extension auto-added if missing. Applied to every format being built; overrides rev.yaml output.<format>.')
.option('--verbose', 'Show detailed output including postprocess scripts and the pandoc invocation')
.action(async (formats, options) => {

@@ -490,3 +492,3 @@ const dir = path.resolve(options.dir);

}
const { combineSections, resolveOutputDir } = await import('../build.js');
const { combineSections, resolveOutputPath } = await import('../build.js');
const { buildWithTrackChanges } = await import('../trackchanges.js');

@@ -499,9 +501,9 @@ const spin = fmt.spinner('Building with track changes...').start();

console.log(chalk.dim(` ${paperPath}\n`));
const baseName = config.title
? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50)
: 'paper';
const outDir = resolveOutputDir(dir, config);
const outputPath = resolveOutputPath(dir, config, 'docx', {
cliOverride: options.output,
suffix: '-changes',
});
const outDir = path.dirname(outputPath);
if (!fs.existsSync(outDir))
fs.mkdirSync(outDir, { recursive: true });
const outputPath = path.join(outDir, `${baseName}-changes.docx`);
const spinTc = fmt.spinner('Applying track changes...').start();

@@ -537,6 +539,8 @@ const result = await buildWithTrackChanges(paperPath, outputPath, {

try {
const { results, paperPath, forwardRefsResolved, refsAutoInjected } = await build(dir, targetFormats, {
const { results, paperPath, forwardRefsResolved, refsAutoInjected, warnings } = await build(dir, targetFormats, {
crossref: options.crossref,
config,
verbose: options.verbose,
pandocArgs: options.pandocArg,
output: options.output,
});

@@ -553,2 +557,13 @@ spin.stop();

console.log('');
if (warnings && warnings.length > 0) {
for (const w of warnings) {
// Each warning may span multiple lines — colour the first line as
// a warning header and pass through the rest unchanged.
const [head, ...rest] = w.split('\n');
console.log(chalk.yellow(`Warning: ${head}`));
for (const line of rest)
console.log(chalk.yellow(line));
}
console.log('');
}
console.log(chalk.cyan('Output:'));

@@ -608,3 +623,3 @@ console.log(formatBuildResults(results));

const markedDocxPath = path.join(dir, '.paper-marked.docx');
const pandocResult = await runPandoc(markedPath, 'docx', config, { ...options, outputPath: markedDocxPath });
const pandocResult = await runPandoc(markedPath, 'docx', config, { ...options, outputPath: markedDocxPath, pandocArgs: options.pandocArg });
spinBuild.stop();

@@ -685,3 +700,3 @@ if (!pandocResult.success) {

spinPdf.text = 'Building annotated PDF...';
const pandocResult = await runPandoc(annotatedPath, 'pdf', annotatedConfig, { ...options, outputPath: annotatedPdfPath });
const pandocResult = await runPandoc(annotatedPath, 'pdf', annotatedConfig, { ...options, outputPath: annotatedPdfPath, pandocArgs: options.pandocArg });
spinPdf.stop();

@@ -688,0 +703,0 @@ if (!process.env.DEBUG) {

@@ -1,1 +0,1 @@

{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../lib/commands/build.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,UAAU,MAAM;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAiI3B,CAAC;AA6HF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAkDhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GACjG,MAAM,CAuBR"}
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,UAAU,MAAM;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAsK3B,CAAC;AA6HF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAkDhF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE;IAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GACjG,MAAM,CAuBR"}

@@ -44,2 +44,19 @@ /**

},
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args applied to every format build (e.g. --lua-filter=...). Format-specific lists are appended after these; --pandoc-arg CLI values are appended last.',
items: { type: 'string' },
},
output: {
type: 'object',
description: 'Per-format output filenames. Keys are format names (pdf, docx, tex, beamer, pptx); values are paths. Relative paths resolve under outputDir; absolute paths are honored as-is. Extension auto-added if missing. CLI `-o` overrides this map.',
properties: {
pdf: { type: 'string' },
docx: { type: 'string' },
tex: { type: 'string' },
beamer: { type: 'string' },
pptx: { type: 'string' },
},
additionalProperties: false,
},
sections: {

@@ -114,2 +131,7 @@ type: 'array',

footer: { type: 'string' },
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for PDF builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -125,2 +147,12 @@ additionalProperties: true,

toc: { type: 'boolean', default: false },
translateRawFigures: {
type: 'boolean',
default: true,
description: 'Auto-translate the common \\begin{figure}...\\end{figure} shape to portable ![](){#fig: ...} markdown so figures render in docx. Pandoc strips raw LaTeX in docx output silently otherwise.',
},
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for DOCX builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -134,2 +166,7 @@ additionalProperties: true,

standalone: { type: 'boolean', default: true },
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for TeX builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -136,0 +173,0 @@ additionalProperties: true,

@@ -1,1 +0,1 @@

{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"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"}

@@ -14,4 +14,2 @@ /**

| 'partial-start-stripped'
| 'partial-window'
| 'partial-window-stripped'
| 'context-both'

@@ -177,25 +175,20 @@ | 'context-before'

// Strategy 4: word window from anchor (prefix or interior).
// Sliding the window across the anchor catches the case where the
// anchor's prefix has been edited but a chunk in the middle/end
// survived intact (e.g. "Sensitivity analyses were performed by
// perturbing the prior variance" → drifted "Sensitivity analyses
// perturbed the prior variance" still contains "the prior variance").
// Strategy 4: first N words of anchor (long anchors)
const words = anchor.split(/\s+/);
if (words.length > 3) {
for (let n = Math.min(6, words.length); n >= 3; n--) {
for (let start = 0; start + n <= words.length; start++) {
const window = words.slice(start, start + n).join(' ');
const windowLower = window.toLowerCase();
if (windowLower.length < 15) continue;
let occ = findAllOccurrences(textLower, windowLower);
if (occ.length > 0) {
const strategy: AnchorStrategy = start === 0 ? 'partial-start' : 'partial-window';
return { occurrences: occ, matchedAnchor: window, strategy };
const partialAnchor = words.slice(0, n).join(' ').toLowerCase();
if (partialAnchor.length >= 15) {
occurrences = findAllOccurrences(textLower, partialAnchor);
if (occurrences.length > 0) {
return { occurrences, matchedAnchor: words.slice(0, n).join(' '), strategy: 'partial-start' };
}
occ = findAllOccurrences(strippedLower, windowLower);
if (occ.length > 0) {
const strategy: AnchorStrategy = start === 0 ? 'partial-start-stripped' : 'partial-window-stripped';
return { occurrences: occ, matchedAnchor: window, strategy, stripped: true };
occurrences = findAllOccurrences(strippedLower, partialAnchor);
if (occurrences.length > 0) {
return {
occurrences,
matchedAnchor: words.slice(0, n).join(' '),
strategy: 'partial-start-stripped',
stripped: true,
};
}

@@ -206,16 +199,6 @@ }

// Strategy 5: context (before/after) only.
//
// For a non-empty anchor that already failed every text-based strategy
// above, we treat context as a degraded placement: classify it
// 'context-only' so callers can warn the user. We also reject
// implausible brackets — if both contexts match but the gap between
// them is far too small to contain the anchor (e.g. the anchored
// sentence was deleted), do not silently land the comment between
// the surviving sentences. Return 'failed' so the user is told to
// place it manually.
// Strategy 5: context (before/after) only
if (before || after) {
const beforeLower = before.toLowerCase();
const afterLower = after.toLowerCase();
const anchorLen = anchor.length;

@@ -227,17 +210,4 @@ if (before && after) {

const afterIdx = textLower.indexOf(afterLower.slice(0, 50), searchStart);
if (afterIdx !== -1) {
const gap = afterIdx - searchStart;
// Require the bracket to plausibly contain a remnant of the anchor.
// Below 30% of anchor length: anchor was deleted — refuse to place.
// Above 2× anchor length + slack: brackets are too far apart, the
// matcher has latched onto unrelated repeats of common context.
const minGap = Math.floor(anchorLen * 0.3);
const maxGap = Math.min(500, anchorLen * 2 + 50);
if (gap >= minGap && gap <= maxGap) {
return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
}
// Both brackets found but gap implausible: anchor likely deleted.
// Don't fall back to single-side context — that would silently
// place the comment in the wrong location.
return { occurrences: [], matchedAnchor: null, strategy: 'failed' };
if (afterIdx !== -1 && afterIdx - searchStart < 500) {
return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
}

@@ -299,4 +269,2 @@ }

case 'partial-start-stripped':
case 'partial-window':
case 'partial-window-stripped':
case 'split-match':

@@ -303,0 +271,0 @@ return 'drift';

@@ -35,4 +35,9 @@ /**

/** Maximum title length for output filename */
const MAX_TITLE_FILENAME_LENGTH = 50;
/**
* Maximum length for slugified-title output filenames. Only used when no
* explicit `output:` filename is configured. Long titles are truncated at the
* last `-` boundary at-or-before this length so words stay intact (the old
* blind `.slice(0, 50)` cut mid-word).
*/
const MAX_TITLE_FILENAME_LENGTH = 80;

@@ -73,2 +78,4 @@ // =============================================================================

monofont?: string;
/** Extra pandoc args appended for this format (after top-level pandocArgs). */
pandocArgs?: string[];
}

@@ -81,2 +88,10 @@

toc?: boolean;
pandocArgs?: string[];
/**
* Auto-translate the common-shape raw `\begin{figure}...\end{figure}` block
* to portable `![caption](path){#fig:label width=N%}` markdown so figures
* survive the docx build (pandoc otherwise drops raw LaTeX silently).
* Default true. Set false to opt out — blocks then warn and are left alone.
*/
translateRawFigures?: boolean;
}

@@ -86,2 +101,3 @@

standalone?: boolean;
pandocArgs?: string[];
}

@@ -98,2 +114,3 @@

fit_images?: boolean;
pandocArgs?: string[];
}

@@ -114,2 +131,3 @@

};
pandocArgs?: string[];
}

@@ -152,2 +170,15 @@

outputDir?: string | null;
/**
* Per-format output filenames. Keys are format names (pdf/docx/tex/beamer/
* pptx); values are paths. Relative paths resolve under outputDir; absolute
* paths are honored as-is. Extension is added if missing. CLI `-o` wins
* over this map.
*/
output?: Record<string, string>;
/**
* Extra pandoc args applied to every format. Format-specific args
* (e.g. docx.pandocArgs) are appended *after* these, and CLI --pandoc-arg
* values are appended last.
*/
pandocArgs?: string[];
_configPath?: string | null;

@@ -166,4 +197,16 @@ }

config?: BuildConfig;
/**
* Internal: forces the exact output path. Used by dual-mode/temp builds that
* route to specific temp files. Bypasses the `output:` resolver.
*/
outputPath?: string;
/**
* CLI override (`-o, --output <path>`). Beats `config.output[format]` but
* loses to `options.outputPath`. Relative paths resolve under outputDir;
* absolute paths bypass outputDir.
*/
output?: string;
crossref?: boolean;
/** Extra pandoc args from CLI (--pandoc-arg). Appended after config args. */
pandocArgs?: string[];
_refsAutoInjected?: boolean;

@@ -247,2 +290,3 @@ _forwardRefsResolved?: number;

toc: false,
translateRawFigures: true,
},

@@ -354,2 +398,16 @@ tex: {

/**
* In-place: copy `pandoc-args` → `pandocArgs` on an object (if not already set).
* Idempotent. Coerces a single string into a one-element array.
*/
function normalizePandocArgsKey(obj: Record<string, unknown>): void {
if (!obj || typeof obj !== 'object') return;
const hy = obj['pandoc-args'];
if (hy === undefined) return;
if (obj.pandocArgs === undefined) {
obj.pandocArgs = Array.isArray(hy) ? hy : [hy];
}
delete obj['pandoc-args'];
}
/**
* Load rev.yaml config from directory

@@ -376,2 +434,12 @@ * @param directory - Project directory path

// Accept hyphenated `pandoc-args` (the form pandoc itself uses) in addition
// to camelCase `pandocArgs`. Hyphenated is what we document; camelCase is
// accepted for users who already prefer that convention.
normalizePandocArgsKey(userConfig);
for (const fmt of ['pdf', 'docx', 'tex', 'beamer', 'pptx'] as const) {
if (userConfig[fmt] && typeof userConfig[fmt] === 'object') {
normalizePandocArgsKey(userConfig[fmt]);
}
}
// Deep merge with defaults

@@ -844,2 +912,10 @@ let config: BuildConfig = {

// Pandoc strips raw LaTeX in docx output. Translate the common
// `\begin{figure}...\end{figure}` shape to portable markdown so figures
// actually appear; exotic blocks are left alone (warned about in build()).
if (config.docx?.translateRawFigures !== false) {
const { translated } = translateRawLatexFigures(content);
content = translated;
}
if (hasNumberedAffiliations(config)) {

@@ -912,5 +988,204 @@ const mdBlock = generateMarkdownAuthorBlock(config);

// =============================================================================
// Raw LaTeX figure detection / translation (docx)
// =============================================================================
/**
* Build pandoc arguments for format
* A raw LaTeX `\begin{figure}...\end{figure}` block found in source markdown.
* `exotic` blocks contain features we don't auto-translate (multiple
* `\includegraphics`, `\subfloat`, `\rotatebox`, unrecognised width units);
* pandoc strips raw LaTeX silently in docx output, so users get warned about
* anything that won't be translated.
*/
export interface RawLatexFigure {
file?: string;
line: number;
block: string;
exotic: boolean;
}
/** Match `\begin{figure}` / `\begin{figure*}` … `\end{figure}` blocks. */
function makeRawFigureRegex(): RegExp {
return /\\begin\{figure\*?\}(?:\[[^\]]*\])?[\s\S]*?\\end\{figure\*?\}/g;
}
/**
* Convert a LaTeX width spec to a markdown image attribute value.
* - `0.8\textwidth` → `80%`
* - `\linewidth` → `100%`
* - `8cm`, `2in`, `12pt` → kept verbatim
* Returns null for anything we don't translate (block stays "exotic").
*/
function convertLatexWidth(raw: string): string | null {
const trimmed = raw.trim();
// Coefficient × relative length
const rel = trimmed.match(/^([\d.]+)\s*\\(textwidth|linewidth|columnwidth)$/);
if (rel) {
const pct = Math.round(parseFloat(rel[1]!) * 100);
if (!isFinite(pct) || pct <= 0) return null;
return `${pct}%`;
}
// Bare relative length
if (/^\\(textwidth|linewidth|columnwidth)$/.test(trimmed)) return '100%';
// Absolute units
if (/^[\d.]+\s*(cm|mm|in|pt|px|em|ex)$/.test(trimmed)) return trimmed.replace(/\s+/g, '');
return null;
}
/** Extract a balanced `{...}` argument that follows `command` in `text`. */
function extractBracedArg(text: string, command: string): string | null {
const idx = text.indexOf(command);
if (idx === -1) return null;
let i = idx + command.length;
while (i < text.length && /\s/.test(text[i]!)) i++;
if (text[i] !== '{') return null;
i++;
const start = i;
let depth = 1;
while (i < text.length) {
const ch = text[i]!;
if (ch === '\\' && i + 1 < text.length) { i += 2; continue; }
if (ch === '{') depth++;
else if (ch === '}') {
depth--;
if (depth === 0) return text.slice(start, i);
}
i++;
}
return null;
}
/** True if a `\begin{figure}` block contains features we don't auto-translate. */
function isExoticFigureBlock(block: string): boolean {
if (/\\subfloat\b/.test(block)) return true;
if (/\\rotatebox\b/.test(block)) return true;
const includes = (block.match(/\\includegraphics\b/g) || []).length;
if (includes !== 1) return true;
const m = block.match(/\\includegraphics\s*(?:\[([^\]]*)\])?\s*\{([^}]+)\}/);
if (!m) return true;
const opts = m[1] || '';
const widthMatch = opts.match(/(?:^|,)\s*width\s*=\s*([^,]+)/);
if (widthMatch && !convertLatexWidth(widthMatch[1]!)) return true;
return false;
}
/**
* Find raw LaTeX figure blocks containing `\includegraphics` in markdown.
* `file`, if given, is attached to each result. `line` is 1-based within the
* supplied content (the line where `\begin{figure}` sits).
*/
export function detectRawLatexFigures(content: string, file?: string): RawLatexFigure[] {
const figures: RawLatexFigure[] = [];
const re = makeRawFigureRegex();
let m: RegExpExecArray | null;
while ((m = re.exec(content)) !== null) {
const block = m[0];
if (!block.includes('\\includegraphics')) continue;
const line = content.slice(0, m.index).split(/\r?\n/).length;
figures.push({ file, line, block, exotic: isExoticFigureBlock(block) });
}
return figures;
}
/**
* Translate the 80% case: single `\includegraphics` figure with optional
* `\caption{...}` and `\label{...}`, wrapped in `\begin{figure}...\end{figure}`,
* to portable `![caption](path){#fig:label width=N%}` markdown. Exotic blocks
* (see `isExoticFigureBlock`) are left untouched.
*/
export function translateRawLatexFigures(content: string): { translated: string; translatedCount: number } {
let translatedCount = 0;
const re = makeRawFigureRegex();
const translated = content.replace(re, (block) => {
if (!block.includes('\\includegraphics')) return block;
if (isExoticFigureBlock(block)) return block;
const inc = block.match(/\\includegraphics\s*(?:\[([^\]]*)\])?\s*\{([^}]+)\}/);
if (!inc) return block;
const optsStr = inc[1] || '';
const imgPath = inc[2]!.trim();
let width: string | undefined;
const widthMatch = optsStr.match(/(?:^|,)\s*width\s*=\s*([^,]+)/);
if (widthMatch) {
const w = convertLatexWidth(widthMatch[1]!);
if (!w) return block; // already filtered by isExoticFigureBlock, defensive
width = w;
}
const caption = (extractBracedArg(block, '\\caption') ?? '').trim();
const labelRaw = extractBracedArg(block, '\\label');
const attrs: string[] = [];
if (labelRaw) {
const label = labelRaw.trim();
const labelWithPrefix = /^[a-z]+:/i.test(label) ? label : `fig:${label}`;
attrs.push(`#${labelWithPrefix}`);
}
if (width) attrs.push(`width=${width}`);
translatedCount++;
const attrStr = attrs.length > 0 ? ` {${attrs.join(' ')}}` : '';
return `![${caption}](${imgPath})${attrStr}`;
});
return { translated, translatedCount };
}
/**
* Format the warning surfaced for raw LaTeX figure blocks that won't render
* in docx. `translateEnabled` reflects whether auto-translate ran (true = the
* listed blocks are exotic leftovers; false = no translation was attempted).
*/
function formatRawLatexFigureWarning(figs: RawLatexFigure[], translateEnabled: boolean): string {
const reason = translateEnabled ? 'too complex to auto-translate' : 'translateRawFigures: false';
const lines: string[] = [
`${figs.length} raw LaTeX figure block(s) won't render in docx (${reason}).`,
];
for (const f of figs) {
const loc = f.file ? `${f.file}:${f.line}` : `line ${f.line}`;
const pathMatch = f.block.match(/\\includegraphics\s*(?:\[[^\]]*\])?\s*\{([^}]+)\}/);
const pathInfo = pathMatch ? ` ${pathMatch[1]!.trim()}` : '';
lines.push(` ${loc}${pathInfo}`);
}
lines.push(' Hint: use ![caption](path){#fig:label width=80%} for format-portable figures,');
lines.push(' or pass --pandoc-arg=--lua-filter=<your.lua> to translate them yourself.');
return lines.join('\n');
}
/**
* Walk section files and gather a warning for any raw LaTeX figure blocks that
* won't survive the docx build. Returns null when there's nothing to warn about.
*/
export function collectRawLatexFigureWarning(directory: string, config: BuildConfig): string | null {
const translateEnabled = config.docx?.translateRawFigures !== false;
const all: RawLatexFigure[] = [];
for (const section of findSections(directory, config.sections)) {
const sectionPath = path.join(directory, section);
if (!fs.existsSync(sectionPath)) continue;
try {
const content = fs.readFileSync(sectionPath, 'utf-8');
const figs = detectRawLatexFigures(content, section);
for (const f of figs) {
// When auto-translate is on, non-exotic blocks get rewritten cleanly —
// only the exotic leftovers need warning. When opted out, everything
// is at risk and we warn about every block.
if (translateEnabled && !f.exotic) continue;
all.push(f);
}
} catch {
// ignore unreadable sections
}
}
if (all.length === 0) return null;
return formatRawLatexFigureWarning(all, translateEnabled);
}
/**
* Build pandoc arguments for format.
*
* Returns only the built-in args derived from config. Passthrough args
* (config.pandocArgs, config[format].pandocArgs, CLI --pandoc-arg) are
* appended later in runPandoc so they win against pptx/crossref defaults
* added there.
*/
export function buildPandocArgs(format: string, config: BuildConfig, outputPath: string): string[] {

@@ -1033,2 +1308,26 @@ const args: string[] = [];

/**
* Collect passthrough pandoc args for a format in the canonical order:
* top-level config → format-specific config → CLI extras. Later wins for
* repeated flags.
*/
export function collectPandocPassthroughArgs(
format: string,
config: BuildConfig,
extraArgs: string[] = []
): string[] {
const out: string[] = [];
if (config.pandocArgs && config.pandocArgs.length > 0) {
out.push(...config.pandocArgs);
}
const formatConfig = (config as unknown as Record<string, { pandocArgs?: string[] } | undefined>)[format];
if (formatConfig?.pandocArgs && formatConfig.pandocArgs.length > 0) {
out.push(...formatConfig.pandocArgs);
}
if (extraArgs.length > 0) {
out.push(...extraArgs);
}
return out;
}
/**
* Write crossref.yaml if needed

@@ -1065,3 +1364,89 @@ */

/** File extension (with leading dot) for each supported pandoc format. */
const FORMAT_EXTENSIONS: Record<string, string> = {
tex: '.tex',
pdf: '.pdf',
docx: '.docx',
beamer: '.pdf',
pptx: '.pptx',
};
/** Get file extension for a format, defaulting to `.pdf`. */
export function getFormatExtension(format: string): string {
return FORMAT_EXTENSIONS[format] ?? '.pdf';
}
/**
* Slugify a title for use as a default output filename. Lowercases, replaces
* non-alphanumeric runs with `-`, and truncates at the last `-` boundary
* at-or-before MAX_TITLE_FILENAME_LENGTH so words stay whole (the old blind
* `.slice` cut mid-word).
*/
export function slugifyTitle(title: string): string {
if (!title) return 'paper';
const slug = title.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
if (!slug) return 'paper';
if (slug.length <= MAX_TITLE_FILENAME_LENGTH) return slug;
const cut = slug.slice(0, MAX_TITLE_FILENAME_LENGTH);
const lastDash = cut.lastIndexOf('-');
// Only truncate at a hyphen if it leaves a reasonable amount of content.
// Otherwise hard-cut (handles degenerate titles with no spaces at all).
if (lastDash >= MAX_TITLE_FILENAME_LENGTH / 2) {
return slug.slice(0, lastDash);
}
return cut;
}
/**
* Ensure `name` ends with `ext` (case-insensitive). If the user already supplied
* the correct extension, return unchanged; if they supplied none or a different
* one, append the format's canonical extension.
*
* Different-extension case (e.g. `output.docx` when building tex): we append
* rather than replace, since stripping looks like an unsafe guess. The result
* `output.docx.tex` is loud enough to flag the misconfiguration.
*/
function ensureExtension(name: string, ext: string): string {
if (name.toLowerCase().endsWith(ext.toLowerCase())) return name;
return name + ext;
}
/**
* Resolve the final output path for a build.
*
* Priority: `options.outputPath` (internal force) > `cliOverride` (-o flag) >
* `config.output[format]` > slugified title fallback.
*
* Relative paths from `cliOverride`/`config.output` resolve under outputDir;
* absolute paths bypass outputDir. The fallback path always lives under
* outputDir.
*
* @param suffix - Appended before the extension (e.g. "-changes", "-slides").
* Suppressed when user supplied an explicit name via CLI or
* config — they pick their own suffix.
*/
export function resolveOutputPath(
directory: string,
config: BuildConfig,
format: string,
options: { cliOverride?: string; suffix?: string } = {}
): string {
const { cliOverride, suffix = '' } = options;
const ext = getFormatExtension(format);
const explicit = cliOverride ?? config.output?.[format];
if (explicit) {
const baseDir = path.isAbsolute(explicit)
? path.dirname(explicit)
: resolveOutputDir(directory, config);
const baseName = path.basename(explicit);
const stem = baseName.replace(/\.[^./\\]+$/, '');
return path.join(baseDir, ensureExtension(`${stem}${suffix}`, ext));
}
const slug = slugifyTitle(config.title);
return path.join(resolveOutputDir(directory, config), `${slug}${suffix}${ext}`);
}
/**
* Run pandoc build

@@ -1076,24 +1461,12 @@ */

const directory = path.dirname(inputPath);
const baseName = config.title
? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50)
: 'paper';
// Map format to file extension
const extMap: Record<string, string> = {
tex: '.tex',
pdf: '.pdf',
docx: '.docx',
beamer: '.pdf', // beamer outputs PDF
pptx: '.pptx',
};
const ext = extMap[format] || '.pdf';
// For beamer, use -slides suffix to distinguish from regular PDF
// outputPath (internal force) wins over the resolver. For beamer, we keep
// the `-slides` suffix on the slug fallback to distinguish from a regular
// PDF build; when the user supplies an explicit name, they pick their own.
const suffix = format === 'beamer' ? '-slides' : '';
// Allow custom output path via options. Auto-named outputs go through the
// configured outputDir (default 'output/'); explicit paths are honored as-is
// so callers can route temp/intermediate artefacts where they want.
const outputPath = options.outputPath
? options.outputPath
: path.join(resolveOutputDir(directory, config), `${baseName}${suffix}${ext}`);
?? resolveOutputPath(directory, config, format, {
cliOverride: options.output,
suffix,
});

@@ -1165,5 +1538,14 @@ if (!options.outputPath) {

// Passthrough args go last so they win against built-in defaults.
args.push(...collectPandocPassthroughArgs(format, config, options.pandocArgs));
// Input file (use basename since we set cwd to directory)
args.push(path.basename(inputPath));
if (options.verbose) {
const quoted = args.map(a => /[\s"'$`]/.test(a) ? `"${a.replace(/"/g, '\\"')}"` : a).join(' ');
console.error(`[pandoc ${format}] (cwd: ${directory})`);
console.error(` pandoc ${quoted}`);
}
return new Promise((resolve) => {

@@ -1285,2 +1667,8 @@ const pandoc: ChildProcess = spawn('pandoc', args, {

}
// Warn about raw LaTeX figure blocks that won't render in docx (pandoc
// drops them silently). With auto-translate on (default), this surfaces
// only the exotic leftovers; with it off, every block.
const rawFigWarning = collectRawLatexFigureWarning(directory, config);
if (rawFigWarning) warnings.push(rawFigWarning);
}

@@ -1287,0 +1675,0 @@

@@ -55,2 +55,4 @@ /**

verbose?: boolean;
pandocArg?: string[];
output?: string;
}

@@ -491,3 +493,10 @@

.option('--aspectratio <ratio>', 'Beamer aspect ratio (169, 43)')
.option('--verbose', 'Show detailed output including postprocess scripts')
.option(
'--pandoc-arg <arg>',
'Extra arg to pass to pandoc (repeatable). Applied to every format being built; appended after rev.yaml pandoc-args so CLI wins.',
(val: string, prev: string[] = []) => [...prev, val],
[]
)
.option('-o, --output <path>', 'Output filename or path. Relative paths resolve under outputDir; absolute paths bypass it. Extension auto-added if missing. Applied to every format being built; overrides rev.yaml output.<format>.')
.option('--verbose', 'Show detailed output including postprocess scripts and the pandoc invocation')
.action(async (formats: string[], options: BuildOptions) => {

@@ -582,3 +591,3 @@ const dir = path.resolve(options.dir);

const { combineSections, resolveOutputDir } = await import('../build.js');
const { combineSections, resolveOutputPath } = await import('../build.js');
const { buildWithTrackChanges } = await import('../trackchanges.js');

@@ -594,8 +603,8 @@

const baseName = config.title
? config.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 50)
: 'paper';
const outDir = resolveOutputDir(dir, config);
const outputPath = resolveOutputPath(dir, config, 'docx', {
cliOverride: options.output,
suffix: '-changes',
});
const outDir = path.dirname(outputPath);
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
const outputPath = path.join(outDir, `${baseName}-changes.docx`);

@@ -632,6 +641,8 @@ const spinTc = fmt.spinner('Applying track changes...').start();

try {
const { results, paperPath, forwardRefsResolved, refsAutoInjected } = await build(dir, targetFormats, {
const { results, paperPath, forwardRefsResolved, refsAutoInjected, warnings } = await build(dir, targetFormats, {
crossref: options.crossref,
config,
verbose: options.verbose,
pandocArgs: options.pandocArg,
output: options.output,
});

@@ -651,2 +662,13 @@

if (warnings && warnings.length > 0) {
for (const w of warnings) {
// Each warning may span multiple lines — colour the first line as
// a warning header and pass through the rest unchanged.
const [head, ...rest] = w.split('\n');
console.log(chalk.yellow(`Warning: ${head}`));
for (const line of rest) console.log(chalk.yellow(line));
}
console.log('');
}
console.log(chalk.cyan('Output:'));

@@ -712,3 +734,3 @@ console.log(formatBuildResults(results));

const markedDocxPath = path.join(dir, '.paper-marked.docx');
const pandocResult = await runPandoc(markedPath, 'docx', config, { ...options, outputPath: markedDocxPath });
const pandocResult = await runPandoc(markedPath, 'docx', config, { ...options, outputPath: markedDocxPath, pandocArgs: options.pandocArg });
spinBuild.stop();

@@ -796,3 +818,3 @@

spinPdf.text = 'Building annotated PDF...';
const pandocResult = await runPandoc(annotatedPath, 'pdf', annotatedConfig, { ...options, outputPath: annotatedPdfPath });
const pandocResult = await runPandoc(annotatedPath, 'pdf', annotatedConfig, { ...options, outputPath: annotatedPdfPath, pandocArgs: options.pandocArg });
spinPdf.stop();

@@ -799,0 +821,0 @@

@@ -94,2 +94,19 @@ /**

},
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args applied to every format build (e.g. --lua-filter=...). Format-specific lists are appended after these; --pandoc-arg CLI values are appended last.',
items: { type: 'string' },
},
output: {
type: 'object',
description: 'Per-format output filenames. Keys are format names (pdf, docx, tex, beamer, pptx); values are paths. Relative paths resolve under outputDir; absolute paths are honored as-is. Extension auto-added if missing. CLI `-o` overrides this map.',
properties: {
pdf: { type: 'string' },
docx: { type: 'string' },
tex: { type: 'string' },
beamer: { type: 'string' },
pptx: { type: 'string' },
},
additionalProperties: false,
},
sections: {

@@ -164,2 +181,7 @@ type: 'array',

footer: { type: 'string' },
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for PDF builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -175,2 +197,12 @@ additionalProperties: true,

toc: { type: 'boolean', default: false },
translateRawFigures: {
type: 'boolean',
default: true,
description: 'Auto-translate the common \\begin{figure}...\\end{figure} shape to portable ![](){#fig: ...} markdown so figures render in docx. Pandoc strips raw LaTeX in docx output silently otherwise.',
},
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for DOCX builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -184,2 +216,7 @@ additionalProperties: true,

standalone: { type: 'boolean', default: true },
'pandoc-args': {
type: 'array',
description: 'Extra pandoc args for TeX builds. Appended after the top-level pandoc-args list.',
items: { type: 'string' },
},
},

@@ -186,0 +223,0 @@ additionalProperties: true,

{
"name": "docrev",
"version": "0.9.17",
"version": "0.9.18",
"description": "Academic paper revision workflow: Word ↔ Markdown round-trips, DOI validation, reviewer comments",

@@ -5,0 +5,0 @@ "type": "module",

@@ -65,2 +65,5 @@ # docrev Command Reference

rev build docx --show-changes # DOCX with visible track changes (audit)
rev build docx --pandoc-arg=--lua-filter=tofill.lua # Pass extra args to pandoc
rev build -o Final_Report # Override output filename (extension auto-added)
rev build pdf --verbose # Echo the pandoc invocation (useful for filter debugging)
```

@@ -71,2 +74,65 @@

#### Choosing output filenames
By default, the output basename is derived from `title:` (slugified — e.g.
"My Paper" → `my-paper.docx`). Long titles are truncated at word boundaries
(at the last `-` at-or-before 80 chars), so `communities` stays whole instead
of becoming `communitie`.
To pick your own filename, set per-format names in `rev.yaml`:
```yaml
output:
docx: ADAPT_proposal_draft.docx
pdf: ADAPT_proposal_draft.pdf
```
Extensions are optional — `ADAPT_proposal_draft` is fine, the right extension
is added per format. Relative paths resolve under `outputDir`; absolute paths
bypass `outputDir`.
Or override on the command line with `-o, --output <path>`:
```bash
rev build docx -o Final_Report # → output/Final_Report.docx
rev build pdf docx -o Final_Report # Applies to both formats
rev build -o /tmp/draft.docx docx # Absolute path bypasses outputDir
```
CLI `-o` wins over `output:` in `rev.yaml`. When `--dual` is on, the
`_comments` variant piggybacks on the chosen name (e.g.
`Final_Report_comments.docx`). When `--show-changes` is on, the audit DOCX
uses the chosen name with a `-changes` suffix
(e.g. `Final_Report-changes.docx`).
#### Passing custom pandoc args
For pandoc flags rev doesn't surface directly (Lua/JSON filters, custom
templates, variables, etc.), use the repeatable `--pandoc-arg` flag or the
`pandoc-args` field in `rev.yaml`:
```yaml
# rev.yaml — applies to every format
pandoc-args:
- --lua-filter=tofill.lua
- --shift-heading-level-by=1
# Format-specific (concatenated after the top-level list)
docx:
pandoc-args:
- --lua-filter=docx_only.lua
pdf:
pandoc-args:
- --variable=papersize:a4
```
```bash
# CLI overrides — appended last, so pandoc's last-wins rule lets CLI flags
# beat repeated config flags
rev build docx --pandoc-arg=--lua-filter=cli.lua --pandoc-arg=--metadata=draft:true
```
Run with `--verbose` to print the full pandoc command line (one per format).
Copy-paste it into a terminal to reproduce a build manually.
The `--dual` flag produces:

@@ -73,0 +139,0 @@ - `output/<title>.docx` — clean, for submission

@@ -20,5 +20,4 @@ ---

title: "My Document"
output:
docx:
reference-doc: template.docx
docx:
reference: template.docx
```

@@ -102,4 +101,12 @@

Outputs land in `output/` by default; set `outputDir: null` in `rev.yaml`
to keep them alongside `paper.md` (legacy layout).
to keep them alongside `paper.md` (legacy layout). The basename is derived
from `title:` unless overridden — set `output: { docx: foo.docx, pdf: foo.pdf }`
in `rev.yaml` or pass `-o, --output <path>` on the CLI. See REFERENCE.md →
"Choosing output filenames".
For pandoc flags rev doesn't surface directly (Lua filters, custom variables,
templates), use `--pandoc-arg` (repeatable) or `pandoc-args:` in `rev.yaml`
(both top-level and per-format). Run with `--verbose` to see the exact pandoc
invocation. See REFERENCE.md → "Passing custom pandoc args" for details.
### 8. Archive reviewer files

@@ -188,2 +195,16 @@

Insert a figure with the format-portable syntax (renders in both PDF and Word):
```markdown
![Caption text.](figures/foo.pdf){#fig:foo width=80%}
```
Raw `\begin{figure}...\end{figure}` LaTeX blocks are PDF-only. For docx
builds, `rev` auto-translates the common shape (single `\includegraphics`
with optional `\caption{...}` and `\label{...}`) to the markdown form above
so figures still render. Exotic blocks (`\subfloat`, `\rotatebox`, multiple
`\includegraphics`) are left alone and warned about — convert them by hand
or supply a custom Lua filter via `--pandoc-arg`. Opt out of auto-translate
with `docx.translateRawFigures: false` in `rev.yaml`.
## Template Variables

@@ -190,0 +211,0 @@

{
"permissions": {
"allow": [
"Skill(code-quality)"
],
"deny": [],
"ask": []
}
}