搭建Pandoc+Markdown写作环境

编辑器使用Notepad++,Pandoc使用目前最新的1.13.2版本。shell环境使用msys。

Notepad++配置Markdown语法高亮

下载Markdown语法规则文件,安装方法如下:

just copy the userDefineLang.xml to the npp folder

if you install the notepad++ with installer,you have to copy the userDefineLang.xml to%APPDATA%\Notepad++ ctrl+r and copy %APPDATA%\Notepad++ ,goto the floder. 😀

之后重启Notepad++即可。在语言->自定义语言格式,下拉选择Markdown,可以配置Markdown文件的扩展名。

Notepad++运行Markdown

Notepad++菜单栏,运行,输入如下命令

cmd /c pandoc -s "$(FULL_CURRENT_PATH)"  -o  "$(CURRENT_DIRECTORY)\$(NAME_PART).html" --toc --smart --highlight-style=tango --template=pm-template.html5 & cmd /c chrome "$(CURRENT_DIRECTORY)\$(NAME_PART).html"

可以保存命令,设置名并设置快捷键。

这条借助Pandoc生成html,然后用浏览器打开。这里需要注意运行命令有长度限制,因此chrome需要加环境变量,这样就可以缩短命令长度。

Notepad++的全局变量

```

$(FULL_CURRENT_PATH) : E:\my Web\main\welcome.html
$(CURRENT_DIRECTORY) : E:\my Web\main
$(FILE_NAME) : welcome.html
$(NAME_PART) : welcome
$(EXT_PART) : html
$(NPP_DIRECTORY) : the full path of notepad++'s directory
$(CURRENT_WORD) : word(s) you selected in Notepad++
$(CURRENT_LINE) : current line number
$(CURRENT_COLUMN) : current column number

```

cmd命令相关

cmd /c dir 是执行完dir命令后关闭命令窗口。
cmd /k dir 是执行完dir命令后不关闭命令窗口。
cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。
cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。

Pandoc环境设置

pandoc --version可以查看Pandoc支持高亮的语言及Pandoc的data-dir

$ pandoc --version
pandoc.exe 1.13.2
Compiled with texmath 0.8.0.1, highlighting-kate 0.5.11.1.
Syntax highlighting is supported for the following languages:
    abc, actionscript, ada, agda, apache, asn1, asp, awk, bash, bibtex, boo, c,
    changelog, clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css,
    curry, d, diff, djangotemplate, dockerfile, dot, doxygen, doxygenlua, dtd,
    eiffel, email, erlang, fasm, fortran, fsharp, gcc, glsl, gnuassembler, go,
    haskell, haxe, html, ini, isocpp, java, javadoc, javascript, json, jsp,
    julia, latex, lex, lilypond, literatecurry, literatehaskell, lua, m4,
    makefile, mandoc, markdown, mathematica, matlab, maxima, mediawiki,
    metafont, mips, modelines, modula2, modula3, monobasic, nasm, noweb,
    objectivec, objectivecpp, ocaml, octave, opencl, pascal, perl, php, pike,
    postscript, prolog, pure, python, r, relaxng, relaxngcompact, rest, rhtml,
    roff, ruby, rust, scala, scheme, sci, sed, sgml, sql, sqlmysql,
    sqlpostgresql, tcl, tcsh, texinfo, verilog, vhdl, xml, xorg, xslt, xul,
    yacc, yaml, zsh
Default user data directory: C:\Users\admin\AppData\Roaming\pandoc
Copyright (C) 2006-2014 John MacFarlane
Web:  http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.

data-dir中建立templates目录,模板放在data-dir/templates下就可以直接在命令行中用模板文件名引用模板,无需路径。

pandoc -D FORMAT可以导出该格式的默认模板,基于默认模板可以自己定制模板,将定制的模板放到data-dir中就可以方便的引用了。

懒人可以到网上搜模板,比如这个链接:https://github.com/tzengyuxio/pages

文件组织及转换脚本

src中放每章节的内容,Pandoc可以将多个input file连接成一个input,因此可以用这个特性更好的组织源文件:每章节一个文件,然后转换成单一的pdf或者html文件

E:.
│  convert.sh
│  push
│  sinadoc.html
│  sinadoc.pdf
└─src
        1-int-jumper.md
        2-int-cf.md

转换脚本

#!/bin/bash
chapters=`ls src/*.md`

function getPDF()
{
	pandoc $chapters -o sinadoc.pdf --toc --smart --highlight-style=tango --template=pm-template.latex --latex-engine=xelatex
}
function getHTML()
{
	pandoc $chapters -o sinadoc.html --toc --smart --highlight-style=tango --template=pm-template.html5
}

if [ $# -eq 0 ];then
	getHTML
	getPDF
elif [ "$1"x = "pdf"x ];then
	getPDF
elif [ "$1"x = "html"x ];then
	getHTML
fi

托管到git服务器

#!/bin/bash
[ $# -lt 1 ] && echo "comment needed.." && exit 1
git add -A
commit=$1
[ "$commit"x = ""x ] && commit=commit
git commit -m "$commit"
git push origin

参考资料

[1]. https://github.com/jumplee/nppMarkdown
[2]. http://www.cnblogs.com/maxupeng/archive/2011/05/04/2036136.html
[3]. http://blog.csdn.net/liuyukuan/article/details/5974517
[4]. https://github.com/tzengyuxio/pages
[5]. http://pandoc.org/demos.html

4 thoughts on “搭建Pandoc+Markdown写作环境

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注