XePersian 的 `\setmathdigitfont` 有问题

XePersian 的 `\setmathdigitfont` 有问题

从 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 2021Xepersian打包和编译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}

相关内容