Pandoc:一個超級強大的文檔格式轉換工具

作者: 不剪發(fā)的Tony老師
畢業(yè)于北京航空航天大學,十多年數(shù)據(jù)庫管理與開發(fā)經(jīng)驗,目前在一家全球性的金融公司從事數(shù)據(jù)庫架構設計。CSDN學院簽約講師以及GitChat專欄作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net


文章目錄

        Pandoc 簡介
        下載安裝
            Windows
            macOS
            Linux
        初步使用
        Pandoc 集成
        相關資源
        總結

大家好,我是只談技術不剪發(fā)的 Tony 老師。最近發(fā)現(xiàn)了一款免費的文檔格式轉換工具:Pandoc,堪稱該領域的神器,介紹給大家。
Pandoc 簡介

Pandoc 是一個由 John MacFarlane 開發(fā)的通用文檔轉換工具,可以支持大量標記語言之間的格式轉換,例如 Markdown 、Microsoft Word、PowerPoint、 Jupyter Notebook、HTML、PDF、LaTeX、Wiki、EPUB 格式之間的相互轉換。官方稱之為該領域中的“瑞士軍刀”,并且給出了一個格式轉換的示意圖。

可以看出,Pandoc 支持非常多的格式;關鍵它還是一個開源免費的工具,源代碼放在了 GitHub 上,使用 Haskell 編程語言實現(xiàn)。具體來說,Pandoc 支持以下格式之間的轉換(← 表示可以從該格式轉換為其他格式; → 表示可以轉換為該格式;?? 表示支持該格式的雙向轉換):

    輕量級標記格式
        ?? Markdown(包括 CommonMark 和GitHub-flavored Markdown)
        ?? reStructuredText
        → AsciiDoc
        ?? Emacs Org-Mode
        ?? Emacs Muse
        ?? Textile
        ← txt2tags
    HTML 格式
        ?? (X)HTML 4
        ?? HTML5
    Ebooks
        ?? EPUB 版本 2 或者版本 3
        ?? FictionBook2
    文檔格式
        → GNU TexInfo
        ?? Haddock markup
    Roff 格式
        ?? roff man
        → roff ms
    TeX 格式
        ?? LaTeX
        → ConTeXt
    XML 格式
        ?? DocBook 版本 4 或者版本 5
        ?? JATS
        → TEI Simple
    大綱格式
        ?? OPML
    數(shù)據(jù)格式
        ← CSV 表格
    文字處理格式
        ?? Microsoft Word docx
        ?? OpenOffice/LibreOffice ODT
        → OpenDocument XML
        → Microsoft PowerPoint
    交互式筆記格式
        ?? Jupyter notebook (ipynb)
    頁面布局格式
        → InDesign ICML
    Wiki 標記語言格式
        ?? MediaWiki 標記語
        ?? DokuWiki 標記語
        ← TikiWiki 標記語
        ← TWiki 標記語
        ← Vimwiki 標記語
        → XWiki 標記語
        → ZimWiki 標記語
        ?? Jira wiki 標記語
    幻燈片放映格式
        → LaTeX Beamer
        → Slidy
        → reveal.js
        → Slideous
        → S5
        → DZSlides
    自定義格式
        → 支持使用 lua 編寫自定義轉換器
    PDF
        → 通過 pdflatex、lualatex、xelatex、latexmk、tectonic、wkhtmltopdf、weasyprint、prince、context、pdfroff 插件或者工具轉為為 PDF

下載安裝

Pandoc 提供了一個 Haskell 代碼庫和命令行程序,支持 Windows、macOS、Linux、Chrome OS、BSD、Docker、GitHub Actions 以及源碼編譯等方式。最簡單的安裝方式就是點擊下載編譯好的安裝文件。
Windows

Pandoc 為 Windows 系統(tǒng)提供了編譯后的 msi 安裝包,可以直接運行安裝;或者直接下載免安裝的 zip 文件解壓即可。還有一種安裝方法就是使用 Chocolatey 進行安裝:

choco install pandoc



macOS

Pandoc 為 macOS系統(tǒng)提供了編譯后的 pkg 安裝包,可以直接運行安裝;或者直接下載免安裝的 zip 文件解壓即可。還有一種安裝方法就是使用 Homebrew 進行安裝:

brew install pandoc



Linux

對于 Debian、Ubuntu、Slackware、Arch、Fedora、NiXOS、openSUSE、gentoo 等主流 Linux 發(fā)行版,Pandoc 可以直接使用系統(tǒng)包管理器進行安裝。同時 Pandoc 為 amd64 架構提供了二進制安裝包。

其他操作系統(tǒng)和安裝方式可以參考官方文檔。
初步使用

下面我們介紹一下 Pandoc 命令行工具的簡單使用。首先進入安裝目錄,運行 pandoc 或者 pandoc.exe:

d:\Software\pandoc-2.10.1>pandoc.exe --version
pandoc.exe 2.10.1
Compiled with pandoc-types 1.21, texmath 0.12.0.2, skylighting 0.8.5
Default user data directory: C:\Users\dongx\AppData\Roaming\pandoc
Copyright (C) 2006-2020 John MacFarlane
Web:  https://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.



以上命令返回了 Pandoc 的版本信息。

接下來我們測試一下文件格式轉換,在當前目錄中創(chuàng)建一個文本文件 test.md,輸入以下內(nèi)容:

---
title: Test
...

# Test!

This is a test of *pandoc*.

- list one
- list two



然后在命令行輸入以下命令:

pandoc.exe test.md -f markdown -t html -s -o test.html



文件名 test.md 是要轉換的源文件;-f 設置輸入文件的格式;-t 設置輸出文件的格式;-s 表示創(chuàng)建一個“獨立”文件,將會生成文件
頁眉和頁腳。默認的轉換格式為 markdown 到 HTML,所以上面的命令也可以省略這兩個選項。

執(zhí)行之后在當前目錄中生成了一個 test.html,內(nèi)容如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <title>Test</title>
  <style>
    code{white-space: pre-wrap;}
    span.smallcaps{font-variant: small-caps;}
    span.underline{text-decoration: underline;}
    div.column{display: inline-block; vertical-align: top; width: 50%;}
    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
    ul.task-list{list-style: none;}
    .display.math{display: block; text-align: center; margin: 0.5rem auto;}
  </style>
  <!--[if lt IE 9]>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  <![endif]-->
</head>
<body>
<header id="title-block-header">
<h1 class="title">Test</h1>
</header>
<h1 id="test">Test!</h1>
<p>This is a test of <em>pandoc</em>.</p>
<ul>
<li>list one</li>
<li>list two</li>
</ul>
</body>
</html>



如果想要將該文件轉換為 LaTeX 格式,可以輸入以下命令:

pandoc.exe test.md -f markdown -t latex -s -o test.tex



Pandoc 可以根據(jù)文件名擴展猜測出輸入和輸出文件的格式,例如以下命令可以將文件轉換為 Word 文檔格式:

pandoc.exe test.md -s -o test.docx


如果已經(jīng)安裝了 LaTeX,可以使用以下命令轉換為 PDF 文件:

pandoc.exe test.md -f markdown -s -o test.pdf



輸入 pandoc --help 命令可以查看工具的選項幫助,詳細的使用介紹可以查看用戶手冊。

另外,Pandoc 還提供了一個在線格式轉換工具以及各種格式轉換示例。
Pandoc 集成

除了使用命令行方式之外,很多開發(fā)工具和軟件都集成了 Pandoc,從而實現(xiàn)文件格式的轉換。例如 Markdown 編輯器 PanWriter、Typora,文本編輯器 Atom、Sublime Text、Emacs、Vim,R Markdown,PanConvert、Manubot 等等。

更多集成了 Pandoc 的第三方軟件列表可以點此查看。
相關資源

    Pandoc 官方網(wǎng)站;
    Pandoc GitHub 源碼;
    Pandoc WIKI;
    Pandoc 用戶手冊;

總結

Pandoc 是一個免費開源的格式轉換工具,可以用于各種標記格式文檔之間的轉換。Pandoc 被廣泛用于書寫工作和電子書籍出版流程。

如果覺得文章對你有用,歡迎關注??、評論??、點贊??!