Word To Markdown



  1. Writage
  2. Pandoc Word To Markdown

Features Converts cell contents to Markdown. Table to markdown uses Turndown with custom rules to convert table data cell contents to Markdown. These custom-written rules ensure that cells containing line breaks don't break the table layout and that certain tags without Markdown handling, like and, have their contents converted to Markdown, too. It is not recommended writing your document in a regular text editor like Google Docs, Microsoft Word, or macOS's Pages, then copy-pasting to markdown, as it most likely will bring some characters with a different encoding (non UTF-8), which will cause the markdown to not render correctly.

You can try pandoc online here.

To see the output created by each of the commands below, click on the name of the output file:

  1. HTML fragment:

  2. Standalone HTML file:

  3. HTML with table of contents, CSS, and custom footer:

  4. LaTeX:

  5. From LaTeX to markdown:

  6. reStructuredText:

  7. Rich text format (RTF):

  8. Beamer slide show:

  9. DocBook XML:

  10. Man page:

  11. ConTeXt:

  12. Converting a web page to markdown:

  13. From markdown to PDF:

  14. PDF with numbered sections and a custom LaTeX header:

  15. ipynb (Jupyter notebook):

  16. HTML slide shows:

  17. TeX math in HTML:

  18. Syntax highlighting of delimited code blocks:

  19. GNU Texinfo, converted to info and HTML formats:

  20. OpenDocument XML:

  21. ODT (OpenDocument Text, readable by OpenOffice):

  22. MediaWiki markup:

  23. EPUB ebook:

  24. Markdown citations:

  25. Textile writer:

  26. Textile reader:

  27. Org-mode:

  28. AsciiDoc:

  29. Word docx:

  30. LaTeX math to docx:

  31. DocBook to markdown:

  32. MediaWiki to html5:

  33. Custom writer:

  34. Docx with a reference docx:

  35. Docx to markdown, including math:

  36. EPUB to plain text:

  37. Using a template to produce a table from structured data:

  38. Converting a bibliography from BibTeX to CSL JSON:

  39. Producing a formatted version of a bibliography:

Markdown has become the de-facto standard for writing software documentation. This post documents my experience using Pandoc to convert Word documents (docx) to markdown.

To follow along, install Pandoc, if you haven’t done so already. Word documents need to be in the docx format. Legacy binary doc files are not supported.

Pandoc supports several flavors of markdown such as the popular GitHub flavored Markdown (GFM). To produce a standalone GFM document from docx, run

Writage

The --extract-media option tells Pandoc to extract media to a ./media folder.

Creating a PDF

To create a PDF, run

Pandoc requires (LaTeX) to produce the PDF. Remove --toc option if you don’t want Pandoc to create a table of contents (TOC). Remove -N option if you don’t want it to number sections automatically.

Word to markdown with images

Markdown Editor

Word To Markdown

Pandoc Word To Markdown

You’ll need a text editor to edit a markdown file. I use vscode. It has built-in support for editing and previewing markdown files. I use a few additional plugins to make editing markdown files more productive

HTML in Markdown

GFM allows HTML blocks in markdown. These get rendered when previewed in vscode, GitHub, or GitLab. Pandoc suppresses raw HTML output to PDF format and hence HTML blocks get rendered as plain text. For example, <sup>1</sup> gets rendered as (1) instead of (^1). You can use ^text^ in Pandoc’s markdown syntax to render superscript.

You can use HTML character entities to write out characters and symbols not available on the keyboard.

Tables

Pandoc converts docx tables whose cells contain a single line of text each, to the pipe table syntax. Column text alignment is not rendered—you can add that back using colons. Relative column widths can be specified using dashes. Pipe table cells with long text or images, may stretch beyond the page.

Tables in docx that have complex data in cells such as lists and multiple lines, are converted to HTML table syntax. That is highly unfortunate because Pandoc renders HTML tables to PDF as plain text.

It is not unusual for docx tables, with complex layouts such as merged cells, to be missing columns or rows. I suggest simplifying such tables, in the original docx, before conversion.

Review all tables very carefully!

I’ve obtained nice results with Pandoc’s grid table syntax, but these tables cannot be previewed in vscode, GitHub, or GitLab.

Table of Contents

Pandora converts TOC in docx as a sequence of lines, where each line corresponds to a topic or section. Section headings are generated without numbering. I suggest deleting the TOC, and using the command line options discussed earlier to number sections and to render TOC.

If you have cross-references in docx that use section numbers, you can generate a hyperlinked TOC using the Markdown TOC plugin of vscode. The plugin can also add, update, or remove section numbers.

I suggest avoiding section numbers for cross-referencing and using hyperlinked section references instead.

Images

Images are exported to their native format and size. They are rendered in GFM using the ![[caption]](path) syntax. Image sizes cannot be customized in GFM syntax, but Pandoc’s markdown syntax allows setting image attributes such as width using the ![[caption]](path){key1=value1 key2=value2} syntax.

Figures

Pandoc does not convert vector diagrams created using Word’s figures and shapes. You’ll need to screen grab, or copy and paste, the image rendered by Word.

You can use mermaid.js syntax to recreate diagrams such as flowcharts and message sequence charts. mermaid.js syntax can be embedded in markdown, and converted using mermaid-filter

GitHub doesn’t yet allow you to preview mermaid.js diagrams, but GitLab does. vscode is able to preview them using the Markdown Preview Mermaid Support plugin.

Captions

Pandoc converts captions in the docx as plain text positioned after an image or table. I suggest using Pandoc’s native markdown syntax for captions.

Cross-references

GFM does not natively support linking to figures and tables, and HTML anchors are not a viable option with Pandoc. Link to the section containing a figure or table when referencing it from other parts of the document.

Figure and table numbers in docx may sometimes go missing from cross-references.

I suggest reviewing captions and cross-references very carefully!

Large Documents

Pandoc can handle large documents that have hundreds of pages. You may want to maintain large documents in separate markdown files. This makes concurrent editing productive and allows for reuse. It also allows for faster previews on GitHub or GitLab. In fact, previewing may entirely fail to work for complex documents. You may want to pre-render such documents to HTML using Pandoc.

Pandoc is capable of converting multiple markdown files

Regular Expressions

Using regular expressions significantly speeds up your ability to search and replace text. Some examples follow

  • Empty heading

    ^#+s*$

  • Line with trailing spaces

    s+$

  • Repeated whitespace between words

    bss+b

  • Whitespace before , or .

    s+[,;.]

  • Paragraph starts with small case

    nn[a-z]

  • Word figure not followed by a number

    figures+(?!([d]){1,})

  • Word section not followed by a number

    sections+(?!(d+.*d*?){1,})