我已经在最新的 Ubuntu 14.04 LTS 64 位上安装pandoc
并texlive-full
打包了俄语 markdown 文件转换为 PDF。
当我运行以下命令时,一切正常:
pandoc --latex-engine=xelatex --toc --chapters -V mainfont="Ubuntu" -f markdown -o test.pdf test.md
但是为了在目录、图片描述等中也使用俄语,我指定了lang
如下变量:
pandoc --latex-engine=xelatex --toc --chapters -V mainfont="Ubuntu" -V lang="russian" -f markdown -o test.pdf test.md
执行结束时会显示以下消息:
pandoc: Error producing PDF from TeX source.
! TeX capacity exceeded, sorry [input stack size=5000].
<inserted text>
-1
l.61 \tableofcontents
如果我指定另一种语言,一切都会再次正常工作,french
例如dutch
:
pandoc --latex-engine=xelatex --toc --chapters -V mainfont="Ubuntu" -V lang="french" -f markdown -o test.pdf test.md
内容是什么并不重要test.md
。它们可以是一个简单的文本文件:
# Первая глава
Текст первой главы.
# Вторая глава
Текст второй главы.
# Третья глава
Текст третьей главы.
我使用默认的 Latex 模板:
pandoc -D latex > mytemplate.tex
猜测主语言设置时出现了问题:
\ifxetex
\usepackage{polyglossia}
\setmainlanguage{$mainlang$}
\else
\usepackage[$lang$]{babel}
\fi
我做错了什么还是这是一个 bug?不幸的是,我无法找到解决方法来解决这个问题。据我所知,有很多问题可能会导致此错误。我是 pandoc、TeX 和所有相关事物的初学者,所以任何帮助都将不胜感激!
更新
在 Windows 7 Professional 32 位上尝试使用微特克斯作为pandoc文档推荐指定-V mainfont="Times New Roman"
字体并得到完全相同的错误......
答案1
问题似乎可以归结为这个最小的例子:
\documentclass{book}
\usepackage{fontspec}
\usepackage{polyglossia}
\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Linux Libertine O}
\setmainlanguage{russian}
\begin{document}
x
\end{document}
终止
! TeX capacity exceeded, sorry [input stack size=5000].
<to be read again>
{
如果Scale=MatchLowercase
删除该选项,文档将编译。如果我使用以下命令保存测试中的 LaTeX 文件
pandoc --latex-engine=xelatex --toc --chapters -V mainfont="Linux Libertine O" -V lang="russian" -f markdown -w latex -s test.md > test.tex
然后删除该选项,运行XeLaTeXtest.tex
即可成功。
这很可能是 Polyglossia 俄语模块中的一个错误。
答案2
问题似乎与未正确选择西里尔字体系列有关。在我看来,这更像是副作用而不是错误。
在我的模板中添加以下两个定义实际上可以帮助我解决问题而无需删除当前默认值\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
:
% Define the main Cyrillic font: \newfontfamily{\cyrillicfont}{Your Font Here} % Set the monospace Cyrillic font: \newfontfamily{\cyrillicfonttt}{Your Mono Font Here}