diff options
author | Robert Alessi <alessi@robertalessi.net> | 2022-06-15 10:50:00 +0200 |
---|---|---|
committer | Robert Alessi <alessi@robertalessi.net> | 2022-06-15 10:50:00 +0200 |
commit | 8c4cfb2b61dde8b30b33bbc4dba5a3267edd36b5 (patch) | |
tree | 6023ad0e670713d8a47f07cd42804f4ddf506b7a /arabluatex.lua | |
parent | 5a355afa958761229d6dbce5eae7dacbcf6c2e63 (diff) | |
download | arabluatex-8c4cfb2b61dde8b30b33bbc4dba5a3267edd36b5.tar.gz |
added distinction between dmg|dmg+ and \SetArbNumbers (either Indian [default] or Arabic). updated copyright dates.
Diffstat (limited to 'arabluatex.lua')
-rw-r--r-- | arabluatex.lua | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/arabluatex.lua b/arabluatex.lua index 72b1e38..f639770 100644 --- a/arabluatex.lua +++ b/arabluatex.lua | |||
@@ -2,7 +2,7 @@ | |||
2 | This file is part of the `arabluatex' package | 2 | This file is part of the `arabluatex' package |
3 | 3 | ||
4 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX | 4 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2020 Robert Alessi | 5 | Copyright (C) 2016--2022 Robert Alessi |
6 | 6 | ||
7 | Please send error reports and suggestions for improvements to Robert | 7 | Please send error reports and suggestions for improvements to Robert |
8 | Alessi <alessi@robertalessi.net> | 8 | Alessi <alessi@robertalessi.net> |
@@ -94,7 +94,8 @@ local albrkcmds = { | |||
94 | "LRmarginpar", | 94 | "LRmarginpar", |
95 | "arbmark", | 95 | "arbmark", |
96 | "abjad", | 96 | "abjad", |
97 | "ayah" | 97 | "ayah", |
98 | "SetArbNumbers" | ||
98 | } | 99 | } |
99 | local brkcmds = {} | 100 | local brkcmds = {} |
100 | 101 | ||
@@ -170,7 +171,18 @@ local function holdcmd(str) | |||
170 | return str | 171 | return str |
171 | end | 172 | end |
172 | 173 | ||
173 | local function arbnum(str) | 174 | local indorarbnum = "Indian" |
175 | |||
176 | function arabluatex.setnums(opt) | ||
177 | if opt == "Indian" | ||
178 | then | ||
179 | indorarbnum = "Indian" | ||
180 | else | ||
181 | indorarbnum = "Arabic" | ||
182 | end | ||
183 | end | ||
184 | |||
185 | local function arbnum(str) -- not used, see below | ||
174 | str = string.gsub(str, "([0-9%,%-%/]+)", function(num) | 186 | str = string.gsub(str, "([0-9%,%-%/]+)", function(num) |
175 | return string.reverse(num) | 187 | return string.reverse(num) |
176 | end) | 188 | end) |
@@ -181,8 +193,11 @@ local function indnum(str) | |||
181 | str = string.gsub(str, "([0-9%,%-%/]+)", function(num) | 193 | str = string.gsub(str, "([0-9%,%-%/]+)", function(num) |
182 | return string.reverse(num) | 194 | return string.reverse(num) |
183 | end) | 195 | end) |
184 | for i = 1,#numbers do | 196 | if indorarbnum == "Indian" |
185 | str = string.gsub(str, numbers[i].a, numbers[i].b) | 197 | then |
198 | for i = 1,#numbers do | ||
199 | str = string.gsub(str, numbers[i].a, numbers[i].b) | ||
200 | end | ||
186 | end | 201 | end |
187 | return str | 202 | return str |
188 | end | 203 | end |
@@ -590,11 +605,19 @@ local function novoceasy(str) | |||
590 | return str | 605 | return str |
591 | end | 606 | end |
592 | 607 | ||
593 | local function transdmg(str, rules) | 608 | local function transdmg(str, mode, rules) |
594 | str = string.gsub(str, "\\arb(%b{})", function(inside) | 609 | str = string.gsub(str, "\\arb(%b{})", function(inside) |
595 | inside = string.sub(inside, 2, -2) | 610 | inside = string.sub(inside, 2, -2) |
596 | for i = 1,#hamzatrdmg do | 611 | if mode == "dmg" |
597 | inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) | 612 | then |
613 | for i = 1,#hamzatrnoinitialdmg do | ||
614 | inside = string.gsub(inside, hamzatrnoinitialdmg[i].a, hamzatrnoinitialdmg[i].b) | ||
615 | end | ||
616 | elseif mode == "dmg+" | ||
617 | then | ||
618 | for i = 1,#hamzatrdmg do | ||
619 | inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) | ||
620 | end | ||
598 | end | 621 | end |
599 | for i = 1,#tanwintrdmg do | 622 | for i = 1,#tanwintrdmg do |
600 | inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) | 623 | inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) |
@@ -1062,8 +1085,8 @@ function arabluatex.processtrans(str, mode, rules, scheme) | |||
1062 | if scheme == "buckwalter" then | 1085 | if scheme == "buckwalter" then |
1063 | str = processbuckw(str) | 1086 | str = processbuckw(str) |
1064 | end | 1087 | end |
1065 | if mode == "dmg" then | 1088 | if mode == "dmg" or mode == "dmg+" then |
1066 | str = transdmg(str, rules) | 1089 | str = transdmg(str, mode, rules) |
1067 | elseif mode == "loc" then | 1090 | elseif mode == "loc" then |
1068 | str = transloc(str) | 1091 | str = transloc(str) |
1069 | elseif mode == "arabica" then | 1092 | elseif mode == "arabica" then |