我正在使用 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}