I discovered that if I use some Unicode characters inside .rst
files, I will loose them when I convert the documentation to pdf using Sphinx.
Example chars: "șț".
When I run make latexpdf
I get a document without these Unicode characters.
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityCurrently You can use xelatex manually for that. Add
latex_elements = {
'inputenc': '',
'utf8extra': '',
'preamble': '''
\usepackage{fontspec}
\setsansfont{Arial}
\setromanfont{Arial}
\setmonofont{DejaVu Sans Mono}
''',
}
to conf.py, make latex code, and run the xelatex manually:
sphinx-build -b latex -d _build/doctrees . _build/xetex && cd _build/xetex; xelatex *.tex
latex_engine
configuration variable which did not exist at time of @Adobe answering, so now make latexpdf
will use xelatex
out of the box with latex_engine = 'xelatex'
.
Also consider using XeLaTeX, it can be configured as LaTeX engine in conf.py.
From the Sphinx documentation:
# inside conf.py
latex_engine = 'xelatex'
I don't know about Sphinx, but the problem seems to be in the fact that the option utf8
to inputenc
doesn't know about the comma below used in Romanian.
You can solve the problem by using the utf8x
option or adding to the preamble for LaTeX compilation the following incantation
\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}
The code between \makeatletter
and \makeatother
is from uni-global.def
of the ucs package.
Note that you need nothing special since the 2015 release of LaTeX has added support of all Romanian letters within \usepackage[utf8]{inputenc}
, so utf8x
is not needed any more, nor the explicit definitions with \newunicodechar
.
xelatex
on file produced by Sphinx, though you have to adjust preamble in the config file.