我使用 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}