pandoc无法识别中文字符
我想用pandoc
编译一个包含CJK元素(实际上是中文)的Markdown文档。 据说there--latex-engine=xelatex
选项允许pandoc
编译Unicode字符。pandoc无法识别中文字符
不过,我想
cjk.md:
Hello
你好
与(在bash)
pandoc -s -o cjk.pdf --latex-engine=xelatex cjk.md
但由此产生的.pdf
只Hello
显示编译,而你好
失踪了。 我错过了什么吗? pandoc
已更新;我使用Macbook Air(2012年购买),更新到Sierra。 我已经正确安装xelatex
(在MacTex中,我想),因为当我用texstudio
来编译xelatex
时,没有问题。
已解决。 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
中调用两次包的错误消息。
对不起,我没有跟踪每一个从我引用的网站,但没有得到这一切的权利,无论如何,或者已经过时。 最有帮助的是mb21,谁在评论中建议我输出.tex
来调试,之后我发现xeCJK
没有包含在内。
我已经在这个问题上花费了10多个小时,但从现在开始,我可以愉快地在降价文件中输入中文。 我为了后人的缘故写下了这篇文章。
很高兴你有它的工作!我不熟悉中国乳胶,但我知道潘多克......所以看看我的编辑:) – mb21
这是非常友善的你,先生。我知道在文档的开头就可以设置这样的东西,但我不知道它们是'CJKmainfont'和'CJKoptions'。由于我不会随时更改字体,因此可以将它们记录在通用模板中(复制一份)。另外,如果尽可能使用拉丁字体,它看起来更令人满意。 – Aminopterin
字体可能丢失?或者修改生成乳胶的pandoc模板,参见http://tex.stackexchange.com/questions/17611/how-does-one-type-chinese-in-latex(也可以尝试'-o cjk.tex' ,然后使用'xelatex cjk.tex'来调试问题) – mb21