2016-11-30 12 views
2

pandocで、CJK要素(中国語、実際には)を含むMarkdownドキュメントをコンパイルしたい。 there--latex-engine=xelatexオプションを使用すると、pandocでUnicode文字をコンパイルできます。 你好が欠落している間、pandocが漢字を認識しない

Hello 
你好 

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

しかし、得られた.pdf(bashでは)のみHello示しているとコンパイル:

ただし、Iは
cjk.mdを試みました。 私は何かを逃したことがありますか? pandocが更新されました。私はMacbook Air(2012年購入)を使用していて、Sierraにアップデートしました。 私はxelatexを正しくインストールしました。私は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:pdflatexではなく、xelatexにコンパイラを設定するだけでは不十分です。パッケージ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 

を私は(CJK、より一般的か)中国語の文字を入力し、私はそれらをする必要があります

\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テンプレートにこれを貼り付ける際に

はしかし、pandoc-proviedeテンプレートが既にxeCJKを定義したので、これはだった多くの不可解なエラーメッセージ

option clash for package XXXX.... 

がありました。確かに、これらの行を検索:

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

これらの行(引用符で囲まれた部分)がxeCJKが常に実行されるように、すなわち、ifを削除

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

に置き換える必要がありますが、そうでない場合、xeCJK行は中間の.texファイルにコピーされません。 また、デフォルトでpandocによって呼び出されるため、\usepackage{fontspec}も削除されます。それ以外の場合、パッケージは中間の.texファイルで2回呼び出されます。


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

申し訳ありませんが、私は、参照元のすべてのウェブサイトを追跡していなかったが、どれもとにかくそれ右のすべてを取得していない、または古いです。 ほとんどのヘルプはmb21ですが、私は.texをデバッグするためにを出力し、そのあとxeCJKは含まれていないとコメントしました。

私はこの問題で約10時間以上を費やしましたが、今から私はmarkdownファイルで中国語を喜んで入力できます。 貧しい後世のために私はこれを書きました。

+0

うれしいことです!私は中国のラテックスに精通していないが、私はパンドックを知っている...だから私の編集を参照してください:) – mb21

+0

それはあなたの非常に親切です。このような文書の冒頭にこの種のものを置くことは可能かもしれないが、私はそれらが 'CJKmainfont'と' CJKoptions'であるとは知らなかった。私は時々フォントを変更しないので、共通のテンプレート(コピーされたもの)に書き留めても構いません。また、可能であればラテン系フォントを使用する方が楽しいです。 – Aminopterin