From 7d803ee0e91ebf26b8dfd9ec3f47cb098cc7db8a Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Tue, 2 Oct 2018 17:26:51 +0200 Subject: new function ayah() --- arabluatex.lua | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/arabluatex.lua b/arabluatex.lua index 20f1ecf..6e40efd 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -88,7 +88,8 @@ local albrkcmds = { "par", "LRmarginpar", "arbmark", - "abjad" + "abjad", + "ayah" } local brkcmds = {} @@ -201,11 +202,19 @@ local function processarbnull(str, scheme) return str end -local function takeoutabjad(str) +local function takeout_abjad_ayah(str) str = string.gsub(str, "(\\abjad.?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) return string.format("%s", body) end) + str = string.gsub(str, "(\\ayah.?)(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + if tonumber(body) ~= nil and str.len(body) < 4 then + return string.format("(%s)", body) + else + return "" + end + end) return str end @@ -675,15 +684,20 @@ local function processarbtoutf(str) if export_utf ~= "arabverse" then str = "\\begin{arabexport}"..str else end + --[[ -- of no use, see above takeout_abjad_ayah() str = string.gsub(str, "(\\txtrans%s?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) body = string.gsub(body, "(\\abjad%s?)(%b{})", function(btag, bbody) bbody = string.sub(bbody, 2, -2) return string.format("%s", bbody) end) + body = string.gsub(body, "(\\ayah%s?)(%b{})", function(btag, bbody) + bbody = string.sub(bbody, 2, -2) + return string.format("(%s)", bbody) + end) return string.format("%s{%s}", tag, body) end) - + --]] str = string.gsub(str, "(\\txarb%s?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) body = string.gsub(body, "(\\abjad%s?)(%b{})", function(btag, bbody) @@ -699,6 +713,10 @@ local function processarbtoutf(str) bbody = string.sub(bbody, 2, -2) return string.format("%s[rl]{%s}", btag, bbody) end) + body = string.gsub(body, "(\\ayah%s?)(%b{})", function(btag, bbody) + bbody = string.sub(bbody, 2, -2) + return string.format("\\arb[novoc]{%s^^^^06dd}", bbody) + end) return string.format("%s{%s}", tag, body) end) str = string.gsub(str, "(\\bayt)%s?(%b{})(%b[])(%b{})", function(tag, argi, argii, argiii) @@ -837,11 +855,19 @@ function al_closestream() if string.find(t, "\\begin%s?{document}.-\\arb%s?[%[%{]") or string.find(t, "\\begin%s?{document}.-\\[Uu]c%s?%b{}") + or + string.find(t, "\\begin%s?{document}.-\\abjad%s?%b{}") + or + string.find(t, "\\begin%s?{document}.-\\ayah%s?%b{}") then - tex.print([[\unexpanded{\PackageWarningNoLine{arabluatex}{ - There are still 'arabtex' strings to be converted. - Please open ]] .. tex.jobname .. utffilesuffix .. ".tex" .. + -- issue a warning: + tex.print([[\unexpanded{\PackageWarningNoLine{arabluatex}{]] + .. + [[There are still 'arabtex' strings to be converted. ]] + .. + [[Please open ]] .. tex.jobname .. utffilesuffix .. ".tex" .. [[ and compile it one more time}}]]) + -- else end t = t.."\n\\end{document}" io.write(t) @@ -943,7 +969,7 @@ function processtrans(str, mode, rules, scheme) str = takeoutarb(str) str = processdiscretionary(str) str = processarbnull(str, scheme) - str = takeoutabjad(str) + str = takeout_abjad_ayah(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) @@ -1130,3 +1156,16 @@ function aemph(str, opt) end return str end + +function ayah(str) + if tonumber(str) ~= nil and str.len(str) < 4 then + if tex.textdir == "TRT" then + str = "\\arb[novoc]{"..str.."^^^^06dd}" + elseif tex.textdir == "TLT" then + str = "\\arb[trans]{("..str..")}" + end + return str + else + return "\\LR{}" + end +end -- cgit v1.2.3