Xepersian 包打印波斯语文本,但无法识别公式并给出错误

Xepersian 包打印波斯语文本,但无法识别公式并给出错误

去年我使用 MiKTeX 完成了很多工作。安装它时我没有遇到任何问题。但现在我正尝试将它安装在我的新笔记本电脑上。它的错误太多了,让我苦不堪言。两周过去了,在解决了数百个错误后,我终于能够让它识别波斯语文本了。例如:

\documentclass{book}
\usepackage{xepersian}
\begin{document}
سلام
\end{document}

并且当使用 XeLaTeX 排版时,它可以成功打印 pdf 文件。但是当我添加如下简单公式时:

\documentclass{book}
\usepackage{xepersian}
\begin{document}
سلام
\[e^{i\pi}+1=0\]
\end{document}

它不会给出任何输出,而是出现以下错误:

! Undefined control sequence.
\SetMathCode #1#2#3#4->\Umathcode 
                                  #1="\mathchar@type #2 \csname sym#3\endcsn...
l.5 \[
      e^{i\pi}+1=0\]
?

我该怎么办?我厌倦了研究各种无用的解决方案。我已经多次安装和卸载了 MiKTeX。我下载了 Persian modern 安装并将它们放在我的窗口中。我还做了许多许多许多其他事情,我不想让你感到厌烦......许多论坛建议改用 TeX Live,但我不想使用它。这似乎是另一种问题,不能仅通过更改软件来解决。我想知道这个软件有什么问题?

答案1

Sina,我发现你的语气有点(而且毫无用处)咄咄逼人。你尝试的解决方案也许是你自己的解决方案;好吧,你可能从未与专家讨论过这个问题;至少你没有联系我们(xepersian 的维护者)。

那么问题是什么?在新版本的 XeTeX 中,\XeTeXmathcode 和 \XeTeXmathchardef 已被弃用,因此我们在新版本的 xepersian 中将它们更改为 \Umathcode 和 \Umathchardef。MikTeX 仍然附带旧的 xetex 二进制文件,因此您会收到错误。如果您想使用 MiKTeX,那么作为一种解决方法,请在 tex 文档的序言中添加以下几行:

\makeatletter
\@ifundefined{Umathcode}{\let\Umathcode\XeTeXmathcode}{}
\@ifundefined{Umathchardef}{\let\Umathchardef\XeTeXmathchardef}{}
\makeatother 

或者最好安装 TeXLive 2013(届时将正式发布)。

答案2

尝试这个。

\documentclass{book}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\begin{document}
    سلام
    \begin{latin}
        $e ^ { i \ pi } + 1 = 0$
    \end{latin}
\end{document}

或这个。

\documentclass{book}
\usepackage{xepersian}
\settextfont[Scale=1]{XB Zar}
\begin{document}
    سلام
    \lr{$e ^ { i \ pi } + 1 = 0$}        
\end{document}

最好使用 amsmath 包中的 \dfrac{•}{•} 进行除法。

相关内容