2016-11-30 10 views
2

Я хочу скомпилировать с pandoc, документ Markdown, содержащий элементы CJK (на самом деле, китайский). Было указано there, что опция --latex-engine=xelatex позволяет pandoc компилировать символы Юникода.pandoc не распознает иероглифы

Однако я попытался
cjk.md:

Hello 
你好 

скомпилирован (в Баш)

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

Но полученный .pdf только Hello показано, в то время как 你好 отсутствует. Я что-то пропустил? pandoc обновлен; Я использую Macbook Air (куплен в 2012 году), обновленный до Sierra. Я правильно установил xelatex (в MacTex я полагаю), поскольку, когда я использовал 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: недостаточно установить компилятор 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+ часов на эту проблему, но отныне я могу с радостью набрать китайский язык в файле уценки. Я написал это для плохого потомства.

+0

рад, что вы получили его! Я не знаком с китайским латексом, но знаю pandoc ... так что посмотрите на мое редактирование :) – mb21

+0

очень мило с вашей стороны. Я знаю, что можно, вероятно, установить такие вещи в самом начале такого документа, но я не знал, что они «CJKmainfont» и «CJKoptions». Поскольку я не меняю шрифты время от времени, для меня это нормально записать их в общий шаблон (скопированный). Кроме того, он выглядит более приятным, если по возможности использовать латинские шрифты. – Aminopterin