diff options
author | Karl Berry <karl@freefriends.org> | 2018-08-27 21:40:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-08-27 21:40:31 +0000 |
commit | f1c2e4e8b45c0e7bbdaca6e345c187375d024f6a (patch) | |
tree | 860c73f354a94aaca03662a2cddce04ff0063f46 /Master/texmf-dist/tex/lualatex/arabluatex | |
parent | c357ace7563241fac62d6f2a73fc3a1521e628b2 (diff) |
arabluatex (27aug18)
git-svn-id: svn://tug.org/texlive/trunk@48499 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/arabluatex')
4 files changed, 375 insertions, 42 deletions
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua index 823823621c1..4db23a295ed 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua @@ -49,10 +49,12 @@ local cmdstar = lpeg.Cs(spce * lpeg.P("*")) local bsqbracketsii = lpeg.Cs(bsqbrackets^-2) local bcbracesii = lpeg.Cs(bcbraces^-2) local cmd = lpeg.Cs(dblbkslash * ascii^1 * cmdstar^-1) -local cmdargs = lpeg.Cs(spce * bsqbracketsii * bcbracesii * bsqbrackets^-1) +local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) +local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces) +local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces) local function protectarb(str) - str = string.gsub(str, "(\\arb%s?)(%[.-%])(%b{})", "\\@arb%2%3") + str = string.gsub(str, "(\\arb%s?)(%[.-%])(%b{})", "\\al@brk{\\arb%2%3}") str = string.gsub(str, "(\\LR%s?)(%b{})", "\\@LR%2") str = string.gsub(str, "(\\RL%s?)(%b{})", "\\@RL%2") return str @@ -639,6 +641,210 @@ local function processbuckw(str) return str end +-- The following functions produce a copy of the original .tex source +-- file in which all arabtex strings are replaced with Unicode +-- equivalents +local utffilesuffix = "_out" +local export_utf = "no" + +function al_utffilesuffix(str) + utffilesuffix = str + return true +end + +function al_doexport(str) + export_utf = str + return true +end + +function al_openstream() + local f = io.open(tex.jobname..utffilesuffix.."_tmp.tex", "a+") + local preamble = io.open(tex.jobname..".tex", "r") + for line in preamble:lines() do + f:write(line, "\n") + if string.find(line, "^%s-\\begin%s?{document}") then + break + end + end + preamble:close() + f:close() + return true +end + +local function processarbtoutf(str) + if export_utf ~= "arabverse" then + str = "\\begin{arabexport}"..str + else end + 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) + 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) + bbody = string.sub(bbody, 2, -2) + if tonumber(bbody) ~= nil then + bbody = abjadify(bbody) + return string.format("\\aemph{\\arb[novoc]{%s}}", bbody) + else + return string.format("%s{%s}", btag, bbody) + end + end) + body = string.gsub(body, "(\\arbmark%s?)(%b{})", function(btag, bbody) + bbody = string.sub(bbody, 2, -2) + return string.format("%s[rl]{%s}", btag, bbody) + end) + return string.format("%s{%s}", tag, body) + end) + str = string.gsub(str, "(\\bayt)%s?(%b{})(%b[])(%b{})", function(tag, argi, argii, argiii) + argi = string.sub(argi, 2, -2) + argii = string.sub(argii, 2, -2) + argiii = string.sub(argiii, 2, -2) + return string.format("%s*{\\arb{%s}}[\\arb{%s}]{\\arb{%s}}", tag, argi, argii, argiii) + end) + str = string.gsub(str, "(\\bayt)%s?(%b{})(%b{})", function(tag, argi, argii) + argi = string.sub(argi, 2, -2) + argii = string.sub(argii, 2, -2) + return string.format("%s*{\\arb{%s}}{\\arb{%s}}", tag, argi, argii) + end) + str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + if string.find(body, "\\uc%s?%b{}") then + return string.format("%s*{%s}", tag, body) + else + return string.format("%s{\\arb[trans]{\\uc{%s}}}", tag, body) + end + end) + str = string.gsub(str, "(\\begin%s?{arab})(%b[])", function(tag, body) + if string.find(body, "trans") then + return string.format("\\par\\bgroup\\setLR\\arb%s{", body) + else + return string.format("\\par\\bgroup\\setRL\\arb%s{", body) + end + end) + str = string.gsub(str, "(\\begin%s?{arab})", "\\par\\bgroup\\arbpardir\\arb{") + str = string.gsub(str, "\\end%s?{arab}", "}\\egroup\\par") + -- This does not work, while the following two do. Look into this later. + -- str = gsub(str, lpeg.Cs("\\arb") * spcenc * bsqbrackets^-1 * bcbraces, function(tag, opt, body) + -- body = string.sub(body, 2, -2) + -- return string.format("%s%s\\@al@pr@ob%s\\@al@pr@cb", tag, opt, body) + -- end) + str = string.gsub(str, "(\\arb%s?)(%b[])(%b{})", function(tag, opt, body) + body = string.sub(body, 2, -2) + return string.format("%s%s\\@al@pr@ob%s\\@al@pr@cb", tag, opt, body) + end) + str = string.gsub(str, "(\\arb)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("%s\\@al@pr@ob%s\\@al@pr@cb", tag, body) + end) + str = string.gsub(str, "(\\arbmark)%s?(%b[])(%b{})", function(tag, opt, body) + body = string.sub(body, 2, -2) + return string.format("%s%s\\@al@pr@ob%s\\@al@pr@cb", tag, opt, body) + end) + str = string.gsub(str, "(\\arbmark)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("%s\\@al@pr@ob%s\\@al@pr@cb", tag, body) + end) + str = string.gsub(str, "(\\[Uu]c)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("%s\\@al@pr@ob%s\\@al@pr@cb", tag, body) + end) + str = string.gsub(str, "{", "\\@al@ob") + str = string.gsub(str, "} ", "\\@al@cb@sp") + str = string.gsub(str, "}", "\\@al@cb") + str = string.gsub(str, "\\@al@pr@ob", "{") + str = string.gsub(str, "\\@al@pr@cb", "}") + str = string.gsub(str, "(%b{})", function(body) + body = string.sub(body, 2, -2) + body = string.gsub(body, "(%s?)(\\@al@ob)", "%1{") + body = string.gsub(body, "(\\@al@cb@sp)", "} ") + body = string.gsub(body, "(\\@al@cb)(%s?)", "}%2") + return string.format("{%s}", body) + end) + if export_utf ~= "arabverse" then + str = str.."\\end{arabexport}" + else end + return str +end + +function arbtoutf(str) + str = processarbtoutf(str) + str = "\\ArbOutFile{"..str.."}" + str = string.gsub(str, "(\\ArbOutFile)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + body = gsub(body, lpeg.Cs("\\arb") * arbargs, "}%1%2\\ArbOutFile{") + return string.format("%s{%s}", tag, body) + end) + str = string.gsub(str, "(\\ArbOutFile)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + body = string.gsub(body, "(\\[Uu]c)%s?(%b{})", "}%1%2\\ArbOutFile{") + return string.format("%s{%s}", tag, body) + end) + str = string.gsub(str, "(\\ArbOutFile)%s?(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + body = gsub(body, lpeg.Cs("\\arbmark") * arbargs, "}%1%2\\ArbOutFile{") + return string.format("%s{%s}", tag, body) + end) + return str +end + +function tooutfile(str, nl) + local f = io.open(tex.jobname..utffilesuffix.."_tmp.tex", "a+") + if nl == "newline" then + f:write(str, "\n\n") + else + f:write(str) + end + f:close() + return str +end + +function al_closestream() + local f = io.open(tex.jobname..utffilesuffix.."_tmp.tex", "r") + local o = io.open(tex.jobname..utffilesuffix..".tex", "w") + local t = f:read("*a") + t = string.gsub(t, "\\arabicfont{}", "") + t = string.gsub(t, "\\par ", "\n\n") + 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 = 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") + t = string.gsub(t, "(\\item)", "\n%1") + t = string.gsub(t, "\n\n(\\item)", "\n%1") + 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) + body = string.sub(body, 2, -2) + return string.format("%s%s%s", tagio, body, tagic) + end) + 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 + 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}}]]) + else end + t = t.."\n\\end{document}" + io.write(t) + o:write(t) + f:close() + o:close() + os.remove(tex.jobname..utffilesuffix.."_tmp.tex") + return true +end + +-- Process standard arabluatex modes: function processvoc(str, rules, scheme) str = takeoutarb(str) str = processarbnull(str, scheme) @@ -655,7 +861,16 @@ function processvoc(str, rules, scheme) str = voc(str, rules) else end str = unprotectarb(str) -return str + if export_utf == "yes" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + else + return str + end + return "" end function processfullvoc(str, rules, scheme) @@ -676,7 +891,16 @@ function processfullvoc(str, rules, scheme) str = fullvoc(str, rules) else end str = unprotectarb(str) -return str + if export_utf == "yes" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + else + return str + end + return "" end function processnovoc(str, rules, scheme) @@ -695,7 +919,16 @@ function processnovoc(str, rules, scheme) str = novoc(str) else end str = unprotectarb(str) -return str + if export_utf == "yes" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = "\\txarb{"..str.."}" + tooutfile(tofile) + else + return str + end + return "" end function processtrans(str, mode, rules, scheme) @@ -717,7 +950,16 @@ function processtrans(str, mode, rules, scheme) str = transarabica(str) end str = unprotectarb(str) -return str + if export_utf == "yes" then + tofile = str + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = str + tooutfile(tofile) + else + return str + end + return "" end function newarbmark(abbr, rtlmk, ltrmk) @@ -736,11 +978,19 @@ local function isintable(table, element) return false end -function processarbmarks(str) +function processarbmarks(str, dir) if not isintable(arbmarks, str) then str = "\\LR{<??>}"..atletter.."\\al@wrong@mark{}"..atother else - if tex.textdir == "TLT" then + if dir == "lr" then + for i = 1,#arbmarks do + str = string.gsub(str, arbmarks[i].a, arbmarks[i].c) + end + elseif dir == "rl" then + for i = 1,#arbmarks do + str = string.gsub(str, arbmarks[i].a, arbmarks[i].b) + end + elseif tex.textdir == "TLT" then for i = 1,#arbmarks do str = string.gsub(str, arbmarks[i].a, arbmarks[i].c) end @@ -750,7 +1000,16 @@ function processarbmarks(str) end end end - return str + if export_utf == "yes" then + tofile = str + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = str + tooutfile(tofile) + else + return str + end + return "" end function uc(str) @@ -804,7 +1063,16 @@ function uc(str) for i = 1,#lcuc do str = string.gsub(str, "(%s[%(%<%[]?)"..lcuc[i].a, "%1"..lcuc[i].b) end - return "\\txtrans{"..str.."}" + if export_utf == "yes" then + tofile = "\\txtrans{"..str.."}" + tooutfile(tofile) + elseif export_utf == "arabverse" then + tofile = "\\txtrans{"..str.."}" + tooutfile(tofile) + else + return "\\txtrans{"..str.."}" + end + return "" end -- this function is adapted from an 'obsolete project' of Khaled diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty index 67485aaf4c3..1e90fdfcddb 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty @@ -41,7 +41,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2018/06/24 v1.12 An ArabTeX-like interface for LuaLaTeX] +[2018/08/27 v1.13 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} \ifluatex\else \PackageError{arabluatex}{lualatex needed}{% @@ -55,6 +55,11 @@ \DeclareOptionX{fullvoc}{\def\al@mode{fullvoc}} \DeclareOptionX{novoc}{\def\al@mode{novoc}} \DeclareOptionX{trans}{\def\al@mode{trans}} +\define@boolkey{arabluatex.sty}[@pkg@]{export}[true]{% + \AtBeginDocument{\luadirect{al_openstream()}% + \MkArbBreak{@al@ob,@al@cb,@al@cb@sp}} + \AtEndDocument{\luadirect{al_closestream()}} +} \ExecuteOptionsX{voc} \ProcessOptionsX\relax \def\al@mode@voc{voc} @@ -71,11 +76,12 @@ \RequirePackage{xparse} \RequirePackage{environ} \RequirePackage{adjustbox} +\RequirePackage{xstring} \newbool{al@rlmode} \luadirect{dofile(kpse.find_file("arabluatex.lua"))} \AtBeginDocument{\ifdefined\arabicfont\relax\else -\PackageWarning{arabluatex}{\string\arabicfont\ is not defined.^^JI - will try to load Amiri}% +\PackageWarning{arabluatex}{\string\arabicfont\ is not defined.^^J + I will try to load Amiri}% \newfontfamily\arabicfont[Script=Arabic]{Amiri}\fi}% \AtBeginDocument{\def\setRL{\booltrue{al@rlmode}\pardir TRT\textdir TRT}} \AtBeginDocument{\def\setLR{\boolfalse{al@rlmode}\pardir TLT\textdir TLT}} @@ -127,12 +133,13 @@ \NewDocumentCommand{\uc}{m}% {\luadirect{tex.sprint(uc(\luastringN{#1}))}} \let\Uc\uc -\NewDocumentCommand{\prname}{m}{% - \bgroup\SetTranslitStyle{\relax}\arb[trans]{\uc{#1}}\egroup} -\NewDocumentCommand{\txarb}{+m}{\bgroup\textdir - TRT\arabicfont#1\egroup} -\NewDocumentCommand{\txtrans}{+m}{\bgroup\textdir - TLT\al@trans@font\al@trans@style#1\egroup} +\NewDocumentCommand{\prname}{s m}{% + \bgroup\SetTranslitStyle{\relax}% + \IfBooleanTF{#1}{\txtrans{#2}}{\arb[trans]{\uc{#2}}}\egroup} +\NewDocumentCommand{\txarb}{+m}{% + \bgroup\textdir TRT\arabicfont#1\egroup} +\NewDocumentCommand{\txtrans}{+m}{% + \bgroup\textdir TLT\al@trans@font\al@trans@style#1\egroup} \NewDocumentEnvironment{txarab}{}{% \par% \booltrue{al@rlmode}% @@ -168,10 +175,11 @@ \luastringO{\al@input@scheme}))}\egroup% \else% \fi\fi\fi\fi} -\NewDocumentCommand{\arbmark}{m}{% +\NewDocumentCommand{\arbmark}{O{} m}{% \bgroup% \SetInputScheme{arabtex}% - \luadirect{tex.sprint(processarbmarks(\luastringN{#1}))}% + \luadirect{tex.sprint(processarbmarks(\luastringN{#2}, + \luastringN{#1}))}% \egroup} \NewDocumentCommand{\newarbmark}{m m m}{% \luadirect{newarbmark(\luastringN{#1}, \luastringN{#2}, \luastringN{#3})}} @@ -209,34 +217,61 @@ \define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}} \define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}} \define@key[al]{verse}{metre}{\arb{#1}} +\define@key[al]{verse}{color}[]{\color{#1}} \define@boolkey[al]{verse}{utf}[true]{} \define@boolkey[al]{verse}{delim}[true]{} +\define@boolkey[al]{verse}{export}[true]{} \define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, trans}{\def\al@mode{#1}} \presetkeys[al]{verse}{metre={}, utf=false, delim=false}{} \NewDocumentEnvironment{arabverse}{O{}}% -{\par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% +{\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, + metre]{#1}% + \if@pkg@export\ifal@verse@export% + \ArbOutFile{\begin{arabverse}}% + \ifx\al@mode\al@mode@trans% + \luadirect{tooutfile(\luastringN{[#1]})}% + \else% + \IfSubStr[1]{#1}{utf}% + {\luadirect{tooutfile(\luastringN{[#1]})}}% + {\luadirect{tooutfile(\luastringN{[#1, utf]})}}% + \fi + \else\fi\else\fi\egroup% + \par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% \ifx\al@mode\al@mode@trans% - \ifal@verse@utf\setRL\else\setLR\fi% - \else\setRL\fi}% -{\hfill\setkeys[al]{verse}[width,gutter,utf,mode]{#1}\egroup} + \ifal@verse@utf\setRL\else\setLR\fi% + \else\setRL\fi% + \arab@v@export{#1} + }% + {\endarab@v@export + \hfill\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, + export]{#1}% + \egroup\par% + \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, + metre]{#1}% + \if@pkg@export\ifal@verse@export% + \ArbOutFile{\end{arabverse}} + \else\fi\else\fi\egroup} \NewDocumentCommand{\arb@utf}{m}{% \ifal@verse@utf\txarb{#1}\else\arb{#1}\fi} \def\al@hemistich@delim{*} \NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}} \def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt} -\NewDocumentCommand{\bayt}{m o m}{% +\NewDocumentCommand{\bayt}{s m o m}{% + \IfBooleanTF{#1}{\relax}{\relax}% + {^^^^200b}% quick fix to a bug (or a missing feature) in either + % luacolor or adjustbox \ifdefined\savenotes\savenotes\else\fi% \edef\al@tatweel{--}% - \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#1}}% - \IfNoValueTF{#2}{% + \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% + \IfNoValueTF{#3}{% \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% \else% \hspace{\al@gutter@width}% \fi }{% - \edef\@tempa{#2}% + \edef\@tempa{#3}% \ifx\@tempa\al@tatweel% \ifx\al@mode\al@mode@trans% \hspace{\al@gutter@width}% @@ -245,11 +280,11 @@ \fi% \else% \ifx\al@mode\al@mode@trans% - \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#2}}% + \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% \else% - \makebox[\al@gutter@width][s]{\arb@utf{#2}}% + \makebox[\al@gutter@width][s]{\arb@utf{#3}}% \fi\fi}% - \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#3}}% + \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% \ifdefined\spewnotes\spewnotes\else\fi% } \AtBeginDocument{% @@ -280,6 +315,36 @@ {\AtBeginDocument{\deffootnote{2em}{1.6em}{\LR{\thefootnotemark}.\enskip}}}% {\RequirePackage{scrextend} \AtBeginDocument{\deffootnote{2em}{1.6em}{\LR{\thefootnotemark}.\enskip}}}} +\NewDocumentCommand{\SetArbOutSuffix}{m}{ + \luadirect{al_utffilesuffix(\luastringN{#1})}} +\NewDocumentCommand{\ArbOutFile}{s O{no} +m}{% + \if@pkg@export% + \IfBooleanTF{#1}{% + #3\luadirect{tooutfile(\luastringN{#3}, "#2")}}{% + \luadirect{tooutfile(\luastringN{#3}, "#2")}}% + \else\IfBooleanTF{#1}{#3}{}\fi} +\NewEnviron{arabexport}{% + \if@pkg@export% + \par + \BODY + \luadirect{al_doexport("yes")} + \luadirect{tex.sprint(arbtoutf(\luastringO{\BODY}))} + \luadirect{al_doexport("no")} + \else\par\BODY\fi + }[\par] +\NewEnviron{arab@v@export}[1]{% + \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, + metre]{#1} + \if@pkg@export\ifal@verse@export% + \par + \BODY + \luadirect{al_doexport("arabverse")} + \luadirect{tex.sprint(arbtoutf(\luastringO{\BODY}))} + \luadirect{al_doexport("no")} + \else\par\BODY\fi\else\par\BODY\fi +}[\par] +\NewDocumentCommand{\arbpardir}{}{% + \ifx\al@mode\al@mode@trans\setLR\else\booltrue{al@rlmode}\setRL\fi} \newcommand{\al@warning}[1]{\PackageWarning{arabluatex}{#1}} \newcommand{\al@error}[2]{\PackageError{arabluatex}{#1}{#2}} \newcommand{\al@wrong@nesting}{\al@error{% diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua index 1651418f5ac..775e8207ecf 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua @@ -43,7 +43,7 @@ captr = { {a="b", b="B"}, {a="t", b="T"}, {a="ṯ", b="Ṯ"}, - {a="ǧ", b="Ǧ"}, + {a="ǧ", b="Ǧ"}, {a="ḥ", b="Ḥ"}, {a="ḫ", b="Ḫ"}, {a="d", b="D"}, @@ -75,7 +75,7 @@ lcuc = { {a="b", b="B"}, {a="t", b="T"}, {a="ṯ", b="Ṯ"}, - {a="ǧ", b="Ǧ"}, + {a="ǧ", b="Ǧ"}, {a="j", b="J"}, {a="ḥ", b="Ḥ"}, {a="ḫ", b="Ḫ"}, @@ -427,7 +427,7 @@ digraphstrdmg = { {a="T(%p*)$", b="h%1"}, {a="T(%p*)(%W)", b="h%1%2"}, {a="_t", b="ṯ"}, - {a="%^g", b="ǧ"}, + {a="%^g", b="ǧ"}, {a="%.h", b="ḥ"}, {a="_h", b="ḫ"}, {a="_d", b="ḏ"}, @@ -462,7 +462,7 @@ digraphstrdmg = { singletrdmg = { {a="b", b="b"}, {a="t", b="t"}, - {a="j", b="ǧ"}, + {a="j", b="ǧ"}, {a="x", b="ḫ"}, {a="d", b="d"}, {a="r", b="r"}, @@ -949,7 +949,7 @@ digraphstrarabica = { {a="aT(%p*)$", b="a%1"}, {a="aT(%p*%s)", b="a%1"}, {a="_t", b="ṯ"}, - {a="%^g", b="ǧ"}, + {a="%^g", b="ǧ"}, {a="%.h", b="ḥ"}, {a="_h", b="ḫ"}, {a="_d", b="ḏ"}, @@ -983,7 +983,7 @@ digraphstrarabica = { singletrarabica = { {a="b", b="b"}, {a="t", b="t"}, - {a="j", b="ǧ"}, + {a="j", b="ǧ"}, {a="x", b="ḫ"}, {a="d", b="d"}, {a="r", b="r"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua index 3f4cce960ff..842f42b78ee 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua @@ -23,10 +23,10 @@ along with this program. If not, see --]] arbmarks = { - {a="bismillah", b="\\arabicfont ^^^^fdfd", c="\\arb[trans]{bi-ismi \\uc{'l-l_ahi} 'l-ra.hm_ani 'l-ra.hImi}"}, - {a="salam", b="\\arabicfont ^^^^fdf5", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"}, - {a="jalla", b="\\arabicfont ^^^^fdfb", c="\\arb[trans]{^galla ^galAla-hu}"}, - {a="slm", b="\\arabicfont ^^^^fdfa", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"} + {a="bismillah", b="\\arabicfont{}^^^^fdfd", c="\\arb[trans]{bi-ismi \\uc{'l-l_ahi} 'l-ra.hm_ani 'l-ra.hImi}"}, + {a="salam", b="\\arabicfont{}^^^^fdf5", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"}, + {a="jalla", b="\\arabicfont{}^^^^fdfb", c="\\arb[trans]{^galla ^galAla-hu}"}, + {a="slm", b="\\arabicfont{}^^^^fdfa", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"} } abjad = { |