午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

神器Pandoc的安裝與使用 | Flyaway's Blog

 stoneccf 2019-05-07

前言

其實(shí)很早就知道Pandoc這個東西了,只是一直沒有什么需求促使我去使用它。平時寫博客雖然也是用Markdown,但是由于Jekyll并不支持Pandoc,所以也沒有特別去研究它(目前博客使用的是Kramdown渲染器,它在很多擴(kuò)展語法都是借鑒Pandoc的。)??墒菚r過境遷,現(xiàn)在平時需要寫一些非正式報告和總結(jié),每次使用word的時候總覺得不舒服,有次為了調(diào)整一個段落的行距搞了1個多小時,雖然可以說是我自己沒有學(xué)好word的基本操作,但是每次為了尋找一個功能"翻箱倒柜"地在網(wǎng)上找方法,徹底破壞了寫作的情緒,這實(shí)在讓我很難受。因此我選擇markdown來進(jìn)行平時的寫作,為了達(dá)到這個目的,必須要選擇一個markdown的渲染器,網(wǎng)上有著各式各樣的渲染器,還有一些可以直接在線渲染的網(wǎng)站。但是平時在本地編輯的時候,總要開個瀏覽器,這實(shí)在讓人接受不了。在眾多渲染器中,最先映入眼簾的就是Pandoc了,號稱為文本格式轉(zhuǎn)換的瑞士軍刀,既然有了這個稱號,說明其功能是非常不錯的。后來查了一下,發(fā)現(xiàn)果然是一個神器,它甚至可以生成pdf和docs!

Pandoc的官網(wǎng)在這里,網(wǎng)上有很多具體介紹Pandoc的文章,其中質(zhì)量比較高的有:

本文就不再贅述上面文章提到過的一些基本概念和操作了,如果讀者還不知道Markdown和Pandoc是什么的話,請閱讀上述文章。

配置

具體的安裝過程上述文章和Pandoc的官網(wǎng)上都有,此處不再細(xì)說了,這里主要說明一些在安裝過程遇到的問題和解決方法(以windows7為例)。

系統(tǒng)路徑

在Windows下Pandoc安裝的時候,默認(rèn)是安裝在用戶主目錄下的,以win7為例,就是C:\Users\USERNAME\AppData\Local\Pandoc,照理來說安裝程序是應(yīng)該會把這個目錄添加到Path中去的,但是我發(fā)現(xiàn)并沒有自動添加,因此首先要將這個目錄手動加入到Path中,這樣才能在任何的目錄下進(jìn)行調(diào)用。

生成HTML

就我自己而言,我使用Pandoc最主要的功能就是利用它來生成HTML和PDF文件,本節(jié)先討論HTML的配置方法,下一節(jié)再來說明pdf的配置。

其實(shí)將markdown生成html,是Pandoc最基本的一個功能,使用起來也是非常簡單的,打開cmd,切換到makrdown文本所在的目錄,寫入如下代碼[1]:

1
pandoc in.md -o out.html

程序運(yùn)行之后,就會在當(dāng)前目錄下生成一個相應(yīng)的out.html文件。

CSS樣式

上面這是最基本的用法了,但是這還不能滿足我的日常需求,單純的html文件太過單調(diào)了,只有配上相應(yīng)的CSS樣式,才能使得文本以更加優(yōu)美的方式展現(xiàn)出來。

可喜的是pandoc完全支持加入css一起渲染,利用如下的命令:

1
pandoc in.md -c style.css out.html

其中style.css是為生成的html文件編寫的樣式文件,但是這個style.css應(yīng)該放在哪呢?放在當(dāng)前目錄下,當(dāng)然沒問題,但是每次編寫markdown的時候,都要將這個css文件復(fù)制到當(dāng)前目錄下,那豈不是很麻煩?因此我要想辦法把它放在一個固定的地方,每次直接調(diào)用就可以了。

這就引出了pandoc的默認(rèn)目錄了,可以通過pandoc --version命令來查看pandoc當(dāng)前的默認(rèn)目錄,還是以windows7為例,它的默認(rèn)目錄是C:\Users\USERNAME\AppData\Roaming\pandoc ,只需要將這個style.css文件放入到這個目錄下,那么在任意目錄使用pandoc時,都能自動讀取到這個文件,而且,如果需要一些特殊的css樣式,可以在當(dāng)前目錄編寫,pandoc會自動使用當(dāng)前目錄下的style.css替代默認(rèn)目錄中的style.css文件。

生成獨(dú)立HTML

通常來說,寫作的目的是寫給別人來看的,但是如果是使用html文件的格式的話,那么每次傳輸都需要傳送整個目錄文件,因?yàn)闀泻芏鄨D片或css文件需要一起被傳送,否則html會無法正確顯示。這顯然是很麻煩的,有沒有辦法讓pandoc在生成的時候,自動把style.css中樣式代碼直接嵌入到html中呢?辦法當(dāng)然是有的,主要是參考了這篇文章。主要有兩種方法:

第一種是使用方法是使用如下的命令:

1
pandoc -s -H style.css  in.md -o out.html

但是當(dāng)我試用這種方式的時候,發(fā)現(xiàn)style.css文件必須放在當(dāng)前目錄下,這個命令才能正常執(zhí)行,否則會報錯說找不到style.css文件。

另外一種更加好的方式使用--self-contained參數(shù):

1
pandoc -s --self-contained -c style.css in.md -o out.html

這個命令不但會把css文件嵌入到html中,它會把所有外部文件全部壓縮進(jìn)單個html文件中,包括圖片、視屏、音樂等。這是何等強(qiáng)大的功能??!

利用上述這個命令,就能將markdown文檔輕易地生成一個真正獨(dú)立的html文件,不需要任何其他外部文件支持,這就非常方便傳遞了。

生成pdf

生成一個pdf文件也是pandoc的主要功能之一,但是它要依賴于latex,如果需要使用pandoc來生成pdf文件,那么需要另外安裝Latex,pandoc官方推薦安裝MiKTeX,具體安裝過程也不說了,非常簡單。安裝好MikTex之后,可以利用如下的命令來生成pdf:

1
pandoc in.md -o out.pdf

但是這樣命令會出現(xiàn)這樣的錯誤

! Package inputenc Error: Unicode char \u8:鍒?not set up for use with LaTex. pandoc: Error producing PDF from Tex source. See the inputsnc package documentation for explanation. ...

原因是pandoc默認(rèn)選擇的pdf引擎是pdflatex,而pdflatex是不支持中文的,因此會發(fā)生上述錯誤。因此在使用pandoc的時候,可以手動指明Latex引擎為xelatex,這是完全支持中文顯示的。這樣我們的命令就變成了:

1
pandoc in.md -o out.pdf --latex-engine=xelatex

使用這個命令能夠正常的編譯出pdf文件,但是當(dāng)你打開編譯出來的pdf文件時,會發(fā)現(xiàn)其中的中文部分全是空白,這是字體的問題,因?yàn)長atex的默認(rèn)字體是不支持中文的,因此我們可以繼續(xù)修改命令:

1
pandoc in.md -o out.pdf --latex-engine=xelatex -V mainfont=SimSun

其中mainfont參數(shù)是用來指明所使用的字體,SinSun表示的是宋體,你可以選擇其他支持中文的字體。

但是這個命令還是有問題的,打開生成的pdf,你會發(fā)現(xiàn)其中的中文完全是沒有斷行的,這是因?yàn)閜andoc本身對中文支持不夠,但這不是說我們沒有解決方案,解決方案是使用網(wǎng)友編輯好的latex模板來生成pdf,這里用到的是tzengyuxio提供的pm-template.latex4。 下載模板后將其中的LiHei Pro字體替換成系統(tǒng)中安裝有的中文字體即可,然后編譯命令改為

1
pandoc in.md -o out.pdf --latex-engine=xelatex --template=pm-template.latex

這時就能生成一個比較完美的pdf文件了。

Vim與Pandoc

既然現(xiàn)在有了panodc這個神器,那么大部分的文本編輯操作我就可以在Vim中進(jìn)行了,而不需要去使用那個無比臃腫的word了,配合Vim強(qiáng)大的定制功能,我就能配置出一個功能完善的pandoc寫作環(huán)境了。

這顯然又是一個很深的話題,這里我只是稍微寫一下配置過程,因?yàn)槲易约罕旧硪策€在研究當(dāng)中。

首先可以為markdown文件映射幾個命令,使得可以快捷的生成html,在Vim的_vimrc文件中加入如下代碼:

1
2
3
4
5
6
7
8
9
10
11
12

function! ToHtml()
exec 'w'
exec "!pandoc -s -S --self-contained -c style.css % -o %<.html "
endfunction

function! ToPdf()
exec 'w'
exec "!pandoc % -o %<.pdf --latex-engine=xelatex --template=pm-template.latex"
endfunction
:nmap <silent> <F5> :call ToHtml()<CR>
:nmap <silent> <F6> :call ToPdf()<CR>

上述的代碼中,我首先定義了兩個函數(shù),分別是用來調(diào)用pandoc來生成html和pdf文件的,然后映射了兩個快捷鍵<F5><F6>去調(diào)用這兩個函數(shù),這樣就實(shí)現(xiàn)了直接在Vim中調(diào)用pandoc生成html或pdf,而不再需要通過命令行來調(diào)用。

最后推薦一個比較好的pandoc插件:vim-pandoc,這個插件我也是剛剛開始使用,感覺還不錯,值得推薦。

參考資料


  1. 如果發(fā)現(xiàn)沒有pandoc命令,說明還沒有將安裝目錄添加到系統(tǒng)Path中,請查看上一節(jié)內(nèi)容。 ?

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多