github github
stars 58
issues 4
subscribers 4
forks 4



13 days ago

Markdown to PDF

[!NOTE] Pull requests are welcome!

[!WARNING] This plugin is still very early in its development, so expect bugs and if possible report them here! Thanks and enjoy.

A very simple and easy plugin to convert open markdown files to PDFs and open them it to the side.



  • Preview markdown documents easily on Linux, Mac, Windows or just define a custom preview command!
  • Generate PDFs out of markdown
  • Lightweight ~200 loc fully lua written plugin
  • auto-generate on save, don't reopen new viewer


Currently you can just put it into lazy or packer and require it at some point.


    branch = 'main', -- you can assume that main is somewhat stable until releases will be made
    lazy = true,
    keys = {
            function() require("md-pdf").convert_md_to_pdf() end,
            desc = "Markdown preview",
    opts = {},


require('md-pdf').setup() -- default options, or
    --- Set margins around document
    margins = "1.5cm",
    -- tango, pygments are quite nice for white on white
    highlight = "tango",
    -- Generate a table of contents, on by default
    toc = true,
    -- Define a custom preview command, enabling hooks and other custom logic
    preview_cmd = function() return 'firefox' end,
    -- if true, then the markdown file is continuously converted on each write, even if the
    -- file viewer closed, e.g., firefox is "closed" once the document is opened in it.
    ignore_viewer_state = false,
    -- Specify font, `nil` uses the default font of the theme
    fonts = nil,
    -- or, where all or only some options can be specified. NOTE: those that are `nil` can be left
    -- out completely
    fonts = {
        main_font = nil,
        sans_font = "DejaVuSans",
        mono_font = "IosevkaTerm Nerd Font Mono",
        math_font = nil,
    -- Custom options passed to `pandoc` CLI call, can be ignored for setup
    pandoc_user_args = nil,
    -- or
    pandoc_user_args = {
        -- short
        "-V KEY[:VALUE]",
        -- long options

-- setup mapping
vim.keymap.set("n", "<Space>,", function()


[!WARNING] The plugin currently only recognizes the document being open on Zathura.

Tested on Windows 10, MacOS 13, and Linux (Fedora Workstation 38)

  • neovim >= 9, didn't test below that.
  • PDF Viewer, uses xdg-open on Linux, open on Mac and powershell on Windows
  • pandoc for conversion, also probably some TeX distribution with pdflatex included.


I have often found myself wanting to see my markdown files as a PDF, for which I usually created a Makefile which converted the files through pandoc.

After having done it a few times it became repetitive and I thought to myself, why not just create a plugin that does exactly that in my favorite text editor. And tada, here it is! Enjoy :D


  • exit viewer if file left/buffer changed, or make it configurable