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.
Currently 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.
xelatexon file produced by Sphinx, though you have to adjust preamble in the config file.