为包含大量语言的文档提供完整的 Unicode 支持

为包含大量语言的文档提供完整的 Unicode 支持

我使用 LaTeX(具体来说,我使用 MikTeX 的 pdflatex)根据从互联网收集的数据自动生成文档。当然,这意味着这些页面可以包含其他语言的一小部分,例如中文、韩语、阿拉伯语、土耳其语……

因此,我不知道我的文档中使用了哪些语言以及在哪里使用它们。

到目前为止,我已经将所有外语字符替换为点以避免出现问题,但在某些情况下,例如公司名称最终会被.....替换为一些中文字符。

是否有可能构建一个允许所有可用语言或至少一大组语言的 LaTeX 文档?

如果可能的话,我如何知道该文档支持哪些 Unicode 字符以及哪些不支持,以便在生成 .tex 源之前对它们进行过滤?

答案1

以下是一个例子自动检测几种不同脚本的文档。

它不是总是可以检测出哪种语言正在使用给定的脚本,例如,您正在处理阿拉伯语还是波斯语,还是西班牙语还是法语,不幸的是,有几种语言以不同的方式书写相同的 Unicode 代码点,例如日文汉字和繁体中文,如果不进行标记,您就无法正确显示它们。

最简单的解决方案是选择支持大量脚本的字体,例如 FreeSerif 或 DejaVu Sans。没有 OpenType 字体可以支持全部Unicode,但您可能只关心今天仍在使用的语言。

答案2

有了xelatex和,polyglossia就可以制作多语言 PDF。对于亚洲语言,也需要ucharclasses

% !TEX TS-program = xelatex
% !TEX encoding = UTF-8 Unicode
\documentclass[12pt, a4paper]{article}

\usepackage{polyglossia}

\setmainlanguage[variant=british]{english}
\setotherlanguages{hebrew, greek, japanese}
\newfontfamily\hebrewfont{SBL Hebrew}
\newfontfamily\greekfont{SBL Greek}
\newfontfamily{\cjkfont}{WenQuanYi Zen Hei}
\usepackage[CJK]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsForCJK{\cjkfont}{}

\title{Title}

\begin{document}

\section{First}
\textgreek{αταραξία}. That was in Greek using SBL Greek.

\texthebrew{קֹהֶלֶת}. That was in Hebrew using SBL Hebrew.

\textjapanese{東南西北} That was in CJK using WenQuanYi.

\end{document}

相关内容