开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

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

          前言

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

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

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

          配置

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

          系統(tǒng)路徑

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

          生成HTML

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

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

          1
          pandoc in.md -o out.html

          程序運行之后,就會在當前目錄下生成一個相應(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)該放在哪呢?放在當前目錄下,當然沒問題,但是每次編寫markdown的時候,都要將這個css文件復(fù)制到當前目錄下,那豈不是很麻煩?因此我要想辦法把它放在一個固定的地方,每次直接調(diào)用就可以了。

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

          生成獨立HTML

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

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

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

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

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

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

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

          利用上述這個命令,就能將markdown文檔輕易地生成一個真正獨立的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默認選擇的pdf引擎是pdflatex,而pdflatex是不支持中文的,因此會發(fā)生上述錯誤。因此在使用pandoc的時候,可以手動指明Latex引擎為xelatex,這是完全支持中文顯示的。這樣我們的命令就變成了:

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

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

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

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

          但是這個命令還是有問題的,打開生成的pdf,你會發(fā)現(xiàn)其中的中文完全是沒有斷行的,這是因為pandoc本身對中文支持不夠,但這不是說我們沒有解決方案,解決方案是使用網(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中進行了,而不需要去使用那個無比臃腫的word了,配合Vim強大的定制功能,我就能配置出一個功能完善的pandoc寫作環(huán)境了。

          這顯然又是一個很深的話題,這里我只是稍微寫一下配置過程,因為我自己本身也還在研究當中。

          首先可以為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ù),這樣就實現(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ù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          別人的電子書,你的電子書
          Markdown+Pandoc,打通寫作界的任督二脈!
          Pandoc:一個超級強大的文檔格式轉(zhuǎn)換工具
          markdown文本轉(zhuǎn)換word,pdf
          Markdown、Pandoc轉(zhuǎn)換tex文件為doc&docx與其它
          用pandoc生成大型中文文檔的痛點與解決方案 | Chunyu Ge
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服