我使用 emacs 在 Ubuntu Linux 系统上编写 LaTeX。我有一个 LaTeX 文档,其中我想包含来自其他各种数字系统(楔形文字、象形文字、中文等,请参阅数字系统)。我的文档大部分是英文,使用默认的 LaTeX 字体,数学排版与 LaTeX 一样。初步研究表明 XeLaTeX 可能比 pdfLaTeX 更好。我找到的许多答案都是只包含一个 unicode 字符系列(仅楔形文字或象形文字)。他们经常建议安装新字体,但我不知道该怎么做。许多答案还建议将主字体设置为包含所需 unicode 字符的字体。因为我想要各种各样的字符,而且我不想更改正文的字体,我该如何实现呢?
答案1
XeTeX 并不是唯一的选择。您也可以使用 LuaTeX,它提供了一些额外的有用功能。babel
您可以根据 Unicode 范围切换字体,如下例所示。您还需要一些具有所需字符的字体,而 Noto 是一个完整的解决方案。
\documentclass{article}
\usepackage[english]{babel}
% Declare the locales:
\babelprovide[onchar=fonts]{chinese}
\babelprovide[onchar=fonts]{hieroglyphic}
\babelprovide[onchar=fonts]{cuneiform}
% Declare the fonts:
\babelfont{rm}{FreeSerif}
\babelfont[chinese]{rm}{FandolSong}
\babelfont[hieroglyphic]{rm}{NotoSansEgyptianHieroglyphs-Regular.ttf}
\babelfont[cuneiform]{rm}{NotoSansCuneiform-Regular.ttf}
% The Chinese range is predefined by babel, but not the
% following:
\babelcharproperty{"13000}["1342F]{locale}{hieroglyphic}
\babelcharproperty{"12000}["12474]{locale}{cuneiform}
\begin{document}
Text
答案2
通过xelatex
它ucharclasses
可以设置何时使用哪种字体。
% !TeX program = xelatex
% !TeX encoding = UTF-8 Unicode
\documentclass[xetex,a4paper]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Symbola}
\newfontfamily{\defaultfont}{Symbola}
\newfontfamily{\Egyptfont}{Noto Sans Egyptian Hieroglyphs}
\newfontfamily{\Cuneifont}{Noto Sans Cuneiform}
\newfontfamily{\cjkfont}{Noto Sans CJK TC}
\usepackage{polyglossia}
\setdefaultlanguage[variant=british]{english}
\usepackage[Latin, CJK, EgyptianHieroglyphs, NumberForms]{ucharclasses}
\setDefaultTransitions{\defaultfont}{}
\setTransitionsFor{NumberForms}{\defaultfont}{}
\setTransitionsFor{Cuneiform}{\Cuneifont}{\defaultfont}
\setTransitionsFor{EgyptianHieroglyphs}{\Egyptfont}{\defaultfont}
\setTransitionsForCJK{\cjkfont}{\defaultfont}
\usepackage{unicode-math}
\setmathfont[Ligatures=TeX]{STIX Two Math}
\begin{document}
東南西北零一二三四五六七八九十百千萬億
ō α β γ δ ε ϝ ζ η θ ι