如何在 Sphinx rst 文档中使用 Unicode 字符并正确生成 PDF 文件?

如何在 Sphinx rst 文档中使用 Unicode 字符并正确生成 PDF 文件?

我发现如果我在.rst文件中使用一些 Unicode 字符,那么当我使用 Sphinx 将文档转换为 pdf 时,我会丢失这些字符。

示例字符:“șț”。

当我运行时,make latexpdf我得到了一个没有这些 Unicode 字符的文档。

答案1

目前您可以手动使用 xelatex 来实现此目的。添加

latex_elements = {
    'inputenc': '',
    'utf8extra': '',
    'preamble': '''

\usepackage{fontspec}
\setsansfont{Arial}
\setromanfont{Arial}
\setmonofont{DejaVu Sans Mono}
''',
}

到 conf.py,制作 latex 代码,然后手动运行 xelatex:

sphinx-build -b latex -d _build/doctrees . _build/xetex && cd _build/xetex; xelatex *.tex

答案2

还可以考虑使用XeLaTeX,它可以在conf.py中配置为LaTeX引擎。

来自Sphinx 文档

# inside conf.py
latex_engine = 'xelatex'

答案3

我不知道 Sphinx,但问题似乎在于选项utf8inputenc知道罗马尼亚语中使用的下面逗号。

utf8x您可以使用选项或在 LaTeX 编译前言中添加以下咒语来解决问题

\makeatletter
\ProvideTextCommandDefault\textcommabelow[1]
  {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
   \hbox{\check@mathfonts\fontsize\ssf@size\z@
   \math@fontsfalse\selectfont,}\hidewidth}\egroup}
\makeatother
\usepackage{newunicodechar}
\newunicodechar{Ș}{\textcommabelow S}
\newunicodechar{ș}{\textcommabelow s}
\newunicodechar{Ț}{\textcommabelow T}
\newunicodechar{ț}{\textcommabelow t}

\makeatletter和之间的代码\makeatother来自uni-global.def加州大学包裹。

补充评论

请注意,您不需要任何特殊操作,因为 2015 年发布的 LaTeX 已经增加了对所有罗马尼亚字母的支持\usepackage[utf8]{inputenc},因此utf8x不再需要,也不需要明确的定义\newunicodechar

相关内容