Khaled Hosny wrote:
On Sat, Aug 23, 2008 at 12:46:47AM +0300, Khaled Hosny wrote:
It seems that there is a bug in converters.alphabetic function, converters.alphabetic(0,"arabic") returns the western 0 (no matter what is the selected language) while converters.alphabetic(1,"arabic") gives the Arabic 0 not 1 and so one i.e. it looks like as if it starts counting from zero.
I finally got myself to understand some lua code.
I think the problem is that lua tables start counting from 1 not 0, getting the value of key 0 from code table will give nil while 1 will give the value of 0 (first key), so the solution would be incrementing n by 1 in:
local function do_alphabetic(n,max,chr) n = n + 1 -- to get the correct key if n > max then do_alphabetic(floor((n-1)/max),max,chr) n = (n-1)%max+1 end characters.flush(chr(n)) end
This does work for the case of Arabic, but I don't know about others (especially greek and slovenian which look different)
we cannot change that function without breaking other things there are several ways to convert, one is using the languages.counters table and i don't know if the arabic entries in it are right (i just found out that the greek vector is uppercase while it should be lowercase but i'll make a fix for that)
rgrep arabicn *.tex
core-con.tex 671: \defineconversion [arabicnumerals] [\arabicnumerals] core-con.tex 672: \defineconversion [persiannumerals] [\arabicnumerals]
rgrep arabicn *.mkiv
core-con.mkiv 20: \def\abjadnumerals #1{\ctxlua{converters.arabicnumerals(\number#1)}} core-con.mkiv 21: \def\abjadnodotnumerals #1{\ctxlua{converters.arabicnodotnumerals(\number#1)}} core-con.mkiv 22: \def\abjadnaivenumerals #1{\ctxlua{converters.arabicnaivenumerals(\number#1)}} core-con.mkiv 87: \def\arabicnumerals #1{\ctxlua{converters.alphabetic(\number#1,"arabic")}} core-con.mkiv 99: \defineconversion [arabicnumerals] [\arabicnumerals]
the abjad number converters are definied differently (based on specs by idris) so, if the 0/1 offset is a problem then we need to fix the tables, not the function (unless arabic follows a different logic, as chinese does) Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------