我发现如果我在.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
答案3
我不知道 Sphinx,但问题似乎在于选项utf8
不inputenc
知道罗马尼亚语中使用的下面逗号。
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
。