Решено. Tl; dr: недостаточно установить компилятор xelatex
вместо pdflatex
; нужно также включить пакет xeCJK
, но для того, где он должен быть, см. ниже.
Edit: ниже также может быть достигнуто путем установления этих 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
в .
(текущий каталог). Это я теперь изменяю. Append этот параметр, чтобы 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 шаблона, там было много сообщений об ошибках загадочных
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
.
подтверждение: [1][2][3]
К сожалению, я не следить за каждой веб-сайтов, из которых я ссылочных, но никто не получает все верно это в любом случае, или устарели. Больше всего помогает mb21, который предложил в комментарии, что я выводил .tex
для отладки, после чего я нашел xeCJK
не был включен.
Я потратил около 10+ часов на эту проблему, но отныне я могу с радостью набрать китайский язык в файле уценки. Я написал это для плохого потомства.
Возможно, шрифт отсутствует? или изменить шаблон pandoc, с которым создается латекс, см. http://tex.stackexchange.com/questions/17611/how-does-one-type-chinese-in-latex (также попробуйте '-o cjk.tex' , затем используйте 'xelatex cjk.tex' для отладки проблемы) – mb21