docrev 0.9.14 → 0.9.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +66 -51
  2. package/dist/lib/wordcomments.d.ts.map +1 -1
  3. package/dist/lib/wordcomments.js +25 -2
  4. package/dist/lib/wordcomments.js.map +1 -1
  5. package/docs-src/build.py +113 -0
  6. package/docs-src/extra.css +208 -0
  7. package/docs-src/md-to-html.lua +6 -0
  8. package/docs-src/template.html +116 -0
  9. package/lib/wordcomments.ts +25 -2
  10. package/mkdocs.yml +64 -0
  11. package/package.json +1 -1
  12. package/site/assets/extra.css +208 -0
  13. package/site/commands.html +926 -0
  14. package/site/configuration.html +469 -0
  15. package/site/index.html +288 -0
  16. package/site/troubleshooting.html +461 -0
  17. package/site/workflow.html +518 -0
  18. package/skill/REFERENCE.md +44 -2
  19. package/skill/SKILL.md +20 -4
  20. package/dev_notes/bug_repro_comment_parser.md +0 -71
  21. package/dev_notes/stress2/adversarial.docx +0 -0
  22. package/dev_notes/stress2/build_adversarial.ts +0 -186
  23. package/dev_notes/stress2/drift_matcher.ts +0 -62
  24. package/dev_notes/stress2/probe_anchors.ts +0 -35
  25. package/dev_notes/stress2/project/adversarial.docx +0 -0
  26. package/dev_notes/stress2/project/discussion.before.md +0 -3
  27. package/dev_notes/stress2/project/discussion.md +0 -3
  28. package/dev_notes/stress2/project/methods.before.md +0 -20
  29. package/dev_notes/stress2/project/methods.md +0 -20
  30. package/dev_notes/stress2/project/rev.yaml +0 -5
  31. package/dev_notes/stress2/project/sections.yaml +0 -4
  32. package/dev_notes/stress2/sections.yaml +0 -5
  33. package/dev_notes/stress2/trace_placement.ts +0 -50
  34. package/dev_notes/stresstest_boundaries.ts +0 -27
  35. package/dev_notes/stresstest_drift_apply.ts +0 -43
  36. package/dev_notes/stresstest_drift_compare.ts +0 -43
  37. package/dev_notes/stresstest_drift_v2.ts +0 -54
  38. package/dev_notes/stresstest_inspect.ts +0 -54
  39. package/dev_notes/stresstest_pstyle.ts +0 -55
  40. package/dev_notes/stresstest_section_debug.ts +0 -23
  41. package/dev_notes/stresstest_split.ts +0 -70
  42. package/dev_notes/stresstest_trace.ts +0 -19
  43. package/dev_notes/stresstest_verify_no_overwrite.ts +0 -40
@@ -0,0 +1,926 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-bs-theme="light">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Commands — docrev</title>
7
+ <meta name="description" content="CLI for writing documents in Markdown while collaborating with Word users.">
8
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sandstone/bootstrap.min.css">
9
+ <style>
10
+ html { -webkit-text-size-adjust: 100%; }
11
+ pre > code.sourceCode { white-space: pre; position: relative; }
12
+ pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
13
+ pre > code.sourceCode > span:empty { height: 1.2em; }
14
+ .sourceCode { overflow: visible; }
15
+ code.sourceCode > span { color: inherit; text-decoration: inherit; }
16
+ div.sourceCode { margin: 1em 0; }
17
+ pre.sourceCode { margin: 0; }
18
+ @media screen {
19
+ div.sourceCode { overflow: auto; }
20
+ }
21
+ @media print {
22
+ pre > code.sourceCode { white-space: pre-wrap; }
23
+ pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
24
+ }
25
+ pre.numberSource code
26
+ { counter-reset: source-line 0; }
27
+ pre.numberSource code > span
28
+ { position: relative; left: -4em; counter-increment: source-line; }
29
+ pre.numberSource code > span > a:first-child::before
30
+ { content: counter(source-line);
31
+ position: relative; left: -1em; text-align: right; vertical-align: baseline;
32
+ border: none; display: inline-block;
33
+ -webkit-touch-callout: none; -webkit-user-select: none;
34
+ -khtml-user-select: none; -moz-user-select: none;
35
+ -ms-user-select: none; user-select: none;
36
+ padding: 0 4px; width: 4em;
37
+ color: #aaaaaa;
38
+ }
39
+ pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
40
+ div.sourceCode
41
+ { }
42
+ @media screen {
43
+ pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
44
+ }
45
+ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
46
+ code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
47
+ code span.at { color: #7d9029; } /* Attribute */
48
+ code span.bn { color: #40a070; } /* BaseN */
49
+ code span.bu { color: #008000; } /* BuiltIn */
50
+ code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
51
+ code span.ch { color: #4070a0; } /* Char */
52
+ code span.cn { color: #880000; } /* Constant */
53
+ code span.co { color: #60a0b0; font-style: italic; } /* Comment */
54
+ code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
55
+ code span.do { color: #ba2121; font-style: italic; } /* Documentation */
56
+ code span.dt { color: #902000; } /* DataType */
57
+ code span.dv { color: #40a070; } /* DecVal */
58
+ code span.er { color: #ff0000; font-weight: bold; } /* Error */
59
+ code span.ex { } /* Extension */
60
+ code span.fl { color: #40a070; } /* Float */
61
+ code span.fu { color: #06287e; } /* Function */
62
+ code span.im { color: #008000; font-weight: bold; } /* Import */
63
+ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
64
+ code span.kw { color: #007020; font-weight: bold; } /* Keyword */
65
+ code span.op { color: #666666; } /* Operator */
66
+ code span.ot { color: #007020; } /* Other */
67
+ code span.pp { color: #bc7a00; } /* Preprocessor */
68
+ code span.sc { color: #4070a0; } /* SpecialChar */
69
+ code span.ss { color: #bb6688; } /* SpecialString */
70
+ code span.st { color: #4070a0; } /* String */
71
+ code span.va { color: #19177c; } /* Variable */
72
+ code span.vs { color: #4070a0; } /* VerbatimString */
73
+ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
74
+ </style>
75
+ <link rel="stylesheet" href="assets/extra.css">
76
+ </head>
77
+ <body>
78
+
79
+ <nav class="navbar navbar-expand-lg fixed-top" aria-label="Site navigation">
80
+ <div class="container">
81
+ <a class="navbar-brand me-2" href="index.html">docrev</a>
82
+ <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">
83
+ <span class="navbar-toggler-icon"></span>
84
+ </button>
85
+ <div class="collapse navbar-collapse" id="navbar-main">
86
+ <ul class="navbar-nav me-auto">
87
+ <li class="nav-item">
88
+ <a class="nav-link" href="index.html">Home</a>
89
+ </li>
90
+ <li class="nav-item">
91
+ <a class="nav-link" href="workflow.html">Get Started</a>
92
+ </li>
93
+ <li class="nav-item">
94
+ <a class="nav-link active" aria-current="page" href="commands.html">Commands</a>
95
+ </li>
96
+ <li class="nav-item">
97
+ <a class="nav-link" href="configuration.html">Configuration</a>
98
+ </li>
99
+ <li class="nav-item">
100
+ <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
101
+ </li>
102
+ </ul>
103
+ <ul class="navbar-nav">
104
+ <li class="nav-item">
105
+ <button id="theme-toggle" class="btn btn-link nav-link border-0" aria-label="Toggle dark mode">
106
+ <svg id="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
107
+ <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"/>
108
+ </svg>
109
+ <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">
110
+ <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"/>
111
+ </svg>
112
+ </button>
113
+ </li>
114
+ <li class="nav-item">
115
+ <a class="nav-link" href="https://github.com/gcol33/docrev" aria-label="GitHub">
116
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="currentColor" viewBox="0 0 16 16">
117
+ <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"/>
118
+ </svg>
119
+ </a>
120
+ </li>
121
+ <li class="nav-item">
122
+ <a class="nav-link" href="https://www.npmjs.com/package/docrev" aria-label="npm">
123
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
124
+ <path d="M0 0v16h16V0zm5.333 13.333H2.667V5.333h2.666v5.334H8V5.333h2.667v8H5.333z"/>
125
+ </svg>
126
+ </a>
127
+ </li>
128
+ </ul>
129
+ </div>
130
+ </div>
131
+ </nav>
132
+
133
+ <div class="container template-article">
134
+ <div class="row">
135
+ <main id="main" class="col-md-9">
136
+ <h1 id="command-reference">Command Reference</h1>
137
+ <p>Complete list of <code>rev</code> commands.</p>
138
+ <h2 id="build-create">Build &amp; Create</h2>
139
+ <table>
140
+ <colgroup>
141
+ <col style="width: 40%" />
142
+ <col style="width: 59%" />
143
+ </colgroup>
144
+ <thead>
145
+ <tr>
146
+ <th>Command</th>
147
+ <th>Description</th>
148
+ </tr>
149
+ </thead>
150
+ <tbody>
151
+ <tr>
152
+ <td><code>rev build [formats...]</code></td>
153
+ <td>Build PDF/DOCX/TEX from sections</td>
154
+ </tr>
155
+ <tr>
156
+ <td><code>rev build pdf</code></td>
157
+ <td>Build PDF only</td>
158
+ </tr>
159
+ <tr>
160
+ <td><code>rev build docx</code></td>
161
+ <td>Build DOCX only</td>
162
+ </tr>
163
+ <tr>
164
+ <td><code>rev build tex</code></td>
165
+ <td>Build LaTeX only</td>
166
+ </tr>
167
+ <tr>
168
+ <td><code>rev build all</code></td>
169
+ <td>Build PDF + DOCX + TEX</td>
170
+ </tr>
171
+ <tr>
172
+ <td><code>rev build --toc</code></td>
173
+ <td>Include table of contents</td>
174
+ </tr>
175
+ <tr>
176
+ <td><code>rev build --dual</code></td>
177
+ <td>Output clean + comments DOCX (with threaded comments)</td>
178
+ </tr>
179
+ <tr>
180
+ <td><code>rev build --show-changes</code></td>
181
+ <td>Export DOCX with visible track changes</td>
182
+ </tr>
183
+ <tr>
184
+ <td><code>rev new &lt;name&gt;</code></td>
185
+ <td>Create new project (prompts for sections)</td>
186
+ </tr>
187
+ <tr>
188
+ <td><code>rev new &lt;name&gt; -s intro,methods,results</code></td>
189
+ <td>Create with specified sections</td>
190
+ </tr>
191
+ <tr>
192
+ <td><code>rev new --list</code></td>
193
+ <td>List available templates</td>
194
+ </tr>
195
+ <tr>
196
+ <td><code>rev install</code></td>
197
+ <td>Check/install dependencies (pandoc-crossref)</td>
198
+ </tr>
199
+ </tbody>
200
+ </table>
201
+ <h2 id="import-export">Import &amp; Export</h2>
202
+ <table>
203
+ <colgroup>
204
+ <col style="width: 40%" />
205
+ <col style="width: 59%" />
206
+ </colgroup>
207
+ <thead>
208
+ <tr>
209
+ <th>Command</th>
210
+ <th>Description</th>
211
+ </tr>
212
+ </thead>
213
+ <tbody>
214
+ <tr>
215
+ <td><code>rev import &lt;docx&gt;</code></td>
216
+ <td>Bootstrap project from Word (creates sections + rev.yaml)</td>
217
+ </tr>
218
+ <tr>
219
+ <td><code>rev import &lt;docx&gt; &lt;md&gt;</code></td>
220
+ <td>Import changes by diffing Word against your MD</td>
221
+ </tr>
222
+ <tr>
223
+ <td><code>rev sync [docx] [sections...]</code></td>
224
+ <td>Sync feedback from Word to section files</td>
225
+ </tr>
226
+ <tr>
227
+ <td><code>rev sync</code></td>
228
+ <td>Auto-detect most recent .docx</td>
229
+ </tr>
230
+ <tr>
231
+ <td><code>rev sync reviewed.docx methods</code></td>
232
+ <td>Sync only methods section</td>
233
+ </tr>
234
+ <tr>
235
+ <td><code>rev sync annotated.pdf</code></td>
236
+ <td>Extract comments from PDF into markdown</td>
237
+ </tr>
238
+ <tr>
239
+ <td><code>rev extract &lt;docx&gt;</code></td>
240
+ <td>Extract plain text from Word</td>
241
+ </tr>
242
+ <tr>
243
+ <td><code>rev archive</code></td>
244
+ <td>Move reviewer .docx files to archive folder</td>
245
+ </tr>
246
+ <tr>
247
+ <td><code>rev archive --by Smith</code></td>
248
+ <td>Specify reviewer name</td>
249
+ </tr>
250
+ <tr>
251
+ <td><code>rev archive --dry-run</code></td>
252
+ <td>Preview without moving</td>
253
+ </tr>
254
+ </tbody>
255
+ </table>
256
+ <p><strong>Word Import Features:</strong> - Extracts text
257
+ preserving structure - Extracts comments with author and anchor
258
+ text - Converts OMML equations to LaTeX - Extracts embedded images
259
+ to <code>media/</code> directory</p>
260
+ <h2 id="pdf-comments">PDF Comments</h2>
261
+ <table>
262
+ <colgroup>
263
+ <col style="width: 40%" />
264
+ <col style="width: 59%" />
265
+ </colgroup>
266
+ <thead>
267
+ <tr>
268
+ <th>Command</th>
269
+ <th>Description</th>
270
+ </tr>
271
+ </thead>
272
+ <tbody>
273
+ <tr>
274
+ <td><code>rev pdf-comments &lt;pdf&gt;</code></td>
275
+ <td>Extract and display comments from annotated PDF</td>
276
+ </tr>
277
+ <tr>
278
+ <td><code>rev pdf-comments &lt;pdf&gt; --with-text</code></td>
279
+ <td>Also extract the highlighted text content</td>
280
+ </tr>
281
+ <tr>
282
+ <td><code>rev pdf-comments &lt;pdf&gt; --append &lt;file.md&gt;</code></td>
283
+ <td>Append extracted comments to markdown file</td>
284
+ </tr>
285
+ <tr>
286
+ <td><code>rev pdf-comments &lt;pdf&gt; --json</code></td>
287
+ <td>Output comments as JSON</td>
288
+ </tr>
289
+ <tr>
290
+ <td><code>rev pdf-comments &lt;pdf&gt; --by-page</code></td>
291
+ <td>Group comments by page (default)</td>
292
+ </tr>
293
+ <tr>
294
+ <td><code>rev pdf-comments &lt;pdf&gt; --by-author</code></td>
295
+ <td>Group comments by author</td>
296
+ </tr>
297
+ <tr>
298
+ <td><code>rev build pdf --dual</code></td>
299
+ <td>Build clean PDF + annotated PDF with margin notes</td>
300
+ </tr>
301
+ </tbody>
302
+ </table>
303
+ <p><strong>Supported PDF Annotations:</strong> - Sticky notes
304
+ (Text annotations) - Text boxes (FreeText) - Highlights with
305
+ comments (text extraction supported) - Underlines with comments
306
+ (text extraction supported) - Strikethrough/deletion suggestions
307
+ (text extraction supported) - Squiggly underlines (text extraction
308
+ supported)</p>
309
+ <p><strong>Text Extraction:</strong> Use <code>--with-text</code>
310
+ to extract the actual text that was highlighted, underlined, or
311
+ struck through. This is slower but shows exactly what the reviewer
312
+ marked.</p>
313
+ <p><strong>PDF Dual Export:</strong> When building with
314
+ <code>--dual</code>, produces: - <code>paper.pdf</code> — clean
315
+ version for submission - <code>paper_comments.pdf</code> —
316
+ CriticMarkup comments rendered as LaTeX margin notes</p>
317
+ <h2 id="review-edit">Review &amp; Edit</h2>
318
+ <table>
319
+ <colgroup>
320
+ <col style="width: 40%" />
321
+ <col style="width: 59%" />
322
+ </colgroup>
323
+ <thead>
324
+ <tr>
325
+ <th>Command</th>
326
+ <th>Description</th>
327
+ </tr>
328
+ </thead>
329
+ <tbody>
330
+ <tr>
331
+ <td><code>rev review &lt;file&gt;</code></td>
332
+ <td>Interactive accept/reject TUI for track changes</td>
333
+ </tr>
334
+ <tr>
335
+ <td><code>rev status</code></td>
336
+ <td>Show project overview (words, comments, changes)</td>
337
+ </tr>
338
+ <tr>
339
+ <td><code>rev status &lt;file&gt;</code></td>
340
+ <td>Show annotation counts for specific file</td>
341
+ </tr>
342
+ <tr>
343
+ <td><code>rev comments &lt;file&gt;</code></td>
344
+ <td>List all comments with context</td>
345
+ </tr>
346
+ <tr>
347
+ <td><code>rev comments &lt;file&gt; --export comments.csv</code></td>
348
+ <td>Export comments to CSV</td>
349
+ </tr>
350
+ <tr>
351
+ <td><code>rev resolve &lt;file&gt; -n 1</code></td>
352
+ <td>Mark comment #1 as resolved</td>
353
+ </tr>
354
+ <tr>
355
+ <td><code>rev strip &lt;file&gt;</code></td>
356
+ <td>Output clean Markdown (annotations applied)</td>
357
+ </tr>
358
+ </tbody>
359
+ </table>
360
+ <h2 id="comment-navigation">Comment Navigation</h2>
361
+ <table>
362
+ <thead>
363
+ <tr>
364
+ <th>Command</th>
365
+ <th>Description</th>
366
+ </tr>
367
+ </thead>
368
+ <tbody>
369
+ <tr>
370
+ <td><code>rev next</code></td>
371
+ <td>Show next pending comment</td>
372
+ </tr>
373
+ <tr>
374
+ <td><code>rev next -n 3</code></td>
375
+ <td>Show 3rd pending comment</td>
376
+ </tr>
377
+ <tr>
378
+ <td><code>rev prev</code></td>
379
+ <td>Show last pending comment</td>
380
+ </tr>
381
+ <tr>
382
+ <td><code>rev prev -n 2</code></td>
383
+ <td>Show 2nd from last pending</td>
384
+ </tr>
385
+ <tr>
386
+ <td><code>rev first</code></td>
387
+ <td>Show first comment (all, not just pending)</td>
388
+ </tr>
389
+ <tr>
390
+ <td><code>rev first methods</code></td>
391
+ <td>First comment in methods section</td>
392
+ </tr>
393
+ <tr>
394
+ <td><code>rev last</code></td>
395
+ <td>Show last comment</td>
396
+ </tr>
397
+ <tr>
398
+ <td><code>rev todo</code></td>
399
+ <td>List all pending comments as checklist</td>
400
+ </tr>
401
+ <tr>
402
+ <td><code>rev todo --by-author</code></td>
403
+ <td>Group pending comments by author</td>
404
+ </tr>
405
+ </tbody>
406
+ </table>
407
+ <h2 id="track-changes">Track Changes</h2>
408
+ <table>
409
+ <thead>
410
+ <tr>
411
+ <th>Command</th>
412
+ <th>Description</th>
413
+ </tr>
414
+ </thead>
415
+ <tbody>
416
+ <tr>
417
+ <td><code>rev accept &lt;file&gt;</code></td>
418
+ <td>List track changes</td>
419
+ </tr>
420
+ <tr>
421
+ <td><code>rev accept &lt;file&gt; -n 1</code></td>
422
+ <td>Accept change #1</td>
423
+ </tr>
424
+ <tr>
425
+ <td><code>rev accept &lt;file&gt; -a</code></td>
426
+ <td>Accept all changes</td>
427
+ </tr>
428
+ <tr>
429
+ <td><code>rev reject &lt;file&gt; -n 1</code></td>
430
+ <td>Reject change #1</td>
431
+ </tr>
432
+ <tr>
433
+ <td><code>rev reject &lt;file&gt; -a</code></td>
434
+ <td>Reject all changes</td>
435
+ </tr>
436
+ </tbody>
437
+ </table>
438
+ <h2 id="cross-references">Cross-References</h2>
439
+ <table>
440
+ <colgroup>
441
+ <col style="width: 40%" />
442
+ <col style="width: 59%" />
443
+ </colgroup>
444
+ <thead>
445
+ <tr>
446
+ <th>Command</th>
447
+ <th>Description</th>
448
+ </tr>
449
+ </thead>
450
+ <tbody>
451
+ <tr>
452
+ <td><code>rev refs [file]</code></td>
453
+ <td>Show figure/table registry and reference status</td>
454
+ </tr>
455
+ <tr>
456
+ <td><code>rev migrate &lt;file&gt;</code></td>
457
+ <td>Convert hardcoded refs (Fig. 1) to dynamic (<span
458
+ class="citation" data-cites="fig:label">@fig:label</span>)</td>
459
+ </tr>
460
+ </tbody>
461
+ </table>
462
+ <p><strong>Supported patterns:</strong> - <code>Figure 1</code> →
463
+ <code>@fig:label</code> - <code>Fig. 2a</code> →
464
+ <code>@fig:label</code> - <code>Figs. 1-3</code> →
465
+ <code>@fig:one; @fig:two; @fig:three</code> -
466
+ <code>Figures 1, 2, and 3</code> → multiple refs -
467
+ <code>Fig. 1a-c</code> → expands letter suffixes</p>
468
+ <h2 id="comments-replies">Comments &amp; Replies</h2>
469
+ <table>
470
+ <colgroup>
471
+ <col style="width: 40%" />
472
+ <col style="width: 59%" />
473
+ </colgroup>
474
+ <thead>
475
+ <tr>
476
+ <th>Command</th>
477
+ <th>Description</th>
478
+ </tr>
479
+ </thead>
480
+ <tbody>
481
+ <tr>
482
+ <td><code>rev config user "Name"</code></td>
483
+ <td>Set your name for replies</td>
484
+ </tr>
485
+ <tr>
486
+ <td><code>rev config sections "a,b,c"</code></td>
487
+ <td>Set default sections for new projects</td>
488
+ </tr>
489
+ <tr>
490
+ <td><code>rev reply &lt;file&gt;</code></td>
491
+ <td>Interactive reply to reviewer comments</td>
492
+ </tr>
493
+ <tr>
494
+ <td><code>rev reply &lt;file&gt; -n 1 -m "text"</code></td>
495
+ <td>Reply to specific comment (non-interactive)</td>
496
+ </tr>
497
+ </tbody>
498
+ </table>
499
+ <p><strong>Comment Threading:</strong> Adjacent comments from
500
+ different authors become threaded replies in Word:</p>
501
+ <div class="sourceCode" id="cb1"><pre
502
+ 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>
503
+ <h2 id="bibliography-dois">Bibliography &amp; DOIs</h2>
504
+ <table>
505
+ <colgroup>
506
+ <col style="width: 40%" />
507
+ <col style="width: 59%" />
508
+ </colgroup>
509
+ <thead>
510
+ <tr>
511
+ <th>Command</th>
512
+ <th>Description</th>
513
+ </tr>
514
+ </thead>
515
+ <tbody>
516
+ <tr>
517
+ <td><code>rev doi check [file.bib]</code></td>
518
+ <td>Validate DOIs in bibliography (Crossref + DataCite)</td>
519
+ </tr>
520
+ <tr>
521
+ <td><code>rev doi lookup [file.bib]</code></td>
522
+ <td>Search for missing DOIs by title/author/year</td>
523
+ </tr>
524
+ <tr>
525
+ <td><code>rev doi fetch &lt;doi&gt;</code></td>
526
+ <td>Fetch BibTeX entry from DOI</td>
527
+ </tr>
528
+ <tr>
529
+ <td><code>rev doi add &lt;doi&gt;</code></td>
530
+ <td>Fetch and add DOI entry to bibliography</td>
531
+ </tr>
532
+ </tbody>
533
+ </table>
534
+ <p><strong>Options:</strong> -
535
+ <code>--confidence low|medium|high</code> - Filter lookup results
536
+ - <code>--strict</code> - Fail if articles are missing DOIs - Skip
537
+ entries: add <code>nodoi = {true}</code> or <code>% no-doi</code>
538
+ comment</p>
539
+ <h2 id="validation-analysis">Validation &amp; Analysis</h2>
540
+ <table>
541
+ <colgroup>
542
+ <col style="width: 40%" />
543
+ <col style="width: 59%" />
544
+ </colgroup>
545
+ <thead>
546
+ <tr>
547
+ <th>Command</th>
548
+ <th>Description</th>
549
+ </tr>
550
+ </thead>
551
+ <tbody>
552
+ <tr>
553
+ <td><code>rev citations [file.bib]</code></td>
554
+ <td>Validate citations against bibliography</td>
555
+ </tr>
556
+ <tr>
557
+ <td><code>rev figures [file]</code></td>
558
+ <td>List figures/tables with reference counts</td>
559
+ </tr>
560
+ <tr>
561
+ <td><code>rev equations list</code></td>
562
+ <td>List all equations in section files</td>
563
+ </tr>
564
+ <tr>
565
+ <td><code>rev equations from-word &lt;docx&gt;</code></td>
566
+ <td>Extract equations from Word to LaTeX</td>
567
+ </tr>
568
+ <tr>
569
+ <td><code>rev response [files]</code></td>
570
+ <td>Generate response letter from comments</td>
571
+ </tr>
572
+ <tr>
573
+ <td><code>rev anonymize &lt;file&gt;</code></td>
574
+ <td>Prepare document for blind review</td>
575
+ </tr>
576
+ <tr>
577
+ <td><code>rev validate --journal &lt;name&gt;</code></td>
578
+ <td>Check manuscript against journal requirements</td>
579
+ </tr>
580
+ <tr>
581
+ <td><code>rev validate --list</code></td>
582
+ <td>List 21 available journal profiles</td>
583
+ </tr>
584
+ </tbody>
585
+ </table>
586
+ <h2 id="multi-reviewer-git">Multi-Reviewer &amp; Git</h2>
587
+ <table>
588
+ <colgroup>
589
+ <col style="width: 40%" />
590
+ <col style="width: 59%" />
591
+ </colgroup>
592
+ <thead>
593
+ <tr>
594
+ <th>Command</th>
595
+ <th>Description</th>
596
+ </tr>
597
+ </thead>
598
+ <tbody>
599
+ <tr>
600
+ <td><code>rev merge &lt;md&gt; &lt;docx...&gt;</code></td>
601
+ <td>Merge feedback from multiple Word documents</td>
602
+ </tr>
603
+ <tr>
604
+ <td><code>rev diff [ref]</code></td>
605
+ <td>Compare sections against git history</td>
606
+ </tr>
607
+ <tr>
608
+ <td><code>rev history [file]</code></td>
609
+ <td>Show revision history for sections</td>
610
+ </tr>
611
+ </tbody>
612
+ </table>
613
+ <h2 id="convenience-commands">Convenience Commands</h2>
614
+ <table>
615
+ <thead>
616
+ <tr>
617
+ <th>Command</th>
618
+ <th>Description</th>
619
+ </tr>
620
+ </thead>
621
+ <tbody>
622
+ <tr>
623
+ <td><code>rev word-count</code></td>
624
+ <td>Show word counts per section</td>
625
+ </tr>
626
+ <tr>
627
+ <td><code>rev word-count --limit 5000</code></td>
628
+ <td>Warn if over limit</td>
629
+ </tr>
630
+ <tr>
631
+ <td><code>rev word-count -j &lt;journal&gt;</code></td>
632
+ <td>Use journal word limit</td>
633
+ </tr>
634
+ <tr>
635
+ <td><code>rev stats</code></td>
636
+ <td>Project dashboard (words, figures, citations)</td>
637
+ </tr>
638
+ <tr>
639
+ <td><code>rev search &lt;query&gt;</code></td>
640
+ <td>Search across all section files</td>
641
+ </tr>
642
+ <tr>
643
+ <td><code>rev search -i &lt;query&gt;</code></td>
644
+ <td>Case-insensitive search</td>
645
+ </tr>
646
+ <tr>
647
+ <td><code>rev backup</code></td>
648
+ <td>Create timestamped backup zip</td>
649
+ </tr>
650
+ <tr>
651
+ <td><code>rev backup --name v1</code></td>
652
+ <td>Custom backup name</td>
653
+ </tr>
654
+ <tr>
655
+ <td><code>rev export</code></td>
656
+ <td>Export project as distributable zip</td>
657
+ </tr>
658
+ <tr>
659
+ <td><code>rev preview &lt;format&gt;</code></td>
660
+ <td>Build and open document</td>
661
+ </tr>
662
+ <tr>
663
+ <td><code>rev watch [format]</code></td>
664
+ <td>Auto-rebuild on file changes</td>
665
+ </tr>
666
+ <tr>
667
+ <td><code>rev lint</code></td>
668
+ <td>Check for broken refs, missing citations</td>
669
+ </tr>
670
+ <tr>
671
+ <td><code>rev clean</code></td>
672
+ <td>Remove generated files</td>
673
+ </tr>
674
+ <tr>
675
+ <td><code>rev clean --all</code></td>
676
+ <td>Also remove backups and exports</td>
677
+ </tr>
678
+ <tr>
679
+ <td><code>rev check</code></td>
680
+ <td>Pre-submission check (lint + grammar + citations)</td>
681
+ </tr>
682
+ <tr>
683
+ <td><code>rev open</code></td>
684
+ <td>Open project folder</td>
685
+ </tr>
686
+ <tr>
687
+ <td><code>rev open paper.pdf</code></td>
688
+ <td>Open specific file</td>
689
+ </tr>
690
+ </tbody>
691
+ </table>
692
+ <h2 id="grammar-spelling">Grammar &amp; Spelling</h2>
693
+ <table>
694
+ <colgroup>
695
+ <col style="width: 40%" />
696
+ <col style="width: 59%" />
697
+ </colgroup>
698
+ <thead>
699
+ <tr>
700
+ <th>Command</th>
701
+ <th>Description</th>
702
+ </tr>
703
+ </thead>
704
+ <tbody>
705
+ <tr>
706
+ <td><code>rev grammar</code></td>
707
+ <td>Check grammar/style issues</td>
708
+ </tr>
709
+ <tr>
710
+ <td><code>rev grammar --rules</code></td>
711
+ <td>List available grammar rules</td>
712
+ </tr>
713
+ <tr>
714
+ <td><code>rev grammar --learn &lt;word&gt;</code></td>
715
+ <td>Add word to custom dictionary</td>
716
+ </tr>
717
+ <tr>
718
+ <td><code>rev grammar --list</code></td>
719
+ <td>Show custom dictionary</td>
720
+ </tr>
721
+ <tr>
722
+ <td><code>rev spelling</code></td>
723
+ <td>Check spelling in all sections</td>
724
+ </tr>
725
+ <tr>
726
+ <td><code>rev spelling --british</code></td>
727
+ <td>Use British English dictionary</td>
728
+ </tr>
729
+ <tr>
730
+ <td><code>rev spelling --learn &lt;word&gt;</code></td>
731
+ <td>Add word to global dictionary</td>
732
+ </tr>
733
+ <tr>
734
+ <td><code>rev spelling --learn-project &lt;word&gt;</code></td>
735
+ <td>Add word to project dictionary</td>
736
+ </tr>
737
+ </tbody>
738
+ </table>
739
+ <h2 id="direct-docx-editing">Direct DOCX Editing</h2>
740
+ <table>
741
+ <colgroup>
742
+ <col style="width: 40%" />
743
+ <col style="width: 59%" />
744
+ </colgroup>
745
+ <thead>
746
+ <tr>
747
+ <th>Command</th>
748
+ <th>Description</th>
749
+ </tr>
750
+ </thead>
751
+ <tbody>
752
+ <tr>
753
+ <td><code>rev annotate &lt;docx&gt; -m "Comment" -s "text"</code></td>
754
+ <td>Add comment to Word doc</td>
755
+ </tr>
756
+ <tr>
757
+ <td><code>rev apply &lt;md&gt; &lt;docx&gt;</code></td>
758
+ <td>Apply annotations as track changes</td>
759
+ </tr>
760
+ <tr>
761
+ <td><code>rev comment &lt;docx&gt;</code></td>
762
+ <td>Interactive comment mode</td>
763
+ </tr>
764
+ </tbody>
765
+ </table>
766
+ <h2 id="shell-completions">Shell Completions</h2>
767
+ <div class="sourceCode" id="cb2"><pre
768
+ 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>
769
+ <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>
770
+ <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a></span>
771
+ <span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a><span class="co"># Zsh - add to ~/.zshrc</span></span>
772
+ <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>
773
+ <span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span>
774
+ <span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="co"># PowerShell - add to $PROFILE</span></span>
775
+ <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>
776
+ <h2 id="collaboration-git">Collaboration &amp; Git</h2>
777
+ <table>
778
+ <thead>
779
+ <tr>
780
+ <th>Command</th>
781
+ <th>Description</th>
782
+ </tr>
783
+ </thead>
784
+ <tbody>
785
+ <tr>
786
+ <td><code>rev contributors</code></td>
787
+ <td>Show author contributions across all sections</td>
788
+ </tr>
789
+ <tr>
790
+ <td><code>rev contributors &lt;file&gt;</code></td>
791
+ <td>Show who wrote what in a specific file</td>
792
+ </tr>
793
+ <tr>
794
+ <td><code>rev contributors &lt;file&gt; --blame</code></td>
795
+ <td>Line-by-line blame output</td>
796
+ </tr>
797
+ <tr>
798
+ <td><code>rev history</code></td>
799
+ <td>Show revision history</td>
800
+ </tr>
801
+ <tr>
802
+ <td><code>rev diff</code></td>
803
+ <td>Compare sections against git history</td>
804
+ </tr>
805
+ </tbody>
806
+ </table>
807
+ <h2 id="orcid-integration">ORCID Integration</h2>
808
+ <table>
809
+ <thead>
810
+ <tr>
811
+ <th>Command</th>
812
+ <th>Description</th>
813
+ </tr>
814
+ </thead>
815
+ <tbody>
816
+ <tr>
817
+ <td><code>rev orcid &lt;id&gt;</code></td>
818
+ <td>Fetch author info from ORCID</td>
819
+ </tr>
820
+ <tr>
821
+ <td><code>rev orcid &lt;id&gt; --yaml</code></td>
822
+ <td>Output as YAML for rev.yaml authors</td>
823
+ </tr>
824
+ <tr>
825
+ <td><code>rev orcid &lt;id&gt; --badge</code></td>
826
+ <td>Generate markdown badge</td>
827
+ </tr>
828
+ </tbody>
829
+ </table>
830
+ <h2 id="self-update">Self-Update</h2>
831
+ <table>
832
+ <thead>
833
+ <tr>
834
+ <th>Command</th>
835
+ <th>Description</th>
836
+ </tr>
837
+ </thead>
838
+ <tbody>
839
+ <tr>
840
+ <td><code>rev upgrade</code></td>
841
+ <td>Update docrev to latest version</td>
842
+ </tr>
843
+ <tr>
844
+ <td><code>rev upgrade --check</code></td>
845
+ <td>Check for updates without installing</td>
846
+ </tr>
847
+ </tbody>
848
+ </table>
849
+ </main>
850
+ <aside class="col-md-3 d-none d-md-block">
851
+ <nav id="toc" data-toggle="toc" aria-label="On this page">
852
+ <h2 class="h6">On this page</h2>
853
+ <div class="toc"><ul>
854
+ <li><a href="#command-reference" id="toc-command-reference">Command
855
+ Reference</a>
856
+ <ul>
857
+ <li><a href="#build-create" id="toc-build-create">Build &amp;
858
+ Create</a></li>
859
+ <li><a href="#import-export" id="toc-import-export">Import &amp;
860
+ Export</a></li>
861
+ <li><a href="#pdf-comments" id="toc-pdf-comments">PDF Comments</a></li>
862
+ <li><a href="#review-edit" id="toc-review-edit">Review &amp;
863
+ Edit</a></li>
864
+ <li><a href="#comment-navigation" id="toc-comment-navigation">Comment
865
+ Navigation</a></li>
866
+ <li><a href="#track-changes" id="toc-track-changes">Track
867
+ Changes</a></li>
868
+ <li><a href="#cross-references"
869
+ id="toc-cross-references">Cross-References</a></li>
870
+ <li><a href="#comments-replies" id="toc-comments-replies">Comments &amp;
871
+ Replies</a></li>
872
+ <li><a href="#bibliography-dois" id="toc-bibliography-dois">Bibliography
873
+ &amp; DOIs</a></li>
874
+ <li><a href="#validation-analysis"
875
+ id="toc-validation-analysis">Validation &amp; Analysis</a></li>
876
+ <li><a href="#multi-reviewer-git"
877
+ id="toc-multi-reviewer-git">Multi-Reviewer &amp; Git</a></li>
878
+ <li><a href="#convenience-commands"
879
+ id="toc-convenience-commands">Convenience Commands</a></li>
880
+ <li><a href="#grammar-spelling" id="toc-grammar-spelling">Grammar &amp;
881
+ Spelling</a></li>
882
+ <li><a href="#direct-docx-editing" id="toc-direct-docx-editing">Direct
883
+ DOCX Editing</a></li>
884
+ <li><a href="#shell-completions" id="toc-shell-completions">Shell
885
+ Completions</a></li>
886
+ <li><a href="#collaboration-git"
887
+ id="toc-collaboration-git">Collaboration &amp; Git</a></li>
888
+ <li><a href="#orcid-integration" id="toc-orcid-integration">ORCID
889
+ Integration</a></li>
890
+ <li><a href="#self-update" id="toc-self-update">Self-Update</a></li>
891
+ </ul></li>
892
+ </ul></div>
893
+ </nav>
894
+ </aside>
895
+ </div>
896
+ </div>
897
+
898
+ <footer class="border-top py-3 mt-auto">
899
+ <div class="container d-flex justify-content-between align-items-center text-muted" style="font-size:.85rem">
900
+ <span>docrev 0.9.15</span>
901
+ <span>Built with <a href="https://pandoc.org" class="text-muted">pandoc</a></span>
902
+ </div>
903
+ </footer>
904
+
905
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
906
+ <script>
907
+ (function () {
908
+ var html = document.documentElement;
909
+ var sun = document.getElementById('icon-sun');
910
+ var moon = document.getElementById('icon-moon');
911
+ function apply(t) {
912
+ html.setAttribute('data-bs-theme', t);
913
+ sun.style.display = t === 'dark' ? 'none' : '';
914
+ moon.style.display = t === 'dark' ? '' : 'none';
915
+ }
916
+ apply(localStorage.getItem('docrev-theme') || 'light');
917
+ document.getElementById('theme-toggle').addEventListener('click', function () {
918
+ var next = html.getAttribute('data-bs-theme') === 'dark' ? 'light' : 'dark';
919
+ localStorage.setItem('docrev-theme', next);
920
+ apply(next);
921
+ });
922
+ })();
923
+ </script>
924
+
925
+ </body>
926
+ </html>