From 901646a7dc08022c61ca4180302ac58296ec5443 Mon Sep 17 00:00:00 2001 From: Robert Alessi Date: Thu, 30 Jun 2016 19:19:53 +0200 Subject: started implementing Buckwalter input scheme --- arabluatex.dtx | 27 +++++++++++++++++++-------- arabluatex.lua | 16 +++++++++++++++- arabluatex_voc.lua | 9 +++++++++ 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/arabluatex.dtx b/arabluatex.dtx index 8554fc3..d7a4adb 100644 --- a/arabluatex.dtx +++ b/arabluatex.dtx @@ -2262,17 +2262,29 @@ wa-ya.sIru ta.hta 'l-jild-i {\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}} {\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}} % \end{macrocode} +% \begin{macro}{\SetInputScheme} +% \changes{v1.4}{2016/06/30}{\cs{SetInputScheme} may be used to +% process other input schemes such as \enquote*{Buckwalter}} +% \package{arabluatex} is designed for processing Arab\TeX\ input +% notation. \cs{SetInputScheme} may be used in the preamble or at +% any point of the document should the user wish to use a different +% notation such as the \enquote*{Buckwalter scheme}. +% \begin{macrocode} +\def\al@input@scheme{arabtex} +\NewDocumentCommand{\SetInputScheme}{m}{\def\al@input@scheme{#1}} +% \end{macrocode} +% \end{macro} % \end{macro} % \begin{macro}{\SetArbEasy} % \changes{v1.2}{2016/05/09}{New \cs{SetArbEasy}/\cs{SetArbDflt} for % \enquote*{modern} or \enquote*{classic} Arabic styles.} % \begin{macro}{\SetArbDflt} % By default, \package{arabluatex} applies complex rules to generate -% euphonic \arb[trans]{ta^sdId}, \arb[trans]{'alif mamdUdaT} -% \linebreak and \arb[trans]{sukUn} depending on the modes which are -% selected, either |voc|, |fullvoc| or |trans|. Such refinements can -% be discarded with \cs{SetArbEasy}, either globally in the preamble -% or at any point of the document. Default complex rules can be set +% euphonic \arb[trans]{ta^sdId}, \arb[trans]{'alif mamdUdaT} and +% \arb[trans]{sukUn} depending on the modes which are selected, +% either |voc|, |fullvoc| or |trans|. Such refinements can be +% discarded with \cs{SetArbEasy}, either globally in the preamble or +% at any point of the document. Default complex rules can be set % back at any point of the document with \cs{SetArbDflt}. % \begin{macrocode} \def\al@arb@rules{dflt} @@ -2289,7 +2301,6 @@ wa-ya.sIru ta.hta 'l-jild-i \def\al@trans@font{\rmfamily}% \NewDocumentCommand{\SetTranslitFont}{m}{\def\al@trans@font{#1}} % \end{macrocode} -% % \end{macro} % \end{macro} % \begin{macro}{\SetTranslitStyle} By default any transliterated @@ -2369,7 +2380,7 @@ wa-ya.sIru ta.hta 'l-jild-i \ifx\@tempa\al@mode@voc% \bgroup\textdir TRT\arabicfont% \luadirect{tex.sprint(processvoc(\luastringN{#2}, - \luastringO{\al@arb@rules}))}\egroup% + \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@fullvoc% \bgroup\textdir TRT\arabicfont% @@ -2399,7 +2410,7 @@ wa-ya.sIru ta.hta 'l-jild-i \ifx\@tempa\al@mode@voc% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processvoc(\luastringO{\BODY}, - \luastringO{\al@arb@rules}))}\egroup% + \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@fullvoc% \bgroup\pardir TRT\textdir TRT\arabicfont% diff --git a/arabluatex.lua b/arabluatex.lua index 3e574cf..9134ce5 100644 --- a/arabluatex.lua +++ b/arabluatex.lua @@ -456,12 +456,26 @@ local function transloc(str) return str end -function processvoc(str, rules) +local function processbuckw(str) + str = string.gsub(str, "\\arb(%b{})", function(inside) + inside = string.sub(inside, 2, -2) + for i = 1,#buckwalter do + inside = string.gsub(inside, buckwalter[i].a, buckwalter[i].b) + end + return string.format("\\arb{%s}", inside) + end) +return str +end + +function processvoc(str, rules, scheme) str = "\\arb{".. str.."}" str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) + if scheme == "buckwalter" then + str = processbuckw(str) + else end if rules == "easy" then str = voceasy(str) elseif rules == "dflt" then diff --git a/arabluatex_voc.lua b/arabluatex_voc.lua index e47ef96..1a64109 100644 --- a/arabluatex_voc.lua +++ b/arabluatex_voc.lua @@ -71,6 +71,15 @@ raw = { {a="i", b="ِ"} } +buckwalter = { +-- {a="\'", b="|\"\'"}, + {a="%>", b="a\"\'"}, + {a="%&", b="w\"\'"}, + {a="%<", b="i\"\'"}, + {a="%}", b="y\"\'"}, + {a="p", b="T"} +} + hamza = { -- next line for ʾiʿrāb hyphen {a="(')(%-)([uaiUAI])", b="%1%3"}, -- cgit v1.2.3