我想在 TeX Gyre Pagella 文本和数学字体文档中包含一些西里尔文。我使用的是 TeXLive 2019。
正如所指出的将西里尔文与 Tex Gyre Pagella 和 pdflatex 一起使用?,pdflatex
在以下源上运行正常:
\documentclass{article}
\usepackage[T1,T2A]{fontenc}
\usepackage[russian,main=english]{babel}
\usepackage{paratype}
\usepackage{tgpagella}
\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}
\usepackage{amsmath}
\usepackage[math]{blindtext}
\begin{document}
The topologist is {\Russian Алекс\'{а}ндров}.
\blindmathpaper
\end{document}
然而在以下源上运行xelatex
会产生输出,其中指示的西里尔字母会消失:
\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[russian,main=english]{babel}
\usepackage{amsmath} % load here to avoid \dddot clash
\usepackage{fontspec}
\usepackage{paratype}
\setmainfont[Ligatures=TeX]{TeX Gyre Pagella}
\usepackage{substitutefont}%
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}%
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}
\usepackage[math]{blindtext}
\begin{document}
The topologist is {\Russian Алекс\'{а}ндров}.
\blindmathpaper
\end{document}
问题:应如何修复第二个来源以便让西里尔字母也能出现?
(我确实将其放入Map paratype-truetype.map
了本地updmap.cfg
文件并运行了updmap-user
。)
答案1
如果您使用的是 XeTeX 或 LuaTex,则应使用其他方式切换字体。一种不错的方法是使用babel
其\babelfont
命令:
\documentclass{article}
\usepackage[russian,main=english]{babel}
\usepackage{amsmath} % load here to avoid \dddot clash
\babelfont{rm}[Ligatures=TeX]{TeX Gyre Pagella}
\babelfont[russian]{rm}[Ligatures=TeX]{PT Serif}
\usepackage{unicode-math}
\setmathfont{TeX Gyre Pagella Math}
\usepackage[math]{blindtext}
\begin{document}
The topologist is {\Russian Алекс\'{а}ндров}.
\blindmathpaper
\end{document}
结果:
答案2
XeLaTeX 和 LuaLaTeX 使用完全不同的字体范例,因为一切在单一输出编码中可用,即TU
。因此substitutefont
这里没有任何意义。
您可以\babelfont
按照其他答案中的建议使用,但您会收到几个虚假警告:对字体的支持babel
仍在开发中。
和polyglossia
:
\documentclass{article}
\usepackage{polyglossia}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmainlanguage{english}
\setotherlanguage{russian}
\setmainfont{TeX Gyre Pagella}
\newfontfamily{\cyrillicfont}{PT Serif}
\setmathfont{TeX Gyre Pagella Math}
\usepackage[math]{blindtext}
\begin{document}
The topologist is \foreignlanguage{russian}{Алекс\'{а}ндров}.
\blindmathpaper
\end{document}