From 8c4cfb2b61dde8b30b33bbc4dba5a3267edd36b5 Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Wed, 15 Jun 2022 10:50:00 +0200 Subject: added distinction between dmg|dmg+ and \SetArbNumbers (either Indian [default] or Arabic). updated copyright dates. --- arabluatex.lua | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) (limited to 'arabluatex.lua') diff --git a/arabluatex.lua b/arabluatex.lua index 72b1e38..f639770 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2020 Robert Alessi +Copyright (C) 2016--2022 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi @@ -94,7 +94,8 @@ local albrkcmds = { "LRmarginpar", "arbmark", "abjad", - "ayah" + "ayah", + "SetArbNumbers" } local brkcmds = {} @@ -170,7 +171,18 @@ local function holdcmd(str) return str end -local function arbnum(str) +local indorarbnum = "Indian" + +function arabluatex.setnums(opt) + if opt == "Indian" + then + indorarbnum = "Indian" + else + indorarbnum = "Arabic" + end +end + +local function arbnum(str) -- not used, see below str = string.gsub(str, "([0-9%,%-%/]+)", function(num) return string.reverse(num) end) @@ -181,8 +193,11 @@ local function indnum(str) str = string.gsub(str, "([0-9%,%-%/]+)", function(num) return string.reverse(num) end) - for i = 1,#numbers do - str = string.gsub(str, numbers[i].a, numbers[i].b) + if indorarbnum == "Indian" + then + for i = 1,#numbers do + str = string.gsub(str, numbers[i].a, numbers[i].b) + end end return str end @@ -590,11 +605,19 @@ local function novoceasy(str) return str end -local function transdmg(str, rules) +local function transdmg(str, mode, rules) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) - for i = 1,#hamzatrdmg do - inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) + if mode == "dmg" + then + for i = 1,#hamzatrnoinitialdmg do + inside = string.gsub(inside, hamzatrnoinitialdmg[i].a, hamzatrnoinitialdmg[i].b) + end + elseif mode == "dmg+" + then + for i = 1,#hamzatrdmg do + inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) + end end for i = 1,#tanwintrdmg do inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) @@ -1062,8 +1085,8 @@ function arabluatex.processtrans(str, mode, rules, scheme) if scheme == "buckwalter" then str = processbuckw(str) end - if mode == "dmg" then - str = transdmg(str, rules) + if mode == "dmg" or mode == "dmg+" then + str = transdmg(str, mode, rules) elseif mode == "loc" then str = transloc(str) elseif mode == "arabica" then -- cgit v1.2.3