如果markdown文件中不包含中文字符距潘,那么直接使用下面的命令就可以將markdown文件無縫轉換為Latex支持的pdf文件尤溜。
pandoc infile.md -o outfile.pdf
如果markdown文件中包含中文字字符,那么上段命令就無法直接轉換台汇,可能會報以下錯誤:
! 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. ...
為了解決中文編譯的問題,需要做以下的工作:
將markdown文檔的編碼方式改為utf-8。比較簡單的辦法就是用記事本打開該文檔狞换,然后另存為時選擇編碼方式為utf-8。有可能當你改變編碼方式后舟肉,文檔中的中文全變成亂碼了修噪。為避免這種情況,可以在改變編碼方式之前先復制文檔的全部內容路媚,然后在改變編碼方式之后粘貼替換文檔中的全木內容黄琼,這樣就不會出現(xiàn)亂碼了。
編譯pandoc默認的latex引擎是pdflatex整慎,是不支持中文的脏款,因此需要手動設置編譯時所用的引擎為xelatex,編譯命令改為:pandoc infile.md -o outfile.pdf --latex-engine=xelatex
這時編譯可能沒有錯誤了裤园,但是得到的pdf文檔中可能所有的中文都沒有了撤师。這是字體的問題,因為編譯時默認的字體時不支持中文的拧揽,所以我們得手動設置中文字體剃盾。顯然,所設的字體應該為系統(tǒng)中已裝的字體淤袜,且字體的名字不能寫錯万俗。有一個辦法可以的到系統(tǒng)中所安裝的所有字體名(見博文),即在控制臺中輸入命令:fc-list >> C:\fonts.txt
饮怯。這樣闰歪,掃到的字體信息就全部被導入到C盤根目錄下的fonts.txt文件中了。這里我們選擇宋體蓖墅,字體名稱為“SimSun”库倘,于是編譯命令改為:pandoc infile.md -o outfile.pdf --latex-engine=xelatex -V mainfont="SimSun"
注意:命令中的``V’’是大寫這里字體名也可以不加雙引號,但是如果字體名比較復雜(如包含空格)時论矾,不加雙引號就可能出錯教翩。
好了,中文字符應該能夠顯示了贪壳,但是你可能會發(fā)現(xiàn)很多文字已經超出了文檔的邊界無法顯示了饱亿,這是因為pandoc對中文的支持不太好,不能自動換行。但是這并不表示pandoc就真的無法完美處理中文文檔了彪笼,因為技術界那些追求完美的極客們?yōu)槲覀兲峁┝藷o限的可能钻注。這篇博文介紹了pandoc中文pdf轉換攻略3
,解決方案是使用網友編輯好的latex模板來生成pdf配猫,這里用到的是tzengyuxio提供的pm-template.latex4
幅恋。 下載模板后將其中的LiHei Pro
字體替換成系統(tǒng)中安裝有的中文字體即可,然后編譯命令改為:pandoc infile.md -o outfile.pdf --latex-engine=xelatex --template=pm-template.latex
注意:如果安裝的MiKTeX(我用的是CTex)宏包不全泵肄,編譯可能會出問題捆交,如找不到exp13.sty
等,因此推薦安裝完整版的MiKTex腐巢。當然品追,你也可以使用自己定義的模板來生成tex和pdf文件。首先使用命令pandoc -D latex > my.latex
生成一個默認的模板冯丙,在對這個模板進行修改诵盼,如字體、自動換行等银还。