gpt4 book ai didi

latex - 包含数十种语言的多语言 LaTeX 文档

转载 作者:行者123 更新时间:2023-12-05 04:28:37 25 4
gpt4 key购买 nike

我是一名技术作家,试图通过 LaTeX 将 Python-Sphinx 网站输出为 .pdf。该手册包含安全法规和环境合规性部分,其中包含约 40 多种语言。这些语言都按原样出现在基础文件中 - 并且 .rst 文件具有与 .txt 相同的 unicode 支持,因此如果保加利亚语在基础文件中以西里尔文正确呈现,我假设它编码正确。

我已经知道使用 LuaLaTeX 或 XeLaTeX 来正确呈现 unicode,而且我已经发现从 Sphinx/.rst 编译的 TeX 文件在 LuaLaTeX 下呈现得更好。即便如此,在 LuaLaTeX 下,希腊语和西里尔字母根本不会呈现(重音字母也不会呈现,但出于某种原因,日耳曼语 eth/ð 会呈现)。

我所看到的关于多语言支持的所有内容都涉及几个包中的一个,这些包要求您将每个部分用类似\begin{Russian} 的东西括起来,但适用于所有 40 多种语言。由于基础文件采用不同的格式并且 .tex 文件是自动生成的,因此每次我更新手册时,它都会保存我所做的所有工作。

对我来说,最好的解决方案是将所有多语言支持放在标题中,然后只说“嘿笨笨......按原样呈现 unicode 文本”。事实上,自动生成的封面和目录并不令人满意,所以我将标题保存在一个单独的文档中,并将更好的标题粘贴进去。通过在标题中定义所有内容来前端加载多语言支持是绝对是最理想的解决方案。

任何帮助都会很好。

以下是Python-Sphinx提供的header,稍作调整:

%% 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}

最佳答案

警告: 这不会提供正确的连字符和其他特殊语言设置(例如标点符号的法语间距),但它会显示文本。如果您还需要这些其他功能,则必须处理 babelpolyglossia


xe- 和 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}

enter image description here

(要查看您计算机上的哪些字体支持您要使用的字符,您可以使用命令行工具 albatross,参见例如 https://stackoverflow.com/a/69721465/2777074)

关于latex - 包含数十种语言的多语言 LaTeX 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72547825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com