方程式编号括在括号中,与 Polyglossia+Hebrew+amsmath 放错位置

方程式编号括在括号中,与 Polyglossia+Hebrew+amsmath 放错位置

我正在使用 TeXnicCenter 中的 XeLatex 编译以下 MWE,并得到一个混乱的方程编号:

\documentclass{article}
\usepackage{amsmath}
\usepackage{polyglossia}
\setmainlanguage{hebrew}
\newfontfamily{\hebrewfont}{Arial}

\begin{document}
\begin{equation}\label{eq:1}
2+2=4.
\end{equation}
\end{document} 

在此处输入图片描述

这里发生了什么?

答案1

问题是由 中的标签打印宏引起的amsmath。它用于\@@italiccorr在右括号前应用斜体校正,并在此希伯来语设置中更改字符顺序。由于此校正的影响无论如何都很小,因此您可以在文档中将其删除。您还需要更改\maketag@@@顺序才能\eqref正常工作:

示例输出

\documentclass{article}

\usepackage{amsmath}

\usepackage{polyglossia}
\setmainlanguage{hebrew}
\newfontfamily{\hebrewfont}{Arial}

\makeatletter
\def\maketag@@@#1{\hbox{\m@th\normalfont\LRE{#1}}}
\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip)}}
\makeatother

\begin{document}
\begin{equation}\label{eq:1}
2+2=4.
\end{equation}

\eqref{eq:1}

\end{document}

为了比较,原始定义是

\def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}} 

答案2

@Andrew Swan 的回答破坏了bidi包的行为(参见文件 amsmath-bidi-xetex.def)。正确的答案是传递Script=Hebrew给你的字体:

\newfontfamily\hebrewfont[Script=Hebrew]{Arial}

相关内容