summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua')
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua71
1 files changed, 60 insertions, 11 deletions
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
index 4db23a295ed..862b8aeab37 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/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)
@@ -813,7 +831,8 @@ function al_closestream()
t = string.gsub(t, "(\\@al@ob)", "{")
t = string.gsub(t, "(\\@al@cb@sp)", "} ")
t = string.gsub(t, "(\\@al@cb)(%s?)", "}")
- t = gsub(t, lpeg.Cs("\\begin") * spcenc^-1 * bcbraces * cmdargs, "\n%1%2%3\n")
+ t = gsub(t, lpeg.Cs("\\begin") * spcenc^-1 * bcbraces * cmdargs,
+ "\n%1%2%3\n")
t = string.gsub(t, "(\\\\)(%s?)", "%1\n")
t = string.gsub(t, "(\\\\)(\n)(\\end%s?)(%b{})", "%1%3%4")
t = string.gsub(t, "%s-\n(\\begin%s?)(%b{})", "\n%1%2")
@@ -822,18 +841,33 @@ function al_closestream()
t = string.gsub(t, "(\\end%s?)(%b{})", "%1%2\n")
t = string.gsub(t, "([^\n]%s-)(\\end)%s?(%b{})", "%1\n%2%3")
t = string.gsub(t, "\n\n\n", "\n\n")
- t = string.gsub(t, "(\\txarb%s?%{)(\\txarb%s?)(%b{})(%})", function(tagio, tagii, body, tagic)
+ t = string.gsub(t, "(\\txarb%s?%{)(\\txarb%s?)(%b{})(%})",
+ function(tagio, tagii, body, tagic)
body = string.sub(body, 2, -2)
- return string.format("%s%s%s", tagio, body, tagic)
+ return
+ string.format("%s%s%s", tagio, body, tagic)
end)
- t = string.gsub(t, "(\\prname%s?%*%{)(\\txtrans%s?)(%b{})(%})", function(tagio, tagii, body, tagic)
+ t = string.gsub(t, "(\\prname%s?%*%{)(\\txtrans%s?)(%b{})(%})",
+ function(tagio, tagii, body, tagic)
body = string.sub(body, 2, -2)
return string.format("%s%s%s", tagio, body, tagic)
end)
- if string.find(t, "\\begin%s?{document}.-\\arb%s?[%[%{]") or
+ if string.find(t, "\\begin%s?{document}.-\\arb%s?[%[%{]")
+ or
string.find(t, "\\begin%s?{document}.-\\[Uu]c%s?%b{}")
- then
- 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}}]])
+ or
+ string.find(t, "\\begin%s?{document}.-\\abjad%s?%b{}")
+ or
+ string.find(t, "\\begin%s?{document}.-\\ayah%s?%b{}")
+ then
+ -- 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)
@@ -935,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)
@@ -963,6 +997,7 @@ function processtrans(str, mode, rules, scheme)
end
function newarbmark(abbr, rtlmk, ltrmk)
+ abbr = "@"..abbr
rtlmk = "\\arabicfont{}"..rtlmk
table.insert(arbmarks, {a = abbr, b = rtlmk, c = ltrmk})
table.sort(arbmarks, function(a ,b) return(#a.a > #b.a) end)
@@ -979,6 +1014,7 @@ local function isintable(table, element)
end
function processarbmarks(str, dir)
+ str = "@"..str
if not isintable(arbmarks, str) then
str = "\\LR{<??>}"..atletter.."\\al@wrong@mark{}"..atother
else
@@ -1122,3 +1158,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