多语言LaTeX文档,支持数十种语言

3
我是一位技术作者,正在尝试通过LaTeX将Python-Sphinx网站输出为.pdf文件。该手册包含约40多种语言的安全规定和环境合规部分。这些语言都出现在基础文件中 - .rst文件与.txt具有相同的Unicode支持,因此如果保加利亚语在基础文件中以西里尔字母呈现,我认为它已经正确编码。
我已经知道要使用LuaLaTeX或XeLaTeX来正确渲染Unicode,并且已经发现从Sphinx / .rst编译的TeX文件在LuaLaTeX下呈现得更好。即便如此,在LuaLaTeX下,希腊语和西里尔字母根本不呈现(重音字母也不呈现,但出于某种原因,日耳曼古英语字母ð确实呈现)。
我看到的所有多语言支持方案都涉及几个需要你用类似\begin{Russian}这样的括号将每个章节括起来的包。由于基础文件格式不同且.tex文件是自动生成的,每次更新手册时它都会覆盖我所做的所有工作。
对我最好的解决方案是将所有多语言支持放在头文件中,并只需说“嘿蠢蛋……只需按原样呈现Unicode文本”。目前,自动生成的封面和目录不尽如人意,因此我将标题保存在单独的文档中并将更好的标题粘贴进去。通过在头文件中定义所有内容来提前加载多语言支持绝对是最理想的解决方案。
任何帮助都会很好。
以下是Python-Sphinx提供的标题,经过小小的调整:
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}

\ifdefined\pdfpxdimen
   \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
\fi \sphinxpxdimen=.75bp\relax
\ifdefined\pdfimageresolution
    \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax
\fi
%% let collapsible pdf bookmarks panel have high depth per default
\PassOptionsToPackage{bookmarksdepth=5}{hyperref}

\PassOptionsToPackage{warn}{textcomp}
\usepackage[utf8]{inputenc}
\ifdefined\DeclareUnicodeCharacter
% support both utf8 and utf8x syntaxes
  \ifdefined\DeclareUnicodeCharacterAsOptional
    \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}}
  \else
    \let\sphinxDUC\DeclareUnicodeCharacter
  \fi
  \sphinxDUC{00A0}{\nobreakspace}
  \sphinxDUC{2500}{\sphinxunichar{2500}}
  \sphinxDUC{2502}{\sphinxunichar{2502}}
  \sphinxDUC{2514}{\sphinxunichar{2514}}
  \sphinxDUC{251C}{\sphinxunichar{251C}}
  \sphinxDUC{2572}{\textbackslash}
\fi

\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amstext}
\usepackage{babel}

\usepackage{tgtermes}
\usepackage{tgheros}
\renewcommand{\ttdefault}{txtt}

\usepackage[Bjarne]{fncychap}
\usepackage{sphinx}

\fvset{fontsize=auto}
\usepackage{geometry}

% Include hyperref last.
\usepackage{hyperref}

% Fix anchor placement for figures with captions.
\usepackage{hypcap}% it must be loaded after hyperref.

% Set up styles of URL: it should be placed after hyperref.
\urlstyle{same}

\usepackage{sphinxmessages}

\title{...}
\date{\today}
\release{...}
\author{...}

\makeindex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

The document is almost entirely in English except for one dang section near but not at the end:

- Това е българско
- Αυτό είναι ελληνικό
- Tohle je česky
- Bu türkçe
- Þetta er íslenskt

\end{document}

1个回答

2

注意:这种方法无法正确进行断字和其他特殊语言设置(例如标点符号的法式间距),但可以显示文本。如果您还想使用这些其他功能,则需要处理babelpolyglossia


xelatex和lualatex的unicode功能只有在使用具有良好符号覆盖范围的字体时才能完全展开。

例如,使用Noto Serif字体:

% !TeX TS-program = lualatex
%% Generated by Sphinx.
\def\sphinxdocclass{report}
\documentclass[letterpaper,10pt,english]{sphinxmanual}

\ifdefined\pdfpxdimen
   \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen
\fi \sphinxpxdimen=.75bp\relax
\ifdefined\pdfimageresolution
    \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax
\fi
%% let collapsible pdf bookmarks panel have high depth per default
\PassOptionsToPackage{bookmarksdepth=5}{hyperref}

\PassOptionsToPackage{warn}{textcomp}
\usepackage[utf8]{inputenc}
\ifdefined\DeclareUnicodeCharacter
% support both utf8 and utf8x syntaxes
  \ifdefined\DeclareUnicodeCharacterAsOptional
    \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}}
  \else
    \let\sphinxDUC\DeclareUnicodeCharacter
  \fi
  \sphinxDUC{00A0}{\nobreakspace}
  \sphinxDUC{2500}{\sphinxunichar{2500}}
  \sphinxDUC{2502}{\sphinxunichar{2502}}
  \sphinxDUC{2514}{\sphinxunichar{2514}}
  \sphinxDUC{251C}{\sphinxunichar{251C}}
  \sphinxDUC{2572}{\textbackslash}
\fi

\usepackage{cmap}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amssymb,amstext}
\usepackage{babel}

\usepackage{tgtermes}
\usepackage{tgheros}
\renewcommand{\ttdefault}{txtt}

\usepackage[Bjarne]{fncychap}
\usepackage{sphinx}

\fvset{fontsize=auto}
\usepackage{geometry}

% Include hyperref last.
\usepackage{hyperref}

% Fix anchor placement for figures with captions.
\usepackage{hypcap}% it must be loaded after hyperref.

% Set up styles of URL: it should be placed after hyperref.
\urlstyle{same}

\usepackage{sphinxmessages}

\title{...}
\date{\today}
\release{...}
\author{...}

\makeindex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{fontspec}
\setmainfont{Noto Serif}

\begin{document}

The document is almost entirely in English except for one dang section near but not at the end:

- Това е българско

- Αυτό είναι ελληνικό

- Tohle je česky

- Bu türkçe

- Þetta er íslenskt


\end{document}

在此输入图片描述

要查看您计算机上支持所需字符的字体,您可以使用命令行工具albatross。例如,请参见https://dev59.com/TW035IYBdhLWcg3wJcYv#69721465


我很失望它这么简单。对于TeX甚至没有完全支持Unicode的字体感到失望,也为自己没有注意到它会这么简单而感到失望。非常感谢你。你真是个冠军。 - Sebastien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接