Vio*_*rin 2 markdown cjk xelatex pandoc
我想用pandocMarkdown 编译包含CJK元素(实际上是中文)的Markdown文档。有人说,该--latex-engine=xelatex选项允许pandoc编译Unicode字符。
但是,我尝试了
cjk.md:
Hello
??
Run Code Online (Sandbox Code Playgroud)
用(bash)编译
pandoc -s -o cjk.pdf --latex-engine=xelatex cjk.md
Run Code Online (Sandbox Code Playgroud)
但是结果.pdf只Hello显示了,而??丢失了。我错过了什么吗?
pandoc已更新;我使用的是Macbook Air(2012年购买),已更新为Sierra。我已经正确安装xelatex(我想是在MacTex中),因为当我texstudio进行编译时xelatex,没有问题。
解决了。Tl; dr:仅将编译器设置为xelatex而不是pdflatex; 一个也必须包括软件包xeCJK,但是对于应该包含的软件包,请参见下文。
编辑:下面也可以通过设置这些pandoc模板变量来实现:
---
CJKmainfont: STSong
CJKoptions:
- BoldFont=STHeiti
- ItalicFont=STKaiti
---
Hello ??
Run Code Online (Sandbox Code Playgroud)
就我而言,pandoc读取a .md,将其转换为a .tex,然后调用编译器将其编译为a .pdf。因此,从理论上讲,我可以使用类似tex的编译器正常完成的工作也可以完成pandoc-只是我必须指定所需的模板。
在pandoc调用它自己的乳胶的模板,我们可以cat在一个预先写好的命令终端:
pandoc -D latex > default.latex
Run Code Online (Sandbox Code Playgroud)
这实际上将一个新文件复制default.latex到.(当前目录)。这是我现在修改的。pandoc在编译时将此选项附加到:
--template=my-directory/my-template.latex
Run Code Online (Sandbox Code Playgroud)
过去,我输入汉字(或更常见的是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
Run Code Online (Sandbox Code Playgroud)
字体应该是系统允许的字体。上面显示的这些是Mac随附的。
但是当我只是简单地将其粘贴到pandoc提供的模板中时,就会出现许多隐秘的错误消息
option clash for package XXXX....
Run Code Online (Sandbox Code Playgroud)
这是因为已经定义了pandoc提供的模板xeCJK。确实,搜索以下行:
$if(CJKmainfont)$
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
$endif$
Run Code Online (Sandbox Code Playgroud)
这些行(引用的部分)应替换为
\usepackage{xeCJK}
\setCJKmainfont[BoldFont=STHeiti,ItalicFont=STKaiti]{STSong}
% .... and so on, whatever you call from xeCJK
Run Code Online (Sandbox Code Playgroud)
即delete if,因此xeCJK始终执行;否则,xeCJK行将不会复制到中间.tex文件。并且还删除了\usepackage{fontspec},因为它是pandoc默认调用的,否则在中间.tex文件中两次调用包时会出现错误消息。
抱歉,我没有跟踪所引用的每个网站,但是无论如何都无法正常运行,或者过时了。最有用的是mb21,他在我输出.tex 到debug的注释中建议,此后我发现xeCJK没有包含在内。
我已经在这个问题上花费了10多个小时,但是从现在开始,我可以在markdown文件中愉快地键入中文。为了后代的可怜,我写下了这个。