markdown轉爲html
markdown轉html比較容易些,有很多方法都可以做到。
1. 通過markdown編輯器導出
linux下常用的markdown編輯器有retext,haroopad等,這些軟件都支持自定義css並導出html。以上軟件的安裝詳見linux環境下Markdown編輯器彙總 。
2. 使用github上的開源項目
github上有許多優秀的開源項目都可以將markdown轉爲各種樣式的html頁面。
3. 使用pandoc
pandoc是進行文件類型轉換的瑞士軍刀,初次接觸的同學可以體驗下 Pandoc Demos。更多信息請查看Pandoc User’s Guide。
將markdown轉爲html很簡單,直接執行以下命令即可。其中,”template.css”是自定義的模板。
pandoc README.md -c template.css -o README.html
markdown轉爲pdf
1. markdown->html->pdf
可以先將markdown轉爲html,具體方式見上小節。之後在瀏覽器中打開html並打印爲pdf即可,不過這樣得到的pdf總是有點模糊。
爲知筆記支持自定義markdown格式(即自定義css),並支持導出html及pdf,效果堪稱完美。見下圖。更多markdown樣式的模板詳見markdown-css。
2. 使用pandoc
使用pandoc將markdown轉爲pdf需要首先安裝LaTex,linux下建議安裝TexLive,具體安裝過程見Fedora21安裝TexLive2015及Texstudio。
之後使用如下命令進行轉換,
pandoc test.md -o test.pdf --latex-engine=xelatex
打開輸出文件卻發現中文沒有顯示,那是因爲Latex默認不支持中文,所以添加參數來指定字體爲宋體,如下所示。更多參數詳見Variables for LaTeX。
pandoc test.md -o test.pdf --latex-engine=xelatex -V mainfont=SimSun
這次的輸出文件沒有斷行,此時必須使用模板了,首先輸入一下命令導出默認模板
pandoc -D latex > template.tex
參考pm-template.latex,將”template.tex“文件中\else % if luatex or xelatex
到$if(mainfont)$
的部分修改爲如下所示:
\else % if luatex or xelatex
% SUPPORT for Chinese
\usepackage{fontspec} % 允許設定字體
\usepackage{xeCJK} % 分開設置中英文字型
\setCJKmainfont{SimSun} % 設定中文字型
\setmainfont{SimSun} % 設定英文字型
\setromanfont{SimSun} % 字型
\setmonofont{SimSun}
\linespread{1.2}\selectfont % 行距
\XeTeXlinebreaklocale "zh" % 針對中文自動換行
\XeTeXlinebreakskip = 0pt plus 1pt % 字與字之間加入0pt至1pt的間距,確保左右對整齊
\parindent 0em % 段落縮進
\setlength{\parskip}{20pt} % 段落之間的距離
\ifxetex
\usepackage{xltxtra,xunicode}
\fi
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\newcommand{\euro}{€}
$if(mainfont)$
之後,執行如下命令,即可得到比較完美的pdf了。
pandoc test.md -o test.pdf --latex-engine=xelatex --template=template.tex
可能會出現問題”pandoc “cannot parse yaml header” when converting md to pdf“,參考stackoverflow上的解決辦法,在執行命令時,加上參數--from markdown-yaml_metadata_block
即可,不過最好還是將markdown中的”—“去掉。
補充
在上面的基礎之上,可以進行適當修改以形成不同的模板,我將我的幾個模板放在了github上,地址–·pandoc-m2p-template。
樸素型:
Style1: