Files
awesome-copilot/skills/markdown-to-html/references/pandoc.md

4.0 KiB

Pandoc Reference

Pandoc is a universal document converter that can convert between numerous markup formats, including Markdown, HTML, LaTeX, Word, and many more.

Installation

Windows

# Using Chocolatey
choco install pandoc

# Using Scoop
scoop install pandoc

# Or download installer from https://pandoc.org/installing.html

macOS

# Using Homebrew
brew install pandoc

Linux

# Debian/Ubuntu
sudo apt-get install pandoc

# Fedora
sudo dnf install pandoc

# Or download from https://pandoc.org/installing.html

Basic Usage

Convert Markdown to HTML

# Basic conversion
pandoc input.md -o output.html

# Standalone document with headers
pandoc input.md -s -o output.html

# With custom CSS
pandoc input.md -s --css=style.css -o output.html

Convert to Other Formats

# To PDF (requires LaTeX)
pandoc input.md -s -o output.pdf

# To Word
pandoc input.md -s -o output.docx

# To LaTeX
pandoc input.md -s -o output.tex

# To EPUB
pandoc input.md -s -o output.epub

Convert from Other Formats

# HTML to Markdown
pandoc -f html -t markdown input.html -o output.md

# Word to Markdown
pandoc input.docx -o output.md

# LaTeX to HTML
pandoc -f latex -t html input.tex -o output.html

Common Options

Option Description
-f, --from <format> Input format
-t, --to <format> Output format
-s, --standalone Produce standalone document
-o, --output <file> Output file
--toc Include table of contents
--toc-depth <n> TOC depth (default: 3)
-N, --number-sections Number section headings
--css <url> Link to CSS stylesheet
--template <file> Use custom template
--metadata <key>=<value> Set metadata
--mathml Use MathML for math
--mathjax Use MathJax for math
-V, --variable <key>=<value> Set template variable

Markdown Extensions

Pandoc supports many markdown extensions:

# Enable specific extensions
pandoc -f markdown+emoji+footnotes input.md -o output.html

# Disable specific extensions
pandoc -f markdown-pipe_tables input.md -o output.html

# Use strict markdown
pandoc -f markdown_strict input.md -o output.html

Common Extensions

Extension Description
pipe_tables Pipe tables (default on)
footnotes Footnote support
emoji Emoji shortcodes
smart Smart quotes and dashes
task_lists Task list checkboxes
strikeout Strikethrough text
superscript Superscript text
subscript Subscript text
raw_html Raw HTML passthrough

Templates

Using Built-in Templates

# View default template
pandoc -D html

# Use custom template
pandoc --template=mytemplate.html input.md -o output.html

Template Variables

<!DOCTYPE html>
<html>
<head>
  <title>$title$</title>
  $for(css)$
  <link rel="stylesheet" href="$css$">
  $endfor$
</head>
<body>
$body$
</body>
</html>

YAML Metadata

Include metadata in your markdown files:

---
title: My Document
author: John Doe
date: 2025-01-28
abstract: |
  This is the abstract.
---

# Introduction

Document content here...

Filters

Using Lua Filters

pandoc --lua-filter=filter.lua input.md -o output.html

Example Lua filter (filter.lua):

function Header(el)
  if el.level == 1 then
    el.classes:insert("main-title")
  end
  return el
end

Using Pandoc Filters

pandoc --filter pandoc-citeproc input.md -o output.html

Batch Conversion

Bash Script

#!/bin/bash
for file in *.md; do
  pandoc "$file" -s -o "${file%.md}.html"
done

PowerShell Script

Get-ChildItem -Filter *.md | ForEach-Object {
  $output = $_.BaseName + ".html"
  pandoc $_.Name -s -o $output
}

Resources