pandoc 文档转换工具

在撰写 Sphinx文档 时,也有一些以前使用markdown格式撰写的文档需要转换。

开源文档转换工具pandoc 是一个瑞士军刀般的文档工具:

  • 轻量级markup格式(markdown, reStructuredText, Emacs Org-Mode…)

  • HTML格式

  • Ebooks(epub,Fictionbooks)

  • Word处理(微软Word docx, 富文本RTF, OpenOffice/LibreOffice ODT, OpenDocument XML, 微软PowerPoint)

  • Wiki markup格式(MediaWiki markup, DokuWiki markup, TikiWiki markup …)

  • Slide show格式

  • PDF

安装

  • macOS安装:

    brew install pandoc
    
  • Linux各个发行版都提供了pandoc,在Debian/Ubuntu中安装非常简单:

    sudo apt install pandoc
    

简单使用

  • 将markdown转换成reStructuredText:

    pandoc readme.md --from markdown --to rst -s -o readme.rst
    
  • Pypandoc 是一个简单的pandoc的python wrapper,可以用来转换文档:

    pip install pypandoc
    

转换操作只有2行代码:

import pypandoc
output = pypandoc.convert('somefile.md', 'rst')

远程转换

实际上 pandoc 是一个非常庞大的软件,如果在 Arch Linux 上安装,就会看到依赖安装了大量的 haskell 软件包。对于我的 移动云架构 来说,本地磁盘大多数被用于虚拟机环境,不愿意花费大量的磁盘空间来安装这个并不常用的软件。

不过,我的服务器 zcloud 存储空间充足,性能强大,所以我通过以下脚本来完成转换:

通过SSH将本地Markdown文件上传服务器使用pandoc转换reStructuredText文件下载
filename=$1

# sed 转换 "test.txt" 到 "text txt"
read file ext <<< $(echo $filename | sed 's/\./ /g')

cat $filename | ssh zcloud-r pandoc - --from markdown --to rst -s > ${file}.rst

这样,可以简单转换(脚本待完善):

m2r bash_shutcuts.md

则在本地会有转换后的 bash_shutcuts.rst ,方便后续修改。

参考