aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2016-03-25 20:00:36 +0100
committerRobert Alessi <alessi@robertalessi.net>2016-03-25 20:00:36 +0100
commitc3ebe405380117e05e6f518a9adbfe993286ab89 (patch)
tree9096c7e5a169e609e4508a77f0f15877c3f1e600
parent3935c8e7fae78ab7fc6f52a912e6290b91fe2e92 (diff)
downloadarabluatex-c3ebe405380117e05e6f518a9adbfe993286ab89.tar.gz
improved quoting feature in all modes; still documenting
-rw-r--r--arabluatex.dtx129
-rw-r--r--arabluatex_fullvoc.lua10
-rw-r--r--arabluatex_novoc.lua26
-rw-r--r--arabluatex_trans.lua26
-rw-r--r--arabluatex_voc.lua23
5 files changed, 184 insertions, 30 deletions
diff --git a/arabluatex.dtx b/arabluatex.dtx
index eff2045..ce814f9 100644
--- a/arabluatex.dtx
+++ b/arabluatex.dtx
@@ -36,7 +36,7 @@
36\usepackage{dox} 36\usepackage{dox}
37\doxitem{Option}{option}{options} 37\doxitem{Option}{option}{options}
38\usepackage{fontspec,luatextra,realscripts} 38\usepackage{fontspec,luatextra,realscripts}
39\defaultfontfeatures{RawFeature={+liga}} 39\defaultfontfeatures{RawFeature={+liga;+onum;+hlig}}
40\setmainfont{Libertinus Serif} 40\setmainfont{Libertinus Serif}
41\setsansfont{Libertinus Sans} 41\setsansfont{Libertinus Sans}
42\setmonofont[Scale=.9]{Libertinus Mono} 42\setmonofont[Scale=.9]{Libertinus Mono}
@@ -604,21 +604,22 @@ consonants, though three of them are also used as vowels
604% \arb[fullvoc]{ramaW} \arb[trans]{ramaW}, |banaWA| 604% \arb[fullvoc]{ramaW} \arb[trans]{ramaW}, |banaWA|
605% \arb[fullvoc]{banaWA}, \arb[trans]{banaWA}. 605% \arb[fullvoc]{banaWA}, \arb[trans]{banaWA}.
606% \end{quote} 606% \end{quote}
607% 607%
608% \paragraph{\arb[trans]{'alif ma.h_dUfaT} and defective 608% \paragraph{\arb[trans]{'alif ma.h_dUfaT}and defective \arb[trans]{U,
609% \arb[trans]{U, I}} they are written \meta{\_a, \_i \_u}: 609% I}} They are written \meta{\_a, \_i \_u}:
610% \begin{quote} 610% \begin{quote}
611% |al-l_ahu| \arb[voc]{al-l_ahu} \arb[trans]{al-l_ahu}, |'il_ahuN| 611% |al-l_ahu| \arb[voc]{al-l_ahu} \arb[trans]{al-l_ahu}, |'il_ahuN|
612% \arb[voc]{'il_ahuN} \arb[trans]{'il_ahuN}, |al-ra.hm_anu| 612% \arb[voc]{'il_ahuN} \arb[trans]{'il_ahuN}.
613% \arb[voc]{al-ra.hm_anu} \arb[trans]{al-ra.hm_anu}, |l_akin| 613%
614% \arb[voc]{l_akin} \arb[trans]{l_akin}, |h_ahunA| 614% |al-ra.hm_anu| \arb[voc]{al-ra.hm_anu} \arb[trans]{al-ra.hm_anu},
615% \arb[voc]{h_ahunA} \arb[trans]{h_ahunA}, 615% |l_akin| \arb[voc]{l_akin} \arb[trans]{l_akin}, |h_ahunA|
616% |.hunaynu| |bnu| |'is.h_aqa| 616% \arb[voc]{h_ahunA} \arb[trans]{h_ahunA}, |.hunaynu| |bnu|
617% \arb[voc]{.hunaynu bnu 'is.h_aqa} \arb[trans]{\cap{.hunaynu} bnu 617% |'is.h_aqa| \arb[voc]{.hunaynu bnu 'is.h_aqa}
618% \cap{'is.h_aqa}}, |rabb_i| \arb[voc]{rabb_i} \arb[trans]{rabb_i}, 618% \arb[trans]{\cap{.hunaynu} bnu \cap{'is.h_aqa}}, |rabb_i|
619% |al-`A.s_i| \arb[voc]{al-`A.s_i} \arb[trans]{al-\cap{`A.s_i}}. 619% \arb[voc]{rabb_i} \arb[trans]{rabb_i}, |al-`A.s_i|
620% \arb[voc]{al-`A.s_i} \arb[trans]{al-\cap{`A.s_i}}.
620% \end{quote} 621% \end{quote}
621% 622%
622% \paragraph{Silent \arb[novoc]{U}/\arb[novoc]{I}} 623% \paragraph{Silent \arb[novoc]{U}/\arb[novoc]{I}}
623% Some words ending with \arb[voc]{BAT} are usually written 624% Some words ending with \arb[voc]{BAT} are usually written
624% \arb[voc]{BawT} or \arb[voc]{B_aUT} instead of \arb[voc]{BAT}: see 625% \arb[voc]{BawT} or \arb[voc]{B_aUT} instead of \arb[voc]{BAT}: see
@@ -1107,6 +1108,106 @@ consonants, though three of them are also used as vowels
1107% speaking, it acts as a \emph{toggle switch}. If something, in a 1108% speaking, it acts as a \emph{toggle switch}. If something, in a
1108% given mode, is supposed to be visible, \enquote{quoting} hides it; 1109% given mode, is supposed to be visible, \enquote{quoting} hides it;
1109% conversely, if it is supposed not to, it makes it visible. 1110% conversely, if it is supposed not to, it makes it visible.
1111%
1112% As shown above, \enquote{quoting} means inserting one straight
1113% double quote (|"|) \emph{before} the letter that is to be acted
1114% upon. Its effects depend on the mode which is currently selected,
1115% either |novoc|, |voc| or |fullvoc|:---
1116%
1117% \paragraph{\texttt{novoc}} In this mode, \enquote{quoting}
1118% essentially means make visible something that ought not to be so.
1119% \begin{enumerate}[(a)]
1120% \item Quoting a vowel, either short or long, makes the
1121% \arb[trans]{.dammaT}, \arb[trans]{fat.haT} or \arb[trans]{kasraT}
1122% appear above the appropriate consonant:---
1123% \begin{quote}
1124% |`"ullima| |`ilma| |'l-hay'aTi| \arb[novoc]{`"ullima `ilma
1125% 'l-hay'aTi} \arb[trans]{`"ullima `ilma 'l-hay'aTi}, |ya.gz"UA|
1126% \arb[novoc]{ya.gz"UA} \arb[trans]{ya.gz"UA}.
1127% \end{quote}
1128% \item The same applies when \enquote{quoting} the
1129% \arb[trans]{tanwIn}:---
1130% \begin{quote}
1131% |wa-'innA| |sawfa| |tudriku-nA| |'l-manAyA| |muqadd"araT"aN|
1132% \arb[novoc]{wa-'innA sawfa tudriku-nA 'l-manAyA muqadd"araT"aN},
1133% \arb[trans]{wa-'innA sawfa tudriku-nA 'l-manAyA muqadd"araT"aN}.
1134% \end{quote}
1135% \item If no vowel follows the straight double quote, then a
1136% \arb[trans]{sukUn} is put above the preceding consonant:---
1137% \begin{quote}
1138% |qAla isma`"| \arb[novoc]{qAla isma`"} \arb[trans]{qAla isma`"},
1139% |jA'at"| |hinduN| \arb[voc]{jA'at" hinduN} \arb[trans]{jA'at"
1140% hinduN}, |^sabIhuN| |bi-man| |q"u.ti`at"| |qadamA-hu|
1141% \arb[novoc]{^sabIhuN bi-man q"u.ti`at" qadamA-hu}
1142% \arb[trans]{^sabIhuN bi-man q"u.ti`at" qadamA-hu}.
1143% \end{quote}
1144% \item At the commencement of a word, the straight double quote is
1145% interpreted as \arb[trans]{'alifu 'l-wa.sli}:---
1146% \begin{quote}
1147% |wa-"ust"u`mila| \arb[novoc]{wa-"ust"u`mila}
1148% \arb[trans]{wa-"ust"u`mila}, |huwa| |"inhazama| \arb[novoc]{huwa
1149% "inhazama} \arb[trans]{huwa "inhazama}, |al-"intiqA.du|
1150% \arb[novoc]{al-"intiqA.du} \arb[trans]{al-"intiqA.du}.
1151% \end{quote}
1152% \end{enumerate}
1153%
1154% \paragraph{\texttt{voc}}
1155% In accordance with the general rule, in this mode, \enquote{quoting}
1156% makes the vowels and the \arb[trans]{tanwIn} disappear, should this
1157% feature be required for some reason:---
1158% \begin{enumerate}[(a)]
1159% \item Short and long vowels:---
1160% \begin{quote}
1161% |q"Ala q"A'iluN| \arb[voc]{q"Ala q"A'iluN} \arb[trans]{q"Ala
1162% q"A'iluN}, |ibnu 'abI 'u.saybi`aT"a| \arb[voc]{ibnu 'abI
1163% 'u.saybi`aT"a} \arb[trans]{\cap{ibnu} \cap{'abI}
1164% \cap{'u.saybi`aT"a}}.
1165% \end{quote}
1166% \item \arb[trans]{tanwIn}:---
1167% \begin{quote}
1168% |madInaT"aN| \arb[voc]{madInaT"aN} \arb[trans]{madInaT"aN},
1169% |bAb"aN| \arb[voc]{bAb"aN} \arb[trans]{bAb"aN}, |hud"aN_A|
1170% \arb[voc]{hud"aN_A} \arb[trans]{hud"aN_A}, |^say'"iN|
1171% \arb[voc]{^say'"iN} \arb[trans]{^say'"iN}.
1172% \end{quote}
1173% \end{enumerate}
1174% One may more usefully \enquote{quote} the initial vowels to write
1175% the \arb[trans]{hamzaT} above the \arb[trans]{'alif} or insert a
1176% straight double quote after a consonant not followed by a vowel to
1177% make the \arb[trans]{sukUn} appear:---
1178% \begin{enumerate}[(a)]
1179% \item \arb[trans]{'alifu 'l-wa.sli}:---
1180% \begin{quote}
1181% |fI "istisqA'a| \arb[voc]{fI "istisqA'a} \arb[trans]{fI
1182% "istisqA'a}, |wa-"istisqA'u| \arb[voc]{wa-"istisqA'u}
1183% \arb[trans]{wa-"istisqA'u}, |qAla| |"uhrub| |fa-lan| |tuqtala|
1184% \arb[voc]{qAla "uhrub fa-lan tuqtala} \arb[trans]{qAla "uhrub
1185% fa-lan tuqtala}.
1186% \end{quote}
1187% \item \arb[trans]{sukUn}:---
1188% \begin{quote}
1189% |qAla| |uqtul"| |fa-lan| |tuqtala| \arb[voc]{qAla uqtul" fa-lan
1190% tuqtala} \arb[trans]{qAla uqtul" fa-lan tuqtala}, |mA| |jA'at"|
1191% |mini| |imra'aTiN| \arb[voc]{mA jA'at" mini imra'aTiN}
1192% \arb[trans]{mA jA'at" mini imra'aTiN}, |kam"| |qad"| |ma.dat"|
1193% |min"| |laylaTiN| \arb[voc]{kam" qad" ma.dat" min" laylaTiN}
1194% \arb[trans]{kam" qad" ma.dat" min" laylaTiN}.
1195% \end{quote}
1196% \end{enumerate}
1197%
1198% \paragraph{\texttt{fullvoc}}
1199% In this mode, \enquote{quoting} may be used to take away any short
1200% vowel (or \arb[trans]{tanwIn}, as seen above) or any
1201% \arb[trans]{sukUn}:---
1202% \begin{quote}
1203% |al-jamru| |'l-.sayfiyyu| |'lla_dI| |kAna| \verb+bi-q"rAn"|nUna+
1204% \arb[fullvoc]{al-jamru 'l-.sayfiyyu 'lla_dI kAna
1205% \cap{bi-q"rAn"|nUna}} \arb[trans]{al-jamru 'l-.sayfiyyu 'lla_dI
1206% kAna \cap{bi-q"rAn"|nUna}}.
1207% \end{quote}
1208%
1209% \subsubsection{Quoting the \arb[trans]{hamzaT}}
1210% \label{sec:quoting-hamza}
1110% 1211%
1111% 1212%
1112% \StopEventually{} 1213% \StopEventually{}
diff --git a/arabluatex_fullvoc.lua b/arabluatex_fullvoc.lua
index a849cd1..4d18a81 100644
--- a/arabluatex_fullvoc.lua
+++ b/arabluatex_fullvoc.lua
@@ -188,6 +188,16 @@ tanwinfv = {
188 {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 188 {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
189 {a="(iN)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 189 {a="(iN)(%s)([rlmnwy])", b="ٍ%2%3%3"},
190 -- assimilations (end) 190 -- assimilations (end)
191 -- quoted tanwīn (begin)
192 {a="(\"uN)", b=""},
193 {a="(B)(\"aN)", b="%1"},
194 {a="(\"aN)(_A)", b="ى"},
195 {a="(\"aN)(Y)", b="ى"},
196 {a="(T)(\"aN)", b="%1"},
197 {a="(ء)(\"aN)", b="%1"},
198 {a="([^TA])(\"aN)", b="%1ا"},
199 {a="(\"iN)", b=""},
200 -- quoted tanwīn (end)
191 {a="(uN)", b="ٌ"}, 201 {a="(uN)", b="ٌ"},
192 {a="(B)(aN)", b="%1ً"}, 202 {a="(B)(aN)", b="%1ً"},
193 {a="(aN)(_A)", b="ًى"}, 203 {a="(aN)(_A)", b="ًى"},
diff --git a/arabluatex_novoc.lua b/arabluatex_novoc.lua
index 9aa141e..8a5a7ed 100644
--- a/arabluatex_novoc.lua
+++ b/arabluatex_novoc.lua
@@ -38,9 +38,12 @@ trigraphsnv = { -- trigraphs or more
38 {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل"}, 38 {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل"},
39 {a="([%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل"}, 39 {a="([%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل"},
40 -- al- + initial unstable hamza 40 -- al- + initial unstable hamza
41 {a="^(a)l%-(\")([uai])", b="ا%1لٱ%3"},
42 {a="([%s%-])(a)l%-(\")([uai])", b="%1ا%2لٱ%4"},
41 {a="^(a)l%-([uai])", b="ا%1لا%2"}, 43 {a="^(a)l%-([uai])", b="ا%1لا%2"},
42 {a="([%s%-])(a)l%-([uai])", b="%1ا%2لا%3"}, 44 {a="([%s%-])(a)l%-([uai])", b="%1ا%2لا%3"},
43 -- li-/la- + art. + initial unstable hamza is a special orthography 45 -- li-/la- + art. + initial unstable hamza is a special orthography
46 {a="l([ai])%-l%-(\")([uai])", b="ل%1لٱ%3"},
44 {a="l([ai])%-l%-([uai])", b="ل%1لا%2"}, 47 {a="l([ai])%-l%-([uai])", b="ل%1لا%2"},
45 -- al- + lunar consonant (i.e. what remains) 48 -- al- + lunar consonant (i.e. what remains)
46 {a="^(a)l%-", b="ا%1ل"}, 49 {a="^(a)l%-", b="ا%1ل"},
@@ -58,6 +61,7 @@ trigraphsnv = { -- trigraphs or more
58 -- li-/la + assim. art. + solar consonant is a special orthography 61 -- li-/la + assim. art. + solar consonant is a special orthography
59 {a="l([ai])%-([%_%^%.]?[tdrzsn])%-([%_%^%.]?[tdrzsn])", b="ل%1ل%3"}, 62 {a="l([ai])%-([%_%^%.]?[tdrzsn])%-([%_%^%.]?[tdrzsn])", b="ل%1ل%3"},
60 -- art. with waṣla + initial unstable hamza 63 -- art. with waṣla + initial unstable hamza
64 {a="'l%-(\")([uai])", b="الٱ%2"},
61 {a="'l%-([uai])", b="الا%1"}, 65 {a="'l%-([uai])", b="الا%1"},
62 -- art. with waṣla + lunar consonant (i.e. what remains) 66 -- art. with waṣla + lunar consonant (i.e. what remains)
63 {a="'l%-", b="ال"}, 67 {a="'l%-", b="ال"},
@@ -86,7 +90,17 @@ tanwinnv = {
86-- {a="(ء)(aN)(%s)([rlmnwy])", b="%1%3%4%4"}, 90-- {a="(ء)(aN)(%s)([rlmnwy])", b="%1%3%4%4"},
87-- {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ا%3%4%4"}, 91-- {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ا%3%4%4"},
88-- {a="(iN)(%s)([rlmnwy])", b="|%2%3%3"}, 92-- {a="(iN)(%s)([rlmnwy])", b="|%2%3%3"},
89 --assimilations (end) 93 -- assimilations (end)
94 -- "quoted" tanwīn (begin)
95 {a="(\"uN)", b="ٌ"},
96 {a="(B)(\"aN)", b="%1ً"},
97 {a="(\"aN)(_A)", b="ًى"},
98 {a="(\"aN)(Y)", b="ًى"},
99 {a="(T)(\"aN)", b="%1ً"},
100 {a="(ء)(\"aN)", b="%1ً"},
101 {a="([^TA])(\"aN)", b="%1ًا"},
102 {a="(\"iN)", b="ٍ"},
103 -- "quoted" tanwīn (end)
90 {a="(uN)", b=""}, 104 {a="(uN)", b=""},
91 {a="(B)(aN)", b="%1"}, 105 {a="(B)(aN)", b="%1"},
92 {a="(aN)(_A)", b="ى"}, 106 {a="(aN)(_A)", b="ى"},
@@ -94,10 +108,18 @@ tanwinnv = {
94 {a="(T)(aN)", b="%1"}, 108 {a="(T)(aN)", b="%1"},
95 {a="(ء)(aN)", b="%1"}, 109 {a="(ء)(aN)", b="%1"},
96 {a="([^TA])(aN)", b="%1ا"}, 110 {a="([^TA])(aN)", b="%1ا"},
97 {a="(iN)", b=""} 111 {a="(iN)", b=""},
112 -- initial straight double quote gives a connective ʾalif. This has
113 -- nothing to do with the tanwīn, but I put it here for time being.
114 {a="^\"", b="ٱ"},
115 {a="([%s%-])\"", b="%1ٱ"}
98} 116}
99 117
100longvnv = { 118longvnv = {
119 {a="\"A", b="َا"},
120 {a="\"U", b="ُو"},
121 {a="\"I", b="ِي"},
122 {a="\"Y", b="aى"},
101 {a="A", b="ا"}, 123 {a="A", b="ا"},
102 {a="U", b="و"}, 124 {a="U", b="و"},
103 {a="I", b="ي"}, 125 {a="I", b="ي"},
diff --git a/arabluatex_trans.lua b/arabluatex_trans.lua
index 684977a..46dbc33 100644
--- a/arabluatex_trans.lua
+++ b/arabluatex_trans.lua
@@ -158,20 +158,20 @@ tanwintrdmg = {
158 {a="uN", b="un"}, 158 {a="uN", b="un"},
159 {a="(aN)(_A)", b="an"}, 159 {a="(aN)(_A)", b="an"},
160 {a="(aN)(Y)", b="an"}, 160 {a="(aN)(Y)", b="an"},
161 {a="(T)(aN)", b="tan"}, 161 {a="(T)(\"?aN)", b="tan"},
162 {a="([^TA])(aN)", b="%1an"}, 162 {a="([^TA])(\"?aN)", b="%1an"},
163 {a="iN", b="in"} 163 {a="iN", b="in"}
164} 164}
165 165
166digraphstrdmg = { 166digraphstrdmg = {
167 {a="([uai]%-)([uai])", b="%1'"}, -- hyphen + initial alif without hamza 167 {a="([uai]%-)(\"?[uai])", b="%1'"}, -- hyphen + initial alif without hamza
168 {a="^([uai])", b="%1"}, -- initial alif without hamza 168 {a="^(\"?[uai])", b="%1"}, -- initial alif without hamza
169-- {a="([%_]?[uaiUAIY])(%s)([uai])", b="%1%2'"}, -- initial alif without hamza 169-- {a="([%_]?[uaiUAIY])(%s)([uai])", b="%1%2'"}, -- initial alif without hamza
170 {a="(aW)(%s)([uai])", b="awu%2%3"}, 170 {a="(aW)(%s)(\"?[uai])", b="awu%2%3"},
171 {a="([^%_][uai])(%s)([uai])", b="%1%2'"}, 171 {a="([^%_][uai])(%s)(\"?[uai])", b="%1%2'"},
172 {a="([%_]?[AYa])(%s)([uai])", b="a%2'"}, 172 {a="([%_]?[AYa])(%s)(\"?[uai])", b="a%2'"},
173 {a="([%_]?[Uu])(%s)([uai])", b="u%2'"}, 173 {a="([%_]?[Uu])(%s)(\"?[uai])", b="u%2'"},
174 {a="([%_]?[Ii])(%s)([uai])", b="i%2'"}, 174 {a="([%_]?[Ii])(%s)(\"?[uai])", b="i%2'"},
175 -- shorten long vowels preceding ʾalif conjunctionis 175 -- shorten long vowels preceding ʾalif conjunctionis
176 {a="(U)(A)", b="U"}, 176 {a="(U)(A)", b="U"},
177 {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awu%2%3"}, 177 {a="(aW)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="awu%2%3"},
@@ -179,7 +179,7 @@ digraphstrdmg = {
179 {a="([%_]?[Uu])(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="u%2%3"}, 179 {a="([%_]?[Uu])(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="u%2%3"},
180 {a="([%_]?[Ii])(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="i%2%3"}, 180 {a="([%_]?[Ii])(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="i%2%3"},
181 {a="%-%-", b=""}, 181 {a="%-%-", b=""},
182 {a="T([^uai])", b="%1"}, 182-- {a="T([^uai])", b="%1"},
183 {a="T(%s)", b="%1"}, 183 {a="T(%s)", b="%1"},
184 {a="T$", b=""}, 184 {a="T$", b=""},
185 {a="_t", b="ṯ"}, 185 {a="_t", b="ṯ"},
@@ -359,8 +359,8 @@ tanwintrloc = {
359 {a="uN", b="un"}, 359 {a="uN", b="un"},
360 {a="(aN)(_A)", b="an"}, 360 {a="(aN)(_A)", b="an"},
361 {a="(aN)(Y)", b="an"}, 361 {a="(aN)(Y)", b="an"},
362 {a="(T)(aN)", b="tan"}, 362 {a="(T)(\"?aN)", b="tan"},
363 {a="([^TA])(aN)", b="%1an"}, 363 {a="([^TA])(\"?aN)", b="%1an"},
364 {a="iN", b="in"} 364 {a="iN", b="in"}
365} 365}
366 366
@@ -372,7 +372,7 @@ digraphstrloc = {
372 {a="uww", b="ūw"}, 372 {a="uww", b="ūw"},
373 {a="iyy", b="īy"}, 373 {a="iyy", b="īy"},
374 {a="([tkdsg])(h)", b="%1'%2"}, 374 {a="([tkdsg])(h)", b="%1'%2"},
375 {a="T([^uai])", b="h%1"}, 375-- {a="T([^uai])", b="h%1"},
376 {a="T$", b="h"}, 376 {a="T$", b="h"},
377 {a="T(%W)", b="h%1"}, 377 {a="T(%W)", b="h%1"},
378 {a="_t", b="th"}, 378 {a="_t", b="th"},
diff --git a/arabluatex_voc.lua b/arabluatex_voc.lua
index ecdb067..f40c405 100644
--- a/arabluatex_voc.lua
+++ b/arabluatex_voc.lua
@@ -162,9 +162,12 @@ trigraphs = { -- trigraphs or more
162 {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل%2"}, 162 {a="^(a)([%_%^%.]?[tdrzsn])%-", b="ا%1ل%2"},
163 {a="([%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"}, 163 {a="([%s%-])(a)([%_%^%.]?[tdrzsn])%-", b="%1ا%2ل%3"},
164 -- al- + initial unstable hamza 164 -- al- + initial unstable hamza
165 {a="^(a)l%-(\")([uai])", b="ا%1لٱ%3"},
166 {a="([%s%-])(a)l%-(\")([uai])", b="%1ا%2لٱ%4"},
165 {a="^(a)l%-([uai])", b="ا%1لا%2"}, 167 {a="^(a)l%-([uai])", b="ا%1لا%2"},
166 {a="([%s%-])(a)l%-([uai])", b="%1ا%2لا%3"}, 168 {a="([%s%-])(a)l%-([uai])", b="%1ا%2لا%3"},
167 -- li-/la- + art. + initial unstable hamza is a special orthography 169 -- li-/la- + art. + initial unstable hamza is a special orthography
170 {a="l([ai])%-l%-(\")([uai])", b="ل%1لٱ%3"},
168 {a="l([ai])%-l%-([uai])", b="ل%1لا%2"}, 171 {a="l([ai])%-l%-([uai])", b="ل%1لا%2"},
169 -- al- + lunar consonant (i.e. what remains) 172 -- al- + lunar consonant (i.e. what remains)
170 {a="^(a)l%-", b="ا%1ل"}, 173 {a="^(a)l%-", b="ا%1ل"},
@@ -186,6 +189,7 @@ trigraphs = { -- trigraphs or more
186 -- li-/la + assim. art. + solar consonant is a special orthography 189 -- li-/la + assim. art. + solar consonant is a special orthography
187 {a="l([ai])%-([%_%^%.]?[tdrzsn])%-([%_%^%.]?[tdrzsn])", b="ل%1ل%3%3"}, 190 {a="l([ai])%-([%_%^%.]?[tdrzsn])%-([%_%^%.]?[tdrzsn])", b="ل%1ل%3%3"},
188 -- art. with waṣla + initial unstable hamza 191 -- art. with waṣla + initial unstable hamza
192 {a="'l%-(\")([uai])", b="الٱ%2"},
189 {a="'l%-([uai])", b="الا%1"}, 193 {a="'l%-([uai])", b="الا%1"},
190 -- art. with waṣla + lunar consonant (i.e. what remains) 194 -- art. with waṣla + lunar consonant (i.e. what remains)
191 {a="'l%-", b="ال"}, 195 {a="'l%-", b="ال"},
@@ -217,6 +221,16 @@ tanwin = {
217 {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 221 {a="([^TA])(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
218 {a="(iN)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 222 {a="(iN)(%s)([rlmnwy])", b="ٍ%2%3%3"},
219 -- assimilations (end) 223 -- assimilations (end)
224 -- quoted tanwīn (begin)
225 {a="(\"uN)", b=""},
226 {a="(B)(\"aN)", b="%1"},
227 {a="(\"aN)(_A)", b="ى"},
228 {a="(\"aN)(Y)", b="ى"},
229 {a="(T)(\"aN)", b="%1"},
230 {a="(ء)(\"aN)", b="%1"},
231 {a="([^TA])(\"aN)", b="%1ا"},
232 {a="(\"iN)", b=""},
233 -- quoted tanwīn (end)
220 {a="(uN)", b="ٌ"}, 234 {a="(uN)", b="ٌ"},
221 {a="(B)(aN)", b="%1ً"}, 235 {a="(B)(aN)", b="%1ً"},
222 {a="(aN)(_A)", b="ًى"}, 236 {a="(aN)(_A)", b="ًى"},
@@ -228,6 +242,9 @@ tanwin = {
228} 242}
229 243
230digraphs = { 244digraphs = {
245 -- initial straight double quote gives a connective ʾalif
246 {a="^\"[uai]", b="ٱ"},
247 {a="([%s%-])\"[uai]", b="%1ٱ"},
231 {a="(aW)(%s)([uai])", b="awuا%2%3"}, 248 {a="(aW)(%s)([uai])", b="awuا%2%3"},
232 {a="(%-)([uai])", b="%1ا%2"}, -- hyphen + initial alif without hamza 249 {a="(%-)([uai])", b="%1ا%2"}, -- hyphen + initial alif without hamza
233 {a="^([uai])", b="ا%1"}, -- initial alif without hamza 250 {a="^([uai])", b="ا%1"}, -- initial alif without hamza
@@ -320,10 +337,14 @@ single = {
320} 337}
321 338
322longv = { 339longv = {
340 {a="\"A", b="ا"},
341 {a="\"U", b="و"},
342 {a="\"I", b="ي"},
343 {a="\"Y", b="ى"},
323 {a="A", b="َا"}, 344 {a="A", b="َا"},
324 {a="U", b="ُو"}, 345 {a="U", b="ُو"},
325 {a="I", b="ِي"}, 346 {a="I", b="ِي"},
326 {a="Y", b="aى"}, 347 {a="Y", b="aى"}
327} 348}
328 349
329shortv = { 350shortv = {