2016-11-30 149 views
2

我想用pandoc編譯一個包含CJK元素(實際上是中文)的Markdown文檔。 據說there--latex-engine=xelatex選項允許pandoc編譯Unicode字符。pandoc無法識別中文字符

不過,我想
cjk.md:

Hello 
你好 

與(在bash)

pandoc -s -o cjk.pdf --latex-engine=xelatex cjk.md 

但由此產生的.pdfHello顯示編譯,而你好失蹤了。 我錯過了什麼嗎? pandoc已更新;我使用Macbook Air(2012年購買),更新到Sierra。 我已經正確安裝xelatex(在MacTex中,我想),因爲當我用texstudio來編譯xelatex時,沒有問題。

+1

字體可能丟失?或者修改生成乳膠的pandoc模板,參見http://tex.stackexchange.com/questions/17611/how-does-one-type-chinese-in-latex(也可以嘗試'-o cjk.tex' ,然後使用'xelatex cjk.tex'來調試問題) – mb21

回答

3

已解決。 Tl; dr:將編譯器設置爲xelatex而不是pdflatex是不夠的;還必須包括xeCJK包,但是應該在哪裏,請參閱下文。


編輯:下面也可以通過設置這些pandoc template變量來實現:

--- 
CJKmainfont: STSong 
CJKoptions: 
    - BoldFont=STHeiti 
    - ItalicFont=STKaiti 
--- 

Hello 你好 

在我的情況下,pandoc讀取.md,將其轉換爲一個.tex,和調用編譯器將其編譯爲.pdf。 因此,從理論上講,我通常可以使用類似tex的編譯器做的事情,也可以使用pandoc來完成 - 它只是我必須指定所需的模板。

pandoc調用它自己的乳膠的模板,我們可以cat在由預先寫好的命令終端:

pandoc -D latex > default.latex 

這本質上覆制一個新的文件default.latex.(當前目錄)。 這是我現在修改。編譯時 追加此選項pandoc

--template=my-directory/my-template.latex 

在過去的I型中國字符(或更一般地,中日韓),我用

\documentclass[12pt]{article} 
\usepackage{xeCJK}% use Latin font whenever possible 
\usepackage{fontspec}% set Chinese fonts, as follows 
\setCJKmainfont[BoldFont=STHeiti,ItalicFont=STKaiti]{STSong} 
\setCJKsansfont[BoldFont=STHeiti]{STXihei} 
\setCJKmonofont{STFangsong} 
% .... whatever xeCJK commands you use 

的字體開始的模板應該是那些你係統許可證;上面顯示的這些都是隨Mac附帶的。

但是當我簡單地粘貼到pandoc-provied模板這一點,有很多神祕的錯誤消息

option clash for package XXXX.... 

這是因爲pandoc,保險費可予退回模板已經定義xeCJK。事實上,搜索這些行:

$if(CJKmainfont)$ 
    \usepackage{xeCJK} 
    \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} 
$endif$ 

這些行(引述部分)應該由

\usepackage{xeCJK} 
\setCJKmainfont[BoldFont=STHeiti,ItalicFont=STKaiti]{STSong} 
% .... and so on, whatever you call from xeCJK 

被替換,即,刪除if,以便總是執行xeCJK;否則,xeCJK行不會被複制到中間文件.tex。 並且還刪除\usepackage{fontspec},因爲默認情況下它由pandoc調用,否則在中間文件.tex中調用兩次包的錯誤消息。


確認:[1][2][3]

對不起,我沒有跟蹤每一個從我引用的網站,但沒有得到這一切的權利,無論如何,或者已經過時。 最有幫助的是mb21,誰在評論中建議我輸出.tex來調試,之後我發現xeCJK沒有包含在內。

我已經在這個問題上花費了10多個小時,但從現在開始,我可以愉快地在降價文件中輸入中文。 我爲了後人的緣故寫下了這篇文章。

+0

很高興你有它的工作!我不熟悉中國乳膠,但我知道潘多克......所以看看我的編輯:) – mb21

+0

這是非常友善的你,先生。我知道在文檔的開頭就可以設置這樣的東西,但我不知道它們是'CJKmainfont'和'CJKoptions'。由於我不會隨時更改字體,因此可以將它們記錄在通用模板中(複製一份)。另外,如果儘可能使用拉丁字體,它看起來更令人滿意。 – Aminopterin