从 2014 年到 2020 年,我一直使用一个tex
模板,它工作得还不错,而且没有错误。但安装后,TeXlive 2021
它在调用后迅速产生错误\setmathdigitfont{Font name}
。
Package fontspec Warning: Font "Fontname" does not contain requested Script (fontspec) "Persian".
! Package xepersian-mathsdigitspec Error: The font "Fontname" does not
(xepersian-mathsdigitspec) contain U+066A.
我没有对模板做任何更改。即使在以下简单的 MWE 中,它也对我曾经检查过的所有字体产生错误。真的很烦人我所有的朋友都频繁地给我发电子邮件,告诉我这里出了什么问题。
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{xepersian}
\settextfont{B Nazanin}%--> this is OK
\setmathdigitfont{Yas}%--> this produce error for these Persian fonts: Yas, B Yas, XB Niloofar, PGaramond etc.
\author{فردوسی}
\title{شاهنامه}
\begin{document}
\maketitle
این یک آز مایش است
و یک فرمول ریاضی به صورت زیر
\[\sqrt{\dfrac{5}{20x_{2}}} \]
\end{document}
我正在使用TeXlive 2021
并Xepersian
打包和编译XeLaTeX
。
答案1
问题在于xepersian
使用了自 2018 年起已弃用并在当前版本中删除的命令\etex_iffontchar:D
。该功能仍以 名称提供,因此您可以通过重新创建 的别名来\tex_iffontchar:D
解决问题:\etex_iffontchar:D
\tex_iffontchar:D
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\ExplSyntaxOn
\cs_set_eq:NN \etex_iffontchar:D \tex_iffontchar:D
\ExplSyntaxOff
\usepackage{xepersian}
\settextfont{B Nazanin}%--> this is OK
\setmathdigitfont{Yas}%--> this produce error for these Persian fonts: Yas, B Yas, XB Niloofar, PGaramond etc.
\author{فردوسی}
\title{شاهنامه}
\begin{document}
\maketitle
این یک آز مایش است
و یک فرمول ریاضی به صورت زیر
\[\sqrt{\dfrac{5}{20x_{2}}} \]
\end{document}