diff options
author | Karl Berry <karl@freefriends.org> | 2016-12-25 22:22:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-12-25 22:22:57 +0000 |
commit | 3eee810d8e3e8ed9915a59948cb4502cbf9a34e0 (patch) | |
tree | 2b1fca73cfa7ba2093eb02881c4d67b6ad1d8182 | |
parent | 6959c55b1060f5c323f5c5429657597a398de7a1 (diff) |
arabluatex (25dec16)
git-svn-id: svn://tug.org/texlive/trunk@42791 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf | bin | 416920 -> 424809 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx | 171 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua | 25 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty | 3 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua | 128 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua | 91 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua | 108 |
8 files changed, 404 insertions, 128 deletions
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf Binary files differindex e7cd27e696e..1552f8b1213 100644 --- a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf +++ b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx index 68e76a011ff..22d17fa2314 100644 --- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx +++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx @@ -27,7 +27,7 @@ %<package-info>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package-info>\ProvidesPackage{arabluatex} %<*package-info> - [2016/12/17 v1.6 An ArabTeX-like interface for LuaLaTeX] + [2016/12/24 v1.7 An ArabTeX-like interface for LuaLaTeX] %</package-info> % %<*driver> @@ -145,7 +145,7 @@ \defaultfontfeatures{RawFeature={+liga}} \setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}, RawFeature={+mark;+ccmp;+ss05;+ss06}] -\usepackage{arabluatex}[2016/12/17] +\usepackage{arabluatex}[2016/12/24] \usepackage[nopar]{quran} \usepackage{varioref} \usepackage{hypdoc} @@ -203,7 +203,7 @@ %</driver> % \fi % -% \CheckSum{694} +% \CheckSum{697} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -257,7 +257,7 @@ % \pagebreak % \listoftables % \normalsize -% +% % \begin{abstract} % This package provides for \LuaLaTeX\ an Arab{\TeX}-like interface % to generate Arabic writing from an \textsc{ascii} @@ -1219,7 +1219,7 @@ vowels (see §~3). % in which \package{arabluatex} expresses the \arb[trans]{sukUn} and % the \arb[trans]{wa.slaT}. \package{arabluatex} will take care of % doing that automatically provided that the vowel which is to be -% absorbed by the final vowel of the preceding word is properly +% absorbed by the final vowel of the preceding word be properly % encoded, like so:--- % \begin{compactenum}[(a)] % \item Definite article at the beginning of a sentence is encoded\\ @@ -1320,6 +1320,7 @@ vowels (see §~3). % \end{quote} % % \subparagraph{\arb[trans]{'alif-u 'l-wa.sl-i} preceded by a diphthong} +% \label{sec:diphthong-alif} % The diphthong is resolved into two simple vowels \parencite[i. 21 % D--22 A]{Wright} viz. \emph{ay}~→ \emph{\u{a}\u{i}} and \emph{aw}~→ % \emph{\u{a}\u{u}}. \package{arabluatex} detects the cases in which @@ -1459,8 +1460,8 @@ vowels (see §~3). % % \subsection{Quoting} % \label{sec:quoting} -% It is here referred to \enquote{quoting} after the package -% \package{arabtex}.\footnote{See \textcite[22]{pkg:arabtex}} The +% It is here referred to \enquote{quoting} after the \package{arabtex} +% package.\footnote{See \textcite[22]{pkg:arabtex}} The % \enquote{quoting} mechanism of \package{arabluatex} is designed to % be very similar in effect to the one of \package{arabtex}. % @@ -1656,6 +1657,75 @@ vowels (see §~3). % \meta{n} prevents the necessary \arb[trans]{ta^sdId} rule % (\cpageref{ref:necessary-tashdid}) from being applied. % +% \subsection{Putting back on broken contextual analysis rules} +% \label{sec:arbnull} +% \NEWfeature{v1.7} In complex documents such as critical editions +% where footnotes and other kind of annotations can be particularly +% abundant, the contextual analysis rules that are described above may +% be broken by \LaTeX\ commands. To take an example, consider the +% following:---% +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + This is wrong: + \begin{arab}[fullvoc] + fa-lammA ra'aW\LRfootnote{A footnote that interferes with the + contextual analysis.} 'l-na^gma... + \end{arab} +\end{arabluacode} +% \iffalse +%</example> +% \fi% +% According to the rule stated \vpageref{sec:diphthong-alif}, the +% diphthong in \arb[trans]{ra'aW} must be resolved into two simple +% vowels before the \arb[trans]{'alif-u 'l-wa.sl-i}, as +% \arb[fullvoc]{ra'aW 'l-na^gma}. +% +% \DescribeMacro{\arbnull} The \cs{arbnull} command is provided so as +% to put back on contextual analysis rules in such situations. It +% takes as argument the word that must be brought back for any given +% rule to be applied as it ought to. Depending on the contexts that +% have to be restored, \cs{arbnull} may be found just after or before +% Arabic words.% +% \iffalse +%<*example> +% \fi +\begin{arabluacode}[text only] +In any case, \emph{no space must be left} after or before the Arabic +word that \cs{arbnull} is applied to. +\end{arabluacode} +% \iffalse +%</example> +% \fi% +% The following shows how the Arabic should have been written in the +% preceding example and gives further illustrations of the same +% technique:---% +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \begin{arab}[fullvoc] + fa-lammA ra'aW\arbnull{'l-na^gma}\LRfootnote{A footnote that + interferes with the contextual analysis.} 'l-na^gma... + + qAla\LRfootnote{A footnote that interferes with the contextual + analysis.} \arbnull{qAla}uhrub fa-lan tuqtala. + + \cap{z}ayduN\arbnull{ibnu}\LRfootnote{A footnote that interferes + with the contextual analysis.} \arbnull{zayduN}ibn-u + \cap{`a}mriNU.\LRfootnote{See \vref{fn:zayd-is-son}.} + \end{arab} + \begin{arab}[trans] + \cap{z}ayduN\arbnull{ibnu}\LRfootnote{A footnote that interferes + with the contextual analysis.} \arbnull{zayduN}ibn-u + \cap{`a}mriNU.\LRfootnote{See \vref{fn:zayd-is-son}.} + \end{arab} +\end{arabluacode} +% \iffalse +%</example> +% \fi% +% % \subsection{\texorpdfstring{Stretching characters: the % \arb[trans]{ta.twIl}}{Stretching characters: the taṭwīl}} % \label{sec:tatwil} @@ -1868,7 +1938,7 @@ vowels (see §~3). % is designed to deal with the various situations that may arise:--- % \begin{compactenum}[(a)] % \item If the two hemistichs be connected with one another by a -% prominent horizontal flexible stroke, the \arb[trans]{tatwIl} should +% prominent horizontal flexible stroke, the \arb[trans]{ta.twIl} should % be used, like so: |[--]| (see \vref{sec:tatwil}). Of course, the % ending word of the \arb[trans]{.sadr} and the word at the % commencement of the \arb[trans]{`a^guz} must have the @@ -1880,7 +1950,7 @@ vowels (see §~3). \begin{arabluacode} \begin{arabverse}[mode=fullvoc, width=.3\linewidth] \bayt{lA 'ar_A man `ahidtu fI-hA fa-'abkI 'l---}[--]{---yawma - dalhaN wa-mA yu.hIru 'l-bukA'u}\\ + dalhaN wa-mA yaruddu 'l-bukA'u}\\ \end{arabverse} \end{arabluacode} % \iffalse @@ -1902,7 +1972,7 @@ vowels (see §~3). \begin{arabluacode} \begin{arabverse}[mode=trans, width=.4\linewidth] \bayt{lA 'ar_A man `ahidtu fI-hA fa-'abkI 'l---}[--]{---yawma - dalhaN wa-mA yu.hIru 'l-bukA'u}\\ + dalhaN wa-mA yaruddu 'l-bukA'u}\\ \end{arabverse} \end{arabluacode} % \iffalse @@ -1942,11 +2012,12 @@ vowels (see §~3). % \paragraph{Scaling and distortion of characters} % The |arabverse| environment and the \cs{bayt} command are designed % to typeset the verses in a two-column, fixed width layout. This may -% result in somewhat distorted text. Should that happen, one may adapt -% the layout by modifying the values of the above described |width| -% and |gutter| named arguments until the visual aspect of the layout -% be satisfactory. It has to be noted that distortion and warping may -% be even more perceptible in Roman than in Arabic characters. +% result in a somewhat distorted text. Should that happen, one may +% adapt the layout by modifying the values of the above described +% |width| and |gutter| named arguments until the visual aspect of the +% layout be satisfactory. It has to be noted that distortion and +% warping may be even more perceptible in Roman than in Arabic +% characters. % % \paragraph{Footnotes} % Footnotes are not set by default inside the \cs{bayt} command, but @@ -1954,8 +2025,8 @@ vowels (see §~3). % % If they are little in number, each footnote may be split into pairs % of \cs{footnote\allowbreak{}mark}|{}| (please mind the braces) in -% either argument of the \cs{bayt} command and \cs{footnotetext} -% outside the \cs{bayt} command. +% the argument of the \cs{bayt} command and \cs{footnotetext} outside +% the \cs{bayt} command. % % If the footnotes are abundant in number, it is advised to load the % \package{footnote} package which \package{arabluatex} will then use @@ -1976,8 +2047,10 @@ vowels (see §~3). % 'l-\cap{q}aysi}'s \arb[trans]{\cap{m}u`allaqaT}. In this example, % \cs{SetArbDflt*} has been selected so as to mark the % \arb[trans]{'id.gAm} that is fit to this declamatory -% poetry:---\footnote{See \vref{sec:classic-modern-typesetting} for -% more information.}% +% poetry:---\footnote{Please note that for the time being only the +% assimilation rules that are laid on \vref{ref:assimilation} are +% applied. See \vref{sec:classic-modern-typesetting} for more +% information.}% % \iffalse %<*example> % \fi @@ -1990,17 +2063,17 @@ vowels (see §~3). 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}] \SetArbDflt* \begin{linenumbers*} - \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti - 'l-liw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\ - \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu + \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti + 'l-liw_A bayna \cap{'l-d}a_hUli fa-\cap{.h}awmali}\\ + \bayt{fa-\cap{t}U.di.ha fa-'l-\cap{m}iqrATi lam ya`fu rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA ka-'anna-hu .habbu fulfuli}\\ - \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday + \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A samurAti 'l-.hayyi nAqifu .han.zali}\\ \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA tahlik 'asaN_A wa-ta^gammali}\\ - \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN + \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN dAsiriN min mu`awwali}\\ \end{linenumbers*} \end{arabverse} @@ -2016,18 +2089,18 @@ vowels (see §~3). % 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.25\linewidth] % \SetArbDflt* % \begin{linenumbers*} -% \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti -% 'l-liw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\ -% \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu +% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti +% 'l-liw_A bayna \cap{'l-d}a_hUli fa-\cap{.h}awmali}\\ +% \bayt{fa-\cap{t}U.di.ha fa-'l-\cap{m}iqrATi lam ya`fu % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA % ka-'anna-hu .habbu fulfuli}\\ -% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday +% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A % samurAti % 'l-.hayyi nAqifu .han.zali}\\ % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA % tahlik 'asaN_A wa-ta^gammali}\\ -% \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN +% \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN % dAsiriN min mu`awwali}\\ % \end{linenumbers*} % \end{arabverse} @@ -2040,18 +2113,18 @@ vowels (see §~3). % 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.4\linewidth] % \SetArbDflt* % \begin{linenumbers*} -% \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti -% 'l-liw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\ -% \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu +% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti +% 'l-liw_A bayna \cap{'l-d}a_hUli fa-\cap{.h}awmali}\\ +% \bayt{fa-\cap{t}U.di.ha fa-'l-\cap{m}iqrATi lam ya`fu % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA % ka-'anna-hu .habbu fulfuli}\\ -% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday +% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A % samurAti % 'l-.hayyi nAqifu .han.zali}\\ % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA % tahlik 'asaN_A wa-ta^gammali}\\ -% \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN +% \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN % dAsiriN min mu`awwali}\\ % \end{linenumbers*} % \end{arabverse} @@ -2513,7 +2586,7 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu % is primarily designed to process the Arab\TeX\ notation, it also % accepts unicode Arabic input. It should be noted that % \package{arabluatex} does in no way interfere with unicode Arabic -% input: none of the options |voc|, |fullvoc|, |novoc| or |trans| will +% input: none of the |voc|, |fullvoc|, |novoc| or |trans| options will % have any effect on plain unicode Arabic for the time being. % % That said, there are two ways of inserting unicode @@ -2636,11 +2709,10 @@ part of the predicate\ldots} "ibn-u \cap{`a}mr-iNU} % \DescribeMacro{\FixArbFtnmk} Another solution is to put in the % preamble, below the line that loads \package{arabluatex}, the % \cs{FixArbFtnmk} command. However, for more control over the layout -% of footnotes marks, it is advisable to use the package -% \package{scrextend}.\footnote{See -% \url{http://ctan.org/pkg/koma-script}; read the documentation of -% \package{KOMA-script} for details about the \cs{deffootnotemark} and -% \cs{deffootnote} commands.} +% of footnotes marks, it is advisable to use the \package{scrextend} +% package.\footnote{See \url{http://ctan.org/pkg/koma-script}; read +% the documentation of \package{KOMA-script} for details about the +% \cs{deffootnotemark} and \cs{deffootnote} commands.} % % \DescribeMacro{\LRmarginpar} The \cs{LRmarginpar} command does for % marginal notes the same as \cs{LRfootnote} does for footnotes. Of @@ -2778,8 +2850,8 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a... % viz. |acadian|, |canadien|, |francais|, |frenchb| or |french| all % redefine the list environments, which breaks the standard definition % file that is used by \package{arabluatex}. Therefore, -% \package{babel-french} must be loaded with the option -% |StandardLayout=true|, like so:--- +% \package{babel-french} must be loaded with the |StandardLayout=true| +% option, like so:---% % \iffalse %<*example> % \fi @@ -2872,7 +2944,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \vref{sec:unicode-input} for more details). Please note that % \package{arabluatex} takes care of formatting the Arabic: therefore, % it is recommended to load the \package{quran} package with the -% option |nopar|, after \package{arabluatex} itself has been loaded, +% |nopar| option, after \package{arabluatex} itself has been loaded, % like so:--- % % \iffalse %<*example> @@ -2937,7 +3009,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2016/12/17 v1.6 An ArabTeX-like interface for LuaLaTeX] +[2016/12/24 v1.7 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} % \end{macrocode} % \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning @@ -3322,7 +3394,6 @@ wa-ya.sIru ta.hta 'l-jild-i \ifdefined\spewnotes\spewnotes\else\fi% } % \end{macrocode} -% % \end{macro} % \end{environment} % \begin{macro}{\abjad} \cs{abjad}\marg{number} expresses its argument @@ -3343,6 +3414,16 @@ wa-ya.sIru ta.hta 'l-jild-i \fi} % \end{macrocode} % \end{macro} +% \begin{macro}{\arbnull} +% \changes{v1.7}{2016/12/24}{New \cs{arbnull} command for putting +% back on any contextual analysis rule broken by other commands.} +% The \cs{arbnull} command does nothing by itself. It is processed +% only if it is found in Arabic context so as to put back on +% contextual analysis in case it has been broken by other commands. +% \begin{macrocode} +\NewDocumentCommand{\arbnull}{m}{\relax} +% \end{macrocode} +% \end{macro} % \begin{macro}{\abraces} % \cs{abraces}\marg{Arabic text} puts its argument between % braces. This macro is written in Lua and is dependent on the diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua index 07968c07180..3b552b6749e 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua @@ -128,6 +128,26 @@ local function indnum(str) return str end +local function processdiscretionary(str) + str = string.gsub(str, "\\%-", "\\-{}") + return str +end + +local function processarbnull(str, scheme) + if scheme == "buckwalter" then + str = string.gsub(str, "(\\arbnull.?)(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("P%sP", body) + end) + else + str = string.gsub(str, "(\\arbnull.?)(%b{})", function(tag, body) + body = string.sub(body, 2, -2) + return string.format("o%so", body) + end) + end + return str +end + local function takeoutabjad(str) str = string.gsub(str, "(\\abjad.?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) @@ -487,6 +507,7 @@ end function processvoc(str, rules, scheme) str = "\\arb{".. str.."}" + str = processarbnull(str, scheme) str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) @@ -505,6 +526,7 @@ end function processfullvoc(str, rules, scheme) str = "\\arb{".. str.."}" + str = processarbnull(str, scheme) str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) @@ -525,6 +547,7 @@ end function processnovoc(str, rules, scheme) str = "\\arb{".. str.."}" + str = processarbnull(str, scheme) str = takeoutcapetc(str) str = protectarb(str) str = breakcmd(str) @@ -543,6 +566,8 @@ end function processtrans(str, mode, rules, scheme) str = "\\arb{".. str.."}" + str = processdiscretionary(str) + str = processarbnull(str, scheme) str = takeoutabjad(str) str = protectarb(str) str = breakcmd(str) diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty index 61dffc53d38..cc194e834cf 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}% -[2016/12/17 v1.6 An ArabTeX-like interface for LuaLaTeX] +[2016/12/24 v1.7 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} \ifluatex\else \PackageError{arabluatex}{lualatex needed}{% @@ -230,6 +230,7 @@ \NewDocumentCommand{\abjad}{m}% {\luadirect{tex.sprint(abjadify(#1))}} \fi} +\NewDocumentCommand{\arbnull}{m}{\relax} \NewDocumentCommand{\abraces}{+m}{% \luadirect{tex.sprint(abraces(\luastringN{#1}))}} \DeclareDocumentCommand{\LRmarginpar}{m}{\marginpar{\textdir TLT #1}} diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua index efe26c0ba93..31956a65db5 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua @@ -66,7 +66,11 @@ hamzafv = { {a="(A)(')(u)", b="aآؤ%3"}, -- historic madda {a="(A)(')", b="aآء"}, -- historic madda -- initial (needs both ^ and %W patterns) - -- 'aw: the diphthong is to be resoved into 'awi' (next 4 lines) + -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^('aw)(o)([%(%[%|%<]?\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)([%(%[%|%<]?\"?[uai])([%S]-o)", b="%1%2i"}, {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, @@ -172,7 +176,11 @@ hamzafveasy = { -- differences marked below with 'easy' {a="(A)(')", b="aاء"}, -- historic madda --easy (end) -- initial (needs both ^ and %W patterns) - -- 'aw: the diphthong is to be resoved into 'awi' (next 4 lines) + -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^('aw)(o)([%(%[%|%<]?\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)([%(%[%|%<]?\"?[uai])([%S]-o)", b="%1%2i"}, {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, @@ -233,6 +241,11 @@ hamzafveasy = { -- differences marked below with 'easy' } tanwinfv = { -- with assimilations (\SetArbDflt*) + -- assimilations (begin) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([rlmnwy])", b="%4%4"}, + {a="(%-?[uai]NU)(%s)([rlmnwy])", b="%1%2%3%3"}, + -- assimilations (end) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([uai])", b="ٱ"}, {a="%-?(uNU)(%s)([uai])", b="%1%2ٱ"}, {a="%-?(aNU)(%s)([uai])", b="%1%2ٱ"}, {a="%-?(iNU)(%s)([uai])", b="%1%2ٱ"}, @@ -243,6 +256,8 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {a="%-?(aN[%_]?[AY])(%s)([uai])", b="%1%2ٱ"}, -- assimilations (begin) {a="%-?(uN)(%s)([rlmnwy])", b="ٌ%2%3%3"}, + {a="(o[%S]-)(%-?aN)(_A)(o)([rlmnwy])", b="%5%5"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([rlmnwy])", b="%5%5"}, {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, @@ -250,6 +265,8 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) + {a="(o[%S]-)(%-?aN)(_A)(o)([uai])", b="ٱ"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([uai])", b="ٱ"}, -- quoted tanwīn (begin) {a="%-?(\"uN)", b=""}, {a="(B)%-?(\"aN)", b="%1"}, @@ -271,6 +288,11 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) } tanwinfveasy = { -- no assimilations (see below) + -- assimilations (begin) +--easy {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([rlmnwy])", b="%4%4"}, +--easy {a="(%-?[uai]NU)(%s)([rlmnwy])", b="%1%2%3%3"}, + -- assimilations (end) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([uai])", b="ٱ"}, {a="%-?(uNU)(%s)([uai])", b="%1%2ٱ"}, {a="%-?(aNU)(%s)([uai])", b="%1%2ٱ"}, {a="%-?(iNU)(%s)([uai])", b="%1%2ٱ"}, @@ -281,6 +303,8 @@ tanwinfveasy = { -- no assimilations (see below) {a="%-?(aN[%_]?[AY])(%s)([uai])", b="%1%2ٱ"}, -- assimilations (begin) --easy {a="%-?(uN)(%s)([rlmnwy])", b="ٌ%2%3%3"}, +--easy {a="(o[%S]-)(%-?aN)(_A)(o)([rlmnwy])", b="%5%5"}, +--easy {a="(o[%S]-)(%-?aN)(Y)(o)([rlmnwy])", b="%5%5"}, --easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, --easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, --easy {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, @@ -288,6 +312,8 @@ tanwinfveasy = { -- no assimilations (see below) --easy {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, --easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) + {a="(o[%S]-)(%-?aN)(_A)(o)([uai])", b="ٱ"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([uai])", b="ٱ"}, -- quoted tanwīn (begin) {a="%-?(\"uN)", b=""}, {a="(B)%-?(\"aN)", b="%1"}, @@ -312,29 +338,36 @@ trigraphsfv = { -- trigraphs or more -- 'llatI / 'llad_I {a="^'ll(a)([%_]?[dt])", b="ٱلّ%1%2"}, {a="([%(%[%|%<%s%-])'ll(a)([%_]?[dt])", b="%1ٱلّ%2%3"}, --p - -- law: the diphthong is to be resoved into 'awi' (next 4 lines) + -- law: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^(law)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, -- al- + lām {a="^(a)l%-(l)", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p -- al- + solar consonant {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p -- assim. art. + solar consonant {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل%2"}, - {a="([%(%[%|%<%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p + {a="([%(%[%|%<%s%-o])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p -- al- + initial unstable hamza {a="^(a)l%-(\"?[uai])", b="ا%1ل%2ٱ"}, - {a="([%(%[%|%<%s%-])(a)l%-(\"?[uai])", b="%1ا%2ل%3ٱ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(\"?[uai])", b="%1ا%2ل%3ٱ"}, --p -- li-/la + art. + initial unstable hamza is a special orthography {a="l([ai])%-l%-(\"?[uai])", b="ل%1ل%2ٱ"}, -- al- + lunar consonant (i.e. what remains) {a="^(a)l%-", b="ا%1لْ"}, - {a="([%(%[%|%<%s%-])(a)l%-", b="%1ا%2لْ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-", b="%1ا%2لْ"}, --p -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aW)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="awuا"}, + {a="(aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1u"}, + {a="(ay)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awuا%2%3"}, {a="(aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1u%2%3"}, {a="(ay)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, @@ -374,29 +407,36 @@ trigraphsfveasy = { -- trigraphs or more (see 'easy' tag below for the diffs) -- 'llatI / 'llad_I {a="^'ll(a)([%_]?[dt])", b="ٱلّ%1%2"}, {a="([%(%[%|%<%s%-])'ll(a)([%_]?[dt])", b="%1ٱلّ%2%3"}, --p - -- law: the diphthong is to be resoved into 'awi' (next 4 lines) + -- law: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^(law)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, -- al- + lām {a="^(a)l%-(l)", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p -- al- + solar consonant {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p -- assim. art. + solar consonant {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل%2"}, - {a="([%(%[%|%<%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p + {a="([%(%[%|%<%s%-o])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p -- al- + initial unstable hamza {a="^(a)l%-(\"?[uai])", b="ا%1ل%2ٱ"}, - {a="([%(%[%|%<%s%-])(a)l%-(\"?[uai])", b="%1ا%2ل%3ٱ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(\"?[uai])", b="%1ا%2ل%3ٱ"}, --p -- li-/la + art. + initial unstable hamza is a special orthography {a="l([ai])%-l%-(\"?[uai])", b="ل%1ل%2ٱ"}, -- al- + lunar consonant (i.e. what remains) {a="^(a)l%-", b="ا%1لْ"}, - {a="([%(%[%|%<%s%-])(a)l%-", b="%1ا%2لْ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-", b="%1ا%2لْ"}, --p -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aW)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="awuا"}, + {a="(aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1u"}, + {a="(ay)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awuا%2%3"}, {a="(aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1u%2%3"}, {a="(ay)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, @@ -446,14 +486,20 @@ digraphsfvidgham = { {a="^\"[uai]", b="ٱ"}, {a="([%(%[%|%<%s%-])\"[uai]", b="%1ٱ"}, --p -- diphthongs to be resolved before ʾalif conjunctionis - {a="(aW)(%s)(\"?[uai])", b="awuا%2ٱ"}, - {a="(aw)(%s)(\"?[uai])", b="%1u%2ٱ"}, - {a="(ay)(%s)(\"?[uai])", b="%1i%2ٱ"}, - {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, -- hyphen + initial alif without hamza - -- initial alif without hamza + {a="(aW)(o)(\"?[uai])([%S]-o)", b="awuا"}, + {a="(aW)(%s)([%(%[%|%<]?)(\"?[uai])", b="awuا%2%3ٱ"}, --p + {a="(aw)(o)(\"?[uai])([%S]-o)", b="%1u"}, + {a="(aw)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1u%2%3ٱ"}, --p + {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p + -- hyphen + initial alif without hamza + -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + -- initial alif without hamza (next 4 lines) + {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p - {a="^([%(%[%|%<]?)([uai])", b="%1ا%2"}, -- initial alif without hamza --p - {a="(%s)([%(%[%|%<]?)([uai])", b="%1%2ا%3"}, -- initial alif without hamza --p + {a="^([%(%[%|%<]?)(\"?[uai])", b="%1ا%2"}, --p + {a="(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2ا%3"}, --p {a="%-%-", b="ـ"}, {a="ؤؤ", b="ؤّ"}, {a="أأ", b="أّ"}, @@ -548,14 +594,20 @@ digraphsfv = { {a="^\"[uai]", b="ٱ"}, {a="([%(%[%|%<%s%-])\"[uai]", b="%1ٱ"}, --p -- diphthongs to be resolved before ʾalif conjunctionis - {a="(aW)(%s)(\"?[uai])", b="awuا%2ٱ"}, - {a="(aw)(%s)(\"?[uai])", b="%1u%2ٱ"}, - {a="(ay)(%s)(\"?[uai])", b="%1i%2ٱ"}, - {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, -- hyphen + initial alif without hamza - -- initial alif without hamza + {a="(aW)(o)(\"?[uai])([%S]-o)", b="awuا"}, + {a="(aW)(%s)([%(%[%|%<]?)(\"?[uai])", b="awuا%2%3ٱ"}, --p + {a="(aw)(o)(\"?[uai])([%S]-o)", b="%1u"}, + {a="(aw)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1u%2%3ٱ"}, --p + {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p + -- hyphen + initial alif without hamza + -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + -- initial alif without hamza (next 4 lines) + {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p - {a="^([%(%[%|%<]?)([uai])", b="%1ا%2"}, -- initial alif without hamza --p - {a="(%s)([%(%[%|%<]?)([uai])", b="%1%2ا%3"}, -- initial alif without hamza --p + {a="^([%(%[%|%<]?)(\"?[uai])", b="%1ا%2"}, --p + {a="(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2ا%3"}, --p {a="%-%-", b="ـ"}, {a="ؤؤ", b="ؤّ"}, {a="أأ", b="أّ"}, @@ -650,14 +702,20 @@ digraphsfveasy = { -- see the differences under 'easy' marker below {a="^\"[uai]", b="ٱ"}, {a="([%(%[%|%<%s%-])\"[uai]", b="%1ٱ"}, --p -- diphthongs to be resolved before ʾalif conjunctionis - {a="(aW)(%s)(\"?[uai])", b="awuا%2ٱ"}, - {a="(aw)(%s)(\"?[uai])", b="%1u%2ٱ"}, - {a="(ay)(%s)(\"?[uai])", b="%1i%2ٱ"}, - {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, -- hyphen + initial alif without hamza - -- initial alif without hamza + {a="(aW)(o)(\"?[uai])([%S]-o)", b="awuا"}, + {a="(aW)(%s)([%(%[%|%<]?)(\"?[uai])", b="awuا%2%3ٱ"}, --p + {a="(aw)(o)(\"?[uai])([%S]-o)", b="%1u"}, + {a="(aw)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1u%2%3ٱ"}, --p + {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p + -- hyphen + initial alif without hamza + -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + -- initial alif without hamza (next 4 lines) + {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p - {a="^([%(%[%|%<]?)([uai])", b="%1ا%2"}, -- initial alif without hamza --p - {a="(%s)([%(%[%|%<]?)([uai])", b="%1%2ا%3"}, -- initial alif without hamza --p + {a="^([%(%[%|%<]?)(\"?[uai])", b="%1ا%2"}, --p + {a="(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2ا%3"}, --p {a="%-%-", b="ـ"}, {a="ؤؤ", b="ؤّ"}, {a="أأ", b="أّ"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua index f2b6a6ac6bf..a79be821028 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua @@ -23,11 +23,17 @@ along with this program. If not, see --]] tanwinnv = { + -- assimilations (begin). These are good but may not apply here. +-- {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([rlmnwy])", b="%4%4"}, +-- {a="(%-?[uai]NU)(%s)([rlmnwy])", b="%1%2%3%3"}, + -- assimilations (end) {a="%-?uNU", b="و"}, {a="%-?aNU", b="وا"}, {a="%-?iNU", b="و"}, -- assimilations (begin). These are good but may not apply here. -- {a="%-?(uN)(%s)([rlmnwy])", b="|%2%3%3"}, +-- {a="(o[%S]-)(%-?aN)(_A)(o)([rlmnwy])", b="%5%5"}, +-- {a="(o[%S]-)(%-?aN)(Y)(o)([rlmnwy])", b="%5%5"}, -- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ى%3%4%4"}, -- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ى%3%4%4"}, -- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1%3%4%4"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua index ef55a2b131c..c420f6f62ee 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua @@ -30,7 +30,8 @@ punctuationtr = { } nulltr = { - {a="%|", b=""} + {a="%|", b=""}, + {a="o[%S]-o", b=""} } -- cap @@ -95,11 +96,15 @@ hamzatrdmg = { {a="(A)(')(i)", b="%1ʾ%3"}, -- historic madda {a="(A)(')", b="%1ʾ"}, -- historic madda -- initial (needs both ^ and %W patterns) - -- 'aw: the diphthong is to be resoved into 'awi' (next 4 lines) + -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^('aw)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, - {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, - {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, + {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p + {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p -- then the 'initial' rules for the remaining cases {a="^(')([ua])", b="ʾ%2"}, {a="^(')(i)", b="ʾ%2"}, @@ -133,12 +138,20 @@ hamzatrdmg = { } tanwintrdmg = { + {a="%-?([uai]NU)(o)([ui])([%S]-o)", b="\\arbup{un%3}"}, {a="%-?([uai]NU)(%s)([ui])", b="\\arbup{un%3}%2'"}, + {a="(o[%S]-)([uai]N[UI])(o)(\"?[ui])", b="'"}, {a="%-?uNU", b="\\arbup{un}"}, {a="%-?aNU", b="\\arbup{an}"}, {a="%-?iNU", b="\\arbup{in}"}, {a="%-?iNI", b="i\\arbup{n}"}, -- tanwīn preceding ʾalif conjunctionis + {a="%-?(uN)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="\\arbup{uni}"}, + {a="%-?(aN)(_A)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="ạ\\arbup{ni}"}, + {a="%-?(aN)(Y)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="ạ\\arbup{ni}"}, + {a="(T)%-?(aN)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="t\\arbup{ani}"}, + {a="([^TA])%-?(aN)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1\\arbup{ani}"}, + {a="%-?(iN)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="\\arbup{ini}"}, {a="%-?(uN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{uni}%2%3"}, {a="%-?(aN)(_A)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, {a="%-?(aN)(Y)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, @@ -146,6 +159,12 @@ tanwintrdmg = { {a="([^TA])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1\\arbup{ani}%3%4"}, {a="%-?(iN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{ini}%2%3"}, -- tanwīn preceding 'lla_dI/'llatI + {a="%-?(uN)(o)('lla[%_]?[dt])([%S]-o)", b="\\arbup{uni}"}, + {a="%-?(aN)(_A)(o)('lla[%_]?[dt])([%S]-o)", b="ạ\\arbup{ni}"}, + {a="%-?(aN)(Y)(o)('lla[%_]?[dt])([%S]-o)", b="ạ\\arbup{ni}"}, + {a="(T)%-?(aN)(o)('lla[%_]?[dt])([%S]-o)", b="t\\arbup{ani}"}, + {a="([^TA])%-?(aN)(o)('lla[%_]?[dt])([%S]-o)", b="%1\\arbup{ani}"}, + {a="%-?(iN)(o)('lla[%_]?[dt])([%S]-o)", b="\\arbup{ini}"}, {a="%-?(uN)(%s)('lla[%_]?[dt])", b="\\arbup{uni}%2%3"}, {a="%-?(aN)(_A)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, {a="%-?(aN)(Y)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, @@ -153,12 +172,19 @@ tanwintrdmg = { {a="([^TA])%-?(aN)(%s)('lla[%_]?[dt])", b="%1\\arbup{ani}%3%4"}, {a="%-?(iN)(%s)('lla[%_]?[dt])", b="\\arbup{ini}%2%3"}, -- tanwīn + alif without hamza and kasra (ibn) or dhamma (uhrub) + {a="%-?(uN)(o)([ui])([%S]-o)", b="\\arbup{un%3}"}, + {a="%-?(aN)(_A)(o)([ui])([%S]-o)", b="ạ\\arbup{n%4}"}, + {a="%-?(aN)(Y)(o)([ui])([%S]-o)", b="ạ\\arbup{n%4}"}, + {a="(T)%-?(aN)(o)([ui])([%S]-o)", b="t\\arbup{an%4}"}, + {a="([^TA])%-?(aN)(o)([ui])([%S]-o)", b="%1\\arbup{an%4}"}, + {a="%-?(iN)(o)([ui])([%S]-o)", b="\\arbup{in%3}"}, + {a="(o[%S]-)([uai]N)(o)(\"?[ui])", b="'"}, {a="%-?(uN)(%s)([ui])", b="\\arbup{un%3}%2'"}, - {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3%'"}, - {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3%'"}, - {a="(T)%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3%'"}, - {a="([^TA])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3%'"}, - {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2%'"}, + {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, + {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, + {a="(T)%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3'"}, + {a="([^TA])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3'"}, + {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2'"}, -- -- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table) {a="%-?(\"?At)%-?([ui])N", b="\\arbup{%1%2n}"}, @@ -173,29 +199,35 @@ trigraphstrdmg = { -- trigraphs or more -- 'llatI / 'llad_I {a="^'ll(a)([%_]?[dt])", b="'ll%1%2"}, {a="([%(%[%|%<%s])'ll(a)([%_]?[dt])", b="%1'll%2%3"}, --p - -- law: the diphthong is to be resoved into 'awi' (next 4 lines) + -- law: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^(law)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, - {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, - {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, + {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p + {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p -- al- + lām {a="^(a)l%-(l)", b="%1l-%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(l)", b="%1%2l-%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(l)", b="%1%2l-%3"}, --p -- al- + solar consonant {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2-%2"}, - {a="([%(%[%|%<%s%-])(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2%3-%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([%_%^%.]?[tdrzsn])", b="%1%2%3-%3"}, --p -- assim. art. + solar consonant {a="^(a)([%_%^%.]?[tdrzsn])%-", b="%1%2-"}, - {a="([%(%[%|%<%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1%2%3-"}, --p + {a="([%(%[%|%<%s%-o])(a)([%_%^%.]?[tdrzsn])%-", b="%1%2%3-"}, --p -- al- + initial unstable hamza {a="^(a)l%-(\"?[uai])", b="%1l-%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(\"?[uai])", b="%1%2l-%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(\"?[uai])", b="%1%2l-%3"}, --p -- li-/la- + art. + initial unstable hamza is a special orthography {a="l([ai])%-l%-([uai])", b="l%1-l-%2"}, -- al- + lunar consonant (i.e. what remains) {a="^(a)l%-", b="%1l-"}, - {a="([%(%[%|%<%s%-])(a)l%-", b="%1%2l-"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-", b="%1%2l-"}, --p -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1u"}, + {a="(ay)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, {a="(aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1u%2%3"}, {a="(ay)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, -- art. with waṣla + lām @@ -229,8 +261,9 @@ trigraphstrdmg = { -- trigraphs or more idghamtrdmg = { -- assimilations - {a="(n)(}?)(%s)([rlmnwy])", b="%4%2%3%4"} -} + {a="(n)(}?)(%s)([rlmnwy])", b="%4%2%3%4"}, + {a="(n)(}?)(o)([rlmnwy])([%S]-o)", b="%4%2"} +} digraphstrdmg = { {a="([uai]%-)(\"?[uai])", b="%1'"}, -- hyphen + initial alif without hamza @@ -243,6 +276,19 @@ digraphstrdmg = { {a="(%W)(\"?[uai])", b="%1%2"}, -- initial alif without hamza -- this is not necessary, take out for now: -- {a="([%_]?[uaiUAIY])(%s)([uai])", b="%1%2'"}, -- initial alif without hamza + {a="(aw)(o)(\"?[uai])([%S]-o)", b="%1u"}, + {a="(aw)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1u%2%3'"}, --p + {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3'"}, --p + {a="(aW)(o)(\"?[uai])([%S]-o)", b="awu"}, + {a="(UA)(o)(\"?[uai])([%S]-o)", b="u"}, + {a="(%_A)(o)(\"?[uai])([%S]-o)", b="ạ"}, + {a="(Y)(o)(\"?[uai])([%S]-o)", b="ạ"}, + {a="(%_a)(o)(\"?[uai])([%S]-o)", b="a"}, + {a="(A)(o)(\"?[uai])([%S]-o)", b="a"}, + {a="([%_]?[Uu])(o)(\"?[uai])([%S]-o)", b="u"}, + {a="([%_]?[Ii])(o)(\"?[uai])([%S]-o)", b="i"}, + {a="(o[%S]-)([UAIYWuaiyw])(o)(\"?[uai])", b="'"}, {a="(aW)(%s)([%(%[%|%<]?)(\"?[uai])", b="awu%2%3%4"}, --p {a="(UA)(%s)([%(%[%|%<]?)(\"?[uai])", b="u%2%3'"}, --p {a="([^%_][uai])(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2%3'"}, --p @@ -266,6 +312,13 @@ digraphstrdmg = { -- ʾiʿrāb hyphen (end) -- shorten long vowels preceding ʾalif conjunctionis {a="(U)(A)", b="U"}, + {a="(aW)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="awu"}, + {a="(%_a)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="a"}, + {a="(%_A)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="ạ"}, + {a="(A)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="a"}, + {a="(Y)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="ạ"}, + {a="([%_]?[Uu])(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="u"}, + {a="([%_]?[Ii])(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="i"}, --p (next 7 lines, just after %s) {a="(aW)(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awu%2%3"}, {a="(%_a)(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="a%2%3"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua index 02c3febe93c..6be30d12f99 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua @@ -161,6 +161,7 @@ buckwalter = { {a="F", b="aN"}, {a="K", b="iN"}, {a="o", b="\""}, + {a="P", b="o"}, -- pass on to \arbnull -- hard-coded connective alif {a="%[", b="ٱ"}, {a="L", b="ٱ"} -- BW safe @@ -201,11 +202,15 @@ hamza = { {a="(A)(')(u)", b="aآؤ%3"}, -- historic madda {a="(A)(')", b="aآء"}, -- historic madda -- initial (needs both ^ and %W patterns) - -- 'aw: the diphthong is to be resoved into 'awi' (next 4 lines) + -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^('aw)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^('aw)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, - {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, - {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, + {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p + {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p -- then the 'initial' rules for the remaining cases {a="^(')([ua])", b="أ%2"}, {a="^(')(i)", b="إ%2"}, @@ -298,7 +303,11 @@ hamzaeasy = { -- differences marked below with 'easy' {a="(A)(')", b="aاء"}, -- historic madda --easy (end) -- initial (needs both ^ and %W patterns) - -- 'aw: the diphthong is to be resoved into 'awi' (next 4 lines) + -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^('aw)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)('[%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^('aw)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)('aw)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, @@ -359,11 +368,18 @@ hamzaeasy = { -- differences marked below with 'easy' } tanwin = { + -- assimilations (begin) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([rlmnwy])", b="%4%4"}, + {a="(%-?[uai]NU)(%s)([rlmnwy])", b="%1%2%3%3"}, + -- assimilations (end) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([uai])", b="%4"}, {a="%-?uNU", b="ٌو"}, {a="%-?aNU", b="ًوا"}, {a="%-?iNU", b="ٍو"}, -- assimilations (begin) {a="%-?(uN)(%s)([rlmnwy])", b="ٌ%2%3%3"}, + {a="(o[%S]-)(%-?aN)(_A)(o)([rlmnwy])", b="%5%5"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([rlmnwy])", b="%5%5"}, {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, @@ -371,6 +387,8 @@ tanwin = { {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) + {a="(o[%S]-)(%-?aN)(_A)(o)([uai])", b="%5"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([uai])", b="%5"}, -- quoted tanwīn (begin) {a="%-?(\"uN)", b=""}, {a="(B)%-?(\"aN)", b="%1"}, @@ -392,11 +410,18 @@ tanwin = { } tanwineasy = { -- 'easy' requires some lines to be taken out: + -- assimilations (begin) +-- {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([rlmnwy])", b="%4%4"}, +-- {a="(%-?[uai]NU)(%s)([rlmnwy])", b="%1%2%3%3"}, + -- assimilations (end) + {a="(o[%S]-)(%-?[uai]N[UI]?)(o)([uai])", b="%4"}, {a="%-?uNU", b="ٌو"}, {a="%-?aNU", b="ًوا"}, {a="%-?iNU", b="ٍو"}, -- assimilations (begin) -- {a="%-?(uN)(%s)([rlmnwy])", b="ٌ%2%3%3"}, +-- {a="(o[%S]-)(%-?aN)(_A)(o)([rlmnwy])", b="%5%5"}, +-- {a="(o[%S]-)(%-?aN)(Y)(o)([rlmnwy])", b="%5%5"}, -- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, -- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, -- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, @@ -404,6 +429,8 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: -- {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, -- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) + {a="(o[%S]-)(%-?aN)(_A)(o)([uai])", b="%5"}, + {a="(o[%S]-)(%-?aN)(Y)(o)([uai])", b="%5"}, -- quoted tanwīn (begin) {a="%-?(\"uN)", b=""}, {a="(B)%-?(\"aN)", b="%1"}, @@ -428,32 +455,39 @@ trigraphs = { -- trigraphs or more -- 'llatI / 'llad_I {a="^'ll(a)([%_]?[dt])", b="الّ%1%2"}, {a="([%(%[%|%<%s%-])'ll(a)([%_]?[dt])", b="%1الّ%2%3"}, --p - -- law: the diphthong is to be resoved into 'awi' (next 4 lines) + -- law: the diphthong is to be resolved into 'awi' (next 8 lines) + {a="^(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^(law)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, - {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, - {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, + {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p + {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p -- al- + lām {a="^(a)l%-(l)", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(l)", b="%1ا%2ل%3%3"}, --p -- al- + solar consonant {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="ا%1ل%2%2"}, - {a="([%(%[%|%<%s%-])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3%3"}, --p -- assim. art. + solar consonant {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل%2"}, - {a="([%(%[%|%<%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p + {a="([%(%[%|%<%s%-o])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, --p -- al- + initial unstable hamza {a="^(a)l%-(\")([uai])", b="ا%1ل%3ٱ"}, - {a="([%(%[%|%<%s%-])(a)l%-(\")([uai])", b="%1ا%2ل%4ٱ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(\")([uai])", b="%1ا%2ل%4ٱ"}, --p {a="^(a)l%-([uai])", b="ا%1ل%2ا"}, - {a="([%(%[%|%<%s%-])(a)l%-([uai])", b="%1ا%2ل%3ا"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([uai])", b="%1ا%2ل%3ا"}, --p -- li-/la- + art. + initial unstable hamza is a special orthography {a="l([ai])%-l%-(\")([uai])", b="ل%1ل%3ٱ"}, {a="l([ai])%-l%-([uai])", b="ل%1ل%2ا"}, -- al- + lunar consonant (i.e. what remains) {a="^(a)l%-", b="ا%1ل"}, - {a="([%(%[%|%<%s%-])(a)l%-", b="%1ا%2ل"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-", b="%1ا%2ل"}, --p -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aW)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="awuا"}, + {a="(aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1u"}, + {a="(ay)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awuا%2%3"}, {a="(aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1u%2%3"}, {a="(ay)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, @@ -489,7 +523,8 @@ trigraphs = { -- trigraphs or more idgham = { -- assimilations - {a="(n)(%s)([rlmnwy])", b="%1%2%3%3"} + {a="(n)(%s)([rlmnwy])", b="%1%2%3%3"}, + {a="(n)(o)([rlmnwy])([%S]-o)", b="%3"} } trigraphseasy = { -- differences marked below with 'easy' @@ -498,32 +533,39 @@ trigraphseasy = { -- differences marked below with 'easy' -- 'llatI / 'llad_I {a="^'ll(a)([%_]?[dt])", b="الّ%1%2"}, {a="([%(%[%|%<%s%-])'ll(a)([%_]?[dt])", b="%1الّ%2%3"}, --p - -- law: the diphthong is to be resoved into 'awi' (next 4 lines) + -- law: the diphthong is to be resloved into 'awi' (next 8 lines) + {a="^(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1%2i"}, + {a="^(law)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(%W)(law)(o)(\"?[uai])([%S]-o)", b="%1%2i"}, {a="^(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, {a="(%W)(law)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"}, - {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, - {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, + {a="^(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p + {a="(%W)(law)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p -- al- + lām (easy) {a="^(a)l%-(l)", b="ا%1ل%2"}, - {a="([%(%[%|%<%s%-])(a)l%-(l)", b="%1ا%2ل%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(l)", b="%1ا%2ل%3"}, --p -- al- + solar consonant (easy) {a="^(a)l%-([%_%^%.]?[tdrzsn])", b="ا%1ل%2"}, - {a="([%(%[%|%<%s%-])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([%_%^%.]?[tdrzsn])", b="%1ا%2ل%3"}, --p -- assim. art. + solar consonant (easy) {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل"}, - {a="([%(%[%|%<%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل"}, --p + {a="([%(%[%|%<%s%-o])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل"}, --p -- al- + initial unstable hamza {a="^(a)l%-(\")([uai])", b="ا%1ل%3ٱ"}, - {a="([%(%[%|%<%s%-])(a)l%-(\")([uai])", b="%1ا%2ل%4ٱ"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-(\")([uai])", b="%1ا%2ل%4ٱ"}, --p {a="^(a)l%-([uai])", b="ا%1ل%2ا"}, - {a="([%(%[%|%<%s%-])(a)l%-([uai])", b="%1ا%2ل%3ا"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-([uai])", b="%1ا%2ل%3ا"}, --p -- li-/la- + art. + initial unstable hamza is a special orthography {a="l([ai])%-l%-(\")([uai])", b="ل%1ل%3ٱ"}, {a="l([ai])%-l%-([uai])", b="ل%1ل%2ا"}, -- al- + lunar consonant (i.e. what remains) {a="^(a)l%-", b="ا%1ل"}, - {a="([%(%[%|%<%s%-])(a)l%-", b="%1ا%2ل"}, --p + {a="([%(%[%|%<%s%-o])(a)l%-", b="%1ا%2ل"}, --p -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aW)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="awuا"}, + {a="(aw)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1u"}, + {a="(ay)(o)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-o)", b="%1i"}, {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awuا%2%3"}, {a="(aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1u%2%3"}, {a="(ay)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"}, @@ -573,11 +615,20 @@ digraphs = { -- initial straight double quote gives a connective ʾalif {a="^\"[uai]", b="ٱ"}, {a="([%(%[%|%<%s%-])\"[uai]", b="%1ٱ"}, --p - {a="(aW)(%s)([uai])", b="awuا%2%3"}, + -- diphthongs to be resolved before ʾalif conjunctionis + {a="(aW)(o)(\"?[uai])([%S]-o)", b="awuا"}, + {a="(aW)(%s)([%(%[%|%<]?)([uai])", b="awuا%2%3%4"}, --p + {a="(aw)(o)(\"?[uai])([%S]-o)", b="%1u"}, + {a="(aw)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1u%2%3ا"}, --p + {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, + {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ا"}, --p -- hyphen + initial alif without hamza: - {a="(%-)([uai])([%^%_%.%`]?)(%a)", b="%1ا%3%4"}, - {a="^([%(%[%|%<]?)([uai])", b="%1ا%2"}, -- initial alif without hamza --p - {a="(%s)([%(%[%|%<]?)([uai])", b="%1%2ا"}, -- initial alif without hamza --p + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ا%3%4"}, + -- initial alif without hamza + {a="^([%(%[%|%<]?)(\"?[uai])", b="%1ا%2"}, --p + -- initial alif without hamza + {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ا"}, + {a="(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2ا"}, --p {a="%-%-", b="ـ"}, {a="ؤؤ", b="ؤّ"}, {a="أأ", b="أّ"}, @@ -715,5 +766,6 @@ punctuation = { null = { {a="%|", b=""}, - {a="([^0-9])(%-)", b="%1"} + {a="([^0-9])(%-)", b="%1"}, + {a="o[%S]-o", b=""} } |