DocPresenter (VS Code extension)Write software design documents in Markdown, draw their diagrams and tables as plain-text files, and edit all of it on the page as it will be printed, right inside VS Code. Export to HTML, PDF and editable PowerPoint (PPTX), and keep every change reviewable as an ordinary Git diff. Installing DocPresenter installs DocPresenter Diagram with it: the drawing side (
What it doesDesign documents kept in Excel, Word or draw.io cannot be reviewed in a pull request: the diff means nothing to a person or to an AI. DocPresenter keeps the document as text files in your repository and does the rest:
Diagrams and tables: write them as code, or draw them on screenDiagrams ( Diagrams: flowcharts, and free-form drawings like PowerPointA flow: write the shapes and how they connect; the layout is worked out for you. For processes, procedures and state changes.
free: shapes stay where you put them. For system diagrams and screen sketches, drawn the way you would in PowerPoint.
On screen (in a document, or "Open in DocPresenter Diagram" for a
As code (opened as text)
Tables: a plain-text format, and a spreadsheet-like gridTables that outgrow Markdown (merged cells, column widths, colour) are written as
The text format
On screen
Exchanging tables with Excel: through the clipboard Excel files (.xlsx) are neither imported nor exported. Cells go back and forth through the clipboard instead.
The filesEverything is plain text you can read in a diff. The extension adds no hidden state.
A typical layout: Getting started1. Set up the repositoryStart here, once per repository: run "DocPresenter: Set Up This Folder". After asking for a title, a file name and a document number, it puts the following in place and opens the first document. Files that are already there are never overwritten (they are reported as kept).
Appending happens once, so running the command again adds nothing. 2. Add a documentTo add a document, run "DocPresenter: New Document (numbered)…" (or right-click a folder in the Explorer).
It asks for a title, the folder, a file name, assigns a document number, and makes the document and its
revision history from the templates ( 3. Add a diagramTo add a diagram, run "DocPresenter: New Diagram (flow or free)…" (or right-click a folder). It asks for the kind
first — flow (laid out from its arrows: processes, procedures, state changes) or free (shapes stay where you put
them: system diagrams, screen sketches) — then the folder (each document's own folder first, then folders that already
hold diagrams, then FoldersDocuments can be split into folders as the application grows (
Your team's templates and themeThe templates and theme set up by the command are files in your repository: change them and commit them.
Opening
Writing a document as textThe same help in DocPresenter's text box (click a paragraph) and in VS Code's own editor for a
In VS Code the keys can be turned off with the setting Writing and formatting a
|
| What you change | What is rewritten |
|---|---|
| File name | The file is renamed within its folder, and the @import lines of this and every other document point to the new name. The folder and extension stay |
| Caption | caption="…" on the @import line. The number (Figure 3 etc.) is added in front automatically. Empty removes the caption |
| Label | #fig-… on the @import line and every @fig-… in the text. Figures start with fig-, tables with tbl- |
- Only the lines that carry the name change, and the document is written back as one edit (one undo). The other documents' changes and the rename go into one
WorkspaceEdit. - Names that cannot be used (a label already used in the document, removing a label the text refers to, an existing file name, …) are refused with the reason.
- References are fixed only within this document. References from another document as
@doc:labelare not. - Lines inside a
.dgmthat point to other files (overlayimages, part libraries) are not fixed.
Edit and Read (review)
Switch with "Edit / Read (review)" at the top of the screen (remembered per editor).
- Read (review): clicking the text does not start editing, so text can be selected. Selecting shows
"Add a comment"; the comment is appended to a review file (
reviews/*.review.yml). The first time, you are asked which review file to use. A list of the comments on this document is shown beside the page; click one to go to it. - Edit: comments are marked where they are now. Hover to see the comment, its answer and status. Turn the marks off with "Comment marks" at the top when they get in the way.
- Where the text has changed since the comment, the mark is dotted and says so. Comments whose place can no longer be found stay in the list.
- Status and answer: in the list in Read mode, choose each comment's status (Open / Resolved / Won't fix / Question)
and write an answer with "Write an answer". Only that comment's
status:andreply:lines in the review file change. The answer goes into the next PDF you export.
Exporting
| What you want | How |
|---|---|
| The open document, in one format | "Export: HTML / PDF / PPTX" above the document. The "…" menu at the editor's top right and commands such as "DocPresenter: Export This Document as PDF" do the same |
Every document with output:, as each one says |
"DocPresenter: Export Every Output (as each document's output: says)" |
Every document with output:, in formats you choose |
"DocPresenter: Export Every Output in Formats of My Choice…" (choose from HTML / PDF / PPTX; this overrides output:) |
- Exports go to
out/build(setdocpresenter.outDirto change it), keeping the workspace's folders (docs/order/design.md→out/build/docs/order/design.pdf). - PDF pages are laid out by DocPresenter's own screen. When exporting several documents, a "DocPresenter export" panel opens beside the editor and closes when done. Fonts installed on this PC are embedded (on Windows, Yu Gothic, and MS Gothic for code).
Reading diagrams changed in PowerPoint back
Diagrams exported to PPTX can be read back into the original .dgm after they have been changed in PowerPoint.
- Right-click the
.pptxin the Explorer → "Read PPTX Changes Back into the Diagrams…" (also in the Command Palette, where you choose the file) - The diagrams that would change are listed. The lines that would change are shown with
-/+in the Output panel; check them, then choose - The chosen diagrams are rewritten only where they changed, and saved. Undo and the Git diff work as usual
| Change in PowerPoint | Read back |
|---|---|
| A shape moved or resized | ✓ (the one line with that shape's position) |
| A shape's text changed | ✓ (that shape's line. Bold and other formatting are dropped, with a warning) |
| A shape added, a line reconnected | ✗ (a warning says so) |
| A line's label changed | ✗ (a warning says so. Change it in the diagram) |
| A table changed | ✗ (a warning names the table. Change the .table or the Markdown table) |
| Body text changed | ✗ (only diagrams are read back) |
- If a diagram changed between reading and writing (unsaved changes included), it is not written, and its name is given.
- Checked with decks saved again in real PowerPoint (Microsoft 365).
Importing comments written on a PDF
An exported PDF carries, as an attachment, where each line came from (which file, which place). When a customer returns
the PDF with annotations (highlights, sticky notes, …), they can be imported into the review files (reviews/*.review.yml).
- Right-click the
.pdfin the Explorer → "Import PDF Annotations as Review Comments…" (also in the Command Palette). Several PDFs can be imported at once: each PDF knows which document it is (its path and document number) - Where each annotation goes is shown in the Output panel. Choose the review file to import into: a new one or an existing one
- The comments are appended. Earlier lines are not changed, and the same annotation never goes in twice
| Annotation | Where the comment points |
|---|---|
| Highlight or underline on words | Those words (inside the .dgm / .table when in a figure or table) |
| Sticky note, box | The whole paragraph, figure or table |
| Nothing under it (a margin, …) | No place (kept as status: orphaned) |
- Each comment carries the commit the PDF was exported from. A PDF exported with uncommitted changes gets
uncommitted: true. - Answers travel in the PDF. An exported PDF has the comments on that document as annotations (a highlight on the
words), with the status and answer (
reply:) in the annotation's text. The customer reads the answer in the PDF and replies to the annotation (or writes below it). On import, replies go under the original comment inreplies:, and the comments and answers we put in the PDF are not imported again. - For a PDF that should carry no comments (a copy to deliver), turn off the setting
docpresenter.pdfReviewNotesbefore exporting.
Code and Mermaid
- Code blocks are coloured by their language name (
```sqland so on), which is shown above the block. On DocPresenter's screen, "Copy" beside it copies the whole block. ```mermaidblocks and.mmdfiles become diagrams. Hover over the block and "Diagram / Code / Both" appears at its top right. Choosing writes{view="…"}into the file, and exported HTML, PDF and PPTX follow it.
Languages that are coloured
The language name on the opening line (aliases work too). Other names are not coloured, and shown above the block as written.
| Language | Names |
|---|---|
| Bash / shell | bash sh zsh shell console |
| PowerShell | powershell ps ps1 |
| JavaScript | javascript js jsx mjs cjs |
| TypeScript | typescript ts tsx mts cts |
| JSON | json |
| YAML | yaml yml |
| XML / HTML / SVG | xml html xhtml svg |
| CSS | css |
| SQL | sql |
| Python | python py |
| Java | java |
| Kotlin | kotlin kt |
| C# | csharp cs c# |
| Go | go golang |
| Diff | diff patch |
| INI / TOML | ini toml |
| Dockerfile | dockerfile docker |
| Markdown | markdown md |
| Text (no colour) | plaintext text txt |
| Mermaid (becomes a diagram) | mermaid |
Display language
It follows VS Code's display language. Japanese when VS Code is in Japanese, English otherwise (command names, setting descriptions, notifications, the editor, and the cover and contents of exported documents). Change it with VS Code's "Configure Display Language"; the extension has no setting of its own.
- The first document, the glossary and the
CLAUDE.mdsection written by "Set Up This Folder" are in that language too (.docpresenter/guide.mdis Japanese only for now). - This page is in English whatever the display language: VS Code shows one README for every language. The Japanese version is linked at the top.
Not in this version
| Exporting PDFs in bulk | A bulk build has no screen to lay pages out, so PDFs are exported one document at a time with the button |
| Editing Mermaid in PowerPoint | Mermaid diagrams go in as images. Draw with .dgm to get shapes you can move in PowerPoint |
| Editing part libraries | Parts can be chosen on screen, but the parts themselves are written in source |


