From e81d65fbcd01afbbd7900b00e65e793b430f8dd0 Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Wed, 2 Mar 2016 17:27:51 +0100 Subject: add \cap{} command; correct transliteration tables --- arabluatex.dtx | 2 ++ arabluatex.lua | 32 ++++++++++++++++++++++++++++++++ arabluatex_trans.lua | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 76 insertions(+), 8 deletions(-) diff --git a/arabluatex.dtx b/arabluatex.dtx index 1dbfd3d..09b848c 100644 --- a/arabluatex.dtx +++ b/arabluatex.dtx @@ -225,6 +225,8 @@ \def\al@trans@style{\itshape}% \NewDocumentCommand{\SetTranslitStyle}{m}{\def\al@trans@style{#1}} \NewDocumentCommand{\SetTranslitConvention}{m}{\def\al@trans@convention{#1}} +\DeclareDocumentCommand{\cap}{m}% + {\luadirect{tex.sprint(cap(\luastringN{#1}))}} \def\al@trans@convention{dmg} \DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir TRT\arabicfont#1\egroup} diff --git a/arabluatex.lua b/arabluatex.lua index d76a284..df23ddc 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -108,6 +108,14 @@ local function indnum(str) return str end +local function takeoutcap(str) + str = string.gsub(str, "(\\cap.?)(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("%s", body) + end) + return str +end + local function voc(str) str = string.gsub(str, "\\arb(%b{})", function(inside) inside = string.sub(inside, 2, -2) @@ -270,6 +278,7 @@ end function processvoc(str) str = "\\arb{".. str.."}" + str = takeoutcap(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) @@ -280,6 +289,7 @@ end function processfullvoc(str) str = "\\arb{".. str.."}" + str = takeoutcap(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) @@ -290,6 +300,7 @@ end function processnovoc(str) str = "\\arb{".. str.."}" + str = takeoutcap(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) @@ -312,6 +323,27 @@ function processtrans(str, mode) return str end +function cap(str) + str = string.gsub(str, "(\\txtrans.?)(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("%s", body) + end) + if string.find(str, "%-['`ʾʿ]") then + str = string.gsub(str, "(%-['`])", "%1\\MakeUppercase ") + str = string.gsub(str, "(%-ʿ)", "%1\\MakeUppercase ") + str = string.gsub(str, "(%-ʾ)", "%1\\MakeUppercase ") + elseif string.find(str, "%-[^'`ʾʿ]") then + str = string.gsub(str, "(%-)", "%1\\MakeUppercase ") + elseif string.find(str, "^['`ʾʿ]") then + str = string.gsub(str, "^(['`])", "%1\\MakeUppercase ") + str = string.gsub(str, "^(ʿ)", "%1\\MakeUppercase ") + str = string.gsub(str, "^(ʾ)", "%1\\MakeUppercase ") + else + str = "\\MakeUppercase "..str + end +return str +end + --print(processvoc("'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN 'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu li-yarkiba-hu fI safraTiN qa.sIraTiN wa-qAla la-hu sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'i wa-'adfa`u la-ka 'ujraTaN")) --print(arbnum("bop 0123456789")) --print(processvoc("daxala \\arb[novoc]{mubtasimaN}")) diff --git a/arabluatex_trans.lua b/arabluatex_trans.lua index 8a9aee8..19411f1 100644 --- a/arabluatex_trans.lua +++ b/arabluatex_trans.lua @@ -70,14 +70,14 @@ trigraphstrdmg = { -- trigraphs or more {a="^'ll(a)([%_]?[dt])", b="'ll%1%2"}, {a="(%s)'ll(a)([%_]?[dt])", b="%1'll%2%3"}, -- al- + lām - {a="^(a)l%-(l)", b="%1l-%2%2"}, - {a="(%s)(a)l%-(l)", b="%1%2l-%3%3"}, + {a="^(a)l%-(l)", b="%1l-%2"}, + {a="(%s)(a)l%-(l)", b="%1%2l-%3"}, -- al- + solar consonant - {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2-%2"}, - {a="(%s)(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2%3-%3"}, + {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2-"}, + {a="(%s)(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2%3-"}, -- assim. art. + solar consonant - {a="^(a)([%_%^%.]?[tdrzsn])%-", b="%1%2-%2"}, - {a="(%s)(a)([%_%^%.]?[tdrzsn])%-", b="%1%2%3-%3"}, + {a="^(a)([%_%^%.]?[tdrzsn])%-", b="%1%2-"}, + {a="(%s)(a)([%_%^%.]?[tdrzsn])%-", b="%1%2%3-"}, -- al- + initial unstable hamza {a="^(a)l%-([uai])", b="%1l-%2"}, {a="(%s)(a)l%-([uai])", b="%1%2l-%3"}, @@ -231,8 +231,8 @@ trigraphstrloc = { -- trigraphs or more {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="%1l-%2"}, {a="(%s)(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2l-%3"}, -- assim. art. + solar consonant - {a="^(a)([%_%^%.]?[tdrzsn])%-", b="%1l-%2"}, - {a="(%s)(a)([%_%^%.]?[tdrzsn])%-", b="%1%2l-%3"}, + {a="^(a)([%_%^%.]?[tdrzsn])%-", b="%1l-"}, + {a="(%s)(a)([%_%^%.]?[tdrzsn])%-", b="%1%2l-"}, -- al- + initial unstable hamza {a="^(a)l%-([uai])", b="%1l-%2"}, {a="(%s)(a)l%-([uai])", b="%1%2l-%3"}, @@ -339,6 +339,40 @@ finaltrloc = { {a="ʾ", b="'"}, } +-- cap +captr = { + -- dmg (defaut); loc as well + {a="ā", b="Ā"}, + {a="b", b="B"}, + {a="t", b="T"}, + {a="ṯ", b="Ṯ"}, + {a="ǧ", b="Ǧ"}, + {a="ḥ", b="Ḥ"}, + {a="ḫ", b="Ḫ"}, + {a="d", b="D"}, + {a="ḏ", b="Ḏ"}, + {a="r", b="R"}, + {a="z", b="Z"}, + {a="s", b="S"}, + {a="š", b="Š"}, + {a="ṣ", b="Ṣ"}, + {a="ḍ", b="Ḍ"}, + {a="ṭ", b="Ṭ"}, + {a="ẓ", b="Ẓ"}, + {a="ġ", b="Ġ"}, + {a="f", b="F"}, + {a="q", b="Q"}, + {a="k", b="K"}, + {a="l", b="L"}, + {a="m", b="M"}, + {a="n", b="N"}, + {a="h", b="H"}, + {a="w", b="W"}, + {a="ū", b="Ū"}, + {a="y", b="Y"}, + {a="ī", b="Ī"} +} + -- return { -- raw = raw, -- hamza = hamza, -- cgit v1.2.3