在我的阿拉伯语环境中,阿拉伯数字是镜像的。最小示例:
\definefont[Sheh][name:Scheherazade*arabic at 18pt]
\definestartstop[Arab][commands=\setups{Arabic}]
\def\Arab{\doArab}
\def\Arab[#1]{
\startArab
\setupalign[r2l]\Sheh \startalignment [middle] #1 \stopalignment
\stopArab
}
\starttext
\Arab[
إِنَّ مَثَلَ عِيسَىٰ عِندَ ٱللَّـهِ كَمَثَلِ ءَادَمَ خَلَقَهُ مِن تُرَابٍ ثُمَّ قَالَ لَهُ كُن فَيَكُونُ ﴿٥٩﴾
]
The verse-number is wrong, it shows 95, but it is 59 in the code.
\stoptext
我认为这是的影响\setupalign[r2l]
,那么如何解决这个问题呢
(٥٩)
确实可以按原样解释(59)。当然,我总是可以自己镜像这些数字,但那不太合适。
答案1
如果我理解正确的话,东方数字的书写方式是 (1) 从左到右 (2) 大端 (千位数字在百位数字之前输入)。它们在输入中以这种方式书写,在输出中以相同的方式排版。
如果我理解的没错的话,您的问题是,ConTeXt 无论是有意还是无意地,都不会自动识别文本中的数字,因此像文本的其余部分一样将它们排版为 r2l。
这也许能解决你的问题:
\setupmathematics[align=l2r]
\Arab[
\math{٥٩}
]
如果您想要排版数学 r2l,则此解决方案不够用和在数学 l2r 中排版数字。这似乎是一个难题:参见
我个人认为,如果可以为此设置\digits
命令,该命令将比 更合适\math
。\digits
语义上对应于数字,而\math
语义上对应于数学。像这样的东西会很好:
\setupalign[r2l]
\setupdigits[align=l2r]
\digits{٥٩}
-->
٥٩,不是٩٥。
我可以请您注册ntg-context 邮件列表并在那里再次提出您的问题?主要开发人员 Hans Hagen 在该名单上;我相信 Khaled Hosny 和/或 Idris Hamid 也在该名单上。您将得到权威的答案,然后我们可以修改此答案,以造福本网站的未来访问者。
答案2
\setupdirections[bidi=global,method=one]