• Pandoc入门
    • 1. Pandoc安装
    • 1.1 最简单的安装办法(推荐办法)
    • 1.2 更技术的安装办法(学习Haskell者使用)
      • 1.2.1 安装Haskell平台
      • 1.2.2 安装pandoc
      • 1.2.3 ubuntu下的安装
      • 1.2.4 安装之后的校验
    • 2.Pandoc 编辑器
      • 2.1 Pandoc 编辑器
      • 2.2 Pandoc TextMate Bundle
    • 2.Pandoc Markdown语法特色
      • 2.1 Pandoc写表格
      • 2.2 Pandoc写参考文献
    • 3. Pandoc文档转换
      • 3.1 Markdown转html、word与PDF
        • 转html格式
        • 转word格式
      • 3.2 Markdown转PDF
        • 安装LaTex
        • 转pdf格式
    • 4 Pandoc生成epub、html与在线电子书
      • 4.1 安装nodejs与grunt、bower
      • 4.2 使用wbb生成epub、html与在线电子书示范
    • 5 Pandoc的科技写作
      • 5.1 Pandoc与bibdesk、APA文献格式的配合
      • 5.2 RStudio默认使用Pandoc
    • 小结

    Pandoc入门

    熟悉Markdown的朋友,不由地奇怪,为什么它不支持表格、数学公式以及很多你想要的功能。这一切,与Markdown自身的设计哲学有关系,提供尽可能少的,用于创作的功能,将对它的扩展,交给各路开源爱好者。于是,我们可以看到github flavored markdown、multimarkdow、maruku等各路扩展。

    然而,这些扩展某种意义上,并不是针对写作的。开源界传说中的高帅富社区,haskell社区的作品Pandoc给了我们更好的选择,在多个方面完败MMD,参考:Pandoc vs Multimarkdown。

    haskell 是什么?一种编程语言。每位资深的开发者学习它,都会有些不知所措,因为,它的编程思路不同于通常意义上类似于C#、Python、Java这些流行的编程语言。它来自一群高智商的开发者的贡献,据说人人有PHD学位,是函数式编程语言的典范。当然,Pandoc作者John MacFarlane也不例外,他是一位来自美国加州大学伯克利分校的哲学教授,研究的是认识论这类高深议题:D

    文本格式转换,每位开发过这方面程序的技术青年,都知道它有多么痛苦;开发出的程序有多么丑陋。甚至可以说,这是个无底黑洞。事实证明,haskell的确是干这脏活、累活的最恰当选择。Pandoc也的确成功了,并已成功在短期内构建一个完整的生态链,于是,有了我们这篇小文。

    1. Pandoc安装

    1.1 最简单的安装办法(推荐办法)

    下载软件,找到相应操作系统对应的文件,然后按照默认点击即可。如果你不需要学习Haskell,请使用此种办法,好处多多。

    1.2 更技术的安装办法(学习Haskell者使用)

    一个通用的安装方式是,安装Haskell平台.然后再通过Haskell平台安装Pandoc。步骤如下:

    1.2.1 安装Haskell平台

    如果之前,你通过其它方式,安装过Haskell的运行平台,需要卸载,Mac下命令如下:

    1. /Library/Haskell/bin/uninstall-hs

    然后,系统会找到你之前安装过的版本,如7.4.1、7.0.4,运行下列命令:

    1. sudo uninstall-hs only 7.0.4 --remove
    2. sudo uninstall-hs only 7.4.1 --remove

    下载Haskell平台,下载地址是:http://hackage.haskell.org/platform/

    选择你相应的操作系统平台即可。

    然后下载完之后,一路按照默认安装即可。配置在.bashrc或者修改.zshrc文件。作者使用的是zshrc配置文件。因此,在~/.zshrc文件末尾增加一行:

    1. export PATH="$HOME/Library/Haskell/bin:$PATH"

    这样可以直接通过shell来控制Haskell。打开终端,如iterm2,输入:

    1. cabal update

    cabal是类似于Ruby下的rubygems一样的包管理器。cabal程序会链接到服务器http://hackage.haskell.org/packages/archive/上下载相应的包信息。下载时间会较长,请耐心等候,并检查本机与HaskellDB服务器的连接速度。

    1.2.2 安装pandoc

    运行:

    1. cabal install pandoc

    编译安装时间较漫长,你可以去打个酱油。在安装过程中,我们会发现pandoc调用与使用的一些Haskell扩展包,如:

    • 引文格式:citeproc-hs
    • 数学公式:TextMath

    1.2.3 ubuntu下的安装

    yanping总结了ubuntu下pandoc的安装步骤,如下:

    1. sudo apt-get autoremove pandoc #删掉之前的pandoc安装
    2. sudo apt-get install cabal-install #安装Haskell包管理器
    3. cabal update #获取Haskell包信息
    4. cabal install pandoc #通过cabal安装pandoc

    然后再把~/.cabal加到路径中去,在.bashrc里加上一句

    1. export PATH=/home/ypchen/.cabal/bin:$PATH

    1.2.4 安装之后的校验

    打开Shell,输入:

    1. pandoc --version

    如果安装无误,应能看到pandoc相关的作者、版权、序列许可等信息。当然,更令人震撼的是,能看到Pandoc已经支持的语言列表。使用

    1. pandoc --help

    可以看到pandoc主要支持的输入与输出格式:

    1. Input formats: native, json, markdown, markdown+lhs, rst, rst+lhs, docbook,
    2. textile, html, latex, latex+lhs
    3. Output formats: native, json, html, html5, html+lhs, html5+lhs, s5, slidy,
    4. slideous, dzslides, docbook, opendocument, latex, latex+lhs,
    5. beamer, beamer+lhs, context, texinfo, man, markdown,
    6. markdown+lhs, plain, rst, rst+lhs, mediawiki, textile, rtf, org,
    7. asciidoc, odt, docx, epub

    上述语言的互转关系,可以看看作者制作的这份壮观的图,从中可以看出Pandoc的强大。这年头,哲学系教授会写程序,还是Haskell,伤不起啊:D

    2.Pandoc 编辑器

    2.1 Pandoc 编辑器

    当然,你可以一切操作都在Shell中完成,不过,为了提高效率,总是可以借助于Pandoc社区既有的积累。如:

    • 作者用的是开源的TextMate,搭配Pandoc TextMate bundle
    • 多数Pandoc用户使用的是Pandoc Vim
    • Mou已支持引用功能,但尚不支持表格。
    • 作者在努力说服其他编辑器作者默认支持Pandoc,请大家静候。

    更多编辑器、插件请参考:Pandoc-Extras

    2.2 Pandoc TextMate Bundle

    以下以Mac下主要编辑器TextMate为例,说明如何安装。请特别注意,该Textmate Bundle作者并没有全部完成所有工作。仅供参考。TextMate2.0之后的bundle位置已经变动了,现在默认位置是:/Applications/TextMate.app/Contents/SharedSupport/Bundles/

    1. cd /Applications/TextMate.app/Contents/SharedSupport/Bundles/
    2. cd ~/Library/Application\ Support/TextMate/Managed/Bundles
    3. git clone git://github.com/dsanson/Pandoc.tmbundle.git "Pandoc.tmbundle"

    安装完之后,效果如下图所示,

    Pandoc - 图1

    2.Pandoc Markdown语法特色

    详情参见:Pandoc

    2.1 Pandoc写表格

    如下所示:

    1. -----------------------------------------------------------------------------------------------------------------
    2. 测量指标 低程度中心性 低亲近中心性 低居间中心性
    3. -------------------- ------------------- ----------------------------- -------------------------------------
    4. 高程度中心性 “自我”所嵌入的聚类 “自我”的联系人是冗余的,
    5. 远离网络中其他节点 整个世界绕他而行
    6. 高亲近中心性 是联系重要他人或 在事件中,自我位于一个相互
    7. 活跃人物的关键人物 联系密切、活跃的聚类中,与
    8. 很多节点都很接近;其他节点也是如此
    9. ------------------------------------------------------------------------------------------------------------------
    10. : 3-1 不同中心性测量指标之间的关系[^16]

    2.2 Pandoc写参考文献

    使用[Pandoc Markdown]格式的写法是在文中使用:

    1. [^1]、[^2]

    然后在文末使用:

    1. [^1]:
    2. [^2]:

    如下例所示:

    正文中是:

    当一个人在看社会网络时,首先提出的问题之一就是:在社会网络中谁是更重要的人?或者谁拥有更大的权力?在介绍部分(参考第一章介绍的非正式网络的力量),我们发现社会网络是由一个强大的(但大部分是无形的)的“秘书”统治[^7],类似的观点亦可从一系列社会网络测量指标(参见 中心性 )中获得。

    然后在文章末尾写上:

    1. [^7]:译者注:作者此处秘书指的是第一章中“非正式网络的力量”一节介绍的ACME咨询公司的例子中所提到的秘书处,其中代表人物即ACME咨询公司中的Frida,虽然在正式网络中,看似不是核心人物,但是Frida偏偏是最受整个公司信赖的网络中心人物。

    3. Pandoc文档转换

    3.1 Markdown转html、word与PDF

    如下例所示:

    转html格式

    1. pandoc 01-chapter2.markdown -o chapter2.html -c Github.css

    转word格式

    1. pandoc 01-chapter2.markdown -o chapter2.docx -c Github.css

    3.2 Markdown转PDF

    安装LaTex

    待补。

    转pdf格式

    1. pandoc 01-chapter2.markdown -o 01-chapter2.pdf --latex-engine=xelatex -V mainfont=heiti\

    4 Pandoc生成epub、html与在线电子书

    4.1 安装nodejs与grunt、bower

    下载nodejs安装包,网址为:http://nodejs.org/

    下载之后,安装默认安装。安装完之后,确认安装是否成功。

    1. npm -v

    如果如我一样,使用的是zsh。在.zshrc文件中添加nodejs的路径。

    1. mate ~/.zshrc

    在文件末尾添加:

    1. export PATH=/usr/local/share/npm/bin:$PATH

    然后,安装grunt。

    1. sudo npm install -g grunt

    安装bower等。

    1. sudo npm install -g bower

    4.2 使用wbb生成epub、html与在线电子书示范

    以著名的progit为例。

    1. git clone https://github.com/PascalPrecht/wbb test2012
    2. cd test2012

    然后检查clone下来的项目,是否已经包含了grunt.js等文件。各项生成代码写在那里面。

    书稿则写在/test2012/src/chapters 这样的目录下面。

    写作书稿时,完全按照正常git流程管理。书稿预览效果,是在test2012的根目录下面,运行:

    1. grunt wbb:html

    自定义各项参数,请修改grunt.js文件。

    生成的epub、html与moblie在线电子书,在builds目录下面。同时可以设置,与leanpub在线出版网站搭配。

    5 Pandoc的科技写作

    5.1 Pandoc与bibdesk、APA文献格式的配合

    请参考:Pandoc之citations

    5.2 RStudio默认使用Pandoc

    请参考:Customizing Markdown Rendering

    还有个pander的R包。

    1. > library(devtools)
    2. > install_github('pander', 'daroczig')

    小结

    我目前的观点是,Pandoc Markdown不是万能的,表格、复杂公式、多国语言、上下标、交叉引用、图表对齐较多的场合,它并不适合。但是需要互动、实时展现、更快输出的场合,Pandoc Markdown等值得大力推荐。未来互联网会逼使写作趋简。需要更快发表、互动输出与交流的场合,也会越来越多。比如课堂作业、企业内部交流、个人博客。用它节省的时间是写作时比较关键的”创作时间”而非”排版时间”。