diff options
-rw-r--r-- | Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.el | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf | bin | 550970 -> 565427 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf | bin | 111754 -> 111755 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf | bin | 64921 -> 65049 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx | 186 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua | 37 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty | 15 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua | 238 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua | 12 | ||||
-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 | 167 |
11 files changed, 460 insertions, 288 deletions
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.el b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.el index d91a63a1fe1..73258721ba8 100644 --- a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.el +++ b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.el @@ -81,6 +81,8 @@ "RLfootnote" "FixArbFtnmk" "MkArbBreak" + "arbmark" + '("newarbmark" 3) '("setRL" 0) '("setLR" 0)) (LaTeX-add-environments diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf Binary files differindex b6f9e4b792a..6177eaa750f 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/doc/lualatex/arabluatex/samples/al-Jahiz.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf Binary files differindex 9c1f20f8aae..7b03abe94c9 100644 --- a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf +++ b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf Binary files differindex 1aa6fa638d8..2fc7e20782f 100644 --- a/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf +++ b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx index b97ce4ed023..4b88bf9cd8e 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> - [2018/02/12 v1.10.3 An ArabTeX-like interface for LuaLaTeX] + [2018/03/31 v1.11 An ArabTeX-like interface for LuaLaTeX] %</package-info> % %<*driver> @@ -155,7 +155,7 @@ \defaultfontfeatures{RawFeature={+liga}} \setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}, RawFeature={+mark;+ccmp;+ss05;+ss06}] -\usepackage{arabluatex}[2018/02/12] +\usepackage{arabluatex}[2018/03/31] \usepackage[nopar]{quran} \usepackage[noindex]{nameauth} \usepackage{varioref} @@ -229,7 +229,7 @@ %</driver> % \fi % -% \CheckSum{715} +% \CheckSum{728} % % \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 @@ -1295,7 +1295,7 @@ vowels (see §~3). % \arb[voc]{mi'Una} \arb[trans]{mi'Una}, |mi'AtuN| % \arb[voc]{mi'AtuN} \arb[trans]{mi'AtuN}, |mi'aN_A| % \arb[voc]{mi'aN_A} \arb[trans]{mi'aN_A}. Of course, the -% \enquote*{pipe} character may be used to prevent this rule from +% \enquote*{pipe} character can be used to prevent this rule from % being applied (see \vref{sec:pipe}): \verb+mi'a|TuN+ % \arb[voc]{mi'a|TuN} \arb[trans]{mi'a|TuN}. % \end{quote} @@ -1787,7 +1787,7 @@ vowels (see §~3). % \end{compactenum} % % \paragraph{\texttt{fullvoc}} -% In this mode, \enquote{quoting} may be used to take away any short +% In this mode, \enquote{quoting} can be used to take away any short % vowel (or \arb[trans]{tanwIn}, as seen above) or any % \arb[trans]{sukUn}:--- % \begin{quote}\label{ref:qrannun-full} @@ -1949,7 +1949,7 @@ word that \cs{arbnull} is applied to. % \label{sec:tatwil} % A double hyphen \meta{-\,-} stretches the ligature in which one % letter is bound to another. Although it is always better to rely on -% automatic stretching, this technique may be used to a modest extent, +% automatic stretching, this technique can be used to a modest extent, % especially to increase legibility of letters and diacritics which % stand one above the other:-- % \begin{quote} @@ -2141,7 +2141,7 @@ word that \cs{arbnull} is applied to. % \DescribeOption{utf} |utf|$=$|true|\verb+|+|false| % \hfill\arabluaverb{Default: false}\\ As the preceding one, this % named argument does not need a value as it defaults to |true| if it -% is used. If so, unicode Arabic input is expected in the |arabverse| +% is used. If so, Unicode Arabic input is expected in the |arabverse| % environment instead of \textsc{ascii} Arab\TeX\ or Buckwalter input % schemes. See \vref{sec:unicode-input} for more details. % @@ -2263,12 +2263,12 @@ word that \cs{arbnull} is applied to. % \package{footnotehyper} package which \package{arabluatex} will then % use to typeset any kind of footnote that is called from the % arguments of the \cs{bayt} command.\footnote{The \package{footnote} -% package may also be used for the same effect. However, it must be +% package can also be used for the same effect. However, it must be % loaded \emph{after} \package{arabluatex}.} % % \paragraph{Line numbering} % Inside the |arabverse| environment, the |linenumbers| environment of -% the \package{lineno} package may be used to have the lines of +% the \package{lineno} package can be used to have the lines of % succeeding verses numbered. Please refer to the documentation of % this package for more information or to the example below for a % basic implementation of this technique. @@ -2411,6 +2411,100 @@ word that \cs{arbnull} is applied to. %</example> % \fi % +% \paragraph{Additional Arabic marks} +% In addition to common letters, many symbols and ligatures are +% encoded in Arabic Unicode standard, such as honorifics consisting of +% complex ligatures, and annotation signs used in the +% \arb[trans]{\uc{qur'An}} or in classical poetry. +% +% \DescribeMacro{\arbmark} +% \NEWfeature{v1.11}\cs{arbmark}\marg{shorthand} can be used to insert +% such characters either in Unicode or in romanized Arabic +% environments. It takes as argument a shorthand defined beforehand in +% a default list which consists of the following +% at the time of writing:---\\ +% \begin{longtable}{llp{.3\linewidth}p{.3\linewidth}} +% \captionlistentry{Additional Arabic marks}\\[-1em] +% \toprule +% Codepoint & Shorthand & Glyph & Transliteration \\ \midrule +% \endfirsthead +% \toprule +% Codepoint & Shorthand & Glyph & Transliteration \\ \midrule +% \endhead\label{tab:arabtex-additional-marks}% +% |FDFD| & |bismillah| & \arb{\arbmark{bismillah}} & +% \arbmark{bismillah} \\ +% |FDF5| & |salam| & \arb{\arbmark{salam}} & \arbmark{salam} \\ +% |FDFA| & |slm| & \arb{\arbmark{slm}} & \arbmark{slm} \\ +% |FDFB| & |jalla| & \arb{\arbmark{jalla}} & \arbmark{jalla} \\ +% \bottomrule +% \caption*{\Cref*{tab:arabtex-additional-marks}: Additional Arabic +% marks} +% \end{longtable} +% +% \DescribeMacro{\newarbmark} \NEWfeature{v1.11} \cs{newarbmark} is +% also provided should one wish to define new marks in addition to the +% marks defined above. This command takes three arguments, like so:--- +% \arabluabox{\cs{newarbmark}\marg{shorthand}\marg{RTL +% codepoint}\marg{LTR rendition}}. +% +% As regards the right-to-left codepoint, it may be either typed in +% Unicode or selected as Unicode codepoint. To that end, the \LaTeX\ +% command \arabluaverb{\symbol{"XYZT}} or its plain \TeX\ variant +% \arabluaverb{\char"XYZT\relax} may be used, where |XYZT| are +% uppercase hex digits (|0| to |9| or |A| to |F|). +% +% It is also possible to use the so-called `|^^^^| notation' like so: +% \arabluaverb{^^^^xyzt}, where |xyzt| are lowercase hex digits (|0| +% to |9| or |a| to |f|). +% +% As regards the third argument (left-to-right rendition), it may be +% either left empty or typed by means of +% \cs{arb}|[trans]|\marg{arabtex code} so as to have it printed in +% romanized Arabic.% +% \iffalse +%<*example> +% \fi +\begin{arabluacode}[text only] + It must be noted that \cs{newarbmark} expects Arab\TeX\ input scheme + inside \cs{arb}|[trans]{}| to the exclusion of \textsf{buckwalter} + input scheme. +\end{arabluacode} +% \iffalse +%</example> +% \fi% +% +% The example below provides an implementation of this technique. It +% may be observed that \cs{textcolor} is used so as to have the marks +% printed in red:---% +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \SetArbDflt* + \newarbmark{sly}{\textcolor{red}{^^^^06d6}}{} + \newarbmark{jim}{\textcolor{red}{^^^^06da}}{} + \begin{arab} + sUraTu 'l-nisA'i, 19: + \end{arab} + \begin{center} + \begin{arab} + \arbmark{bismillah} + \end{arab} + \end{center} + \begin{arab}[fullvoc] + y_a'ayyuhA 'lla_dIna 'a'manUA lA ya.hillu la-kum 'an tari_tUA + 'l-nisA'a karhaN\arbmark{sly} wa-lA ta`.dulU-hunna li-ta_dhabUA + bi-ba`.di mA 'a'taytumU-hunna 'illA 'an ya'tIna bi-fA.hi^saTiN + mubayyinaTiN\arbmark{jim} wa-`A^sirU-hunna + bi-'l-ma`rUfi\arbmark{jim} fa-'in karihtumU-hunna fa-`as_A_a + 'an takrahUA ^say'aN wa-ya^g`ala 'l-l_ahu fI-hi _hayraN + ka_tIraN ((19)) + \end{arab} +\end{arabluacode} +% \iffalse +%</example> +% \fi +% % \section{Transliteration} % \label{sec:transliteration} % It may be more appropriate to speak of \enquote{romanization} than @@ -2475,7 +2569,7 @@ word that \cs{arbnull} is applied to. % the font-selecting commands of the \package{fontspec} or % \package{luaotfload} package. Of course, this font must have been % defined properly. To take one example, here is how the \emph{Gentium -% Plus} font may be used for rendering transliterated text:--- +% Plus} font can be used for rendering transliterated text:--- % \iffalse %<*example> % \fi @@ -2618,7 +2712,7 @@ Then as \Hunayn, \Razi. % any point of the document. % % \DescribeMacro{\SetArbUp} Finally, \cs{SetArbUp}\marg{formatting -% directives} may be used to customize the way \arb[trans]{'i`rAb} is +% directives} can be used to customize the way \arb[trans]{'i`rAb} is % displayed. To take one example, here is how Arabic % \arb[trans]{'i`rAb} may be rendered as subscript text:--- % \iffalse @@ -2936,16 +3030,16 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu % \NEWfeature{v1.5} As said above in \vref{sec:buckwalter-scheme} % about the Buckwalter input scheme, even though \package{arabluatex} % 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 +% accepts Unicode Arabic input. It should be noted that +% \package{arabluatex} does in no way interfere with Unicode Arabic % input: none of the |voc|, |fullvoc|, |novoc| or |trans| options will -% have any effect on plain unicode Arabic for the time being. +% have any effect on plain Unicode Arabic for the time being. % -% That said, there are two ways of inserting unicode +% That said, there are two ways of inserting Unicode % Arabic: % \begin{compactenum}[(a)] -% \item \DescribeMacro{\txarb} The \cs{txarb}\marg{unicode Arabic} -% command for inserting unicode Arabic text in paragraphs; +% \item \DescribeMacro{\txarb} The \cs{txarb}\marg{Unicode Arabic} +% command for inserting Unicode Arabic text in paragraphs; % \item The \DescribeEnv{txarab} |txarab| environment for inserting % running paragraphs of Arabic text, like so:---\\% % \iffalse @@ -3019,7 +3113,7 @@ al-muqAtil-Ina.}, wa-kAnat 'ummI min `u.zamA'-i buyUt-i % left-to-right and right-to-left footnotes respectively in Arabic % environments. Unlike \cs{footnote}\marg{text}, the arguments of both % \cs{LRfootnote} and \cs{RLfootnote} are not expected to be Arabic -% text. For example, \cs{LRfootnote} may be used to insert English +% text. For example, \cs{LRfootnote} can be used to insert English % footnotes in running Arabic text:--- % \iffalse %<*example> @@ -3058,7 +3152,7 @@ part of the predicate\ldots} "ibn-u \uc{`a}mr-iNU} % general principle laid \vpageref{ref:cmd-inside-arabic} applies. % % \DescribeMacro{\setRL} \DescribeMacro{\setLR} \cs{setRL} and -% \cs{setLR} may be used to change the direction of paragraphs, either +% \cs{setLR} can be used to change the direction of paragraphs, either % form left to right or from right to left. As an example, an % easy way to typeset a right-to-left sectional title follows:--- % \iffalse @@ -3093,7 +3187,7 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a... % command |\fvarabic| itself can see it. % % \DescribeMacro{\MkArbBreak} The \cs{MkArbBreak}\marg{csv list of -% commands} command may be used in the preamble to give any +% commands} command can be used in the preamble to give any % \emph{single-argument} command---either new or already % existing---the precedence over \package{arabluatex} inside Arabic % environments. It takes as argument a comma-separated list of @@ -3181,7 +3275,7 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a... % \package{paralist}. % % To take a first example, should one wish to typeset a list of -% manuscripts, the |description| environment may be used like so:--- +% manuscripts, the |description| environment can be used like so:--- % \iffalse %<*example> % \fi @@ -3245,7 +3339,7 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a... % \fi% % This option will prevent \package{babel-french} from interfering % with the layout of the document. Then the package \package{paralist} -% may be used to make the lists \enquote*{compact} as +% can be used to make the lists \enquote*{compact} as % \package{babel-french} do. % % \subsection{\package{csquotes}} @@ -3349,7 +3443,7 @@ wa-ya.sIru ta.hta 'l-jild-i % package} \package{arabluatex} is compatible with the \package{quran} % package so that both can be used in conjunction with one another for % typesetting the \arb[trans]{\uc{qur'An}}. As \package{quran} draws -% the text of the \arb[trans]{\uc{qur'An}} from a unicode encoded +% the text of the \arb[trans]{\uc{qur'An}} from a Unicode encoded % database, its commands have to be passed as arguments to the % \cs{txarb} command for short insertions in left-to-right paragraphs, % or inserted inside the \index{txarab=txarab (environment)}|txarab| @@ -3423,7 +3517,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2018/02/12 v1.10.3 An ArabTeX-like interface for LuaLaTeX] +[2018/03/31 v1.11 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} % \end{macrocode} % \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning @@ -3517,7 +3611,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \begin{macro}{\MkArbBreak} % \changes{v1.9}{2017/07/05}{New \cs{MkArbBreak} command for inserting % user-defined macros in Arabic environments} -% The \cs{MkArbBreak}\marg{csv list of commands} command may be used +% The \cs{MkArbBreak}\marg{csv list of commands} command can be used % to give any command---either new or already existing---the % precedence over \package{arabluatex} inside Arabic environments. It % is actually coded in Lua. @@ -3546,7 +3640,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \end{macro} % \end{macro} % \begin{macro}{\SetInputScheme} -% \changes{v1.4}{2016/07/05}{\cs{SetInputScheme} may be used to +% \changes{v1.4}{2016/07/05}{\cs{SetInputScheme} can 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 @@ -3616,7 +3710,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \end{macrocode} % \end{macro} % \begin{macro}{\SetTranslitConvention} -% \cs{SetTranslitConvention}\marg{convention} may be used to change +% \cs{SetTranslitConvention}\marg{convention} can be used to change % the transliteration convention, which is |dmg| by default: % \begin{macrocode} \def\al@trans@convention{dmg} @@ -3635,7 +3729,7 @@ wa-ya.sIru ta.hta 'l-jild-i % either in the preamble or at any point of the document in case one % wishes to have the \arb[trans]{tanwIn} on the line. The default % rule can be set back with \cs{ArbUpDflt} at any point of the -% document. Finally \cs{SetArbUp} may be used to customize the way +% document. Finally \cs{SetArbUp} can be used to customize the way % \arb[trans]{tanwIn} is displayed: this command takes the % formatting directives as argument, like so: % \cs{SetArbUp}\marg{code}. @@ -3659,7 +3753,7 @@ wa-ya.sIru ta.hta 'l-jild-i {\luadirect{tex.sprint(uc(\luastringN{#1}))}} % \end{macrocode} % \end{macro} -% \begin{macro}{\Uc} \cs{uc} may be used safely in all of the modes +% \begin{macro}{\Uc} \cs{uc} can be used safely in all of the modes % that are provided by \package{arabluatex} as any of the |voc|, % |fullvoc| and |novoc| modes discard it on top of any other % functions to be run. \cs{Uc} does the same as \cs{uc} except @@ -3692,16 +3786,16 @@ wa-ya.sIru ta.hta 'l-jild-i % Lua functions to insert transliterated Arabic text. Therefore, it is % not documented. % \begin{macrocode} -\DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir +\NewDocumentCommand{\txarb}{+m}{\bgroup\textdir TRT\arabicfont#1\egroup} -\DeclareDocumentCommand{\txtrans}{+m}{\bgroup\textdir +\NewDocumentCommand{\txtrans}{+m}{\bgroup\textdir TLT\al@trans@font#1\egroup} % \end{macrocode} % \end{macro} % \end{macro} % \begin{environment}{txarab} % \changes{v1.5}{2016/11/14}{New \texttt{txarab} environment for -% typesetting running paragraphs in unicode Arabic} The |txarab| +% typesetting running paragraphs in Unicode Arabic} The |txarab| % environment does for paragraphs the same as \cs{txarb} does for % short insertions of |utf8| Arabic text. % \begin{macrocode} @@ -3716,7 +3810,7 @@ wa-ya.sIru ta.hta 'l-jild-i % either globally if no option is set, or locally, then passes its % argument to the appropriate Lua function. % \begin{macrocode} -\DeclareDocumentCommand{\arb}{O{\al@mode} +m}% +\NewDocumentCommand{\arb}{O{\al@mode} +m}% {\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% \bgroup\textdir TRT\arabicfont% @@ -3743,6 +3837,30 @@ wa-ya.sIru ta.hta 'l-jild-i \fi\fi\fi\fi} % \end{macrocode} % \end{macro} +% \begin{macro}{\arbmark} +% \changes{v1.11}{2018/03/31}{New command for inserting additional +% marks in Arabic environments} \cs{arbmark} takes one argument from a +% list of defined elements. This command is coded in Lua. +% \begin{macrocode} +\NewDocumentCommand{\arbmark}{m}{% + \bgroup% + \SetInputScheme{arabtex}% + \luadirect{tex.sprint(processarbmarks(\luastringN{#1}))}% + \egroup} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newarbmark} +% \changes{v1.11}{2018/03/31}{Allows defining additional sets of Arabic +% marks} \cs{newarbmark} lets the user define additional Arabic +% marks. As \cs{arbmark}, this command is coded in Lua. It takes +% three arguments: the abbreviated form to be used as argument of +% \cs{arbmark}, the rendition in Arabic script and the rendition in +% romanized Arabic. +% \begin{macrocode} +\NewDocumentCommand{\newarbmark}{m m m}{% + \luadirect{newarbmark(\luastringN{#1}, \luastringN{#2}, \luastringN{#3})}} +% \end{macrocode} +% \end{macro} % \begin{environment}{arab} % The |arab| environment does for paragraphs the same as \cs{arb} does % for short insertions of Arabic text. @@ -3821,7 +3939,7 @@ wa-ya.sIru ta.hta 'l-jild-i % changing the default delimiter between hemistichs} A hemistich % delimiter also may be defined. By default, it is set to the % \enquote*{star} character: |*|. The -% \cs{SetHemistichDelim}\marg{delimiter} command may be used at any +% \cs{SetHemistichDelim}\marg{delimiter} command can be used at any % point of the document to change this default setting. % \end{macro} % \begin{macrocode} diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua index 2b1360c4454..7a7460aeef2 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua @@ -124,6 +124,12 @@ local function breakcmd(str) body = string.sub(body, 2, -2) return string.format("}\\aemph{\\%s{%s}}\\arb{", tag, body) end) + -- Arbmark + str = string.gsub(str, "\\(arbmark.-)(%b{})", + function(tag, body) + body = string.sub(body, 2, -2) + return string.format("}\\%s{%s}\\arb{", tag, body) + end) return str end @@ -665,6 +671,37 @@ function processtrans(str, mode, rules, scheme) return str end +function newarbmark(abbr, rtlmk, ltrmk) + table.insert(arbmarks, {a = abbr, b = rtlmk, c = ltrmk}) + return true +end + +local function isintable(table, element) + for i = 1,#table do + if table[i].a == element then + return true + end + end + return false +end + +function processarbmarks(str) + if not isintable(arbmarks, str) then + str = "\\LR{<??>}" + else + if tex.textdir == "TLT" then + for i = 1,#arbmarks do + str = string.gsub(str, arbmarks[i].a, arbmarks[i].c) + end + else + for i = 1,#arbmarks do + str = string.gsub(str, arbmarks[i].a, arbmarks[i].b) + end + end + end + return str +end + function uc(str) str = string.gsub(str, "(\\txtrans.?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty index db42721afa5..de0afaba955 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/02/12 v1.10.3 An ArabTeX-like interface for LuaLaTeX] +[2018/03/31 v1.11 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} \ifluatex\else \PackageError{arabluatex}{lualatex needed}{% @@ -123,15 +123,15 @@ \let\Uc\uc \NewDocumentCommand{\prname}{m}{% \bgroup\SetTranslitStyle{\relax}\arb[trans]{\uc{#1}}\egroup} -\DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir +\NewDocumentCommand{\txarb}{+m}{\bgroup\textdir TRT\arabicfont#1\egroup} -\DeclareDocumentCommand{\txtrans}{+m}{\bgroup\textdir +\NewDocumentCommand{\txtrans}{+m}{\bgroup\textdir TLT\al@trans@font#1\egroup} \NewDocumentEnvironment{txarab}{}{% \par% \booltrue{al@rlmode}% \pardir TRT\textdir TRT\arabicfont}{\par} -\DeclareDocumentCommand{\arb}{O{\al@mode} +m}% +\NewDocumentCommand{\arb}{O{\al@mode} +m}% {\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% \bgroup\textdir TRT\arabicfont% @@ -156,6 +156,13 @@ \luastringO{\al@input@scheme}))}\egroup% \else% \fi\fi\fi\fi} +\NewDocumentCommand{\arbmark}{m}{% + \bgroup% + \SetInputScheme{arabtex}% + \luadirect{tex.sprint(processarbmarks(\luastringN{#1}))}% + \egroup} +\NewDocumentCommand{\newarbmark}{m m m}{% + \luadirect{newarbmark(\luastringN{#1}, \luastringN{#2}, \luastringN{#3})}} \NewEnviron{arab}[1][\al@mode]% {\par\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua index 77d95e38408..fd0916950f7 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua @@ -39,14 +39,14 @@ hamzafv = { {a="i\"'", b="إ"}, {a="y\"'", b="ئ"}, {a="ؤ([^uaiUAI])", b="ؤْ%1"}, - {a="ؤ(%p?)$", b="ؤْ%1"}, - {a="ؤ(%p?%s)", b="ؤْ%1"}, + {a="ؤ(%p*)$", b="ؤْ%1"}, + {a="ؤ(%p*%s)", b="ؤْ%1"}, {a="أ([^uaiUAI])", b="أْ%1"}, - {a="أ(%p?)$", b="أْ%1"}, - {a="أ(%p?%s)", b="أْ%1"}, + {a="أ(%p*)$", b="أْ%1"}, + {a="أ(%p*%s)", b="أْ%1"}, {a="ئ([^uaiUAI])", b="ئْ%1"}, - {a="ئ(%p?)$", b="ئْ%1"}, - {a="ئ(%p?%s)", b="ئْ%1"}, + {a="ئ(%p*)$", b="ئْ%1"}, + {a="ئ(%p*%s)", b="ئْ%1"}, -- hamza takes tašdīd too {a="''([Uu])", b="ؤؤ%1"}, {a="''([Aa])", b="أأ%1"}, @@ -69,10 +69,10 @@ hamzafv = { {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, - {a="(A)(')(uN?%p?)$", b="aآء%3"}, - {a="(A)(')(uN?)(%p?%s)", b="aآء%3%4"}, - {a="(A)(')(iN?%p?)$", b="aآء%3"}, - {a="(A)(')(iN?)(%p?%s)", b="aآء%3%4"}, + {a="(A)(')(uN?%p*)$", b="aآء%3"}, + {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"}, + {a="(A)(')(iN?%p*)$", b="aآء%3"}, + {a="(A)(')(iN?)(%p*%s)", b="aآء%3%4"}, {a="(A)(')([iI])", b="aآئ%3"}, -- historic madda {a="(A)(')(u)", b="aآؤ%3"}, -- historic madda {a="(A)(')", b="aآء"}, -- historic madda @@ -102,31 +102,31 @@ hamzafv = { {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, -- final hamzah is on the line after a letter of prolongation or a -- consonant with sukūn - {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new - {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?[uai]N?)(%p*)$", b="%1ء%3%4"}, --new + {a="([^Auai])(')(\"?[uai]N?)(%p*%s)", b="%1ء%3%4"}, -- u - {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, - {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, - {a="(u)(')(%p?)$", b="%1ؤْ%3"}, - {a="(u)(')(%p?%s)", b="%1ؤْ%3"}, + {a="(u)(')([uai]N?%p*)$", b="%1ؤ%3"}, + {a="(u)(')([uai]N?)(%p*%s)", b="%1ؤ%3%4"}, + {a="(u)(')(%p*)$", b="%1ؤْ%3"}, + {a="(u)(')(%p*%s)", b="%1ؤْ%3"}, -- a - {a="(a)(')(A%p?)$", b="%1آ"}, - {a="(a)(')(A)(%p?%s)", b="%1آ%4"}, - {a="(a)(')([u]N?%p?)$", b="%1أ%3"}, - {a="(a)(')([u]N?)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(a%p?)$", b="%1أ%3"}, - {a="(a)(')(a)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(aN%p?)$", b="%1أً"}, - {a="(a)(')(aN)(%p?%s)", b="%1أً%4"}, - {a="(a)(')([i]N?%p?)$", b="%1إ%3"}, - {a="(a)(')([i]N?)(%p?%s)", b="%1إ%3%4"}, - {a="(a)(')(%p?)$", b="%1أْ%3"}, - {a="(a)(')(%p?%s)", b="%1أْ%3"}, + {a="(a)(')(A%p*)$", b="%1آ"}, + {a="(a)(')(A)(%p*%s)", b="%1آ%4"}, + {a="(a)(')([u]N?%p*)$", b="%1أ%3"}, + {a="(a)(')([u]N?)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(a%p*)$", b="%1أ%3"}, + {a="(a)(')(a)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(aN%p*)$", b="%1أً"}, + {a="(a)(')(aN)(%p*%s)", b="%1أً%4"}, + {a="(a)(')([i]N?%p*)$", b="%1إ%3"}, + {a="(a)(')([i]N?)(%p*%s)", b="%1إ%3%4"}, + {a="(a)(')(%p*)$", b="%1أْ%3"}, + {a="(a)(')(%p*%s)", b="%1أْ%3"}, -- i - {a="(i)(')([uai]N?%p?)$", b="%1ئ%3"}, - {a="(i)(')([uai]N?)(%p?%s)", b="%1ئ%3%4"}, - {a="(i)(')(%p?)$", b="%1ئْ%3"}, - {a="(i)(')(%p?%s)", b="%1ئْ%3"}, + {a="(i)(')([uai]N?%p*)$", b="%1ئ%3"}, + {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, + {a="(i)(')(%p*)$", b="%1ئْ%3"}, + {a="(i)(')(%p*%s)", b="%1ئْ%3"}, -- -- middle {a="([UIwy])(')", b="%1ء"}, --new @@ -165,14 +165,14 @@ hamzafveasy = { -- differences marked below with 'easy' {a="i\"'", b="إ"}, {a="y\"'", b="ئ"}, {a="ؤ([^uaiUAI])", b="ؤْ%1"}, - {a="ؤ(%p?)$", b="ؤْ%1"}, - {a="ؤ(%p?%s)", b="ؤْ%1"}, + {a="ؤ(%p*)$", b="ؤْ%1"}, + {a="ؤ(%p*%s)", b="ؤْ%1"}, {a="أ([^uaiUAI])", b="أْ%1"}, - {a="أ(%p?)$", b="أْ%1"}, - {a="أ(%p?%s)", b="أْ%1"}, + {a="أ(%p*)$", b="أْ%1"}, + {a="أ(%p*%s)", b="أْ%1"}, {a="ئ([^uaiUAI])", b="ئْ%1"}, - {a="ئ(%p?)$", b="ئْ%1"}, - {a="ئ(%p?%s)", b="ئْ%1"}, + {a="ئ(%p*)$", b="ئْ%1"}, + {a="ئ(%p*%s)", b="ئْ%1"}, -- hamza takes tašdīd too {a="''([Uu])", b="ؤؤ%1"}, {a="''([Aa])", b="أأ%1"}, @@ -196,10 +196,10 @@ hamzafveasy = { -- differences marked below with 'easy' {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, --easy (begin) - {a="(A)(')(uN?%p?)$", b="aاء%3"}, - {a="(A)(')(uN?)(%p?%s)", b="aاء%3%4"}, - {a="(A)(')(iN?%p?)$", b="aاء%3"}, - {a="(A)(')(iN?)(%p?%s)", b="aاء%3%4"}, + {a="(A)(')(uN?%p*)$", b="aاء%3"}, + {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"}, + {a="(A)(')(iN?%p*)$", b="aاء%3"}, + {a="(A)(')(iN?)(%p*%s)", b="aاء%3%4"}, {a="(A)(')([iI])", b="aائ%3"}, -- historic madda {a="(A)(')(u)", b="aاؤ%3"}, -- historic madda {a="(A)(')", b="aاء"}, -- historic madda @@ -233,38 +233,38 @@ hamzafveasy = { -- differences marked below with 'easy' -- hamzah alone on the line, so take out the following two lines -- (final hamzah is on the line after a letter of prolongation or a -- consonant with sukūn) - -- {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new - -- {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, - {a="([^Auai])(')(\"?aN)(%p?)$", b="%1ئ%3%4"}, --new - {a="([^Auai])(')(\"?aN)(%p?%s)", b="%1ئ%3%4"}, --new - {a="([^uai])(')(\"?a)(%p?)$", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?a)(%p?%s)", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?[ui]N?)(%p?)$", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?[ui]N?)(%p?%s)", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p*)$", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p*%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?aN)(%p*)$", b="%1ئ%3%4"}, --new + {a="([^Auai])(')(\"?aN)(%p*%s)", b="%1ئ%3%4"}, --new + {a="([^uai])(')(\"?a)(%p*)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?a)(%p*%s)", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p*)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p*%s)", b="%1ء%3%4"}, --new --easy (end) -- u - {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, - {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, - {a="(u)(')(%p?)$", b="%1ؤْ%3"}, - {a="(u)(')(%p?%s)", b="%1ؤْ%3"}, + {a="(u)(')([uai]N?%p*)$", b="%1ؤ%3"}, + {a="(u)(')([uai]N?)(%p*%s)", b="%1ؤ%3%4"}, + {a="(u)(')(%p*)$", b="%1ؤْ%3"}, + {a="(u)(')(%p*%s)", b="%1ؤْ%3"}, -- a - {a="(a)(')(A%p?)$", b="%1آ"}, - {a="(a)(')(A)(%p?%s)", b="%1آ%4"}, - {a="(a)(')([u]N?%p?)$", b="%1أ%3"}, - {a="(a)(')([u]N?)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(a%p?)$", b="%1أ%3"}, - {a="(a)(')(a)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(aN%p?)$", b="%1أً"}, - {a="(a)(')(aN)(%p?%s)", b="%1أً%4"}, - {a="(a)(')([i]N?%p?)$", b="%1إ%3"}, - {a="(a)(')([i]N?)(%p?%s)", b="%1إ%3%4"}, - {a="(a)(')(%p?)$", b="%1أْ%3"}, - {a="(a)(')(%p?%s)", b="%1أْ%3"}, + {a="(a)(')(A%p*)$", b="%1آ"}, + {a="(a)(')(A)(%p*%s)", b="%1آ%4"}, + {a="(a)(')([u]N?%p*)$", b="%1أ%3"}, + {a="(a)(')([u]N?)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(a%p*)$", b="%1أ%3"}, + {a="(a)(')(a)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(aN%p*)$", b="%1أً"}, + {a="(a)(')(aN)(%p*%s)", b="%1أً%4"}, + {a="(a)(')([i]N?%p*)$", b="%1إ%3"}, + {a="(a)(')([i]N?)(%p*%s)", b="%1إ%3%4"}, + {a="(a)(')(%p*)$", b="%1أْ%3"}, + {a="(a)(')(%p*%s)", b="%1أْ%3"}, -- i - {a="(i)(')([uai]N?%p?)$", b="%1ئ%3"}, - {a="(i)(')([uai]N?)(%p?%s)", b="%1ئ%3%4"}, - {a="(i)(')(%p?)$", b="%1ئْ%3"}, - {a="(i)(')(%p?%s)", b="%1ئْ%3"}, + {a="(i)(')([uai]N?%p*)$", b="%1ئ%3"}, + {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, + {a="(i)(')(%p*)$", b="%1ئْ%3"}, + {a="(i)(')(%p*%s)", b="%1ئْ%3"}, -- -- middle {a="([Uw])(')", b="%1ء"}, --new @@ -307,7 +307,7 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {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"}, - {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new +-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) @@ -446,12 +446,12 @@ trigraphsfv = { -- trigraphs or more -- art. with waṣla + lunar consonant (i.e. what remains) {a="'l%-", b="ٱلْ"}, -- the silent wāw - {a="uU(%p?)$", b="uو%1"}, - {a="uU(%p?%s)", b="uو%1"}, - {a="aU(%p?)$", b="aو%1"}, - {a="aU(%p?%s)", b="aو%1"}, - {a="iU(%p?)$", b="iو%1"}, - {a="iU(%p?%s)", b="iو%1"}, + {a="uU(%p*)$", b="uو%1"}, + {a="uU(%p*%s)", b="uو%1"}, + {a="aU(%p*)$", b="aو%1"}, + {a="aU(%p*%s)", b="aو%1"}, + {a="iU(%p*)$", b="iو%1"}, + {a="iU(%p*%s)", b="iو%1"}, -- words ending in -āT with silent wāw/yāʾ {a="(_a)UA", b="%1وا"}, {a="(_a)U", b="%1و"}, @@ -527,12 +527,12 @@ trigraphsfveasy = { -- trigraphs or more (see 'easy' tag below for the diffs) -- art. with waṣla + lunar consonant (i.e. what remains) {a="'l%-", b="ٱلْ"}, -- the silent wāw - {a="uU(%p?)$", b="uو%1"}, - {a="uU(%p?%s)", b="uو%1"}, - {a="aU(%p?)$", b="aو%1"}, - {a="aU(%p?%s)", b="aو%1"}, - {a="iU(%p?)$", b="iو%1"}, - {a="iU(%p?%s)", b="iو%1"}, + {a="uU(%p*)$", b="uو%1"}, + {a="uU(%p*%s)", b="uو%1"}, + {a="aU(%p*)$", b="aو%1"}, + {a="aU(%p*%s)", b="aو%1"}, + {a="iU(%p*)$", b="iو%1"}, + {a="iU(%p*%s)", b="iو%1"}, -- words ending in -āT with silent wāw/yāʾ {a="(_a)UA", b="%1وا"}, {a="(_a)U", b="%1و"}, @@ -541,16 +541,16 @@ trigraphsfveasy = { -- trigraphs or more (see 'easy' tag below for the diffs) digraphsfvidgham = { -- ʾiʿrāb: straight double quote must be discarded - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*)$", b="%2%3"}, -- ʾiʿrāb (end) -- initial straight double quote gives a connective ʾalif {a="^\"[uai]", b="ٱ"}, @@ -620,8 +620,8 @@ digraphsfvidgham = { -- first, take out hyphen if any (next two lines): {a="([ai]Y)%-([uaiUAI])", b="%1%2"}, {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"}, - {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?)$", b="%1ْ%2"}, - {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"}, + {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*)$", b="%1ْ%2"}, + {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*%s)", b="%1ْ%2"}, {a="([ai]Y)([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, -- take out sukūn in cases of assimilation @@ -668,16 +668,16 @@ digraphsfvidgham = { digraphsfv = { -- iʿrāb: straight double quote must be discarded - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*)$", b="%2%3"}, -- ʾiʿrāb (end) -- initial straight double quote gives a connective ʾalif {a="^\"[uai]", b="ٱ"}, @@ -747,8 +747,8 @@ digraphsfv = { -- first, take out hyphen if any (next two lines): {a="([ai]Y)%-([uaiUAI])", b="%1%2"}, {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"}, - {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?)$", b="%1ْ%2"}, - {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"}, + {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*)$", b="%1ْ%2"}, + {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*%s)", b="%1ْ%2"}, {a="([ai]Y)([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, -- take out sukūn in cases of assimilation @@ -795,16 +795,16 @@ digraphsfv = { digraphsfveasy = { -- see the differences under 'easy' marker below -- ʾiʿrāb: straight double quote must be discarded - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*)$", b="%2%3"}, -- ʾiʿrāb (end) -- initial straight double quote gives a connective ʾalif {a="^\"[uai]", b="ٱ"}, @@ -877,8 +877,8 @@ digraphsfveasy = { -- see the differences under 'easy' marker below -- first, take out hyphen if any (next two lines): -- {a="([ai]Y)%-([uaiUAI])", b="%1%2"}, -- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"}, --- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?)$", b="%1ْ%2"}, --- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"}, +-- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*)$", b="%1ْ%2"}, +-- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p*%s)", b="%1ْ%2"}, -- {a="([ai]Y)([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, -- {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"}, -- take out sukūn in cases of assimilation diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua index 0bbd6adb112..09f490320a7 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua @@ -121,12 +121,12 @@ trigraphsnv = { -- trigraphs or more -- art. with waṣla + lunar consonant (i.e. what remains) {a="'l%-", b="ال"}, -- the silent wāw - {a="uU(%p?)$", b="uو%1"}, - {a="uU(%p?%s)", b="uو%1"}, - {a="aU(%p?)$", b="aو%1"}, - {a="aU(%p?%s)", b="aو%1"}, - {a="iU(%p?)$", b="iو%1"}, - {a="iU(%p?%s)", b="iو%1"}, + {a="uU(%p*)$", b="uو%1"}, + {a="uU(%p*%s)", b="uو%1"}, + {a="aU(%p*)$", b="aو%1"}, + {a="aU(%p*%s)", b="aو%1"}, + {a="iU(%p*)$", b="iو%1"}, + {a="iU(%p*%s)", b="iو%1"}, -- words ending in -āT with silent wāw/yāʾ {a="(_a)UA", b="%1وا"}, {a="(_a)U", b="%1و"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua index 86a55b0bf2f..61c989a3003 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua @@ -377,16 +377,16 @@ digraphstrdmg = { {a="([%_]?[Uu])(%s)([%(%[%|%<]?)(\"?[uai])", b="u%2%3'"}, --p {a="([%_]?[Ii])(%s)([%(%[%|%<]?)(\"?[uai])", b="i%2%3'"}, --p -- ʾiʿrāb hyphen (begin) - {a="(%-)(\"?[UI]na)(%p?%s)", b="\\arbup{%2}%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="\\arbup{%2}%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="\\arbup{%2}%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="\\arbup{%2}%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="\\arbup{%2}%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="\\arbup{%2}%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="\\arbup{%2}%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="\\arbup{%2}%3"}, - {a="(%-)(\"?[uai])(%p?%s)", b="\\arbup{%2}%3"}, - {a="(%-)(\"?[uai])(%p?)$", b="\\arbup{%2}%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="\\arbup{%2}%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="\\arbup{%2}%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="\\arbup{%2}%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="\\arbup{%2}%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="\\arbup{%2}%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="\\arbup{%2}%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="\\arbup{%2}%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="\\arbup{%2}%3"}, + {a="(%-)(\"?[uai])(%p*%s)", b="\\arbup{%2}%3"}, + {a="(%-)(\"?[uai])(%p*)$", b="\\arbup{%2}%3"}, -- ʾiʿrāb hyphen (end) shorten long vowels preceding ʾalif -- conjunctionis—without forgetting 'lla_dI {a="(U)(A)", b="U"}, @@ -406,18 +406,18 @@ digraphstrdmg = { {a="([%_]?[Uu])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="u%2%3"}, {a="([%_]?[Ii])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="i%2%3"}, {a="%-%-", b=""}, - {a="iyyaT(%p?)$", b="īyaT%1"}, - {a="iyyaT(%p?%s)", b="īyaT%1"}, - {a="iyy(%p?)$", b="ī%1"}, - {a="iyy(%p?%s)", b="ī%1"}, + {a="iyyaT(%p*)$", b="īyaT%1"}, + {a="iyyaT(%p*%s)", b="īyaT%1"}, + {a="iyy(%p*)$", b="ī%1"}, + {a="iyy(%p*%s)", b="ī%1"}, -- {a="T([^uai])", b="%1"}, {a="T(\\arbup)", b="t%1"}, {a="([a%'][%_%^%.]?[tdrzsln]%-)(%S-)T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="%1%2h%3%4"}, --p {a="T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="t%1%2"}, --p {a="T([%|\"])", b="t%1"}, - {a="T(%p?%s)", b="h%1"}, - {a="T(%p?)$", b="h%1"}, - {a="T(%p?)(%W)", b="h%1%2"}, + {a="T(%p*%s)", b="h%1"}, + {a="T(%p*)$", b="h%1"}, + {a="T(%p*)(%W)", b="h%1%2"}, {a="_t", b="ṯ"}, {a="%^g", b="ǧ"}, {a="%.h", b="ḥ"}, @@ -651,32 +651,32 @@ trigraphstrloc = { -- trigraphs or more digraphstrloc = { -- discard the ʾiʿrāb hyphen (begin) - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)([uai])(%p?%s)", b="%2%3"}, - {a="(%-)([uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)([uai])(%p*%s)", b="%2%3"}, + {a="(%-)([uai])(%p*)$", b="%2%3"}, -- discard the ʾiʿrāb hyphen (end) {a="(%-)(\"?[uai])", b="%1%2"}, -- hyphen + initial alif without hamza {a="^(\"?[uai])", b="%1"}, -- initial alif without hamza {a="(%s)([uai])", b="%1%2"}, -- initial alif without hamza {a="%-%-", b=""}, {a="uww", b="ūw"}, - {a="iyy(%p?)$", b="ī%1"}, - {a="iyy(%p?%s)", b="ī%1"}, + {a="iyy(%p*)$", b="ī%1"}, + {a="iyy(%p*%s)", b="ī%1"}, {a="iyy", b="īy"}, {a="([tkdsg])(h)", b="%1'%2"}, -- {a="T([^uai])", b="h%1"}, {a="([a%']l%-)(%S-)T([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p {a="T([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p {a="T([%|\"])", b="t%1"}, - {a="T(%p?)$", b="h%1"}, - {a="T(%p?%s)", b="h%1"}, + {a="T(%p*)$", b="h%1"}, + {a="T(%p*%s)", b="h%1"}, {a="_t", b="th"}, {a="%^g", b="j"}, {a="%.h", b="ḥ"}, @@ -902,31 +902,32 @@ trigraphstrarabica = { -- trigraphs or more digraphstrarabica = { {a="([uai]%-)(\"?[uai])", b="%1"}, -- hyphen + initial alif without hamza {a="([UAIYuai])(%s)([%(%[%|%<]?)(\"?[uai])", b="%1%2%3"}, --p + {a="(o[%S]-)([UAIuai])(o)(\"?[uai])", b=""}, {a="@", b=""}, -- remove the tag before the former hamza -- discard the ʾiʿrāb hyphen (begin) - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)([uai])(%p?%s)", b="%2%3"}, - {a="(%-)([uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)([uai])(%p*%s)", b="%2%3"}, + {a="(%-)([uai])(%p*)$", b="%2%3"}, -- discard the ʾiʿrāb hyphen (end) {a="(%-)(\"?[uai])", b="%1%2"}, -- hyphen + initial alif without hamza {a="^(\"?[uai])", b="%1"}, -- initial alif without hamza {a="(%s)([uai])", b="%1%2"}, -- initial alif without hamza {a="%-%-", b=""}, - {a="iyy(%p?)$", b="ī%1"}, - {a="iyy(%p?%s)", b="ī%1"}, + {a="iyy(%p*)$", b="ī%1"}, + {a="iyy(%p*%s)", b="ī%1"}, -- {a="T([^uai])", b="h%1"}, {a="([a%']l%-)(%S-)aT([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p {a="aT([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p {a="T([%|\"])", b="t%1"}, - {a="aT(%p?)$", b="a%1"}, - {a="aT(%p?%s)", b="a%1"}, + {a="aT(%p*)$", b="a%1"}, + {a="aT(%p*%s)", b="a%1"}, {a="_t", b="ṯ"}, {a="%^g", b="ǧ"}, {a="%.h", b="ḥ"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua index a0108fec739..606a43ba85a 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua @@ -22,6 +22,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. --]] +arbmarks = { + {a="bismillah", b="^^^^fdfd", c="\\arb[trans]{bi-ismi \\uc{'l-l_ahi} 'l-ra.hm_ani 'l-ra.hImi}"}, + {a="salam", b="^^^^fdf5", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"}, + {a="slm", b="^^^^fdfa", c="\\arb[trans]{.sall_A\\arbnull{'l-l_ahu} \\uc{'l-l_ahu} `alay-hi wa-sallama}"}, + {a="jalla", b="^^^^fdfb", c="\\arb[trans]{^galla ^galAla-hu}"} +} + abjad = { {"a\"'", "b", "j", "d", "h", "w", "z", ".h", ".t"}, {"y", "k", "l", "m", "n", "s", "`", "f", ".s", }, @@ -205,10 +212,10 @@ hamza = { {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, - {a="(A)(')(uN?%p?)$", b="aآء%3"}, - {a="(A)(')(uN?)(%p?%s)", b="aآء%3%4"}, - {a="(A)(')(iN?%p?)$", b="aآء%3"}, - {a="(A)(')(iN?)(%p?%s)", b="aآء%3%4"}, + {a="(A)(')(uN?%p*)$", b="aآء%3"}, + {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"}, + {a="(A)(')(iN?%p*)$", b="aآء%3"}, + {a="(A)(')(iN?)(%p*%s)", b="aآء%3%4"}, {a="(A)(')([iI])", b="aآئ%3"}, -- historic madda {a="(A)(')(u)", b="aآؤ%3"}, -- historic madda {a="(A)(')", b="aآء"}, -- historic madda @@ -238,31 +245,31 @@ hamza = { {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, -- final hamzah is on the line after a letter of prolongation or a -- consonant with sukūn - {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new - {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?[uai]N?)(%p*)$", b="%1ء%3%4"}, --new + {a="([^Auai])(')(\"?[uai]N?)(%p*%s)", b="%1ء%3%4"}, -- u - {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, - {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, - {a="(u)(')(%p?)$", b="%1ؤ%3"}, - {a="(u)(')(%p?%s)", b="%1ؤ%3"}, + {a="(u)(')([uai]N?%p*)$", b="%1ؤ%3"}, + {a="(u)(')([uai]N?)(%p*%s)", b="%1ؤ%3%4"}, + {a="(u)(')(%p*)$", b="%1ؤ%3"}, + {a="(u)(')(%p*%s)", b="%1ؤ%3"}, -- a - {a="(a)(')(A%p?)$", b="%1آ"}, - {a="(a)(')(A)(%p?%s)", b="%1آ%4"}, - {a="(a)(')([u]N?%p?)$", b="%1أ%3"}, - {a="(a)(')([u]N?)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(a%p?)$", b="%1أ%3"}, - {a="(a)(')(a)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(aN%p?)$", b="%1أً"}, - {a="(a)(')(aN)(%p?%s)", b="%1أً%4"}, - {a="(a)(')([i]N?%p?)$", b="%1إ%3"}, - {a="(a)(')([i]N?)(%p?%s)", b="%1إ%3%4"}, - {a="(a)(')(%p?)$", b="%1أ%3"}, - {a="(a)(')(%p?%s)", b="%1أ%3"}, + {a="(a)(')(A%p*)$", b="%1آ"}, + {a="(a)(')(A)(%p*%s)", b="%1آ%4"}, + {a="(a)(')([u]N?%p*)$", b="%1أ%3"}, + {a="(a)(')([u]N?)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(a%p*)$", b="%1أ%3"}, + {a="(a)(')(a)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(aN%p*)$", b="%1أً"}, + {a="(a)(')(aN)(%p*%s)", b="%1أً%4"}, + {a="(a)(')([i]N?%p*)$", b="%1إ%3"}, + {a="(a)(')([i]N?)(%p*%s)", b="%1إ%3%4"}, + {a="(a)(')(%p*)$", b="%1أ%3"}, + {a="(a)(')(%p*%s)", b="%1أ%3"}, -- i - {a="(i)(')([uai]N?%p?)$", b="%1ئ%3"}, - {a="(i)(')([uai]N?)(%p?%s)", b="%1ئ%3%4"}, - {a="(i)(')(%p?)$", b="%1ئ%3"}, - {a="(i)(')(%p?%s)", b="%1ئ%3"}, + {a="(i)(')([uai]N?%p*)$", b="%1ئ%3"}, + {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, + {a="(i)(')(%p*)$", b="%1ئ%3"}, + {a="(i)(')(%p*%s)", b="%1ئ%3"}, -- -- middle {a="([UIwy])(')", b="%1ء"}, --new @@ -323,10 +330,10 @@ hamzaeasy = { -- differences marked below with 'easy' {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, --easy (begin) - {a="(A)(')(uN?%p?)$", b="aاء%3"}, - {a="(A)(')(uN?)(%p?%s)", b="aاء%3%4"}, - {a="(A)(')(iN?%p?)$", b="aاء%3"}, - {a="(A)(')(iN?)(%p?%s)", b="aاء%3%4"}, + {a="(A)(')(uN?%p*)$", b="aاء%3"}, + {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"}, + {a="(A)(')(iN?%p*)$", b="aاء%3"}, + {a="(A)(')(iN?)(%p*%s)", b="aاء%3%4"}, {a="(A)(')([iI])", b="aائ%3"}, -- historic madda {a="(A)(')(u)", b="aاؤ%3"}, -- historic madda {a="(A)(')", b="aاء"}, -- historic madda @@ -360,38 +367,38 @@ hamzaeasy = { -- differences marked below with 'easy' -- hamzah alone on the line, so take out the following two lines -- (final hamzah is on the line after a letter of prolongation or a -- consonant with sukūn) - -- {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new - -- {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, - {a="([^Auai])(')(\"?aN)(%p?)$", b="%1ئ%3%4"}, --new - {a="([^Auai])(')(\"?aN)(%p?%s)", b="%1ئ%3%4"}, --new - {a="([^uai])(')(\"?a)(%p?)$", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?a)(%p?%s)", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?[ui]N?)(%p?)$", b="%1ء%3%4"}, --new - {a="([^uai])(')(\"?[ui]N?)(%p?%s)", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p*)$", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p*%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?aN)(%p*)$", b="%1ئ%3%4"}, --new + {a="([^Auai])(')(\"?aN)(%p*%s)", b="%1ئ%3%4"}, --new + {a="([^uai])(')(\"?a)(%p*)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?a)(%p*%s)", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p*)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p*%s)", b="%1ء%3%4"}, --new --easy (end) -- u - {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, - {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, - {a="(u)(')(%p?)$", b="%1ؤ%3"}, - {a="(u)(')(%p?%s)", b="%1ؤ%3"}, + {a="(u)(')([uai]N?%p*)$", b="%1ؤ%3"}, + {a="(u)(')([uai]N?)(%p*%s)", b="%1ؤ%3%4"}, + {a="(u)(')(%p*)$", b="%1ؤ%3"}, + {a="(u)(')(%p*%s)", b="%1ؤ%3"}, -- a - {a="(a)(')(A%p?)$", b="%1آ"}, - {a="(a)(')(A)(%p?%s)", b="%1آ%4"}, - {a="(a)(')([u]N?%p?)$", b="%1أ%3"}, - {a="(a)(')([u]N?)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(a%p?)$", b="%1أ%3"}, - {a="(a)(')(a)(%p?%s)", b="%1أ%3%4"}, - {a="(a)(')(aN%p?)$", b="%1أً"}, - {a="(a)(')(aN)(%p?%s)", b="%1أً%4"}, - {a="(a)(')([i]N?%p?)$", b="%1إ%3"}, - {a="(a)(')([i]N?)(%p?%s)", b="%1إ%3%4"}, - {a="(a)(')(%p?)$", b="%1أ%3"}, - {a="(a)(')(%p?%s)", b="%1أ%3"}, + {a="(a)(')(A%p*)$", b="%1آ"}, + {a="(a)(')(A)(%p*%s)", b="%1آ%4"}, + {a="(a)(')([u]N?%p*)$", b="%1أ%3"}, + {a="(a)(')([u]N?)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(a%p*)$", b="%1أ%3"}, + {a="(a)(')(a)(%p*%s)", b="%1أ%3%4"}, + {a="(a)(')(aN%p*)$", b="%1أً"}, + {a="(a)(')(aN)(%p*%s)", b="%1أً%4"}, + {a="(a)(')([i]N?%p*)$", b="%1إ%3"}, + {a="(a)(')([i]N?)(%p*%s)", b="%1إ%3%4"}, + {a="(a)(')(%p*)$", b="%1أ%3"}, + {a="(a)(')(%p*%s)", b="%1أ%3"}, -- i - {a="(i)(')([uai]N?%p?)$", b="%1ئ%3"}, - {a="(i)(')([uai]N?)(%p?%s)", b="%1ئ%3%4"}, - {a="(i)(')(%p?)$", b="%1ئ%3"}, - {a="(i)(')(%p?%s)", b="%1ئ%3"}, + {a="(i)(')([uai]N?%p*)$", b="%1ئ%3"}, + {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, + {a="(i)(')(%p*)$", b="%1ئ%3"}, + {a="(i)(')(%p*%s)", b="%1ئ%3"}, -- -- middle {a="([Uw])(')", b="%1ء"}, --new @@ -567,12 +574,12 @@ trigraphs = { -- trigraphs or more -- art. with waṣla + lunar consonant (i.e. what remains) {a="'l%-", b="ال"}, -- the silent wāw - {a="uU(%p?)$", b="uو%1"}, - {a="uU(%p?%s)", b="uو%1"}, - {a="aU(%p?)$", b="aو%1"}, - {a="aU(%p?%s)", b="aو%1"}, - {a="iU(%p?)$", b="iو%1"}, - {a="iU(%p?%s)", b="iو%1"}, + {a="uU(%p*)$", b="uو%1"}, + {a="uU(%p*%s)", b="uو%1"}, + {a="aU(%p*)$", b="aو%1"}, + {a="aU(%p*%s)", b="aو%1"}, + {a="iU(%p*)$", b="iو%1"}, + {a="iU(%p*%s)", b="iو%1"}, -- words ending in -āT with silent wāw/yāʾ {a="(_a)UA", b="%1وا"}, {a="(_a)U", b="%1و"}, @@ -658,12 +665,12 @@ trigraphseasy = { -- differences marked below with 'easy' -- art. with waṣla + lunar consonant (i.e. what remains) {a="'l%-", b="ال"}, -- the silent wāw - {a="uU(%p?)$", b="uو%1"}, - {a="uU(%p?%s)", b="uو%1"}, - {a="aU(%p?)$", b="aو%1"}, - {a="aU(%p?%s)", b="aو%1"}, - {a="iU(%p?)$", b="iو%1"}, - {a="iU(%p?%s)", b="iو%1"}, + {a="uU(%p*)$", b="uو%1"}, + {a="uU(%p*%s)", b="uو%1"}, + {a="aU(%p*)$", b="aو%1"}, + {a="aU(%p*%s)", b="aو%1"}, + {a="iU(%p*)$", b="iو%1"}, + {a="iU(%p*%s)", b="iو%1"}, -- words ending in -āT with silent wāw/yāʾ {a="(_a)UA", b="%1وا"}, {a="(_a)U", b="%1و"}, @@ -672,16 +679,16 @@ trigraphseasy = { -- differences marked below with 'easy' digraphs = { -- ʾiʿrāb: straight double quote must be discarded - {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?At[ui])(%p?)$", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?Ani)(%p?)$", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?%s)", b="%2%3"}, - {a="(%-)(\"?ayni)(%p?)$", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?%s)", b="%2%3"}, - {a="(%-)(\"?[uai])(%p?)$", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[UI]na)(%p*)$", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?At[ui])(%p*)$", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?Ani)(%p*)$", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*%s)", b="%2%3"}, + {a="(%-)(\"?ayni)(%p*)$", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*%s)", b="%2%3"}, + {a="(%-)(\"?[uai])(%p*)$", b="%2%3"}, -- ʾiʿrāb (end) -- initial straight double quote gives a connective ʾalif {a="^\"[uai]", b="ٱ"}, |