summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-07-05 21:39:55 +0000
committerKarl Berry <karl@freefriends.org>2016-07-05 21:39:55 +0000
commitb4b6a71b473d050e24fc63a01cf3bc36e4b5582d (patch)
tree58c8379df6f044d28c711cbd52018757608c8b51
parent2fb347ba645d1206714d176309b4ec87e5164b0a (diff)
arabluatex (5jul16)
git-svn-id: svn://tug.org/texlive/trunk@41637 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdfbin311619 -> 331668 bytes
-rw-r--r--Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx297
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua33
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty26
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua14
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua11
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua88
7 files changed, 391 insertions, 78 deletions
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
index 2f635ceef74..f0d8023bd9d 100644
--- a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
+++ b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
index edefb867808..f72d1d904db 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/05/28 v1.3 This is ArabTeX for LuaLaTeX]
+ [2016/07/05 v1.4 This is ArabTeX for LuaLaTeX]
%</package-info>
%
%<*driver>
@@ -130,13 +130,13 @@
\usepackage[english]{babel}
\usepackage{dox}
\doxitem{Option}{option}{options}
-\def\actualchar{ =}
+\def\actualchar{ =} % there's a bug in doxitem; quick fix.
\usepackage{fontspec,luatextra}
-\defaultfontfeatures{RawFeature={+liga;+onum;+hlig}}
-\setmainfont{Libertinus Serif}
-\setsansfont{Libertinus Sans}
-\setmonofont[Scale=.9]{Libertinus Mono}
-\usepackage{arabluatex}[2016/05/28]
+\defaultfontfeatures{RawFeature={+liga}}
+\setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}]
+\newfontfamily\translitfont{Latin Modern Roman}[Ligatures=TeX]
+\usepackage{arabluatex}[2016/07/05]
+\SetTranslitFont{\translitfont}
\usepackage{varioref}
\usepackage{hypdoc}
\hypersetup{unicode=true, colorlinks, allcolors=blue,
@@ -189,7 +189,7 @@
%</driver>
% \fi
%
-% \CheckSum{342}
+% \CheckSum{371}
%
% \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
@@ -217,7 +217,8 @@
% \DoNotIndex{\else,\endcsname,\endinput,\expandafter,\fi}
% \DoNotIndex{\ifdef,\ifdefined,\ifx,\MessageBreak,\NeedsTeXFormat}
% \DoNotIndex{\NewDocumentCommand,\newif,\PackageError,\PackageWarning}
-% \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb}
+% \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb,\let}
+% \DoNotIndex{\enskip}
%
% \providecommand*{\url}{\texttt}
% \GetFileInfo{arabluatex.dtx}
@@ -310,9 +311,9 @@
% \package{arabtex} dates back to 1992. As far as I know, it was then
% the first and only way to typeset Arabic texts with \TeX\ and
% \LaTeX. To achieve that, \package{arabtex} provided---and still
-% does---an Arabic font in \emph{Nasḫī} style and a macro package that
-% defined its own input notation which was, as the author stated,
-% \enquote{both machine, and human, readable, and suited for
+% does---an Arabic font in \arb[trans]{\cap{nasxI}} style and a macro
+% package that defined its own input notation which was, as the author
+% stated, \enquote{both machine, and human, readable, and suited for
% electronic transmission and e-mail
% communication}.\footnote{\textcite[2]{pkg:arabtex}.} Even if the
% same can be said about Unicode, Arab\TeX\ \textsc{ASCII} input
@@ -410,26 +411,26 @@
% loading \package{arabluatex}. Assuming that \package{fontspec} is
% loaded, put this in your preamble just above the line that loads
% \package{arabluatex}:
-% \arabluabox{\cs{newfontfamily}\cs{arabicfont}[Script=Arabic]\marg{fontname}}
+% \arabluabox{\cs{newfontfamily}\cs{arabicfont}\marg{fontname}[Script=Arabic]}
% \noindent where \meta{fontname} is the standard name of the Arabic
% font you wish to use.
%
% By default, if no Arabic font is selected, \package{arabluatex} will
% issue a warning message and attempt to load the Amiri
% font\footnote{\textcite{pkg:amiri}.} like so:---\\
-% \arabluaverb{\newfontfamily\arabicfont[Script=Arabic]{Amiri}}
+% \arabluaverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]}
% \begin{quoting}
% \textsc{Rem.} By default Amiri places the \arb[trans]{kasraT} in
% combination with the \arb[trans]{ta^sdId} below the consonant,
% like so: \arb{BBi}\,. That is correct, as at least in the oldest
-% manuscripts {\newfontfamily\arabicfont[Script=Arabic,
-% RawFeature={+ss05}]{Amiri}\arb{BBi}} may stand for \arb{BBa} as
+% manuscripts {\newfontfamily\arabicfont{Amiri}[Script=Arabic,
+% RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as
% well as \arb{BBi}\,. See \textcite[i.14.C--D]{Wright}. The placement
% of the \arb[trans]{kasraT} above the consonant may be obtained by
% selecting the |ss05| feature of the Amiri font, like
% so:---\footnote{See the documentation of \package{amiri},
% \textcite[5]{pkg:amiri}.}\\
-% \arabluaverb{\newfontfamily\arabicfont[Script=Arabic,RawFeature={+ss05}]{Amiri}}
+% \arabluaverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]}
%
% Other Arabic fonts may behave differently.
% \end{quoting}
@@ -444,8 +445,8 @@
% which is the one selected by default, every short vowel written
% generates its corresponding diacritical mark: \arb[trans]{.dammaT}
% (\arb{Bu}), \arb[trans]{fat.haT} (\arb{Ba}) and \arb[trans]{kasraT}
-% (\arb{Bi}). If a vowel is followed by \meta{uN, aN, iN}, then the
-% corresponding \arb[trans]{tanwIn} (\arb{BuN}, \arb{B|aN}\,,
+% (\arb{Bi}). If a vowel is followed by |N|, viz. \meta{uN, aN, iN},
+% then the corresponding \arb[trans]{tanwIn} (\arb{BuN}, \arb{B|aN}\,,
% \arb{TaN}, \arb{BaN_A} or \arb{BiN}) is generated. Finally, \meta{u,
% a, i} at the commencement of a word indicate a \enquote{connective
% \arb[trans]{'alif}\,} (\arb[trans]{'alifu 'l-wa.sli}), but |voc|
@@ -579,17 +580,17 @@ vowels (see §~3).
\begin{arabluacode}
\begin{arab}
'at_A .sadIquN 'il_A ju.hA ya.tlubu min-hu .himAra-hu
- li-yarkaba-hu fI safraTiN qa.sIraTiN. wa-qAla la-hu:
+ li-yarkaba-hu fI safraTiN qa.sIraTiN fa-qAla la-hu:
\enquote{sawfa 'u`Idu-hu 'ilay-ka fI 'l-masA'-i
wa-'adfa`u la-ka 'ujraTaN.} fa-qAla ju.hA:
\enquote{'anA 'AsifuN jiddaN 'annI lA 'asta.tI`u 'an
- 'u.haqqiqa la-ka .garbata-ka fa-'l-.himAr-u laysa hunA
+ 'u.haqqiqa la-ka ra.gbabata-ka fa-'l-.himAr-u laysa hunA
'l-yawm-a.} wa-qabla 'an yutimma ju.hA kalAma-hu bada'a
- 'l-.himAr-u yanhaqu fI 'i.s.tabili-hi. fa-qAla la-hu
+ 'l-.himAr-u yanhaqu fI 'i.s.tabli-hi. fa-qAla la-hu
.sadIqu-hu: \enquote{'innI 'asma`u .himAra-ka yA ju.hA
yanhaqu.} fa-qAla la-hu ju.hA: \enquote{.garIbuN
'amru-ka yA .sadIqI 'a-tu.saddiqu 'l-.himAr-a
- wa-tuka_d_dibu-nI?}
+ wa-tuka_d_diba-nI?}
\end{arab}
\end{arabluacode}
% \iffalse
@@ -621,7 +622,7 @@ vowels (see §~3).
%\section{Standard Arab\TeX\ input}
%\subsection{Consonants}
% \Cref{tab:arabtex-consonants} gives the Arab\TeX\ equivalents for
-% all of the Arabic consonants.
+% all of the Arabic consonants.\linebreak
% \newcommand{\dmg}[1]{%
% \SetTranslitConvention{dmg}%
% \arb[trans]{#1}}
@@ -1565,7 +1566,7 @@ vowels (see §~3).
% 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,
-% especially to increase legibility of letters an diacritics which
+% especially to increase legibility of letters and diacritics which
% stand one above the other:--
% \begin{quote}
% |.hunayn-u| |bn-u| |'is.h--_aq-a| \arb[voc]{.hunayn-u bn-u
@@ -1747,8 +1748,25 @@ vowels (see §~3).
% any point of the document by the command
% \cs{SetTranslitStyle}\marg{style}, where \meta{style} may be any
% font shape selection command, eg. \cs{upshape}, \cs{itshape},
-% \cs{slshape}, and so forth. Any specific font may also be selected
-% using the font-selecting commands of the \package{fontspec} package.
+% \cs{slshape}, and so forth.
+%
+% \paragraph{Font} \NEWfeature{v1.4} \DescribeMacro{\SetTranslitFont}
+% \cs{SetTranslitFont}\marg{font selection command} allows any
+% specific font to be selected for rendering transliterated text with
+% 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:---
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluaverbatim}
+\newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX]
+\SetTranslitFont{\translitfont}
+\end{arabluaverbatim}
+% \iffalse
+%</example>
+% \fi
%
% \paragraph{Proper names} \DescribeMacro{\cap} Proper names or book
% titles that must have their first letters uppercased may be passed
@@ -1843,7 +1861,8 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu
% \arb[voc]{kA'inuN} \arb[trans]{kA'inuN}, |kA'inAtuN|
% \arb[voc]{kA'inAtuN} \arb[trans]{kA'inAtuN}, |\cap{`amraNU}|
% \arb[voc]{\cap{`amraNU}} \arb[trans]{\cap{`amraNU}}, |fataN_A|
-% \arb[voc]{fataN_A} \arb[trans]{fataN_A}.
+% \arb[voc]{fataN_A} \arb[trans]{fataN_A}, |qA.diNI| \arb{qA.diNI}
+% \arb[trans]{qA.diNI}.
%
% \arb[trans]{\textbf{.gayr mun.sarif}}: |al-mu`allim-u|
% \arb[voc]{al-mu`allim-u} \arb[trans]{al-mu`allim-u}, |kitAb-Ani|
@@ -1888,33 +1907,180 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu
% \begin{arab}[trans]
% \LR{\textbf{\emph{\enquote*{dmg}} standard}:} 'at_A .sadIquN 'il_A
% \cap{ju.hA} ya.tlubu min-hu .himAra-hu li-yarkaba-hu fI safraTiN
-% qa.sIraTiN. wa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI
+% qa.sIraTiN fa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI
% 'l-masA'-i wa-'adfa`u la-ka 'ujraTaN.} fa-qAla \cap{ju.hA}:
% \enquote{'anA 'AsifuN jiddaN 'annI lA 'asta.tI`u 'an 'u.haqqiqa
-% la-ka .garbata-ka fa-'l-.himAr-u laysa hunA 'l-yawm-a.} wa-qabla
+% la-ka ra.gbata-ka fa-'l-.himAr-u laysa hunA 'l-yawm-a.} wa-qabla
% 'an yutimma \cap{ju.hA} kalAma-hu bada'a 'l-.himAr-u yanhaqu fI
-% 'i.s.tabili-hi. fa-qAla la-hu .sadIqu-hu: \enquote{'innI 'asma`u
+% 'i.s.tabli-hi. fa-qAla la-hu .sadIqu-hu: \enquote{'innI 'asma`u
% .himAra-ka yA \cap{ju.hA} yanhaqu.} fa-qAla la-hu \cap{ju.hA}:
% \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu 'l-.himAr-a
-% wa-tuka_d_dibu-nI?}
+% wa-tuka_d_diba-nI?}
% \end{arab}
%
% \SetTranslitConvention{loc}
% \begin{arab}[trans]
% \LR{\textbf{\emph{\enquote*{loc}} standard}:} 'at_A .sadIquN 'il_A
% \cap{ju.hA} ya.tlubu min-hu .himAra-hu li-yarkaba-hu fI safraTiN
-% qa.sIraTiN. wa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI
+% qa.sIraTiN fa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI
% 'l-masA'-i wa-'adfa`u la-ka 'ujraTaN.} fa-qAla \cap{ju.hA}:
% \enquote{'anA 'AsifuN jiddaN 'annI lA 'asta.tI`u 'an 'u.haqqiqa
-% la-ka .garbata-ka fa-'l-.himAr-u laysa hunA 'l-yawm-a.} wa-qabla
+% la-ka ra.gbata-ka fa-'l-.himAr-u laysa hunA 'l-yawm-a.} wa-qabla
% 'an yutimma \cap{ju.hA} kalAma-hu bada'a 'l-.himAr-u yanhaqu fI
-% 'i.s.tabili-hi. fa-qAla la-hu .sadIqu-hu: \enquote{'innI 'asma`u
+% 'i.s.tabli-hi. fa-qAla la-hu .sadIqu-hu: \enquote{'innI 'asma`u
% .himAra-ka yA \cap{ju.hA} yanhaqu.} fa-qAla la-hu \cap{ju.hA}:
% \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu 'l-.himAr-a
-% wa-tuka_d_dibu-nI?}
+% wa-tuka_d_diba-nI?}
% \end{arab}
% \SetTranslitConvention{dmg}
%
+% \section{Buckwalter input scheme}
+% \label{sec:buckwalter-scheme}
+% \NEWfeature{v1.4} Even though \package{arabluatex} is primarily
+% designed to process the Arab\TeX\ notation, it can also process the
+% Buckwalter input scheme to a large extent.\footnote{See
+% \url{http://www.qamus.org/transliteration.htm}} The Buckwalter
+% scheme is actually processed in two steps, as it is first converted
+% into Arab\TeX. Then, once this is accomplished, the Arab\TeX\ scheme
+% is processed through the above described functions. In this way, the
+% Buckwalter input scheme can make the most of the
+% \package{arabluatex} special features that are presented in
+% \vref{sec:options}.
+%
+% \DescribeMacro{\SetInputScheme} The input scheme, which is set to
+% |arabtex| by default, may be changed at any point of the document by
+% the command \cs{SetInputScheme}\marg{scheme}, where \meta{scheme}
+% may be either |arabtex| or |buckwalter|. This command is also
+% accepted in the preamble should one wish to set the input scheme
+% globally, like so:---
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluaverbatim}
+\usepackage{arabluatex}
+\SetInputScheme{buckwalter}
+\end{arabluaverbatim}
+% \iffalse
+%</example>
+% \fi
+%
+% \paragraph{Limitations}
+% To date, the following two limitations apply:
+% \begin{compactenum}[(a)]
+% \item The braces |{| and |}|, which are used in Buckwalter scheme to
+% encode \arb[novoc]{"a} and \arb[novoc]{y"'}, must be replaced with
+% square brackets viz. |[| and |]| respectively.
+% \item The underscore character |_|, which is used in Buckwalter
+% scheme to encode the Arabic \arb[trans]{ta.twIl} must be replaced
+% with a double hyphen |--| (see above \vref{sec:tatwil}).
+% \end{compactenum}
+%
+% \Cref{tab:buckwalter-scheme} gives the Buckwalter equivalents that
+% are currently used by \package{arabluatex}. The additional
+% characters that are defined in \vref{tab:additional-arabic-codings}
+% are also available.
+% \begin{longtable}{llll}
+% \captionlistentry{Buckwalter scheme}\\[-1em]
+% \toprule
+% Letter & \multicolumn{2}{l}{Transliteration\footnotemark}
+% & Buckwalter notation \\
+% & \texttt{dmg} & \texttt{loc} & \\ \midrule
+% \endfirsthead
+% \toprule
+% Letter & \multicolumn{2}{l}{Transliteration}
+% & Buckwalter notation \\
+% & \texttt{dmg} & \texttt{loc} & \\ \midrule
+% \endhead \footnotetext{See \vref{sec:transliteration}.}
+% \label{tab:buckwalter-scheme}
+% \arb[novoc]{a} & \dmg{a} & \loc{a} & \verb|A| \\
+% \arb[novoc]{b} & \dmg{b} & \loc{b} & |b| \\
+% \arb[novoc]{t} & \dmg{t} & \loc{t} & |t| \\
+% \arb[novoc]{_t} & \dmg{_t} & \loc{_t} & |v|\\
+% \arb[novoc]{j} & \dmg{j} & \loc{j} & |j| \\
+% \arb[novoc]{.h} & \dmg{.h} & \loc{.h} & |H| \\
+% \arb[novoc]{x} & \dmg{x} & \loc{x} & |x|\\
+% \arb[novoc]{d} & \dmg{d} & \loc{d} & |d| \\
+% \arb[novoc]{_d} & \dmg{_d} & \loc{_d} & |*| \\
+% \arb[novoc]{r} & \dmg{r} & \loc{r} & |r| \\
+% \arb[novoc]{z} & \dmg{z} & \loc{z} & |z| \\
+% \arb[novoc]{s} & \dmg{s} & \loc{s} & |s| \\
+% \arb[novoc]{^s} & \dmg{^s} & \loc{^s} & |$| \\
+% \arb[novoc]{.s} & \dmg{.s} & \loc{.s} & |S| \\
+% \arb[novoc]{.d} & \dmg{.d} & \loc{.d} & |D| \\
+% \arb[novoc]{.t} & \dmg{.t} & \loc{.t} & |T| \\
+% \arb[novoc]{.z} & \dmg{.z} & \loc{.z} & |Z| \\
+% \arb[novoc]{`} & \dmg{`} & \loc{`} & |E| \\
+% \arb[novoc]{.g} & \dmg{.g} & \loc{.g} & |g| \\
+% \arb[novoc]{f} & \dmg{f} & \loc{f} & |f| \\
+% \arb[novoc]{q} & \dmg{q} & \loc{q} & |q| \\
+% \arb[novoc]{k} & \dmg{k} & \loc{k} & |k| \\
+% \arb[novoc]{l} & \dmg{l} & \loc{l} & |l| \\
+% \arb[novoc]{m} & \dmg{m} & \loc{m} & |m| \\
+% \arb[novoc]{n} & \dmg{n} & \loc{n} & |n| \\
+% \arb[novoc]{h} & \dmg{h} & \loc{h} & |h| \\
+% \arb[novoc]{w} & \dmg{w} & \loc{w} & |w| \\
+% \arb[novoc]{y} & \dmg{y} & \loc{y} & |y| \\
+% \arb[novoc]{T} & \dmg{aT} & \loc{aT} & |p| \\
+% \midrule
+% \arb[novoc]{|"'} & \dmg{|"'} & \loc{|"'} & \verb|'| \\
+% \arb[novoc]{A"'} & \dmg{A"'} & \loc{A"'} & \verb+|+ \\
+% \arb[novoc]{a"'} & \dmg{a"'} & \loc{a"'} & \verb|>| \\
+% \arb[novoc]{w"'} & \dmg{w"'} & \loc{w"'} & \verb|&| \\
+% \arb[novoc]{i"'} & \dmg{i"'} & \loc{i"'} & \verb|<| \\
+% \arb[novoc]{y"'} & \dmg{y"'} & \loc{y"'} & \verb|]| \\
+% \midrule
+% \arb[novoc]{BB} & --- & --- & \verb|~| \\
+% \arb[novoc]{"a} & ' & ' & |[| \\
+% \midrule
+% \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \verb|a| \\
+% \arb[voc]{Bu} & \dmg{Bu} & \loc{Bu} & \verb|u| \\
+% \arb[voc]{Bi} & \dmg{Bi} & \loc{Bi} & \verb|i| \\
+% \arb[voc]{BaN} & \dmg{BaN} & \loc{BaN} & \verb|F| \\
+% \arb[voc]{BuN} & \dmg{BuN} & \loc{BuN} & \verb|N| \\
+% \arb[voc]{BiN} & \dmg{BiN} & \loc{BiN} & \verb|K| \\
+% \arb[voc]{B"} & --- & --- & \verb|o| \\
+% \midrule
+% \arb[novoc]{B_a} & \dmg{B_a} & \loc{B_a} & |`| \\
+% \midrule
+% \arb[novoc]{--} & --- & --- & |--| (\arb[trans]{ta.twIl})\\
+% \bottomrule
+% \caption*{\Cref*{tab:buckwalter-scheme}: Buckwalter scheme}
+% \end{longtable}
+%
+% \paragraph{Transliteration}
+% The Buckwalter notation can also be transliterated into any accepted
+% romanization standard of Arabic. See above
+% \vref{sec:transliteration} for more information. However, it should
+% be pointed out again that only accurate coding produces accurate
+% transliteration. It is therefore at the very least highly advisable
+% to use the hyphen for tying the definite article and the inseparable
+% particles (viz. prepositions, adverbs and conjunctions) to words,
+% like so:--- \SetInputScheme{buckwalter}
+% \begin{quote}
+% |Al-EaAlamu| \arb{Al-EaAlam-u} \arb[trans]{Al-EaAlam-u},
+% |Al-$~amsu| \arb{Al-$~ams-u} \arb[trans]{Al-$~ams-u},
+% |bi-SinaAEapi| |Al-T~ib~i|, \arb{bi-SinaAEap-i Al-T~ib~-i}
+% \arb[trans]{bi-SinaAEap-i Al-T~ib~-i}.
+%
+% |wa-Al-l~`hi| \arb{wa-Al-l~`h-i} \arb[trans]{wa-Al-l~`h-i},
+% |Al-Hamdu| |li-l~`hi| \arb{Al-Hamd-u li-l~`h-i}
+% \arb[trans]{Al-Hamd-u li-l~`h-i}.
+% \end{quote}
+% \SetInputScheme{arabtex}
+%
+% Similary, it is not advisable to use \verb+|+ and |[| to encode the
+% \arb[trans]{'alif-u 'l-mamdUdaT-i} and the \arb[trans]{'alif-u
+% 'l-wa.sl-i} for such signs can be generated by \package{arabluatex}.
+% Besides, as they do not \emph{per se} convey any morphological
+% information on what they are derived from, they cannot be
+% transliterated accurately. To take one example, %
+% \SetInputScheme{buckwalter}%
+% |<ilY Al-[ntiqaADi| gives \arb{>ilY Al-[ntiqaADi} as expected, but
+% only |<ilY Al-intiqADi| can be transliterated as \arb[trans]{<ilY
+% Al-intiqaADi} with the correct vowel \meta{i} in place of the %
+% \SetInputScheme{arabtex}%
+% \arb[trans]{'alif-u 'l-wa.sl-i}.
+%
% \section{\LaTeX\ Commands in Arabic environments}
% \label{sec:commands-in-arb}
% \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\
@@ -1925,7 +2091,7 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu
% as their arguments:---
% \begin{quote}
% |\abjad{45}| |kitAbu-hu| |\emph{fI| |'l-\cap{`AdAt-i}}|
-% \arb[voc]{\abjad{45} kitAbu-hu \emph{fI l-\cap{`AdAt-i}}}
+% \arb[voc]{\abjad{45} kitAbu-hu \emph{fI 'l-\cap{`AdAt-i}}}
% \arb[trans]{\abjad{45} kitAbu-hu \emph{fI
% 'l-\cap{`AdAt-i}}}.\footnote{This is odd in Arabic script, but
% using such features as \cs{emph} or \cs{textbf} is a matter of
@@ -2073,7 +2239,7 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a...
\setquotestyle{arabic}
\begin{arab}
fa-qAla la-hu ju.hA: \enquote{.garIb-uN 'amru-ka yA .sadIqI
- 'a-tu.saddiqu 'l-.himAr-a wa-tuka_d_dibu-nI?}
+ 'a-tu.saddiqu 'l-.himAr-a wa-tuka_d_diba-nI?}
\end{arab}
\setquotestyle{english}
\end{arabluacode}
@@ -2150,7 +2316,7 @@ wa-ya.sIru ta.hta 'l-jild-i
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{arabluatex}%
-[2016/05/28 v1.3 ArabTeX-like interface for LuaLaTeX]
+[2016/07/05 v1.4 ArabTeX-like interface for LuaLaTeX]
\RequirePackage{ifluatex}
% \end{macrocode}
% \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning
@@ -2245,17 +2411,29 @@ wa-ya.sIru ta.hta 'l-jild-i
{\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}
{\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}}
% \end{macrocode}
+% \begin{macro}{\SetInputScheme}
+% \changes{v1.4}{2016/07/05}{\cs{SetInputScheme} may be used to
+% process other input schemes such as \enquote*{Buckwalter}}
+% \package{arabluatex} is designed for processing Arab\TeX\ input
+% notation. \cs{SetInputScheme} may be used in the preamble or at
+% any point of the document should the user wish to use a different
+% notation such as the \enquote*{Buckwalter scheme}.
+% \begin{macrocode}
+\def\al@input@scheme{arabtex}
+\NewDocumentCommand{\SetInputScheme}{m}{\def\al@input@scheme{#1}}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \begin{macro}{\SetArbEasy}
% \changes{v1.2}{2016/05/09}{New \cs{SetArbEasy}/\cs{SetArbDflt} for
% \enquote*{modern} or \enquote*{classic} Arabic styles.}
% \begin{macro}{\SetArbDflt}
% By default, \package{arabluatex} applies complex rules to generate
-% euphonic \arb[trans]{ta^sdId}, \arb[trans]{'alif mamdUdaT}
-% \linebreak and \arb[trans]{sukUn} depending on the modes which are
-% selected, either |voc|, |fullvoc| or |trans|. Such refinements can
-% be discarded with \cs{SetArbEasy}, either globally in the preamble
-% or at any point of the document. Default complex rules can be set
+% euphonic \arb[trans]{ta^sdId}, \arb[trans]{'alif mamdUdaT} and
+% \arb[trans]{sukUn} depending on the modes which are selected,
+% either |voc|, |fullvoc| or |trans|. Such refinements can be
+% discarded with \cs{SetArbEasy}, either globally in the preamble or
+% at any point of the document. Default complex rules can be set
% back at any point of the document with \cs{SetArbDflt}.
% \begin{macrocode}
\def\al@arb@rules{dflt}
@@ -2263,6 +2441,17 @@ wa-ya.sIru ta.hta 'l-jild-i
\NewDocumentCommand{\SetArbDflt}{}{\def\al@arb@rules{dflt}}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\SetTranslitFont}
+% \changes{v1.4}{2016/07/05}{For selecting a specific font for
+% transliterated texts} By default, the font that is used for
+% transliterated text is the main font of the document. Any other
+% font may also be selected with the font-selecting commands of the
+% \package{fontspec} package.
+% \begin{macrocode}
+\def\al@trans@font{\rmfamily}%
+\NewDocumentCommand{\SetTranslitFont}{m}{\def\al@trans@font{#1}}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \begin{macro}{\SetTranslitStyle} By default any transliterated
% Arabic text is printed in italics. This can be changed either
@@ -2327,7 +2516,7 @@ wa-ya.sIru ta.hta 'l-jild-i
\DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir
TRT\arabicfont#1\egroup}
\DeclareDocumentCommand{\txtrans}{+m}{\bgroup\textdir
- TLT\rmfamily#1\egroup}
+ TLT\al@trans@font#1\egroup}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2341,23 +2530,24 @@ wa-ya.sIru ta.hta 'l-jild-i
\ifx\@tempa\al@mode@voc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processvoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@fullvoc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processfullvoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@novoc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processnovoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@trans%
\bgroup\textdir TLT\al@trans@style%
\luadirect{tex.sprint(processtrans(\luastringN{#2},
\luastringO{\al@trans@convention},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules},
+ \luastringO{\al@input@scheme}))}\egroup%
\else%
\fi\fi\fi\fi}
% \end{macrocode}
@@ -2371,22 +2561,23 @@ wa-ya.sIru ta.hta 'l-jild-i
\ifx\@tempa\al@mode@voc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processvoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@fullvoc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processfullvoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@novoc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processnovoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else \ifx\@tempa\al@mode@trans%
\bgroup\pardir TLT\textdir TLT\al@trans@style%
\luadirect{tex.sprint(processtrans(\luastringO{\BODY},
\luastringO{\al@trans@convention},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules},
+ \luastringO{\al@input@scheme}))}\egroup%
\else \fi\fi\fi\fi}[\par]
% \end{macrocode}
% \end{environment}
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
index 3b0ed5e4ef3..b21ee63dee8 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
@@ -456,12 +456,26 @@ local function transloc(str)
return str
end
-function processvoc(str, rules)
+local function processbuckw(str)
+ str = string.gsub(str, "\\arb(%b{})", function(inside)
+ inside = string.sub(inside, 2, -2)
+ for i = 1,#buckwalter do
+ inside = string.gsub(inside, buckwalter[i].a, buckwalter[i].b)
+ end
+ return string.format("\\arb{%s}", inside)
+ end)
+return str
+end
+
+function processvoc(str, rules, scheme)
str = "\\arb{".. str.."}"
str = takeoutcapetc(str)
str = protectarb(str)
str = breakcmd(str)
str = holdcmd(str)
+ if scheme == "buckwalter" then
+ str = processbuckw(str)
+ else end
if rules == "easy" then
str = voceasy(str)
elseif rules == "dflt" then
@@ -471,12 +485,15 @@ function processvoc(str, rules)
return str
end
-function processfullvoc(str, rules)
+function processfullvoc(str, rules, scheme)
str = "\\arb{".. str.."}"
str = takeoutcapetc(str)
str = protectarb(str)
str = breakcmd(str)
str = holdcmd(str)
+ if scheme == "buckwalter" then
+ str = processbuckw(str)
+ else end
if rules == "easy" then
str = fullvoceasy(str)
elseif rules == "dflt" then
@@ -486,12 +503,15 @@ function processfullvoc(str, rules)
return str
end
-function processnovoc(str, rules)
+function processnovoc(str, rules, scheme)
str = "\\arb{".. str.."}"
str = takeoutcapetc(str)
str = protectarb(str)
str = breakcmd(str)
str = holdcmd(str)
+ if scheme == "buckwalter" then
+ str = processbuckw(str)
+ else end
if rules == "easy" then
str = novoceasy(str)
elseif rules == "dflt" then
@@ -501,12 +521,15 @@ function processnovoc(str, rules)
return str
end
-function processtrans(str, mode, rules)
+function processtrans(str, mode, rules, scheme)
str = "\\arb{".. str.."}"
str = takeoutabjad(str)
str = protectarb(str)
str = breakcmd(str)
str = holdcmd(str)
+ if scheme == "buckwalter" then
+ str = processbuckw(str)
+ else end
if mode == "dmg" then
if rules == "easy" then
str = transdmgeasy(str)
@@ -538,7 +561,7 @@ function cap(str)
else
str = "\\MakeUppercase "..str
end
-return str
+return "\\txtrans{"..str.."}"
end
-- this function is adapted from an 'obsolete project' of Khaled
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
index 13f2b6e7180..ae362ea5923 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/05/28 v1.3 ArabTeX-like interface for LuaLaTeX]
+[2016/07/05 v1.4 ArabTeX-like interface for LuaLaTeX]
\RequirePackage{ifluatex}
\ifluatex\else
\PackageError{arabluatex}{lualatex needed}{%
@@ -83,9 +83,13 @@
\AtBeginDocument{\ifdef{\aemph}%
{\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}
{\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}}
+\def\al@input@scheme{arabtex}
+\NewDocumentCommand{\SetInputScheme}{m}{\def\al@input@scheme{#1}}
\def\al@arb@rules{dflt}
\NewDocumentCommand{\SetArbEasy}{}{\def\al@arb@rules{easy}}
\NewDocumentCommand{\SetArbDflt}{}{\def\al@arb@rules{dflt}}
+\def\al@trans@font{\rmfamily}%
+\NewDocumentCommand{\SetTranslitFont}{m}{\def\al@trans@font{#1}}
\def\al@trans@style{\itshape}%
\NewDocumentCommand{\SetTranslitStyle}{m}{\def\al@trans@style{#1}}
\def\al@trans@convention{dmg}
@@ -101,29 +105,30 @@
\DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir
TRT\arabicfont#1\egroup}
\DeclareDocumentCommand{\txtrans}{+m}{\bgroup\textdir
- TLT\rmfamily#1\egroup}
+ TLT\al@trans@font#1\egroup}
\DeclareDocumentCommand{\arb}{O{\al@mode} +m}%
{\edef\@tempa{#1}%
\ifx\@tempa\al@mode@voc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processvoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@fullvoc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processfullvoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@novoc%
\bgroup\textdir TRT\arabicfont%
\luadirect{tex.sprint(processnovoc(\luastringN{#2},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@trans%
\bgroup\textdir TLT\al@trans@style%
\luadirect{tex.sprint(processtrans(\luastringN{#2},
\luastringO{\al@trans@convention},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules},
+ \luastringO{\al@input@scheme}))}\egroup%
\else%
\fi\fi\fi\fi}
\NewEnviron{arab}[1][\al@mode]%
@@ -131,22 +136,23 @@
\ifx\@tempa\al@mode@voc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processvoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@fullvoc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processfullvoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else%
\ifx\@tempa\al@mode@novoc%
\bgroup\pardir TRT\textdir TRT\arabicfont%
\luadirect{tex.sprint(processnovoc(\luastringO{\BODY},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
\else \ifx\@tempa\al@mode@trans%
\bgroup\pardir TLT\textdir TLT\al@trans@style%
\luadirect{tex.sprint(processtrans(\luastringO{\BODY},
\luastringO{\al@trans@convention},
- \luastringO{\al@arb@rules}))}\egroup%
+ \luastringO{\al@arb@rules},
+ \luastringO{\al@input@scheme}))}\egroup%
\else \fi\fi\fi\fi}[\par]
\AtBeginDocument{%
\ifdefined\abjad%
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
index ea7df9f69b5..e0ffbce92a4 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
@@ -45,6 +45,8 @@ hamzafv = {
{a="''([Uu])", b="ؤؤ%1"},
{a="''([Aa])", b="أأ%1"},
{a="''([Ii])", b="ئئ%1"},
+ -- inseparable adverbial particle 'a- + 'a
+ {a="\'(a)%-\'(a)", b="أ%1اأ%2"},
-- initial long u and i (for a, see below)
{a="%'%_U", b="أU"},
{a="%'%_I", b="إI"},
@@ -141,6 +143,8 @@ hamzafveasy = { -- differences marked below with 'easy'
{a="''([Uu])", b="ؤؤ%1"},
{a="''([Aa])", b="أأ%1"},
{a="''([Ii])", b="ئئ%1"},
+ -- inseparable adverbial particle 'a- + 'a
+ {a="\'(a)%-\'(a)", b="أ%1اأ%2"},
-- initial long u and i (for a, see below)
{a="%'%_U", b="أU"},
{a="%'%_I", b="إI"},
@@ -464,10 +468,12 @@ digraphsfv = {
{a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%s])", b="%1ْ%2"},
{a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"},
-- take out sukūn in cases of assimilation
- {a="(n)(ْ)(%s)([روي])", b="%1%3%4"},
- {a="(n)(ْ)(%s)([ل])", b="%1%3%4"},
- {a="(n)(ْ)(%s)([م])", b="%1%3%4"},
- {a="(n)(ْ)(%s)([ن])", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(ر)", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(و)", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(ي)", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(ل)", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(م)", b="%1%3%4"},
+ {a="(n)(ْ)(%s)(ن)", b="%1%3%4"},
{a="ْ\"", b="\""},
-- sukūn end
{a="_t", b="ث"},
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
index b98647d852d..2fdb94ab768 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
@@ -147,11 +147,12 @@ tanwintrdmg = {
{a="%-?(iN)(%s)(i)", b="\\arbup{ini}%2%'"},
--
-- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table)
+ {a="%-?(\"?At)%-?([ui])N", b="\\arbup{%1%2n}"},
{a="%-?(aN)(_A)", b="ạ\\arbup{n}"},
{a="%-?(aN)(Y)", b="ạ\\arbup{n}"},
{a="(T)%-?(\"?aN)", b="t\\arbup{an}"},
{a="([^TA])%-?(\"?aN)", b="%1\\arbup{an}"},
- {a="(%-?)(\"?A?t?)(%-?)([ui])(N)", b="\\arbup{%2%4n}"}
+ {a="%-?([ui])N", b="\\arbup{%1n}"}
}
trigraphstrdmg = { -- trigraphs or more
@@ -439,12 +440,12 @@ tanwintrloc = {
{a="%-?uNU", b="un"},
{a="%-?aNU", b="an"},
{a="%-?iNU", b="in"},
- {a="%-?uN", b="un"},
--- {a="%-?(aN)(_A)", b="an"}, (now included in last line in this table)
+ {a="%-?(\"?At)%-?([ui])N", b="%1%2n"},
+ {a="%-?([ui])N", b="%1n"},
+ {a="%-?(aN)(_A)", b="an"},
{a="%-?(aN)(Y)", b="an"},
{a="(T)%-?(\"?aN)", b="tan"},
- {a="([^TA])%-?(\"?aN)", b="%1an"},
- {a="(%-?)(\"?A?t?)(%-?)([ui])(N)", b="%2%4n"},
+ {a="([^TA])%-?(\"?aN)", b="%1an"}
}
trigraphstrloc = { -- trigraphs or more
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
index 0e5cfc671e8..39da99ec563 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
@@ -71,6 +71,88 @@ raw = {
{a="i", b="ِ"}
}
+buckwalter = {
+ --- hard coded madda: hold it for now
+ {a="%|", b="@"},
+ -- prevent any unwanted šadda from being generated
+ {a="bb", b="b|b"},
+ {a="tt", b="t|t"},
+ {a="vv", b="v|v"},
+ {a="jj", b="j|j"},
+ {a="HH", b="H|H"},
+ {a="xx", b="x|x"},
+ {a="dd", b="d|d"},
+ {a="%*|%*", b="*|*"},
+ {a="rr", b="r|r"},
+ {a="ss", b="s|s"},
+ {a="%$%$", b="$|$"},
+ {a="SS", b="S|S"},
+ {a="DD", b="D|D"},
+ {a="TT", b="T|T"},
+ {a="ZZ", b="Z|Z"},
+ {a="EE", b="E|E"},
+ {a="gg", b="g|g"},
+ {a="ff", b="f|f"},
+ {a="qq", b="q|q"},
+ {a="kk", b="k|k"},
+ {a="ll", b="l|l"},
+ {a="mm", b="m|m"},
+ {a="nn", b="n|n"},
+ {a="hh", b="h|h"},
+ {a="ww", b="w|w"},
+ {a="yy", b="y|y"},
+ -- hamza begin
+ -- look into this later on:
+-- {a="%>a?A", b="@@@"}, -- hold this (madda)
+-- {a="%>a\'([^uai])", b="@@@%1"}, -- hold this (madda)
+ {a="a?A\'", b="@@"}, -- hold this (classic madda)
+ {a="\'", b="|\"\'"},
+ {a="%>", b="a\"\'"},
+ {a="%&", b="w\"\'"},
+ {a="%<", b="i\"\'"},
+ {a="%]", b="y\"\'"},
+ -- hamza end
+ -- trigraphs
+ {a="^Aal%-?", b="al-"},
+ {a="(%W)Aal%-?", b="%1al-"},
+ {a="(%s)Aal%-?", b="%1al-"},
+ {a="([%-%s])Al%-?", b="%1\'l-"},
+ {a="^A", b="a"},
+ {a="(%W)A", b="%1a"},
+ {a="(%s)A", b="%1a"},
+ {a="(al%-[%g])(%~)", b="%1"},
+ {a="(\'l%-[%g])(%~)", b="%1"},
+ -- digraphs begin
+ {a="aA", b="A"},
+ {a="uw([^%~])", b="U%1"},
+ {a="iy([^%~])", b="I%1"},
+ -- digraphs end
+ -- madda: get it back now
+-- {a="%@%@%@", b="\'A"},
+ {a="%@%@", b="A\'"}, -- give back classic madda
+ {a="%@", b="A\"\'"}, -- hard coded madda
+ -- šadda:
+ {a="([%g])(%~)", b="%1%1"},
+ {a="%`", b="_a"},
+ {a="v", b="_t"},
+ {a="H", b=".h"},
+ {a="%*", b="_d"},
+ {a="%$", b="^s"},
+ {a="S", b=".s"},
+ {a="D", b=".d"},
+ {a="T", b=".t"},
+ {a="Z", b=".z"},
+ {a="E", b="`"},
+ {a="g", b=".g"},
+ {a="p", b="T"},
+ {a="N", b="uN"},
+ {a="F", b="aN"},
+ {a="K", b="iN"},
+ {a="o", b="\""},
+ -- hard-coded connective alif
+ {a="%[", b="ٱ"}
+}
+
hamza = {
-- next line for ʾiʿrāb hyphen
{a="(')(%-)([uaiUAI])", b="%1%3"},
@@ -85,6 +167,8 @@ hamza = {
{a="''([Uu])", b="ؤؤ%1"},
{a="''([Aa])", b="أأ%1"},
{a="''([Ii])", b="ئئ%1"},
+ -- inseparable adverbial particle 'a- + 'a
+ {a="\'(a)%-\'(a)", b="أ%1اأ%2"},
-- initial long u and i (for a, see below)
{a="%'%_U", b="أU"},
{a="%'%_I", b="إI"},
@@ -172,6 +256,8 @@ hamzaeasy = { -- differences marked below with 'easy'
{a="''([Uu])", b="ؤؤ%1"},
{a="''([Aa])", b="أأ%1"},
{a="''([Ii])", b="ئئ%1"},
+ -- inseparable adverbial particle 'a- + 'a
+ {a="\'(a)%-\'(a)", b="أ%1اأ%2"},
-- initial long u and i (for a, see below)
{a="%'%_U", b="أU"},
{a="%'%_I", b="إI"},
@@ -570,7 +656,7 @@ punctuation = {
{a="%)", b="-@("},
{a="%+%@%(", b=")"},
{a="%-%@%(", b="("},
- {a="%.", b="۔"},
+ {a="%.", b="."},
{a="([^0-9])%,", b="%1،"},
{a="%?", b="؟"},
{a="%;", b="؛"},