去年我使用 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{•}{•} 进行除法。