pandoc 不识别汉字
pandoc does not recognize Chinese characters
我想用 pandoc
编译一个包含 CJK 元素(实际上是中文)的 Markdown 文档。
据说 there --latex-engine=xelatex
选项允许 pandoc
编译 Unicode 字符。
不过,我试过了
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
调用自己的latex模板,我们可以在终端中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 提供的模板中时,出现了许多神秘的错误消息
option clash for package XXXX....
这是因为 pandoc-proviede 模板已经定义 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
文件中被调用两次的错误信息。
抱歉,我没有跟踪我引用的每个网站,但是 none 无论如何都可以,或者已经过时了。
最有帮助的是 mb21,他在评论中建议我输出 .tex
来调试 ,之后我发现 xeCJK
不包括在内。
我已经在这个问题上花费了10多个小时,但从现在开始我可以愉快地在markdown文件中输入中文了。
为了可怜的后代,我把它写下来了。
我想用 pandoc
编译一个包含 CJK 元素(实际上是中文)的 Markdown 文档。
据说 there --latex-engine=xelatex
选项允许 pandoc
编译 Unicode 字符。
不过,我试过了
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
调用自己的latex模板,我们可以在终端中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 提供的模板中时,出现了许多神秘的错误消息
option clash for package XXXX....
这是因为 pandoc-proviede 模板已经定义 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
文件中被调用两次的错误信息。
抱歉,我没有跟踪我引用的每个网站,但是 none 无论如何都可以,或者已经过时了。
最有帮助的是 mb21,他在评论中建议我输出 .tex
来调试 ,之后我发现 xeCJK
不包括在内。
我已经在这个问题上花费了10多个小时,但从现在开始我可以愉快地在markdown文件中输入中文了。 为了可怜的后代,我把它写下来了。