How to convert Markdown into PDF file

The working environment is:

  • OS: Mac OS X EI Capitan
  • Sublime Text 3

Take use of Sublime Text 3 (ST3) Package Unicode Character Highlighter to check whether the file contains unicode characters, such as Hanzi.

Read more about ST3:

If .md doesn’t contains unicode characters

You can directly use ST3 Package Pandoc to convert .md file into .pdf:

  • Command+Shift+P
  • Enter Pandoc
  • Choose PDF


If .md contains unicode characters

If the markdown file contains unicode characters, you can use the command as follow to convert the .md into .pdf1:

$pandoc -N -s --smart --latex-engine=xelatex -V CJKmainfont='PingFang SC' -V mainfont='Monaco' -V geometry:margin=1in -o XXX.pdf

where is the name of your markdown file and XXX.pdf is the name of the PDF file.

Follow the Pandoc User’s Guide, you can change the options of pandoc.

pandoc options

  • -N, --number-sections
    • Number section headings in LaTeX, ConTeXt, HTML, or EPUB output. By default, sections are not numbered. Sections with class unnumbered will never be numbered, even if --number-sections is specified.
  • -s, --standalone
    • Produce output with an appropriate header and footer (e.g. a standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option is set automatically for pdf, epub, epub3, fb2, docx, and odt output.
  • -V KEY[=VAL], --variable=KEY[:VAL]
    • Set the template variable KEY to the value VAL when rendering the document in standalone mode. This is generally only useful when the --template option is used to specify a custom template, since pandoc automatically sets the variables used in the default templates. If no VAL is specified, the key will be given the value true.

Variables for LaTeX

  • mainfont, sansfont, monofont, mathfont, CJKmainfont
    • font families for use with xelatex or lualatex: take the name of any system font, using the fontspec package. Note that if CJKmainfont is used, the xecjk package must be available.
  • geometry
    • option for geometry package, e.g. margin=1in; may be repeated for multiple options


In fact, generally you can take use of the Print function of Google Chrome Explorer to easily fulfill the conversion. For example, my explorer is Google Chrome, Version 63.0.3239.84 (Official Build) (64-bit) and in ST3:

  • Command+Shift+P
  • Enter mp
  • Choose Markdown Preview: Preview in Browser
  • Choose github or markdown
  • In the pop-up Chrome page, you can check the corresponding html file
  • Press Command+P to print the web page

However, this method is not meticulous enough.

-------------End of postThanks for your time-------------
BDG飽蠹閣 wechat
Enjoy it? Subscribe to my blog by scanning my public wechat account