从右到左排版数学

从右到左排版数学

更新:

我设法制作了一些在审美上正确的东西,但是需要大量“硬编码”和反复试验才能手动测量我的空间。更不用说我必须“倒着”写我的等式(例如“^2 b”而不是“b^2”,“0 = s”而不是“s = 0”)。有没有清洁工和更多自动的怎么做呢?示例的最小代码如下:

看起来不错

\documentclass{article}
\usepackage[leqno]{amsmath}
\usepackage{graphicx}
\newcommand{\asqrt}[1]{\reflectbox{\ensuremath{\sqrt{\reflectbox{\ensuremath{#1}}}}}}
\newcommand{\asum}[3]{\reflectbox{\ensuremath{\displaystyle\sum\limits_{\reflectbox{\ensuremath{#1}}}^{\reflectbox{\ensuremath{#2}}} \reflectbox{ \ensuremath{#3} }}}}

\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian]{arabic}  % from polyglossia
\setmainfont[Script=Arabic,Scale=1.8,Mapping=arabicdigits]{Scheherazade}
\begin{document}
\begin{equation}
\asqrt{\frac{ ^{\raisebox{3pt}{\mbox{\tiny 2}}}\mbox{ف} } {\mbox{ب} \mbox{4}}}
\end{equation}
\begin{equation}
\asum{\mbox{\scriptsize 0 = س}}{\hspace{-9pt} \scriptsize \infty}{ ^{\mbox{\small 2}} \mbox{س}}
\end{equation}
\end{document}

原始问题:


我正在使用 XeLaTeX 和 polyglossia 软件包排版一篇阿拉伯语数学文章。它对文本很有效,但对数学不太适用。

文本当然是从右到左设置的。然而数学不是这样,数学默认是反过来排版的。不幸的是,这不是唯一的问题;事实上,我确实需要一个“镜像”版本的积分和求和符号以及平方根。

1)是否有现成的包(我确实搜索过但没有找到)?

2)是否有可能构建这样的包而不丢失现有的功能,例如 amsmath 的对齐环境,或者我还必须重新实现它?

我特别想知道,如果我尝试实施针对阿拉伯语的 RTL 数学的完整解决方案,我的情况会有多糟糕。

编辑:我知道有个问题如何在 Latex 中排版包含常用拉丁方程式的阿拉伯语论文?但它讨论的是拉丁方程,而不是阿拉伯方程。

编辑2:

我可以尝试一些技巧,比如镜像盒(像这样\vec{x} 但是箭头从右到左?),但它仍然不能正常工作。

存在几个问题:

  1. 如果我没有将阿拉伯字符放在框(mbox)内,它们就不会出现,也不会保留垂直空间。
  2. 使用“幂”运算符“^”时,我必须将幂放在底数之前。我必须将其写成 ^2 x,而不是 x^2。然而,即便如此,它看起来也没有升高,因为幂 mbox 的大小没有减小(空间受限问题,在第二个示例中它看起来确实升高了)。
  3. 数字和字符的顺序颠倒了。在所附照片的分母中,它应该显示为“4 b”,但显示为“b 4”。为了正确显示,我必须在源代码中颠倒顺序。

所有这些逆转都会让复杂方程的源变得难以理解。

这个例子:

\asqrt{ \frac{ ^{\mbox{2}} \mbox{ف} } { \mbox{4 ب} } }

其中 \asqrt 定义为:

\usepackage{graphicx}
\newcommand{\asqrt}[1]{\reflectbox{\ensuremath{\sqrt{\reflectbox{\ensuremath{#1}}}}}}

不正确行为的示例

编辑3:

像求和这样的操作就没救了。求和下面的赋值应该反转。此外,使用 mbox 的需要也使得比例变得很糟糕。

\newcommand{\asum}[3]{\reflectbox{\ensuremath{\sum\limits_{\reflectbox{\ensuremath{#1}}}^{\reflectbox{\ensuremath{#2}}} \reflectbox{ \ensuremath{#3} }}}}

\asum{\mbox{س = 0}}{\infty}{^{\mbox{2}} \mbox{س}}

另一个坏例子

答案1

正如上面的评论所承诺的那样,新版本的西安国际旅行社字体具有初步的 RTL 支持。有一个简单的 ConTeXt测试文件unicode-math在存储库中(您需要最新的 ConTeXt MkIV 版本)但将其移植到 LuaLaTeX 和打包应该不难。

这项工作仍在进行中,并非所有符号都已镜像,并且对拟议的阿拉伯数学符号的支持仍然缺乏。

不过有一个警告,luatex 会反转所有内容的方向,包括数字,所以你要么想做类似的事情{\textdir TLT 123},要么尝试我的实验luadirections包(但是它在数学模式下还不能工作,至少在 ConTeXt 中不能,但我正在研究它。)

必須样本:)

答案2

以下内容并不是对该问题的直接回答,因为它更侧重于 Unicode 而不是 TeX。但我认为它仍然是相关的,特别是对于 XeLaTeX,如果有人想编写一个用于阿拉伯数学排版的包,可能需要牢记这一点。

Unicode 已编码Unicode 6.1(2012 年 1 月)位于 1EE00..1EEF1 位置的一组阿拉伯数学符号(pdf 图表).有些字体可能会包含它们。

其他一些编码自Unicode 5.1并存在于一些字体中。它们是:

  • ؆ U+0606 阿拉伯印度语立方根
  • ؇ U+0607 阿拉伯-印度语第四词根
  • ؈ U+0608 阿拉伯射线
  • ؉ U+0609 阿拉伯-印度千分之一符号
  • ؊ U+060A 阿拉伯印度语万分符号
  • U+2B30 — U+2B4C 一组用于 RTL 数学的反向箭头。另请参阅 n3259 中的讨论(pdf)用于使用反向箭头和镜像箭头。

unicode 的最终提案(包含一些字符集背景)是 n3799(pdf),以及 2006 年的原始提案,其中有更多关于阿拉伯数学特定字体的细节(比如特殊的 aleph,以避免与 1 等混淆)是 n3085-1(pdf)和 n3086-1(pdf)

卡迪阿亚德大学 (马拉喀什) 的 Azzeddine Lazrek 是这些建议的提出者,并且网页其中包含一些 LaTeX 包。此网页还提供了使用不同印刷传统(英语、法语、摩洛哥语、西方阿拉伯语和东方阿拉伯语)对同一数学表达式进行排版的比较示例。

相关内容