aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arabluatex.dtx298
-rw-r--r--arabluatex_fullvoc.lua4
-rw-r--r--arabluatex_voc.lua5
3 files changed, 303 insertions, 4 deletions
diff --git a/arabluatex.dtx b/arabluatex.dtx
index 6fb2993..89d0e51 100644
--- a/arabluatex.dtx
+++ b/arabluatex.dtx
@@ -2467,6 +2467,7 @@ word that \cs{arbnull} is applied to.
2467% \fi 2467% \fi
2468% 2468%
2469% \paragraph{Additional Arabic marks} 2469% \paragraph{Additional Arabic marks}
2470% \label{sec:arabic-marks}
2470% In addition to common letters, many symbols and ligatures are 2471% In addition to common letters, many symbols and ligatures are
2471% encoded in Arabic Unicode standard, such as honorifics consisting of 2472% encoded in Arabic Unicode standard, such as honorifics consisting of
2472% complex ligatures, and annotation signs used in the 2473% complex ligatures, and annotation signs used in the
@@ -2560,10 +2561,298 @@ word that \cs{arbnull} is applied to.
2560%</example> 2561%</example>
2561% \fi 2562% \fi
2562% 2563%
2563% \paragraph{Color}\NEWfeature{v1.12} this: 2564% \section{Color}
2564% \begin{arab}[trans] 2565% \label{sec:color}
2565% daxal\arbcolor[red]{tu} mub\arbcolor[blue]{ta}si\arbcolor[green]{maN} 2566% \NEWfeature{v1.12}\package{arabluatex} is able to render in color
2566% \end{arab} 2567% either words, parts of words or diacritics. As the techniques
2568% implemented in this section may lead to some complexity, the reader
2569% should first become well acquainted with the following
2570% points:\footnote{Regarding the colors themselves and the way new
2571% colors can be defined in addition to those that are already
2572% available, please refer to the \package{xcolor} package.}---
2573% \begin{enumerate}
2574% \item The \enquote{pipe} character (\textbar, \vref{sec:pipe});
2575% \item \enquote*{Quoting} technique (\vref{sec:quoting}), and more
2576% specifically \enquote*{quoting the \arb[trans]{hamzaT}}
2577% (\vpageref{sec:quoting-hamza});
2578% \item Putting back on broken contextual analysis rules
2579% (\vref{sec:arbnull});
2580% \item Arabic marks (\vref{sec:arabic-marks}).
2581% \end{enumerate}
2582%
2583% \DescribeMacro{\arbcolor} \cs{arbcolor} takes the text to be colored
2584% into \meta{color} as an argument:---
2585% \arabluabox{\cs{arbcolor}\oarg{color}\marg{Arabic text}}
2586%
2587% \iffalse
2588%<*example>
2589% \fi
2590\begin{arabluacode}
2591 \begin{arab}
2592 \arbcolor[red]{al-bAbu 'l-_hAmisu} fI .tabaqAti 'l-'a.tibbA'i
2593 'lla_dIna kAnUA mun_du zamAni \uc{^gAlInUsa} wa-qarIbaN
2594 min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-li-na.da` 'awwalaN
2595 kalAmaN kulliyyaN fI 'a_hbAri \uc{^gAlInUsa} wa-mA kAna
2596 `alay-hi...
2597 \end{arab}
2598 \begin{arab}[trans]
2599 \arbcolor[red]{al-bAbu 'l-_hAmisu} fI .tabaqAti 'l-'a.tibbA'i
2600 'lla_dIna kAnUA mun_du zamAni \uc{^gAlInUsa} wa-qarIbaN
2601 min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-li-na.da` 'awwalaN
2602 kalAmaN kulliyyaN fI 'a_hbAri \uc{^gAlInUsa} wa-mA kAna
2603 `alay-hi...
2604 \end{arab}
2605\end{arabluacode}
2606% \iffalse
2607%</example>
2608% \fi
2609%
2610% As this example shows, \cs{arbcolor} has been used to render
2611% headings in red with the same encoding both in vocalized and in
2612% romanized Arabic. The same technique also applies to syllabes inside
2613% words. \package{arabluatex} takes care of selecting the appropriate
2614% shape of the letters while coloring them:---
2615% \begin{quote}\textbf{\enquote*{voc} mode}:\\
2616% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}|
2617% |'a`\arbcolor[blue]{^ga}ba-ka|
2618% \arb{i^stara\arbcolor[brown]{y}tu-hu bi-_tama\arbcolor[red]{niN}
2619% 'a`\arbcolor[blue]{^ga}ba-ka}
2620% \arb[trans]{i^stara\arbcolor[brown]{y}tu-hu
2621% bi-_tama\-\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka}.
2622% \end{quote}
2623% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\
2624% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}|
2625% |'a`\arbcolor[blue]{^ga}ba-ka|
2626% \arb[fullvoc]{i^stara\arbcolor[brown]{y}tu-hu
2627% bi-_tama\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka}
2628% \arb[trans]{i^stara\arbcolor[brown]{y}tu-hu
2629% bi-_tama\-\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka}.
2630% \end{quote}
2631%
2632% \subsection{Tricks of the trade}
2633% \label{sec:color-tricks}
2634% \paragraph{Diacritics}
2635% Depending on the mode selected, either |voc|, |novoc| or |fullvoc|,
2636% coloring the diacritics requires more attention for the insertion of
2637% \cs{arbcolor} may prevent contextual analysis from being applied.
2638%
2639% Furthermore, depending on the surrounding letters, the standard
2640% encoding of short vowels \meta{u, a, i} may result either in
2641% diacritics or in a connective \arb[trans]{'alif} with the
2642% \arb[trans]{wa.slaT} or its accompanying vowel. As for the
2643% \arb[trans]{sukUn}, it is generated by contextual analysis. Thus
2644% applying colors to bare diacritics requires them to have specific
2645% encodings.
2646%
2647% \Cref{tab:arbcolor-diacritics} gives the Arab\TeX\ equivalents for
2648% the diacritics to be rendered inside or just after \cs{arbcolor}.
2649%
2650% \begin{longtable}{lllll}
2651% \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}}\\[-1em]
2652% \toprule
2653% Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark}
2654% & Arab\TeX\ notation \\
2655% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2656% \endfirsthead
2657% \toprule
2658% Diacritic & \multicolumn{3}{l}{Transliteration}
2659% & Arab\TeX\ notation \\
2660% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2661% \endhead \footnotetext{See below \vref{sec:transliteration}.}
2662% \label{tab:arbcolor-diacritics}
2663% \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\
2664% \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\
2665% \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule
2666% \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\
2667% \bottomrule
2668% \caption*{\Cref*{tab:arbcolor-diacritics}: Arab\TeX\ diacritics
2669% for \cs{arbcolor}}
2670% \end{longtable}
2671%
2672% The following examples show how the letters, or the diacritics above
2673% or under them or both the letters and the diacritics can be rendered
2674% in different colors:---
2675% \begin{quote}\textbf{\enquote*{voc} mode}:\\
2676% |i^staraytu-hu| |bi-_taman\arbcolor[red]{iN}|
2677% |'a`^g\arbcolor[red]|\allowbreak|{.a}ba-ka|
2678% \arb{i^staraytu-hu bi-_taman\arbcolor[red]{iN}
2679% 'a`^g\arbcolor[red]{.a}ba-ka}
2680% \arb[trans]{i^staraytu-hu bi-_taman\arbcolor[red]{iN}
2681% 'a`^g\arbcolor[red]{.a}ba-ka}.
2682%
2683% |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}iN|
2684% |'a`\arbcolor[red]|\allowbreak|{^g}.aba-ka|
2685% \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}iN
2686% 'a`\arbcolor[red]{^g}.aba-ka}
2687% \arb[trans]{i^staraytu-hu bi-_tama\arbcolor[red]{n}iN
2688% 'a`\arbcolor[red]{^g}.aba-ka}.
2689%
2690% |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}|
2691% |'a`\arbcolor[red]|\allowbreak|{^g}\arbcolor[blue]{.a}ba-ka|
2692% \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}
2693% 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka} \linebreak
2694% \arb[trans]{i^staraytu-hu
2695% bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}
2696% 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka}.
2697% \end{quote}
2698%
2699% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\
2700% |i^staray"\arbcolor[red]{o}tu-hu| |bi-_taman"\arbcolor[red]{iN}|
2701% |'a`^g"\arbcolor[red]{.a}ba-ka|
2702% \arb[fullvoc]{i^staray"\arbcolor[red]{o}tu-hu
2703% bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka}
2704% \arb[trans]{i^staray"\arbcolor[red]{o}tu-hu
2705% bi-_taman"\arbcolor[red]{iN}
2706% \linebreak 'a`^g"\arbcolor[red]{.a}ba-ka}.
2707%
2708% |i^stara\arbcolor[red]{y"}otu-hu| |bi-_tama\arbcolor[red]{n"}iN|
2709% |'a`\arbcolor[red]|\allowbreak|{^g"}.aba-ka|
2710% \arb[fullvoc]{i^stara\arbcolor[red]{y"}otu-hu
2711% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}
2712% \arb[trans]{i^stara\arbcolor[red]{y"}otu-hu
2713% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}.
2714%
2715% |i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu|
2716% |bi-_tama\arb|\allowbreak|color[red]{n"}\arbcolor[blue]{iN}|
2717% |'a`\arbcolor[red]|\allowbreak|{^g"}\arb|\allowbreak%
2718% |color[blue]{.a}ba-ka|
2719% \arb[fullvoc]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu
2720% bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN}
2721% 'a`\arbcolor[red]{^g"}\arbcolor[blue]{.a}ba-ka}
2722% \arb[trans]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu
2723% bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN}
2724% 'a`\arbcolor[red]{^g"}\arbcolor[blue]{.a}ba-ka}.
2725% \end{quote}
2726%
2727% As can be seen, |fullvoc| required the letters |y|, |n| and |^g|
2728% before \cs{arbcolor} to be \enquote*{quoted}. Otherwise, unwanted
2729% \arb[trans]{sukUn}\txtrans{s} would have been generated because of
2730% the absence of a vowel after those consonants.
2731%
2732% \paragraph{\texorpdfstring{\arb[trans]{tanwIn}}{tanwīn}}
2733% \cs{arbnull} must be used with \arb[trans]{fat.haTAn} (\arb{BaN}) so
2734% as to put back on contextual analysis rules:---
2735% \begin{quote}
2736% |mu`allim\arbcolor[red]{\arbnull{m}aN}|
2737% \arb{mu`allim\arbcolor[red]{\arbnull{m}aN}}
2738% \arb[trans]{mu`allim\arbcolor[red]{\arbnull{m}aN}},\\
2739% |istisqA'\arbcolor[red]{\arbnull{A'}aN}|
2740% \arb{istisqA'\arbcolor[red]{\arbnull{A'}aN}}
2741% \arb[trans]{istisqA'\arbcolor[red]{\arbnull{A'}aN}},\\
2742% |^say'\arbcolor[red]{\arbnull{ay'}aN}|
2743% \arb{^say'\arbcolor[red]{\arbnull{ay'}aN}}
2744% \arb[trans]{^say'\arbcolor[red]{\arbnull{ay'}aN}},\\
2745% \verb+^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}+
2746% \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}
2747% \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}.
2748% \end{quote}
2749% \begin{quoting}
2750% \textsc{Rem.} Note that in the last example
2751% (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the
2752% \enquote*{pipe} character has been inserted before
2753% \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration
2754% rules would have interpreted the \arb[trans]{tA' marbU.taT} as
2755% \emph{final} (e.g. \txtrans{h} instead of the expected
2756% \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe}
2757% \enquote{Discarding the \arb[trans]{'i`rAb}} for more
2758% information.}
2759% \end{quoting}
2760%
2761% The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even
2762% more intricate business to the rendering with the utmost accuracy in
2763% both romanized and non-romanized modes. First, a new Arabic mark
2764% needs to be defined. It should print \arb[novoc]{_A} in Arabic
2765% script and not a thing in transliteration. It is to be appended after
2766% \cs{arbcolor}, like so:---
2767% \iffalse
2768%<*example>
2769% \fi
2770\begin{arabluacode}
2771 \newarbmark{Y}{^^^^0649}{}
2772 \arb{hud\arbcolor[red]{aN\arbnull{_A}}\arbmark{Y}}
2773 \arb[trans]{hud\arbcolor[red]{aN\arbnull{_A}}\arbmark{Y}}
2774\end{arabluacode}
2775% \iffalse
2776%</example>
2777% \fi%
2778%
2779% \paragraph{\texorpdfstring{\arb[trans]{wa.slaT} and
2780% \arb[trans]{maddaT}}{waṣlah and maddah}}
2781% Both can be generated with the help of \cs{arbnull}:---
2782% \begin{quote}
2783% |wa-\arbcolor[red]{\arbnull{wa}i}stisqA'uN|
2784% \arb[fullvoc]{wa-\arbcolor[red]{\arbnull{wa}i}stisqA'uN}
2785% \arb[trans]{wa-\arbcolor[red]{\arbnull{wa}i}stisqA'uN}\footnote{To
2786% the knowledge of the writer, the \arb[trans]{wa.slaT} alone is not
2787% part of the Arabic Unicode block.}.
2788%
2789% |\arbcolor[red]{'a'\arbnull{k}}kulu|
2790% \arb{\arbcolor[red]{'a'\arbnull{k}}kulu}
2791% \arb[trans]{\arbcolor[red]{'a'\arbnull{k}}kulu},\\
2792% |\arbcolor[red]{'A\arbnull{k}}kiluN|
2793% \arb{\arbcolor[red]{'A\arbnull{k}}kiluN}
2794% \arb[trans]{\arbcolor[red]{'A\arbnull{k}}kiluN}.
2795% \end{quote}
2796%
2797% The Unicode codepoint of the \arb[trans]{maddaT} is 0653, while bare
2798% \arb[trans]{'alif} is 0627. So:---
2799% \iffalse
2800%<*example>
2801% \fi
2802\begin{arabluacode}
2803 \newarbmark{alifmaddahred}{^^^^0627\arbcolor[red]{^^^^0653}}%
2804 {\arb[trans]{\arbcolor[red]{'a'\arbnull{k}}}}
2805 \arb{\arbmark{alifmaddahred}kulu}
2806 \arb[trans]{\arbmark{alifmaddahred}kulu}.
2807\end{arabluacode}
2808% \iffalse
2809%</example>
2810% \fi%
2811%
2812% \begin{quoting}
2813% \textsc{Rem.} In the preceding example, any consonant could have
2814% been passed as argument to the \cs{arbnull} command.
2815% \end{quoting}
2816%
2817% \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}}
2818% In the following example, it is assumed that the
2819% \arb[trans]{^saddaT} above the letter \arb[novoc]{l} in
2820% \arb[fullvoc]{al-mu`allimUna}, \arb[trans]{al-mu`allimUna}, is to be
2821% rendered in red. Thus the Arabic mark must generate the
2822% \arb[trans]{^saddaT} alone---of which the Unicode codepoint is
2823% 0651---in Arabic script and the letter \enquote*{l} in
2824% transliteration:--- \iffalse
2825%<*example>
2826% \fi
2827\begin{arabluacode}
2828\newarbmark{lamshaddah}{^^^^0651}{l}
2829\arb[fullvoc]{al-mu`al"\arbcolor[red]{\arbmark{lamshaddah}}.imUna}
2830\arb[trans]{al-mu`al"\arbcolor[red]{\arbmark{lamshaddah}}.imUna}.
2831\end{arabluacode}
2832% \iffalse
2833%</example>
2834% \fi%
2835%
2836% \paragraph{\texorpdfstring{\arb[trans]{hamzaT}}{hamzah}}
2837% The \enquote*{quoting} technique provides an easy way to determine
2838% the carrier of the \arb[trans]{hamzaT}, as shown in
2839% \vref{tab:quoted-hamza}---:
2840% \begin{quote}
2841% \verb+yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna+
2842% \arb{yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna}
2843% \arb[trans]{yatasA\arbnull{'a}\-\arbcolor[red]{|"'}.a\-lUna},
2844% \verb+^say\arbcolor[red]{|"'}\arbnull{'}aN+
2845% \arb{^say\arbcolor[red]{|"'}\arbnull{'}aN}
2846% \arb[trans]{^say\arbcolor[red]{|"'}\arbnull{'}aN},
2847% \verb+^say\ar+\allowbreak\verb+bcolor[red]{|"'}iN+
2848% \arb{^say\arbcolor[red]{|"'}iN}
2849% \arb[trans]{^say\arbcolor[red]{|"'}iN},
2850% |\arbcolor[red]{a"'}.as\arbcolor|\allowbreak|[red]{y"'}.ilaTuN|
2851% \arb{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}
2852% \arb[trans]{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}.
2853% \end{quote}
2854%
2855%
2567% \section{Transliteration} 2856% \section{Transliteration}
2568% \label{sec:transliteration} 2857% \label{sec:transliteration}
2569% It may be more appropriate to speak of \enquote{romanization} than 2858% It may be more appropriate to speak of \enquote{romanization} than
@@ -2842,6 +3131,7 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu
2842% 3131%
2843% \paragraph{\texorpdfstring{Discar\-ding the 3132% \paragraph{\texorpdfstring{Discar\-ding the
2844% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}} 3133% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}}
3134% \label{ref:ta-marbutah-pipe}
2845% As said above (\vref{ref:irab-discarded}), the \arb[trans]{'i`rAb} 3135% As said above (\vref{ref:irab-discarded}), the \arb[trans]{'i`rAb}
2846% may be discarded in some cases, as in transliterated proper names or 3136% may be discarded in some cases, as in transliterated proper names or
2847% book titles. \package{arabluatex} is able to render words ending 3137% book titles. \package{arabluatex} is able to render words ending
diff --git a/arabluatex_fullvoc.lua b/arabluatex_fullvoc.lua
index 6353f30..fb823fa 100644
--- a/arabluatex_fullvoc.lua
+++ b/arabluatex_fullvoc.lua
@@ -68,7 +68,9 @@ hamzafv = {
68 {a="'a'([^uaiUAI])", b="آ%1"}, 68 {a="'a'([^uaiUAI])", b="آ%1"},
69 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 69 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
70 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, 70 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"},
71 {a="\'a?A(O[%_%^%.]?[%`%'btjghxdrzsfqklmnywAY]-O)", b="آ"},
71 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 72 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
73 {a="(A)(O%'[%S]-O)", b="آ"},
72 {a="(A)(')(uN?%p*)$", b="aآء%3"}, 74 {a="(A)(')(uN?%p*)$", b="aآء%3"},
73 {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"}, 75 {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"},
74 {a="(A)(')(iN?%p*)$", b="aآء%3"}, 76 {a="(A)(')(iN?%p*)$", b="aآء%3"},
@@ -194,8 +196,10 @@ hamzafveasy = { -- differences marked below with 'easy'
194 {a="'a'([^uaiUAI])", b="آ%1"}, 196 {a="'a'([^uaiUAI])", b="آ%1"},
195 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 197 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
196 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, 198 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"},
199 {a="\'a?A(O[%_%^%.]?[%`%'btjghxdrzsfqklmnywAY]-O)", b="آ"},
197 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 200 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
198 --easy (begin) 201 --easy (begin)
202 {a="(A)(O%'[%S]-O)", b="ا"},
199 {a="(A)(')(uN?%p*)$", b="aاء%3"}, 203 {a="(A)(')(uN?%p*)$", b="aاء%3"},
200 {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"}, 204 {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"},
201 {a="(A)(')(iN?%p*)$", b="aاء%3"}, 205 {a="(A)(')(iN?%p*)$", b="aاء%3"},
diff --git a/arabluatex_voc.lua b/arabluatex_voc.lua
index e547f6b..16ddd55 100644
--- a/arabluatex_voc.lua
+++ b/arabluatex_voc.lua
@@ -211,7 +211,9 @@ hamza = {
211 {a="'a'([^uaiUAI])", b="آ%1"}, 211 {a="'a'([^uaiUAI])", b="آ%1"},
212 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 212 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
213 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, 213 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"},
214 {a="\'a?A(O[%_%^%.]?[%`%'btjghxdrzsfqklmnywAY]-O)", b="آ"},
214 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 215 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
216 {a="(A)(O%'[%S]-O)", b="آ"},
215 {a="(A)(')(uN?%p*)$", b="aآء%3"}, 217 {a="(A)(')(uN?%p*)$", b="aآء%3"},
216 {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"}, 218 {a="(A)(')(uN?)(%p*%s)", b="aآء%3%4"},
217 {a="(A)(')(iN?%p*)$", b="aآء%3"}, 219 {a="(A)(')(iN?%p*)$", b="aآء%3"},
@@ -328,8 +330,10 @@ hamzaeasy = { -- differences marked below with 'easy'
328 {a="'a'([^uaiUAI])", b="آ%1"}, 330 {a="'a'([^uaiUAI])", b="آ%1"},
329 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 331 {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
330 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, 332 {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"},
333 {a="\'a?A(O[%_%^%.]?[%`%'btjghxdrzsfqklmnywAY]-O)", b="آ"},
331 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, 334 {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"},
332 --easy (begin) 335 --easy (begin)
336 {a="(A)(O%'[%S]-O)", b="ا"},
333 {a="(A)(')(uN?%p*)$", b="aاء%3"}, 337 {a="(A)(')(uN?%p*)$", b="aاء%3"},
334 {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"}, 338 {a="(A)(')(uN?)(%p*%s)", b="aاء%3%4"},
335 {a="(A)(')(iN?%p*)$", b="aاء%3"}, 339 {a="(A)(')(iN?%p*)$", b="aاء%3"},
@@ -886,6 +890,7 @@ punctuation = {
886 890
887null = { 891null = {
888 {a="%|", b=""}, 892 {a="%|", b=""},
893 {a="^%-", b=""},
889 {a="([^0-9])(%-)", b="%1"}, 894 {a="([^0-9])(%-)", b="%1"},
890 {a="O[%S]-O", b=""}, 895 {a="O[%S]-O", b=""},
891 {a="[%^%_](.)", b=">??<%1"} 896 {a="[%^%_](.)", b=">??<%1"}