aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.md8
-rw-r--r--LICENSE17
-rw-r--r--README.md130
-rw-r--r--README.tex81
-rw-r--r--about.html128
-rw-r--r--arabluatex.dtx1067
-rw-r--r--arabluatex.el55
-rw-r--r--arabluatex.ins66
-rw-r--r--arabluatex.lua228
-rw-r--r--arabluatex_fullvoc.lua67
-rw-r--r--arabluatex_novoc.lua45
-rw-r--r--arabluatex_trans.lua203
-rw-r--r--arabluatex_voc.lua79
-rw-r--r--makefile53
-rw-r--r--samples/al-Jahiz.tex5
-rw-r--r--samples/exporting.tex2
16 files changed, 1342 insertions, 892 deletions
diff --git a/AUTHORS.md b/AUTHORS.md
new file mode 100644
index 0000000..2d8eeae
--- /dev/null
+++ b/AUTHORS.md
@@ -0,0 +1,8 @@
1Author of the `arabluatex` package
2==================================
3
4Robert Alessi
5: Personal email: <alessi@robertalessi.net>
6: Institutional email: <robert.alessi@cnrs.fr>
7: Affiliation: [UMR 8167 Orient & Méditerranée (Paris, France)](https://www.orient-mediterranee.com)
8: More information: <https://ctan.org/pkg/arabluatex> or <https://sr.ht/~ralessi/arabluatex>
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..dc34776
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,17 @@
1arabluatex -- ArabTeX for LuaLaTeX
2----------------------------------
3
4Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
5Robert Alessi <alessi@robertalessi.net>
6
7Permission to use, copy, modify, and distribute this software for any
8purpose with or without fee is hereby granted, provided that the above
9copyright notice and this permission notice appear in all copies.
10
11THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/README.md b/README.md
index 5cd4118..eba493f 100644
--- a/README.md
+++ b/README.md
@@ -1,55 +1,47 @@
1--- 1# Overview
2author: 2
3- Robert Alessi 3This package provides for [LuaLaTeX](https://luatex.org) an
4title: 'The arabluatex package – README file' 4[ArabTeX](https://ctan.org/pkg/arabtex)-like interface to generate
5--- 5Arabic writing from an [ascii]{.smallcaps} transliteration. It is
6 6particularly well-suited for complex documents such as technical
7Overview 7documents or critical editions where a lot of left-to-right commands
8======== 8intertwine with Arabic writing. arabluatex is able to process any
9 9ArabTeX input notation. Its output can be set in the same modes of
10This package provides for [LuaLaTeX](http://luatex.org) an 10vocalization as ArabTeX, or in different roman transliterations. It
11[ArabTeX](http://ctan.org/pkg/arabtex)-like interface to generate Arabic 11further allows many typographical refinements. It can also operate with
12writing from an <span style="font-variant:small-caps;">ascii</span> 12the [ekdosis](https://ctan.org/pkg/ekdosis) package to produce from
13transliteration. It is particularly well-suited for complex documents 13`.tex` source files, in addition to printed books, `TEI xml` compliant
14such as technical documents or critical editions where a lot of 14critical editions and/or lexicons that can be searched, analyzed and
15left-to-right commands intertwine with Arabic writing. arabluatex is 15correlated in various ways.
16able to process any ArabTeX input notation. Its output can be set in the 16
17same modes of vocalization as ArabTeX, or in different roman 17# License and disclamer
18transliterations. It further allows many typographical refinements. It 18
19will eventually interact with some other packages yet to come to produce 19ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
20from `.tex` source files, in addition to printed books, `TEI xml` 20
21compliant critical editions and/or lexicons that can be searched, 21Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert Alessi
22analyzed and correlated in various ways. 22\<`alessi@robertalessi.net`\>
23 23
24License and disclamer 24Permission to use, copy, modify, and distribute this software for any
25===================== 25purpose with or without fee is hereby granted, provided that the above
26 26copyright notice and this permission notice appear in all copies.
27ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX 27
28 28THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
29Copyright ⓒ 2016–2020 Robert Alessi 29WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
30OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
31FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
32DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
33IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
34OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30 35
31Please send error reports and suggestions for improvements to Robert 36Please send error reports and suggestions for improvements to Robert
32Alessi: 37Alessi:
33 38
34- email: <alessi@robertalessi.net> 39- email: <alessi@robertalessi.net>
35 40
36- website: <http://www.robertalessi.net/arabluatex> 41- website: <https://sr.ht/~ralessi/arabluatex>
37 42
38- comments, feature requests, bug reports: 43- comments, feature requests, bug reports:
39 <https://gitlab.com/ralessi/arabluatex/issues> 44 <https://todo.sr.ht/~ralessi/arabluatex>
40
41This program is free software: you can redistribute it and/or modify it
42under the terms of the GNU General Public License as published by the
43Free Software Foundation, either version 3 of the License, or (at your
44option) any later version.
45
46This program is distributed in the hope that it will be useful, but
47WITHOUT ANY WARRANTY; without even the implied warranty of
48MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
49Public License for more details.
50
51You should have received a copy of the GNU General Public License along
52with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.
53 45
54This release of arabluatex consists of the following source files: 46This release of arabluatex consists of the following source files:
55 47
@@ -67,19 +59,7 @@ This release of arabluatex consists of the following source files:
67 59
68- `arabluatex_trans.lua` 60- `arabluatex_trans.lua`
69 61
70License applicable to the documentation 62# Installation
71---------------------------------------
72
73Copyright ⓒ 2016–2020 Robert Alessi
74
75The documentation file `arabluatex.pdf` that is generated from the
76`arabluatex.dtx` source is licensed under the Creative Commons
77Attribution-ShareAlike 4.0 International License. To view a copy of this
78license, visit <http://creativecommons.org/licenses/by-sa/4.0/> or send
79a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
80
81Installation
82============
83 63
841. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty` 641. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty`
85 file; 65 file;
@@ -104,43 +84,41 @@ Installation
104 84
1053. Additionally, those who use emacs with AUCTeX may copy 853. Additionally, those who use emacs with AUCTeX may copy
106 `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory. 86 `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory.
107 This will enable the appropriate hooks for ArabLuaTeX in AUCTeX. 87 This will enable the appropriate hooks for ArabLuaTeX in AUCTeX.
108 88
109Development, Git Repository 89# Development, Git Repository
110===========================
111 90
112Browse the code 91## Browse the code
113---------------
114 92
115You can browse ArabLuaTeX repository on the web: 93You can browse ArabLuaTeX repository on the web:
116<http://git.robertalessi.net/arabluatex> 94<http://git.robertalessi.net/arabluatex>\
95or\
96<https://sr.ht/~ralessi/arabluatex>
117 97
118From this page, you can download all the releases of ArabLuaTeX. For 98From this page, you can download all the releases of ArabLuaTeX. For
119instructions on how to install ArabLuaTeX, please see above. 99instructions on how to install ArabLuaTeX, please see above.
120 100
121Comments, Feature requests, Bug Reports 101## Comments, Feature requests, Bug Reports
122---------------------------------------
123 102
124<https://gitlab.com/ralessi/arabluatex/issues> 103<https://todo.sr.ht/~ralessi/arabluatex>
125 104
126Download the repository 105## Download the repository
127-----------------------
128 106
129ArabLuaTeX development is facilitated by git, a distributed version 107ArabLuaTeX development is facilitated by git, a distributed version
130control system. You will need to install git (most GNU/Linux 108control system. You will need to install git (most Unix/Linux
131distributions package it in their repositories). 109distributions package it in their repositories).
132 110
133Use this command to download the repository 111Use this command to download the repository
134 112
135 git clone http://git.robertalessi.net/arabluatex 113 git clone https://git.sr.ht/~ralessi/arabluatex
136 114
137A new directory named arabluatex will have been created, containing 115A new directory named arabluatex will have been created, containing
138ArabLuaTeX. 116ArabLuaTeX.
139 117
140Git hosting 118## Git hosting
141-----------
142 119
143Make an account on <https://gitlab.com> and navigate (while logged in) 120Make an account on <https://sr.ht> and navigate (while logged in) to
144to <https://gitlab.com/ralessi/arabluatex>. Click *Fork* and you will 121<https://git.sr.ht/~ralessi/arabluatex>. Click *Clone repo to your
145have in your account your own repository of `arabluatex` where you will 122account* and you will have in your account your own repository of
146be able to make whatever changes you like to. 123`arabluatex` where you will be able to make whatever changes you like
124to.
diff --git a/README.tex b/README.tex
index 5d48716..dd413d3 100644
--- a/README.tex
+++ b/README.tex
@@ -1,6 +1,6 @@
1% The arabluatex package -- README file 1% The arabluatex package -- README file
2% Robert Alessi 2% Robert Alessi
3% March 18, 2017 3% January 29, 2023
4\documentclass{article} 4\documentclass{article}
5 5
6\usepackage{fontspec} 6\usepackage{fontspec}
@@ -16,48 +16,47 @@
16 16
17\section*{Overview} 17\section*{Overview}
18\label{sec:overview} 18\label{sec:overview}
19This package provides for \href{http://luatex.org}{Lua\LaTeX} an 19This package provides for \href{https://luatex.org}{Lua\LaTeX}
20\href{http://ctan.org/pkg/arabtex}{Arab\TeX}-like interface to 20an \href{https://ctan.org/pkg/arabtex}{Arab\TeX}-like interface to
21generate Arabic writing from an \textsc{ascii} transliteration. It is 21generate Arabic writing from an \textsc{ascii} transliteration. It is
22particularly well-suited for complex documents such as technical 22particularly well-suited for complex documents such as technical
23documents or critical editions where a lot of left-to-right commands 23documents or critical editions where a lot of left-to-right commands
24intertwine with Arabic writing. arabluatex is able to process any 24intertwine with Arabic writing. arabluatex is able to process any
25Arab\TeX\ input notation. Its output can be set in the same modes of 25Arab\TeX\ input notation. Its output can be set in the same modes of
26vocalization as Arab\TeX, or in different roman transliterations. It 26vocalization as Arab\TeX, or in different roman transliterations. It
27further allows many typographical refinements. It will eventually 27further allows many typographical refinements. It can also operate
28interact with some other packages yet to come to produce from 28with the \href{https://ctan.org/pkg/ekdosis}{ekdosis} package to
29\verb|.tex| source files, in addition to printed books, \texttt{TEI 29produce from \verb|.tex| source files, in addition to printed books,
30 xml} compliant critical editions and/or lexicons that can be 30\texttt{TEI xml} compliant critical editions and/or lexicons that can
31searched, analyzed and correlated in various ways. 31be searched, analyzed and correlated in various ways.
32 32
33\section*{License and disclamer} 33\section*{License and disclamer}
34ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 34ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
35 35
36Copyright ⓒ 2016--2020 Robert Alessi 36Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
37Robert Alessi <\verb|alessi@robertalessi.net|>
38
39Permission to use, copy, modify, and distribute this software for any
40purpose with or without fee is hereby granted, provided that the above
41copyright notice and this permission notice appear in all copies.
42
43THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
44WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
45MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
46ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
47WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
48ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
49OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
37 50
38Please send error reports and suggestions for improvements to Robert 51Please send error reports and suggestions for improvements to Robert
39Alessi: 52Alessi:
40\begin{itemize} 53\begin{itemize}
41\item email: \href{mailto:alessi@robertalessi.net}{alessi@robertalessi.net} 54\item email: \href{mailto:alessi@robertalessi.net}{alessi@robertalessi.net}
42\item website: \url{http://www.robertalessi.net/arabluatex} 55\item website: \url{https://sr.ht/~ralessi/arabluatex}
43\item comments, feature requests, bug reports: 56\item comments, feature requests, bug reports:
44 \url{https://gitlab.com/ralessi/arabluatex/issues} 57 \url{https://todo.sr.ht/~ralessi/arabluatex}
45\end{itemize} 58\end{itemize}
46 59
47This program is free software: you can redistribute it and/or modify
48it under the terms of the GNU General Public License as published by
49the Free Software Foundation, either version 3 of the License, or
50(at your option) any later version.
51
52This program is distributed in the hope that it will be useful, but
53WITHOUT ANY WARRANTY; without even the implied warranty of
54MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
55General Public License for more details.
56
57You should have received a copy of the GNU General Public License
58along with this program. If not, see
59<http://www.gnu.org/licenses/>.
60
61This release of arabluatex consists of the following 60This release of arabluatex consists of the following
62source files: 61source files:
63\begin{itemize} 62\begin{itemize}
@@ -70,17 +69,6 @@ source files:
70\item \verb|arabluatex_trans.lua| 69\item \verb|arabluatex_trans.lua|
71\end{itemize} 70\end{itemize}
72 71
73\subsection*{License applicable to the documentation}
74\label{sec:documentation-license}
75Copyright ⓒ 2016--2020 Robert Alessi
76
77The documentation file \verb|arabluatex.pdf| that is generated from
78the \verb|arabluatex.dtx| source is licensed under the Creative
79Commons Attribution-ShareAlike 4.0 International License. To view a
80copy of this license, visit
81\url{http://creativecommons.org/licenses/by-sa/4.0/} or send a letter
82to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
83
84\section*{Installation} 72\section*{Installation}
85\label{sec:installation} 73\label{sec:installation}
86\begin{enumerate} 74\begin{enumerate}
@@ -111,36 +99,37 @@ to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
111\label{sec:browse-code} 99\label{sec:browse-code}
112 100
113You can browse ArabLua\TeX\ repository on the web: 101You can browse ArabLua\TeX\ repository on the web:
114\url{http://git.robertalessi.net/arabluatex} 102\url{http://git.robertalessi.net/arabluatex}\\
103or\\
104\url{https://sr.ht/~ralessi/arabluatex}
115 105
116From this page, you can download all the releases of ArabLua\TeX. For 106From this page, you can download all the releases of ArabLua\TeX. For
117instructions on how to install ArabLua\TeX, please see above. 107instructions on how to install ArabLua\TeX, please see above.
118 108
119\subsection*{Comments, Feature requests, Bug Reports} 109\subsection*{Comments, Feature requests, Bug Reports}
120\label{sec:comm-feat-requ} 110\label{sec:comm-feat-requ}
121\url{https://gitlab.com/ralessi/arabluatex/issues} 111\url{https://todo.sr.ht/~ralessi/arabluatex}
122 112
123\subsection*{Download the repository} 113\subsection*{Download the repository}
124\label{sec:download-repository} 114\label{sec:download-repository}
125ArabLua\TeX\ development is facilitated by git, a distributed version 115ArabLua\TeX\ development is facilitated by git, a distributed version
126control system. You will need to install git (most GNU/Linux 116control system. You will need to install git (most Unix/Linux
127distributions package it in their repositories). 117distributions package it in their repositories).
128 118
129Use this command to download the repository 119Use this command to download the repository
130\begin{verbatim} 120\begin{verbatim}
131git clone http://git.robertalessi.net/arabluatex 121git clone https://git.sr.ht/~ralessi/arabluatex
132\end{verbatim} 122\end{verbatim}
133 123
134
135A new directory named arabluatex will have been created, containing 124A new directory named arabluatex will have been created, containing
136ArabLuaTeX. 125ArabLuaTeX.
137 126
138\subsection*{Git hosting} 127\subsection*{Git hosting}
139\label{sec:git-hosting} 128\label{sec:git-hosting}
140Make an account on \url{https://gitlab.com} and navigate (while 129Make an account on \url{https://sr.ht} and navigate (while logged in)
141logged in) to \url{https://gitlab.com/ralessi/arabluatex}. Click 130to \url{https://git.sr.ht/~ralessi/arabluatex}. Click \emph{Clone repo
142\emph{Fork} and you will have in your account your own repository of 131 to your account} and you will have in your account your own
143\verb|arabluatex| where you will be able to make whatever changes you 132repository of \verb|arabluatex| where you will be able to make
144like to. 133whatever changes you like to.
145 134
146\end{document} \ No newline at end of file 135\end{document} \ No newline at end of file
diff --git a/about.html b/about.html
index a846bab..d5b5236 100644
--- a/about.html
+++ b/about.html
@@ -1,33 +1,47 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 1<h1 class="unnumbered" id="sec:overview">Overview</h1>
2<html xmlns="http://www.w3.org/1999/xhtml"> 2<p>This package provides for <a href="https://luatex.org">LuaLaTeX</a>
3<head> 3an <a href="https://ctan.org/pkg/arabtex">ArabTeX</a>-like interface to
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4generate Arabic writing from an <span class="smallcaps">ascii</span>
5 <meta http-equiv="Content-Style-Type" content="text/css" /> 5transliteration. It is particularly well-suited for complex documents
6 <meta name="generator" content="pandoc" /> 6such as technical documents or critical editions where a lot of
7 <meta name="author" content="Robert Alessi" /> 7left-to-right commands intertwine with Arabic writing. arabluatex is
8 <title>The arabluatex package – README file</title> 8able to process any ArabTeX input notation. Its output can be set in the
9 <style type="text/css">code{white-space: pre;}</style> 9same modes of vocalization as ArabTeX, or in different roman
10</head> 10transliterations. It further allows many typographical refinements. It
11<body> 11can also operate with the <a
12<div id="header"> 12href="https://ctan.org/pkg/ekdosis">ekdosis</a> package to produce from
13<h1 class="title">The arabluatex package – README file</h1> 13<code>.tex</code> source files, in addition to printed books,
14<h2 class="author">Robert Alessi</h2> 14<code>TEI xml</code> compliant critical editions and/or lexicons that
15</div> 15can be searched, analyzed and correlated in various ways.</p>
16<h1 id="sec:overview" class="unnumbered">Overview</h1> 16<h1 class="unnumbered" id="license-and-disclamer">License and
17<p>This package provides for <a href="http://luatex.org">LuaLaTeX</a> an <a href="http://ctan.org/pkg/arabtex">ArabTeX</a>-like interface to generate Arabic writing from an <span style="font-variant: small-caps;">ascii</span> transliteration. It is particularly well-suited for complex documents such as technical documents or critical editions where a lot of left-to-right commands intertwine with Arabic writing. arabluatex is able to process any ArabTeX input notation. Its output can be set in the same modes of vocalization as ArabTeX, or in different roman transliterations. It further allows many typographical refinements. It will eventually interact with some other packages yet to come to produce from <code>.tex</code> source files, in addition to printed books, <code>TEI xml</code> compliant critical editions and/or lexicons that can be searched, analyzed and correlated in various ways.</p> 17disclamer</h1>
18<h1 id="license-and-disclamer" class="unnumbered">License and disclamer</h1>
19<p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p> 18<p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p>
20<p>Copyright ⓒ 2016–2020 Robert Alessi</p> 19<p>Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert
21<p>Please send error reports and suggestions for improvements to Robert Alessi:</p> 20Alessi &lt;<code>alessi@robertalessi.net</code>&gt;</p>
21<p>Permission to use, copy, modify, and distribute this software for any
22purpose with or without fee is hereby granted, provided that the above
23copyright notice and this permission notice appear in all copies.</p>
24<p>THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
25WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
26OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
27FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
28DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
29IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
30OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
31SOFTWARE.</p>
32<p>Please send error reports and suggestions for improvements to Robert
33Alessi:</p>
22<ul> 34<ul>
23<li><p>email: <a href="mailto:alessi@robertalessi.net">alessi@robertalessi.net</a></p></li> 35<li><p>email: <a
24<li><p>website: <a href="http://www.robertalessi.net/arabluatex" class="uri">http://www.robertalessi.net/arabluatex</a></p></li> 36href="mailto:alessi@robertalessi.net">alessi@robertalessi.net</a></p></li>
25<li><p>comments, feature requests, bug reports: <a href="https://gitlab.com/ralessi/arabluatex/issues" class="uri">https://gitlab.com/ralessi/arabluatex/issues</a></p></li> 37<li><p>website: <a href="https://sr.ht/~ralessi/arabluatex"
38class="uri">https://sr.ht/~ralessi/arabluatex</a></p></li>
39<li><p>comments, feature requests, bug reports: <a
40href="https://todo.sr.ht/~ralessi/arabluatex"
41class="uri">https://todo.sr.ht/~ralessi/arabluatex</a></p></li>
26</ul> 42</ul>
27<p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> 43<p>This release of arabluatex consists of the following source
28<p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> 44files:</p>
29<p>You should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</p>
30<p>This release of arabluatex consists of the following source files:</p>
31<ul> 45<ul>
32<li><p><code>arabluatex.ins</code></p></li> 46<li><p><code>arabluatex.ins</code></p></li>
33<li><p><code>arabluatex.dtx</code></p></li> 47<li><p><code>arabluatex.dtx</code></p></li>
@@ -37,13 +51,14 @@
37<li><p><code>arabluatex_novoc.lua</code></p></li> 51<li><p><code>arabluatex_novoc.lua</code></p></li>
38<li><p><code>arabluatex_trans.lua</code></p></li> 52<li><p><code>arabluatex_trans.lua</code></p></li>
39</ul> 53</ul>
40<h2 id="sec:documentation-license" class="unnumbered">License applicable to the documentation</h2> 54<h1 class="unnumbered" id="sec:installation">Installation</h1>
41<p>Copyright ⓒ 2016–2020 Robert Alessi</p>
42<p>The documentation file <code>arabluatex.pdf</code> that is generated from the <code>arabluatex.dtx</code> source is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit <a href="http://creativecommons.org/licenses/by-sa/4.0/" class="uri">http://creativecommons.org/licenses/by-sa/4.0/</a> or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</p>
43<h1 id="sec:installation" class="unnumbered">Installation</h1>
44<ol> 55<ol>
45<li><p>Run <code>'lualatex arabluatex.ins'</code> to produce the <code>arabluatex.sty</code> file;</p></li> 56<li><p>Run <code>'lualatex arabluatex.ins'</code> to produce the
46<li><p>To finish the installation you have to move the following files into a directory where LaTeX can find them. See the FAQ on <code>texfaq.org</code> at <a href="https://texfaq.org/FAQ-inst-wlcf" class="uri">https://texfaq.org/FAQ-inst-wlcf</a> for more on this:</p> 57<code>arabluatex.sty</code> file;</p></li>
58<li><p>To finish the installation you have to move the following files
59into a directory where LaTeX can find them. See the FAQ on
60<code>texfaq.org</code> at <a href="https://texfaq.org/FAQ-inst-wlcf"
61class="uri">https://texfaq.org/FAQ-inst-wlcf</a> for more on this:</p>
47<ul> 62<ul>
48<li><p><code>arabluatex.sty</code></p></li> 63<li><p><code>arabluatex.sty</code></p></li>
49<li><p><code>arabluatex-patch.sty</code></p></li> 64<li><p><code>arabluatex-patch.sty</code></p></li>
@@ -53,20 +68,39 @@
53<li><p><code>arabluatex_novoc.lua</code></p></li> 68<li><p><code>arabluatex_novoc.lua</code></p></li>
54<li><p><code>arabluatex_trans.lua</code></p></li> 69<li><p><code>arabluatex_trans.lua</code></p></li>
55</ul></li> 70</ul></li>
56<li><p>Additionally, those who use emacs with AUCTeX may copy <code>arabluatex.el</code> to their <code>~/.emacs.d/auctex/auto</code> local directory. This will enable the appropriate hooks for ArabLuaTeX in AUCTeX.</p></li> 71<li><p>Additionally, those who use emacs with AUCTeX may copy
72<code>arabluatex.el</code> to their <code>~/.emacs.d/auctex/auto</code>
73local directory. This will enable the appropriate hooks for
74ArabLuaTeX in AUCTeX.</p></li>
57</ol> 75</ol>
58<h1 id="sec:devel-git-repos">Development, Git Repository</h1> 76<h1 id="sec:devel-git-repos">Development, Git Repository</h1>
59<h2 id="sec:browse-code" class="unnumbered">Browse the code</h2> 77<h2 class="unnumbered" id="sec:browse-code">Browse the code</h2>
60<p>You can browse ArabLuaTeX repository on the web: <a href="http://git.robertalessi.net/arabluatex" class="uri">http://git.robertalessi.net/arabluatex</a></p> 78<p>You can browse ArabLuaTeX repository on the web: <a
61<p>From this page, you can download all the releases of ArabLuaTeX. For instructions on how to install ArabLuaTeX, please see above.</p> 79href="http://git.robertalessi.net/arabluatex"
62<h2 id="sec:comm-feat-requ" class="unnumbered">Comments, Feature requests, Bug Reports</h2> 80class="uri">http://git.robertalessi.net/arabluatex</a><br />
63<p><a href="https://gitlab.com/ralessi/arabluatex/issues" class="uri">https://gitlab.com/ralessi/arabluatex/issues</a></p> 81or<br />
64<h2 id="sec:download-repository" class="unnumbered">Download the repository</h2> 82<a href="https://sr.ht/~ralessi/arabluatex"
65<p>ArabLuaTeX development is facilitated by git, a distributed version control system. You will need to install git (most GNU/Linux distributions package it in their repositories).</p> 83class="uri">https://sr.ht/~ralessi/arabluatex</a></p>
84<p>From this page, you can download all the releases of ArabLuaTeX. For
85instructions on how to install ArabLuaTeX, please see above.</p>
86<h2 class="unnumbered" id="sec:comm-feat-requ">Comments, Feature
87requests, Bug Reports</h2>
88<p><a href="https://todo.sr.ht/~ralessi/arabluatex"
89class="uri">https://todo.sr.ht/~ralessi/arabluatex</a></p>
90<h2 class="unnumbered" id="sec:download-repository">Download the
91repository</h2>
92<p>ArabLuaTeX development is facilitated by git, a distributed version
93control system. You will need to install git (most Unix/Linux
94distributions package it in their repositories).</p>
66<p>Use this command to download the repository</p> 95<p>Use this command to download the repository</p>
67<pre><code>git clone http://git.robertalessi.net/arabluatex</code></pre> 96<pre><code>git clone https://git.sr.ht/~ralessi/arabluatex</code></pre>
68<p>A new directory named arabluatex will have been created, containing ArabLuaTeX.</p> 97<p>A new directory named arabluatex will have been created, containing
69<h2 id="sec:git-hosting" class="unnumbered">Git hosting</h2> 98ArabLuaTeX.</p>
70<p>Make an account on <a href="https://gitlab.com" class="uri">https://gitlab.com</a> and navigate (while logged in) to <a href="https://gitlab.com/ralessi/arabluatex" class="uri">https://gitlab.com/ralessi/arabluatex</a>. Click <em>Fork</em> and you will have in your account your own repository of <code>arabluatex</code> where you will be able to make whatever changes you like to.</p> 99<h2 class="unnumbered" id="sec:git-hosting">Git hosting</h2>
71</body> 100<p>Make an account on <a href="https://sr.ht"
72</html> 101class="uri">https://sr.ht</a> and navigate (while logged in) to <a
102href="https://git.sr.ht/~ralessi/arabluatex"
103class="uri">https://git.sr.ht/~ralessi/arabluatex</a>. Click <em>Clone
104repo to your account</em> and you will have in your account your own
105repository of <code>arabluatex</code> where you will be able to make
106whatever changes you like to.</p>
diff --git a/arabluatex.dtx b/arabluatex.dtx
index 78bd3d4..3b2f4c2 100644
--- a/arabluatex.dtx
+++ b/arabluatex.dtx
@@ -1,23 +1,22 @@
1% \iffalse meta-comment 1% \iffalse meta-comment
2% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 2% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
3% Copyright (C) 2016--2020 Robert Alessi 3% Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert
4%
5% Please send error reports and suggestions for improvements to Robert
6% Alessi <alessi@robertalessi.net> 4% Alessi <alessi@robertalessi.net>
7% 5%
8% This program is free software: you can redistribute it and/or modify 6% Permission to use, copy, modify, and distribute this software for any
9% it under the terms of the GNU General Public License as published by 7% purpose with or without fee is hereby granted, provided that the above
10% the Free Software Foundation, either version 3 of the License, or 8% copyright notice and this permission notice appear in all copies.
11% (at your option) any later version. 9%
12% 10% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13% This program is distributed in the hope that it will be useful, but 11% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14% WITHOUT ANY WARRANTY; without even the implied warranty of 12% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16% General Public License for more details. 14% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17% 17%
18% You should have received a copy of the GNU General Public License 18% Please send error reports and suggestions for improvements to Robert
19% along with this program. If not, see 19% Alessi <alessi@robertalessi.net>
20% <http://www.gnu.org/licenses/>.
21% \fi 20% \fi
22% 21%
23% \iffalse 22% \iffalse
@@ -27,7 +26,7 @@
27%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] 26%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
28%<package>\ProvidesPackage{arabluatex} 27%<package>\ProvidesPackage{arabluatex}
29%<*package> 28%<*package>
30 [2020/03/23 v1.20 ArabTeX for LuaLaTeX] 29 [2023/05/21 v1.21-dev ArabTeX for LuaLaTeX]
31%</package> 30%</package>
32% 31%
33%<*driver> 32%<*driver>
@@ -37,24 +36,24 @@
37% This file is part of the `arabluatex' package 36% This file is part of the `arabluatex' package
38% 37%
39% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 38% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
40% Copyright (C) 2016--2020 Robert Alessi
41% 39%
42% Please send error reports and suggestions for improvements to Robert 40% Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
43% Alessi <alessi@robertalessi.net> 41% Robert Alessi <alessi@robertalessi.net>
44%
45% This program is free software: you can redistribute it and/or modify
46% it under the terms of the GNU General Public License as published by
47% the Free Software Foundation, either version 3 of the License, or
48% (at your option) any later version.
49% 42%
50% This program is distributed in the hope that it will be useful, but 43% Permission to use, copy, modify, and distribute this software for any
51% WITHOUT ANY WARRANTY; without even the implied warranty of 44% purpose with or without fee is hereby granted, provided that the above
52% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 45% copyright notice and this permission notice appear in all copies.
53% General Public License for more details. 46%
47% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
48% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
49% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
50% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
51% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
52% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
53% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
54% 54%
55% You should have received a copy of the GNU General Public License 55% Please send error reports and suggestions for improvements to Robert
56% along with this program. If not, see 56% Alessi <alessi@robertalessi.net>
57% <http://www.gnu.org/licenses/>.
58 57
59@software{pkg:arabtex, 58@software{pkg:arabtex,
60 author = {Lagally, Klaus}, 59 author = {Lagally, Klaus},
@@ -78,6 +77,15 @@
78 url = {http://www.amirifont.org/} 77 url = {http://www.amirifont.org/}
79} 78}
80 79
80@software{pkg:ekdosis,
81 title = {The Ekdosis package},
82 subtitle = {Typesetting TEI-xml compliant Critical Editions},
83 author = {Alessi, Robert},
84 url = {http://www.ekdosis.org},
85 date = {2021-11-21},
86 version = {1.4}
87}
88
81@Book{Habash, 89@Book{Habash,
82 author = {Habash, Nizar Y.}, 90 author = {Habash, Nizar Y.},
83 title = {Introduction to Arabic Natural Language Processing}, 91 title = {Introduction to Arabic Natural Language Processing},
@@ -157,42 +165,105 @@
157 location = {London -- Edinburgh} 165 location = {London -- Edinburgh}
158} 166}
159\end{filecontents} 167\end{filecontents}
168\usepackage[letterpaper,margin=1.25in,left=50mm,nohead]{geometry}
160\usepackage{fontspec} 169\usepackage{fontspec}
170\defaultfontfeatures{Renderer=Harfbuzz}
161\usepackage[english]{babel} 171\usepackage[english]{babel}
162\usepackage{dox} 172%^^A dox does not work with the latest latex-dev:
163\doxitem{Option}{option}{options} 173\ifdefined\SpecialMacroIndex
174 \NewDocElement{Option}{option}
175\else
176 \usepackage{dox}
177 \doxitem{Option}{option}{options}
178\fi
164\usepackage{microtype} 179\usepackage{microtype}
165\defaultfontfeatures{Renderer=Harfbuzz} 180\babelfont{rm}[RawFeature=onum]{Old Standard}
166\babelfont{rm}{Old Standard} 181\babelfont{sf}{NewComputerModernSans10}
167\babelfont{sf}{NewComputerModern Sans} 182\babelfont{tt}{NewComputerModernMono10}
168\babelfont{tt}{NewComputerModern Mono} 183\usepackage{manfnt}
184\usepackage{lettrine}
185\newcommand\danger{\lettrine[loversize=-.5]{\textdbend}{\hskip6pt}}
169\usepackage{metalogox} 186\usepackage{metalogox}
170\usepackage{arabluatex}[2020/03/23] 187\usepackage{arabluatex}[2023/05/21]
188\SetTranslitConvention{dmg+}
171\SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this 189\SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this
172\usepackage[nopar]{quran} 190\usepackage[nopar]{quran}
173\usepackage[noindex]{nameauth} 191\usepackage[noindex]{nameauth}
174\usepackage{varioref} 192\usepackage{varioref}
175\usepackage{hyperxmp} 193\usepackage{latexcolors}
176\usepackage{hypdoc} 194\PassOptionsToPackage{bookmarks=true}{hyperref}
177\usepackage{uri} 195\usepackage[numbered]{hypdoc}
196\newcommand{\phts}{\phantomsection}
197\usepackage[loadlang=en]{metastr}
198\hypersetup{
199 colorlinks,
200 allcolors=cinnamon,
201 linktocpage=true,
202 pdftype={Text}
203}
204\labelformat{section}{sect.~#1}
205\labelformat{subsection}{sect.~#1}
206\labelformat{subsubsection}{sect.~#1}
207\labelformat{figure}{fig.~#1}
208\labelformat{table}{table~#1}
209\metaset{titletext}{%
210 \metapick[#1]{title}%
211 \metacompose[#1]{subtitle}{\metaget[sep]{subtitle}}{}{}}
212\metaset[print]{titletext}{%
213 \metatitleline[print]{title}%
214 \metatitleline[print]{subtitle}%
215 \metatitleline[print]{author}%
216 \metatitleline[print]{contactemail}%
217 \metatitlelinetwo[print]{date}[print]{draft}}
218\metaset[skip]{subtitle}{\vspace{1ex}}
219\metaset[skip]{author}{\vspace{2ex}}
220\metaset[skip]{date}{\vspace{1ex}}
221\metaset[style]{title}{\LARGE}
222\metaset[style]{author}{\large}
223\metaset[sep]{draft}{ -- }
224\metasetlang{en-US}
225\metaset{title}{arabluatex}
226\metaset[print]{title}{\textsf{arabluatex}}
227\metaset{date}{\filedate}
228\metaset{draft}{\fileversion}
229\metaset{subject}{ArabTeX}
230\metaset{subtitle}{ArabTeX for LuaLaTeX}
231\metaset[print]{subtitle}{Arab\TeX\ for Lua\LaTeX}
232\metaset{author}{Robert Alessi}
233\metaset{keywords}{Arabic language, Arabic,
234 arabtex, luatex}
235\metaset{contactemail}{alessi@roberalessi.net}
236\metaset[print]{contactemail}{\mailto[arabluatex]{alessi@robertalessi.net}}
237\metaset{contacturl}{http://www.roberalessi.net}
238\metaset{partof}{The arabluatex Package}
239\metaset[print]{partof}{The \textsf{arabluatex} Package}
240\metaset{copyrightowner}{\metapick[#1]{author}}
241\metaset{copyrightdate}{2016, 2017, 2018, 2019, 2020, 2021, 2022,
242 2023}
243\metaset{licensemessage}{Permission to use, copy, modify, and
244 distribute this software for any purpose with or without fee is
245 hereby granted, provided that the above copyright notice and this
246 permission notice appear in all copies.
247 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
248 WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
249 WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
250 AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
251 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
252 OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
253 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
254 PERFORMANCE OF THIS SOFTWARE.}
255\metaset{licenseurl}{%
256 https://cvsweb.openbsd.org/src/share/misc/license.template?rev=HEAD}
257\metaset[print]{licenseurl}{%
258 \url{https://cvsweb.openbsd.org/src/share/misc/license.template?rev=HEAD}}
259\metawritepdfinfo
260\metawritepdfaux
261\metawritepdfpreamble
262\metawritepdfcontact
263\metawritepdfrights
178\usepackage{bookmark} 264\usepackage{bookmark}
179\usepackage{authblk} 265\usepackage{authblk}
180\usepackage{latexcolors}
181\hypersetup{unicode=true, colorlinks, allcolors=cinnamon, keeppdfinfo,
182 linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The
183 arabluatex package}, pdfcontactemail={alessi@robertalessi.net},
184 pdfcontacturl={http://www.robertalessi.net/arabluatex},
185 pdfcopyright={Copyright (C) 2016--2020 Robert Alessi
186 <alessi@robertalessi.net>. This document is licensed under the
187 Creative Commons Attribution-ShareAlike 4.0 International
188 License. To view a copy of this license, visit
189 http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
190 Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.},
191 pdflicenseurl={https://creativecommons.org/licenses/by-sa/4.0/legalcode},
192 pdfmetalang={en-US}, pdftype={Text}, pdfkeywords={Arabic language,
193 arabtex, luatex}}
194\usepackage[scale=1.5]{ccicons} 266\usepackage[scale=1.5]{ccicons}
195\usepackage[lot]{multitoc}
196\usepackage{enumitem} 267\usepackage{enumitem}
197\setlist{nosep} 268\setlist{nosep}
198\setlist[itemize]{label=\textendash} 269\setlist[itemize]{label=\textendash}
@@ -200,9 +271,11 @@
200\setlist[enumerate,2]{label=\roman*.} 271\setlist[enumerate,2]{label=\roman*.}
201\newlist{enumabjad}{enumerate}{10} 272\newlist{enumabjad}{enumerate}{10}
202\setlist[enumabjad]{label={\abjad{\arabic*}}} 273\setlist[enumabjad]{label={\abjad{\arabic*}}}
203\usepackage{multicol} 274\newlist{remarks}{enumerate}{10}
204\usepackage{cleveref} 275\setlist[remarks]{
205\crefname{footnote}{note}{notes} 276 label*=\textsc{Rem.} \emph{\alph*},
277 left=0.25in,
278 before=\smaller}
206\usepackage{quoting} 279\usepackage{quoting}
207\quotingsetup{noorphans, rightmargin=0pt} 280\quotingsetup{noorphans, rightmargin=0pt}
208\renewcommand*{\quotingfont}{\footnotesize} 281\renewcommand*{\quotingfont}{\footnotesize}
@@ -222,49 +295,66 @@
222 bottom=0mm} 295 bottom=0mm}
223\newtcblisting{example}{minted options={linenos, numbersep=0mm, 296\newtcblisting{example}{minted options={linenos, numbersep=0mm,
224 fontsize=\smaller}} 297 fontsize=\smaller}}
225\newtcblisting{code}{minted options={linenos, numbersep=0mm, 298\newtcblisting{alcode}{minted options={linenos, numbersep=0mm,
226 fontsize=\smaller}, listing only} 299 fontsize=\smaller}, listing only}
300\VerbatimFootnotes
227\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} 301\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}}
228\usepackage[contents]{colordoc} 302\usepackage[contents]{colordoc}
229\usepackage{csquotes} 303\usepackage{csquotes}
230\DeclareQuoteStyle{arabic} 304\DeclareQuoteStyle{arabic}
231{\rmfamily\textquotedblright}{\rmfamily\textquotedblleft} 305{\rmfamily\textquotedblright}{\rmfamily\textquotedblleft}
232{\rmfamily\textquoteright}{\rmfamily\textquoteleft} 306{\rmfamily\textquoteright}{\rmfamily\textquoteleft}
233\usepackage[style=authoryear, indexing=cite]{biblatex} 307\usepackage[style=oxnotes-inote,indexing=cite]{biblatex}
234\DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}} 308\DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}}
235\addbibresource{arabluatex.bib} 309\addbibresource{arabluatex.bib}
310\NewDocumentCommand{\newfeature}{o}{%
311 \leavevmode
312 \IfNoValueTF{#1}
313 {\marginpar{\hfill\emph{New feature}}}
314 {\marginpar{\hfill\emph{New feature} #1}}%
315 \ignorespaces
316}
317\usepackage{uri}
318\usepackage[obeyspaces]{xurl}
319\usepackage{multicol}
320\usepackage{tocloft}
321\renewcommand\cftlotprehook{\begin{multicols}{2}}
322\renewcommand\cftlotposthook{\end{multicols}}
323\renewcommand\cftlottitlefont{\Large\bfseries}
236\usepackage{etoc} 324\usepackage{etoc}
237\etocsettocdepth{paragraph} 325\etocsettocdepth{paragraph}
326\makeatletter
238\newcommand{\altableofcontents}{% 327\newcommand{\altableofcontents}{%
239 \begingroup 328 \begingroup
240 \etocsetstyle{section}{}{} 329 \etocsetstyle{section}{}{}
241 {\etocsavedsectiontocline{% 330 {\l@section{%
242 \numberline{\etocnumber}\etocname}{\etocpage}}{} 331 \numberline{\etocnumber}\etocname}{\etocpage}}{}
243 \etocsetstyle{subsection}{}{} 332 \etocsetstyle{subsection}{}{}
244 {\etocsavedsubsectiontocline{% 333 {\l@subsection{%
245 \numberline{\etocnumber}\etocname}{\etocpage}}{}% 334 \numberline{\etocnumber}\etocname}{\etocpage}}{}%
246 \etocsetstyle{subsubsection}{}{} 335 \etocsetstyle{subsubsection}{}{}
247 {\etocsavedsubsubsectiontocline{% 336 {\l@subsubsection{%
248 \numberline{\etocnumber}\etocname}{\etocpage}}{}% 337 \numberline{\etocnumber}\etocname}{\etocpage}}{}%
249 \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip 338 \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip
250 0pt plus 1fil\relax \nobreak} 339 0pt plus 1fil\relax \nobreak}
251 {\noindent\etocname{} \etocpage{} }{\par}% 340 {\noindent\etocname{} \etocpage{} }{\par}%
252 \etocmulticolstyle[2]{\section*{Contents}} 341 \etocmulticolstyle[2]{\section*{Contents}}
253 \pdfbookmark[1]{Contents}{toc} 342 \pdfbookmark[1]{Contents}{toc}
254 \tableofcontents 343 \etoctoclines
344 \localtableofcontents
255 \endgroup} 345 \endgroup}
346\makeatother
347\setlength\IndexMin{100pt}
256\EnableCrossrefs 348\EnableCrossrefs
257\RecordChanges 349\RecordChanges
258\CodelineIndex 350\CodelineIndex
259\begin{document} 351\begin{document}
260 \DocInput{arabluatex.dtx} 352 \DocInput{arabluatex.dtx}
261 \printbibliography[heading=bibintoc] 353 \printbibliography[heading=bibnumbered]
262 \phantomsection 354 \phantomsection
263 \addcontentsline{toc}{section}{Change History}
264 \PrintChanges 355 \PrintChanges
265 \phantomsection 356 \phantomsection
266 \addcontentsline{toc}{section}{Index} 357 \PrintIndex
267 \PrintIndex
268\end{document} 358\end{document}
269%</driver> 359%</driver>
270% \fi 360% \fi
@@ -316,28 +406,26 @@
316% \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb,\let} 406% \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb,\let}
317% \DoNotIndex{\enskip} 407% \DoNotIndex{\enskip}
318% 408%
319% \providecommand*{\url}{\texttt}
320% \GetFileInfo{arabluatex.dtx} 409% \GetFileInfo{arabluatex.dtx}
321% 410%
322% \newcommand*{\NEWfeature}[1]{% 411% \pdfbookmark[1]{\metaterm{title}}{title}
323% \hskip 1sp \marginpar{\small\sffamily\raggedright 412% \begin{tcolorbox}[
324% New feature\\#1}} 413% colframe=black,
325% 414% enhanced,
326% \title{\tcbox[colframe=black, enhanced, tikznode, drop lifted 415% drop lifted shadow,
327% shadow, colback=white, boxrule=.25mm]% 416% colback=white,
328% {The \textsf{arabluatex} package\\ 417% boxrule=.25mm,
329% \fileversion\ -- \filedate}} 418% halign=center,
330% 419% center
331% \author{Robert Alessi \\ 420% ]
332% \href{mailto:alessi@robertalessi.net?Subject=arabluatex package}% 421% \metapick[print]{titletext}
333% {\texttt{alessi@robertalessi.net}}} 422% \end{tcolorbox}
334% \date{}
335% 423%
336% \maketitle
337% \footnotesize 424% \footnotesize
338% \altableofcontents 425% \altableofcontents
339% \listoftables 426% \listoftables
340% \normalsize 427% \normalsize
428% \VerbatimFootnotes
341% 429%
342% \begin{abstract} 430% \begin{abstract}
343% This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface 431% This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface
@@ -349,46 +437,59 @@
349% input notation. Its output can be set in the same modes of 437% input notation. Its output can be set in the same modes of
350% vocalization as Arab\TeX, or in different roman 438% vocalization as Arab\TeX, or in different roman
351% transliterations. It further allows many typographical 439% transliterations. It further allows many typographical
352% refinements. It will eventually interact with some other packages 440% refinements. Furthermore, it can interact with the \pkg{ekdosis}
353% yet to come to produce from \verb|.tex| source files, in addition 441% package to produce from \verb|.tex| source files, in addition to
354% to printed books, \texttt{TEI xml} compliant critical editions 442% printed books, \texttt{TEI xml} compliant critical editions and/or
355% and/or lexicons that can be searched, analyzed and correlated in 443% lexicons that can be searched, analyzed and correlated in various
356% various ways. 444% ways.
357% \end{abstract} 445% \end{abstract}
358% 446%
359% \section*{License and disclamer} 447% \section*{License and Disclaimer}
360% \addcontentsline{toc}{section}{License and disclamer} 448% \addcontentsline{toc}{section}{License and disclamer}
361% \subsection*{License applicable to the software} 449% \leavevmode\marginpar{\hfill\texttt{OpenBSD}} \pkg{arabluatex} is
362% \label{sec:license-software} 450% licensed under the terms of the so-called OpenBSD license, as it is
451% modelled after the ISC copyright, which is functionally equivalent
452% to a two-term BSD copyright with language removed that is made
453% unnecessary by the Berne convention.\footnote{More information about
454% the OpenBSD policy to which \pkg{arabluatex} adheres:
455% \url{https://www.openbsd.org/policy.html}.}
363% 456%
364% \package{arabluatex} --- Processing Arab\TeX\ notation under Lua\LaTeX.\\ 457% \iffalse
365% Copyright \textcopyright\ 2016--2020 Robert Alessi 458%<*example>
459% \fi
460\begin{minted}[linenos=false]{text}
461arabluatex -- ArabTeX for LuaLaTeX
462----------------------------------------------------------
463
464Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
465Robert Alessi <alessi@robertalessi.net>
466
467Permission to use, copy, modify, and distribute this software for any
468purpose with or without fee is hereby granted, provided that the above
469copyright notice and this permission notice appear in all copies.
470
471THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
472WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
473MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
474ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
475WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
476ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
477OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
478\end{minted}
479% \iffalse
480%</example>
481% \fi
366% 482%
367% Please send error reports and suggestions for improvements to Robert 483% Please send error reports and suggestions for improvements to Robert
368% Alessi: 484% Alessi:
369% \begin{itemize} 485% \begin{itemize}
370% \item email: \mailto[arabluatex package]{alessi@roberalessi.net} 486% \item email: \mailto[arabluatex package]{alessi@roberalessi.net}
371% \item website: \url{http://www.robertalessi.net/arabluatex} 487% \item website: \url{https://sr.ht/~ralessi/arabluatex/}
372% \item development: \url{http://git.robertalessi.net/arabluatex} 488% \item development: \url{http://git.robertalessi.net/arabluatex}
373% \item comments, feature requests, bug reports: 489% \item comments, feature requests, bug reports:
374% \url{https://gitlab.com/ralessi/arabluatex/issues} 490% \url{https://todo.sr.ht/~ralessi/arabluatex}
375% \end{itemize} 491% \end{itemize}
376% 492%
377% \marginpar{\texttt{gpl3+}}
378% This program is free software: you can redistribute it and/or modify
379% it under the terms of the GNU General Public License as published by
380% the Free Software Foundation, either version 3 of the License, or
381% (at your option) any later version.
382%
383% This program is distributed in the hope that it will be useful, but
384% WITHOUT ANY WARRANTY; without even the implied warranty of
385% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
386% General Public License for more details.
387%
388% You should have received a copy of the GNU General Public License
389% along with this program. If not, see
390% <http://www.gnu.org/licenses/>.
391%
392% This release of \package{arabluatex} consists of the following 493% This release of \package{arabluatex} consists of the following
393% source files: 494% source files:
394% \begin{itemize} 495% \begin{itemize}
@@ -401,21 +502,9 @@
401% \item |arabluatex_trans.lua| 502% \item |arabluatex_trans.lua|
402% \item |arabluatex.el| 503% \item |arabluatex.el|
403% \end{itemize} 504% \end{itemize}
404%
405% \subsection*{License applicable to this document}
406% \label{sec:documentation-license}
407% Copyright \textcopyright\ 2016--2020 Robert Alessi
408%
409% \ccbysa\marginpar{\texttt{CC BY-SA 4.0}}
410% This document is licensed under the Creative Commons
411% Attribution-ShareAlike 4.0 International License. To view a copy of
412% this license, visit
413% \url{http://creativecommons.org/licenses/by-sa/4.0/} or send a
414% letter to Creative Commons, PO Box 1866, Mountain View, CA 94042,
415% USA.
416% 505%
417% \section{Introduction} 506% \section{Introduction}
418% In comparison to Prof. Lagally's outstanding Arab\TeX,\footnote{See 507% In comparison to Prof.\ Lagally's outstanding Arab\TeX,\footnote{See
419% \url{http://ctan.org/pkg/arabtex}} Arab{\LuaTeX} is at present 508% \url{http://ctan.org/pkg/arabtex}} Arab{\LuaTeX} is at present
420% nothing more than a modest piece of software. Hopefully---if I may 509% nothing more than a modest piece of software. Hopefully---if I may
421% say so---it will eventually provide all of its valuable qualities to 510% say so---it will eventually provide all of its valuable qualities to
@@ -532,21 +621,25 @@
532% issue a warning message and attempt to load the Amiri 621% issue a warning message and attempt to load the Amiri
533% font\footnote{\textcite{pkg:amiri}.} like so:---\\ 622% font\footnote{\textcite{pkg:amiri}.} like so:---\\
534% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]} 623% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]}
535% \begin{quoting} 624% \begin{remarks}
536% \textsc{Rem.} By default Amiri places the \arb[trans]{kasraT} in 625% \item By default Amiri places the \arb[trans]{kasraT} in combination
537% combination with the \arb[trans]{ta^sdId} below the consonant, 626% with the \arb[trans]{ta^sdId} below the consonant, like so:
538% like so: \arb{BBi}\,. That is correct, as at least in the oldest 627% \arb{BBi}\,. That is correct, as at least in the oldest
539% manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic, 628% manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic,
540% RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as 629% RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as well as
541% well as \arb{BBi}\,. See \textcite[i. 14 C--D]{Wright}. The placement 630% \arb{BBi}\,. See \textcite[i. 14 C--D]{Wright}. The placement of
542% of the \arb[trans]{kasraT} above the consonant may be obtained by 631% the \arb[trans]{kasraT} above the consonant may be obtained by
543% selecting the |ss05| feature of the Amiri font, like 632% selecting the |ss05| feature of the Amiri font, like
544% so:---\footnote{See the documentation of \package{amiri}, 633% so:---\footnote{See the documentation of \package{amiri},
545% \textcite[6]{pkg:amiri}.}\\ 634% \textcite[6]{pkg:amiri}.}\\
546% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]} 635% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]}
547% 636%
548% Other Arabic fonts may behave differently. 637% Other Arabic fonts may behave differently.
549% \end{quoting} 638%
639% \item \cs{newfontfamily} can be used to have
640% either Indian of Arabic numbers printed. See
641% \vpageref{ref:arabic-numbers} for more information.
642% \end{remarks}
550% 643%
551% \subsection{Options} 644% \subsection{Options}
552% \label{sec:options} 645% \label{sec:options}
@@ -580,8 +673,8 @@
580% standards. At present, three standards are supported (see below 673% standards. At present, three standards are supported (see below
581% \vref{sec:transliteration} for more details): 674% \vref{sec:transliteration} for more details):
582% \begin{description} 675% \begin{description}
583% \item[dmg] \emph{Deutsche Morgenländische Gesellschaft}, which is 676% \item[dmg/dmg+] \emph{Deutsche Morgenländische Gesellschaft} |dmg|
584% selected by default; 677% is selected by default;
585% \item[loc] \emph{Library of Congress}; 678% \item[loc] \emph{Library of Congress};
586% \item[arabica] \emph{Arabica}. 679% \item[arabica] \emph{Arabica}.
587% \end{description} 680% \end{description}
@@ -591,7 +684,7 @@
591% \label{ref:export-global-opt} 684% \label{ref:export-global-opt}
592% \DescribeOption{export} |export|$=$|true|\verb+|+|false| 685% \DescribeOption{export} |export|$=$|true|\verb+|+|false|
593% \hfill\tcboxverb{Default: false}\\ \label{export-mode} 686% \hfill\tcboxverb{Default: false}\\ \label{export-mode}
594% \NEWfeature{v.1.13} This option acts as a named argument and does 687% \newfeature[v.1.13] This option acts as a named argument and does
595% not need a value as it defaults to |true| if it is used. It enables 688% not need a value as it defaults to |true| if it is used. It enables
596% \package{arabluatex} to produce a duplicate of the original |.tex| 689% \package{arabluatex} to produce a duplicate of the original |.tex|
597% source file in which all \textsc{ascii} strings are replaced with 690% source file in which all \textsc{ascii} strings are replaced with
@@ -600,7 +693,7 @@
600% 693%
601% \subsubsection{Classic contrasted with modern typesetting of Arabic} 694% \subsubsection{Classic contrasted with modern typesetting of Arabic}
602% \label{sec:classic-modern-typesetting} 695% \label{sec:classic-modern-typesetting}
603% \NEWfeature{v.1.2} By default, \package{arabluatex} typesets Arabic 696% \newfeature[v.1.2] By default, \package{arabluatex} typesets Arabic
604% in a classic, traditional style the most prominent features of which 697% in a classic, traditional style the most prominent features of which
605% are the following: 698% are the following:
606% \begin{itemize} 699% \begin{itemize}
@@ -639,7 +732,7 @@
639% \fi 732% \fi
640% \end{itemize} 733% \end{itemize}
641% 734%
642% \DescribeMacro{\SetArbEasy} \NEWfeature{v1.4.4} Such refinements as 735% \DescribeMacro{\SetArbEasy} \newfeature[v1.4.4] Such refinements as
643% \enquote*{classic} \arb[trans]{maddaT} may be discarded by the 736% \enquote*{classic} \arb[trans]{maddaT} may be discarded by the
644% \cs{SetArbEasy} command, either globally in the preamble or locally 737% \cs{SetArbEasy} command, either globally in the preamble or locally
645% at any point of the document. The difference between \cs{SetArbEasy} 738% at any point of the document. The difference between \cs{SetArbEasy}
@@ -649,7 +742,7 @@
649% mode, while the latter further takes it away. Default 742% mode, while the latter further takes it away. Default
650% \enquote*{classic} rules may be set back at any point of the 743% \enquote*{classic} rules may be set back at any point of the
651% document with the \DescribeMacro{\SetArbDflt}\cs{SetArbDflt} 744% document with the \DescribeMacro{\SetArbDflt}\cs{SetArbDflt}
652% command. \NEWfeature{v1.6} \DescribeMacro{\SetArbDflt*}Assimilation 745% command. \newfeature[v1.6] \DescribeMacro{\SetArbDflt*}Assimilation
653% rules laid on \vref{ref:assimilation} may also be applied by the 746% rules laid on \vref{ref:assimilation} may also be applied by the
654% \enquote*{starred} version of this command \cs{SetArbDflt*} either 747% \enquote*{starred} version of this command \cs{SetArbDflt*} either
655% in the preamble or at any point of the document.\footnote{For an 748% in the preamble or at any point of the document.\footnote{For an
@@ -748,11 +841,11 @@
748% \iffalse 841% \iffalse
749%<*example> 842%<*example>
750% \fi 843% \fi
751\begin{code} 844\begin{alcode}
752 \begin{arab} 845 \begin{arab}
753 [...] 846 [...]
754 \end{arab} 847 \end{arab}
755\end{code} 848\end{alcode}
756% \iffalse 849% \iffalse
757%</example> 850%</example>
758% \fi 851% \fi
@@ -803,43 +896,41 @@
803% where \meta{mode} may be any of |voc|, |fullvoc|, |novoc| or 896% where \meta{mode} may be any of |voc|, |fullvoc|, |novoc| or
804% |trans|. 897% |trans|.
805% 898%
806%\section{Standard Arab\TeX\ input} 899% \section{Standard Arab\TeX\ input}
807%\subsection{Consonants} 900% \subsection{Consonants}
808% \Cref{tab:arabtex-consonants} gives the Arab\TeX\ equivalents for 901% \Vref{tab:arabtex-consonants} gives the Arab\TeX\ equivalents for
809% all of the Arabic consonants. 902% all of the Arabic consonants.
810% 903%
811% \addlines[2]
812% \newcommand{\dmg}[1]{% 904% \newcommand{\dmg}[1]{%
813% \SetTranslitConvention{dmg}% 905% \SetTranslitConvention{dmg+}%
814% \arb[trans]{#1}} 906% \arb[trans]{#1}}
815% \newcommand{\loc}[1]{% 907% \newcommand{\loc}[1]{%
816% \SetTranslitConvention{loc}% 908% \SetTranslitConvention{loc}%
817% \arb[trans]{#1}\SetTranslitConvention{dmg}} 909% \arb[trans]{#1}\SetTranslitConvention{dmg+}}
818% \newcommand{\brill}[1]{% 910% \newcommand{\brill}[1]{%
819% \SetTranslitConvention{arabica}% 911% \SetTranslitConvention{arabica}%
820% \arb[trans]{#1}\SetTranslitConvention{dmg}} 912% \arb[trans]{#1}\SetTranslitConvention{dmg+}}
821% \begin{longtable}{lllll} 913% \begin{longtable}{lllll}
822% \bottomrule 914% \bottomrule
823% \caption*{\Cref*{tab:arabtex-consonants}: Standard Arab\TeX\ 915% \caption[]{Standard Arab\TeX\ (consonants)}
824% (consonants)}
825% \endfoot 916% \endfoot
826% \captionlistentry{Arab\TeX\ consonants}\\[-1em]
827% \toprule 917% \toprule
918% \captionlistentry{Standard Arab\TeX\ (consonants)}
828% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 919% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
829% & Arab\TeX\ notation \\ 920% & Arab\TeX\ notation \\
830% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 921% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
831% \endfirsthead 922% \endfirsthead
832% \toprule 923% \toprule
833% Letter & \multicolumn{3}{l}{Transliteration} 924% Letter & \multicolumn{3}{l}{Transliteration}
834% & Arab\TeX\ notation \\ 925% & Arab\TeX\ notation \\
835% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 926% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
836% \endhead \footnotetext{See below \vref{sec:transliteration}.} 927% \endhead \footnotetext{See below \vref{sec:transliteration}.}
837% \label{tab:arabtex-consonants} 928% \label{tab:arabtex-consonants}
838% \arb[voc]{'i 'a 'u}\footnote{See below, \emph{Rem{.} a.} For 929% \arb[voc]{'i 'a 'u}\footnote{See below, \emph{Rem{.} a.} For
839% \arb[trans]{'alif} as a consonant, see \textcite[i. 16 930% \arb[trans]{'alif} as a consonant, see \textcite[i. 16
840% D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>} 931% D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>}
841% and may be followed by either \meta{u, a} or \meta{i}. See below 932% and may be followed by either \meta{u, a} or \meta{i}. See below
842% \vref{ref:hamza}.} & \dmg{'u 'a 'i} & 933% \vref{ref:hamza}.} & \dmg{|'u, |'a, |'i} &
843% \loc{|'u, |'a, |'i} & \brill{|'u, |'a, |'i} & |'u| or |'a| or |'i| \\ 934% \loc{|'u, |'a, |'i} & \brill{|'u, |'a, |'i} & |'u| or |'a| or |'i| \\
844% \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\ 935% \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\
845% \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\ 936% \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\
@@ -852,6 +943,7 @@
852% \arb[novoc]{r} & \dmg{r} & \loc{r} & \brill{r} & |r| \\ 943% \arb[novoc]{r} & \dmg{r} & \loc{r} & \brill{r} & |r| \\
853% \arb[novoc]{z} & \dmg{z} & \loc{z} & \brill{z} & |z| \\ 944% \arb[novoc]{z} & \dmg{z} & \loc{z} & \brill{z} & |z| \\
854% \arb[novoc]{s} & \dmg{s} & \loc{s} & \brill{s} & |s| \\ 945% \arb[novoc]{s} & \dmg{s} & \loc{s} & \brill{s} & |s| \\
946% \pagebreak[1]
855% \arb[novoc]{^s} & \dmg{^s} & \loc{^s} & \brill{^s} & |^s| \\ 947% \arb[novoc]{^s} & \dmg{^s} & \loc{^s} & \brill{^s} & |^s| \\
856% \arb[novoc]{.s} & \dmg{.s} & \loc{.s} & \brill{.s} & |.s| \\ 948% \arb[novoc]{.s} & \dmg{.s} & \loc{.s} & \brill{.s} & |.s| \\
857% \arb[novoc]{.d} & \dmg{.d} & \loc{.d} & \brill{.d} & |.d| \\ 949% \arb[novoc]{.d} & \dmg{.d} & \loc{.d} & \brill{.d} & |.d| \\
@@ -869,14 +961,14 @@
869% \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\ 961% \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\
870% \arb[novoc]{y} & \dmg{y} & \loc{y} & \brill{y} & |y|\footnote{For 962% \arb[novoc]{y} & \dmg{y} & \loc{y} & \brill{y} & |y|\footnote{For
871% the letter \arb[novoc]{.y} with no diacritical points below, see 963% the letter \arb[novoc]{.y} with no diacritical points below, see
872% \emph{Rem{.} b.} below.} \\ 964% \vref{ref:dotless-ya} below.} \\
873% \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\ 965% \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\
874% \end{longtable} 966% \end{longtable}
875% \begin{quoting} 967% \begin{remarks}
876% \textsc{Rem.}~\emph{a.} Please note that in all cases of elision, 968% \item Please note that in all cases of elision, the
877% the \arb[trans]{'alifu 'l-wa.sli} is expressed only by the vowel 969% \arb[trans]{'alifu 'l-wa.sli} is expressed only by the vowel that
878% that accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} 970% accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} as in
879% as in |wa-inhazama| \arb[fullvoc]{wa-inhazama} 971% |wa-inhazama| \arb[fullvoc]{wa-inhazama}
880% \arb[trans]{wa-inhazama}. For more details on the definite article 972% \arb[trans]{wa-inhazama}. For more details on the definite article
881% and the \arb[trans]{'alifu 'l-wa.sli} see 973% and the \arb[trans]{'alifu 'l-wa.sli} see
882% \vref{ref:definite-article}. 974% \vref{ref:definite-article}.
@@ -890,10 +982,10 @@
890% absence of vowel), |wa-.Aan| \arb{wa-.Aan} \arb[trans]{wa-.Aan}, 982% absence of vowel), |wa-.Aan| \arb{wa-.Aan} \arb[trans]{wa-.Aan},
891% |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}. 983% |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}.
892% 984%
893% \textsc{Rem.}~\emph{b.} The letter \arb[novoc]{y} with two points 985% \item \label{ref:dotless-ya}The letter \arb[novoc]{y} with two
894% below, \arb{al-yA'u 'l-mu_tannATu min ta.hti-hA}, may also be 986% points below, \arb{al-yA'u 'l-mu_tannATu min ta.hti-hA}, may also
895% written without diacritical points as \arb[novoc]{Y}. When it is 987% be written without diacritical points as \arb[novoc]{Y}. When it
896% used as a consonant, it is encoded |aY|, where |a| recalls the 988% is used as a consonant, it is encoded |aY|, where |a| recalls the
897% \arb[trans]{fat.haT} placed above the preceding letter in 989% \arb[trans]{fat.haT} placed above the preceding letter in
898% vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN} 990% vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN}
899% \arb[trans]{qaY'uN}, |^saY'uN| \arb{^saY'uN} \arb[trans]{^saY'uN}, 991% \arb[trans]{qaY'uN}, |^saY'uN| \arb{^saY'uN} \arb[trans]{^saY'uN},
@@ -903,30 +995,30 @@
903% like so: |qa.y'uN| \arb{qa.y'uN} \arb[trans]{qa.y'uN}, |^sa.y'uN| 995% like so: |qa.y'uN| \arb{qa.y'uN} \arb[trans]{qa.y'uN}, |^sa.y'uN|
904% \arb{^sa.y'uN} \arb[trans]{^sa.y'uN}, |^sa.y'aN| 996% \arb{^sa.y'uN} \arb[trans]{^sa.y'uN}, |^sa.y'aN|
905% \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}. 997% \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}.
906% \end{quoting} 998% \end{remarks}
907% 999%
908% \subsection{Additional characters} 1000% \subsection{Additional characters}
909% \changes{v1.8.5}{2017/06/20}{Six additional Persian characters are 1001% \changes{v1.8.5}{2017/06/20}{Six additional Persian characters are
910% now available} 1002% now available}
911% \NEWfeature{v1.8.5}\Cref{tab:arabtex-additional-characters} gives 1003% \newfeature[v1.8.5]\Vref{tab:arabtex-additional-characters} gives
912% the Arab\TeX\ equivalents for some additional Persian characters. 1004% the Arab\TeX\ equivalents for some additional Persian characters.
913% 1005%
1006% \enlargethispage{2\baselineskip}
914% \begin{longtable}{lllll} 1007% \begin{longtable}{lllll}
915% \bottomrule 1008% \bottomrule
916% \caption*{\Cref*{tab:arabtex-additional-characters}: Standard 1009% \caption[]{Standard Arab\TeX\ (additional characters)}
917% Arab\TeX\ (additional characters)}
918% \endfoot 1010% \endfoot
919% \captionlistentry{Arab\TeX\ additional characters}\\[-1em]
920% \toprule 1011% \toprule
1012% \captionlistentry{Standard Arab\TeX\ (additional characters)}
921% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1013% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
922% & Arab\TeX\ notation \\ 1014% & Arab\TeX\ notation \\
923% & \texttt{dmg} & \texttt{loc} & \texttt{arabica}\footnotemark 1015% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica}\footnotemark
924% & \\ \midrule 1016% & \\ \midrule
925% \endfirsthead 1017% \endfirsthead
926% \toprule 1018% \toprule
927% Letter & \multicolumn{3}{l}{Transliteration} 1019% Letter & \multicolumn{3}{l}{Transliteration}
928% & Arab\TeX\ notation \\ 1020% & Arab\TeX\ notation \\
929% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1021% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
930% \endhead 1022% \endhead
931% \addtocounter{footnote}{-1} 1023% \addtocounter{footnote}{-1}
932% \footnotetext{See below \vref{sec:transliteration}.} 1024% \footnotetext{See below \vref{sec:transliteration}.}
@@ -937,40 +1029,40 @@
937% \label{tab:arabtex-additional-characters} 1029% \label{tab:arabtex-additional-characters}
938% \hskip-1em\arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\ 1030% \hskip-1em\arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\
939% \arb[novoc]{^c} & \dmg{^c} & \loc{^c} & \brill{^c} & \verb|^c| \\ 1031% \arb[novoc]{^c} & \dmg{^c} & \loc{^c} & \brill{^c} & \verb|^c| \\
1032% \pagebreak[1]
940% \arb[novoc]{^z} & \dmg{^z} & \loc{^z} & \brill{^z} & \verb|^z| \\ 1033% \arb[novoc]{^z} & \dmg{^z} & \loc{^z} & \brill{^z} & \verb|^z| \\
941% \arb[novoc]{v}\footnote{\label{fn:not-in-dmg}This character is not found in 1034% \arb[novoc]{v}\footnote{\label{fn:not-in-dmg}This character is not found in
942% \textcite[2]{dmg}. It is taken from the \textcite{din31635} standard.} & 1035% \textcite[2]{dmg}. It is taken from the \textcite{din31635} standard.} &
943% \dmg{v} & \loc{v} & \brill{v} & \verb|v| \\ 1036% \dmg{v} & \loc{v} & \brill{v} & \verb|v| \\
944% \arb[novoc]{g} & \dmg{g} & \loc{g} & \brill{g} & \verb|g| \\ 1037% \arb[novoc]{g} & \dmg{g} & \loc{g} & \brill{g} & \verb|g| \\
945% \arb[novoc]{^n}\footnote{See \cref{fn:not-in-dmg}.} & \dmg{^n} & 1038% \arb[novoc]{^n}\footnote{See \vref{fn:not-in-dmg}.} & \dmg{^n} &
946% \loc{^n} & \brill{^n} & \verb|^n| \\ 1039% \loc{^n} & \brill{^n} & \verb|^n| \\
947% \end{longtable} 1040% \end{longtable}
948% \begin{quoting} 1041% \begin{remarks}
949% \textsc{Rem.} The alveolar consonants \arb[novoc]{^c} and 1042% \item[\textsc{Rem.}] The alveolar consonants \arb[novoc]{^c} and
950% \arb[novoc]{^z} are processed as solar letters by 1043% \arb[novoc]{^z} are processed as solar letters by
951% \package{arabluatex}. 1044% \package{arabluatex}.
952% \end{quoting} 1045% \end{remarks}
953% 1046%
954% \subsection{Vowels} 1047% \subsection{Vowels}
955% \subsubsection{Long vowels} 1048% \subsubsection{Long vowels}
956% \Cref{tab:arabtex-long-vowels} gives the Arab\TeX\ equivalents for 1049% \Vref{tab:arabtex-long-vowels} gives the Arab\TeX\ equivalents for
957% the Arabic long vowels. 1050% the Arabic long vowels.
958% \enlargethispage{1\baselineskip} 1051%
959% \begin{longtable}{lllll} 1052% \begin{longtable}{lllll}
960% \bottomrule 1053% \bottomrule
961% \caption*{\Cref*{tab:arabtex-long-vowels}: Standard Arab\TeX\ (long 1054% \caption[]{Standard Arab\TeX\ (long vowels)}
962% vowels)}
963% \endfoot 1055% \endfoot
964% \captionlistentry{Arab\TeX\ long vowels}\\[-1em]
965% \toprule 1056% \toprule
1057% \captionlistentry{Standard Arab\TeX\ (long vowels)}
966% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1058% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
967% & Arab\TeX\ notation \\ 1059% & Arab\TeX\ notation \\
968% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1060% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
969% \endfirsthead 1061% \endfirsthead
970% \toprule 1062% \toprule
971% Letter & \multicolumn{3}{l}{Transliteration} 1063% Letter & \multicolumn{3}{l}{Transliteration}
972% & Arab\TeX\ notation \\ 1064% & Arab\TeX\ notation \\
973% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1065% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
974% \endhead \footnotetext{See below \vref{sec:transliteration}.} 1066% \endhead \footnotetext{See below \vref{sec:transliteration}.}
975% \label{tab:arabtex-long-vowels} 1067% \label{tab:arabtex-long-vowels}
976% \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\ 1068% \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\
@@ -985,10 +1077,10 @@
985% \arb[novoc]{B_i} & \dmg{B_i} & \loc{B_i} & \brill{B_i} & \verb|_i| \\ 1077% \arb[novoc]{B_i} & \dmg{B_i} & \loc{B_i} & \brill{B_i} & \verb|_i| \\
986% \end{longtable} 1078% \end{longtable}
987% 1079%
988% \begin{quoting} 1080% \begin{remarks}
989% \textsc{Rem.}~\emph{a.} The long vowels \arb[trans]{A, U, I}, 1081% \item The long vowels \arb[trans]{A, U, I}, otherwise called
990% otherwise called \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the 1082% \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the letters of
991% letters of prolongation}, involve the placing of the short vowels 1083% prolongation}, involve the placing of the short vowels
992% \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A}, 1084% \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A},
993% \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex} 1085% \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex}
994% does that automatically in case any from |voc|, |fullvoc| or 1086% does that automatically in case any from |voc|, |fullvoc| or
@@ -996,43 +1088,42 @@
996% \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu} 1088% \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu}
997% \arb[trans]{yaqUlu}. 1089% \arb[trans]{yaqUlu}.
998% 1090%
999% \textsc{Rem.}~\emph{b.} Defective writings, such as 1091% \item Defective writings, such as \arb[novoc]{B_a},
1000% \arb[novoc]{B_a}, \arb[trans]{al-'alif-u 'l-ma.h_dUfaT-u}, or 1092% \arb[trans]{al-'alif-u 'l-ma.h_dUfaT-u}, or defective writings of
1001% defective writings of \arb[trans]{B_u} and \arb[trans]{B_i} are 1093% \arb[trans]{B_u} and \arb[trans]{B_i} are encoded |_a| |_u| and
1002% encoded |_a| |_u| and |_i| respectively, e.g. |_d_alika| 1094% |_i| respectively, e.g. |_d_alika| \arb[voc]{_d_alika},
1003% \arb[voc]{_d_alika}, |al-mal_a'ikaT-u| |'l-ra.hm_an-u| 1095% |al-mal_a'ikaT-u| |'l-ra.hm_an-u| \arb[voc]{al-mal_a'ikaT-u
1004% \arb[voc]{al-mal_a'ikaT-u 'l-ra.hm_an-u}, |.hu_dayfaT-u| |bn-u| 1096% 'l-ra.hm_an-u}, |.hu_dayfaT-u| |bn-u| |'l-yamAn_i|
1005% |'l-yamAn_i| \arb[fullvoc]{.hu_dayfaT-u bn-u 'l-yamAn_i} for 1097% \arb[fullvoc]{.hu_dayfaT-u bn-u 'l-yamAn_i} for
1006% \arb[trans]{\uc{.hu_dayfaT-u} bn-u 'l-\uc{yamAn_i}}, etc. 1098% \arb[trans]{\uc{.hu_dayfaT-u} bn-u 'l-\uc{yamAn_i}}, etc.
1007% 1099%
1008% \textsc{Rem.}~\emph{c.} The letter \arb[novoc]{y} with two points 1100% \item The letter \arb[novoc]{y} with two points below, \arb{al-yA'u
1009% below, \arb{al-yA'u 'l-mu_tannATu min ta.hti-hA}, may also be 1101% 'l-mu_tannATu min ta.hti-hA}, may also be written without
1010% written without diacritical points as \arb[novoc]{Y}. When it is 1102% diacritical points as \arb[novoc]{Y}. When it is used as a long
1011% used as a long vowel, it is encoded |iY|, where |i| recalls the 1103% vowel, it is encoded |iY|, where |i| recalls the
1012% \arb[trans]{kasraT} placed below the preceding letter in vocalized 1104% \arb[trans]{kasraT} placed below the preceding letter in vocalized
1013% Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY| 1105% Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY|
1014% \arb{yam^siY} \arb[trans]{yam^siY}. 1106% \arb{yam^siY} \arb[trans]{yam^siY}.
1015% \end{quoting} 1107% \end{remarks}
1016% 1108%
1017% \subsubsection{Short vowels} 1109% \subsubsection{Short vowels}
1018% \Cref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for 1110% \Vref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for
1019% the Arabic short vowels. 1111% the Arabic short vowels.
1020% 1112%
1021% \begin{longtable}{lllll} 1113% \begin{longtable}{lllll}
1022% \bottomrule 1114% \bottomrule
1023% \caption*{\Cref*{tab:arabtex-short-vowels}: Standard Arab\TeX\ 1115% \caption[]{Standard Arab\TeX\ (short vowels)}
1024% (short vowels)}
1025% \endfoot 1116% \endfoot
1026% \captionlistentry{Arab\TeX\ short vowels}\\[-1em]
1027% \toprule 1117% \toprule
1118% \captionlistentry{Standard Arab\TeX\ (short vowels)}
1028% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1119% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
1029% & Arab\TeX\ notation \\ 1120% & Arab\TeX\ notation \\
1030% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1121% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1031% \endfirsthead 1122% \endfirsthead
1032% \toprule 1123% \toprule
1033% Letter & \multicolumn{3}{l}{Transliteration} 1124% Letter & \multicolumn{3}{l}{Transliteration}
1034% & Arab\TeX\ notation \\ 1125% & Arab\TeX\ notation \\
1035% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1126% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1036% \endhead \footnotetext{See below \vref{sec:transliteration}.} 1127% \endhead \footnotetext{See below \vref{sec:transliteration}.}
1037% \label{tab:arabtex-short-vowels} 1128% \label{tab:arabtex-short-vowels}
1038% \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\ 1129% \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\
@@ -1481,7 +1572,7 @@
1481% |al-.hamd-u| |li-l-l_ah-i| \arb[fullvoc]{al-.hamd-u li-l-l_ah-i} 1572% |al-.hamd-u| |li-l-l_ah-i| \arb[fullvoc]{al-.hamd-u li-l-l_ah-i}
1482% \arb[trans]{al-.hamd-u li-l-l_ah-i}. 1573% \arb[trans]{al-.hamd-u li-l-l_ah-i}.
1483% \end{quote} 1574% \end{quote}
1484% As said above on \cpageref{fullvoc-mode}, |fullvoc| is the mode 1575% As said above on \vpageref{fullvoc-mode}, |fullvoc| is the mode
1485% in which \package{arabluatex} expresses the \arb[trans]{sukUn} and 1576% in which \package{arabluatex} expresses the \arb[trans]{sukUn} and
1486% the \arb[trans]{wa.slaT}. \package{arabluatex} will take care of 1577% the \arb[trans]{wa.slaT}. \package{arabluatex} will take care of
1487% doing that automatically provided that the vowel which is to be 1578% doing that automatically provided that the vowel which is to be
@@ -1663,7 +1754,7 @@
1663% \enquote{pipe} and \vref{sec:transliteration} on |dmg| mode.} 1754% \enquote{pipe} and \vref{sec:transliteration} on |dmg| mode.}
1664% |al-l_ah-u| \arb[fullvoc]{yA| al-l_ah-u} \arb[trans]{yA| 1755% |al-l_ah-u| \arb[fullvoc]{yA| al-l_ah-u} \arb[trans]{yA|
1665% al-l_ah-u}, \verb+'a-fa|+\footnote{\label{fn:pipe-allah-02}See 1756% al-l_ah-u}, \verb+'a-fa|+\footnote{\label{fn:pipe-allah-02}See
1666% \cref{fn:pipe-allah-01}.}|-al-|\allowbreak|l_ah-i| 1757% \vref{fn:pipe-allah-01}.}|-al-|\allowbreak|l_ah-i|
1667% |la-ta.g`alanna| \arb[fullvoc]{'a-fa|-al-l_ah-i la-ta.g`alanna} 1758% |la-ta.g`alanna| \arb[fullvoc]{'a-fa|-al-l_ah-i la-ta.g`alanna}
1668% \arb[trans]{'a-fa|-al-l_ah-i la-ta.g`alanna}, 1759% \arb[trans]{'a-fa|-al-l_ah-i la-ta.g`alanna},
1669% |bi-'l-|\allowbreak|l_ah-i| \arb[fullvoc]{bi-'l-l_ah-i} 1760% |bi-'l-|\allowbreak|l_ah-i| \arb[fullvoc]{bi-'l-l_ah-i}
@@ -1855,27 +1946,26 @@
1855% analysis. \enquote{Quoting} that straight single quote character 1946% analysis. \enquote{Quoting} that straight single quote character
1856% like so: \meta{\texttt{"'}} allows to determine the carrier of the 1947% like so: \meta{\texttt{"'}} allows to determine the carrier of the
1857% \arb[trans]{hamzaT} freely, without any consideration for the 1948% \arb[trans]{hamzaT} freely, without any consideration for the
1858% context. \Cref{tab:quoted-hamza} gives the equivalents for all the 1949% context. \Vref{tab:quoted-hamza} gives the equivalents for all the
1859% possible carriers the \arb[trans]{hamzaT} may take. 1950% possible carriers the \arb[trans]{hamzaT} may take.
1860% 1951%
1861% \begin{longtable}{lllll} 1952% \begin{longtable}{lllll}
1862% \bottomrule 1953% \bottomrule
1863% \caption*{\Cref*{tab:quoted-hamza}: \enquote{Quoted} 1954% \caption[]{\enquote{Quoted} \arb[trans]{hamzaT}}
1864% \arb[trans]{hamzaT}}
1865% \endfoot 1955% \endfoot
1866% \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}}\\[-1em] 1956% \toprule
1867% \toprule Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1957% \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}}
1958% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
1868% & Arab\TeX\ notation \\ 1959% & Arab\TeX\ notation \\
1869% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1960% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1870% \endfirsthead 1961% \endfirsthead
1871% \toprule Letter & \multicolumn{3}{l}{Transliteration} 1962% \toprule Letter & \multicolumn{3}{l}{Transliteration}
1872% & Arab\TeX\ notation \\ 1963% & Arab\TeX\ notation \\
1873% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1964% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1874% \endhead 1965% \endhead
1875% \footnotetext{See below \vref{sec:transliteration}.} 1966% \footnotetext{See below \vref{sec:transliteration}.}
1876% \label{tab:quoted-hamza} 1967% \label{tab:quoted-hamza}
1877% \arb[novoc]{|"'} & \dmg{|"'} & \loc{|"'} & \brill{|"'} & \verb+|"'+ \\ 1968% \arb[novoc]{|"'} & \dmg{|"'} & \loc{|"'} & \brill{|"'} & \verb+|"'+ \\
1878% \pagebreak[1]
1879% \arb[novoc]{A"'} & \dmg{A"'} & \loc{A"'} & \brill{A"'} & \verb|A"'| \\ 1969% \arb[novoc]{A"'} & \dmg{A"'} & \loc{A"'} & \brill{A"'} & \verb|A"'| \\
1880% \arb[novoc]{a"'} & \dmg{a"'} & \loc{a"'} & \brill{a"'} & \verb|a"'| \\ 1970% \arb[novoc]{a"'} & \dmg{a"'} & \loc{a"'} & \brill{a"'} & \verb|a"'| \\
1881% \arb[novoc]{u"'} & \dmg{u"'} & \loc{u"'} & \brill{u"'} & \verb|u"'| \\ 1971% \arb[novoc]{u"'} & \dmg{u"'} & \loc{u"'} & \brill{u"'} & \verb|u"'| \\
@@ -1926,11 +2016,11 @@
1926% \end{quote} 2016% \end{quote}
1927% As one can see, the \enquote{pipe} character between the two 2017% As one can see, the \enquote{pipe} character between the two
1928% \meta{n} prevents the necessary \arb[trans]{ta^sdId} rule 2018% \meta{n} prevents the necessary \arb[trans]{ta^sdId} rule
1929% (\cpageref{ref:necessary-tashdid}) from being applied. 2019% (\vpageref{ref:necessary-tashdid}) from being applied.
1930% 2020%
1931% \subsection{Putting back on broken contextual analysis rules} 2021% \subsection{Putting back on broken contextual analysis rules}
1932% \label{sec:arbnull} 2022% \label{sec:arbnull}
1933% \NEWfeature{v1.7} In complex documents such as critical editions 2023% \newfeature[v1.7] In complex documents such as critical editions
1934% where footnotes and other kind of annotations can be particularly 2024% where footnotes and other kind of annotations can be particularly
1935% abundant, the contextual analysis rules that are described above may 2025% abundant, the contextual analysis rules that are described above may
1936% be broken by \LaTeX\ commands. To take an example, consider the 2026% be broken by \LaTeX\ commands. To take an example, consider the
@@ -2026,6 +2116,34 @@
2026% |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024} 2116% |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024}
2027% \end{quote} 2117% \end{quote}
2028% 2118%
2119% \needspace{2\baselineskip}
2120% \DescribeMacro{\SetArbNumbers}\newfeature[v1.21]
2121% \phts\label{ref:arabic-numbers}
2122% \cs{SetArbNumbers}\verb+{Indian|Arabic}+ %
2123% \hfill\tcboxverb{Default: Indian}\\
2124% As described above, \package{arabluatex} prints Indian numbers by
2125% default. \cs{SetArbNumbers}|{Arabic}| can be used at any point of
2126% the document to have Arabic numbers printed. Furthermore,
2127% \cs{SetArbNumbers}|{Arabic}| gives control over the way numbers are
2128% to be printed by means of the |anum| font feature, like so:---
2129%
2130% \iffalse
2131%<*example>
2132% \fi
2133\begin{alcode}
2134 \usepackage{arabluatex}
2135 \SetArbNumbers{Arabic}
2136 % use '+anum' for Arabic numbers or '-anum' for Indian numbers:
2137 \newfontfamily\arabicfont{Amiri}[Script=Arabic, RawFeature={+anum}]
2138\end{alcode}
2139% \iffalse
2140%</example>
2141% \fi
2142%
2143% \danger \cs{SetArbNumbers} must be used \emph{outside} Arabic
2144% environments. Once used, this commands operates on subsequent Arabic
2145% environments.
2146%
2029% \subsubsection{The \emph{abjad}} 2147% \subsubsection{The \emph{abjad}}
2030% \label{sec:abjad} 2148% \label{sec:abjad}
2031% The numbers may also be expressed with letters from right to left 2149% The numbers may also be expressed with letters from right to left
@@ -2034,7 +2152,7 @@
2034% \arb[trans]{'abjad} numbers are usually distinguished from the 2152% \arb[trans]{'abjad} numbers are usually distinguished from the
2035% surrounding words by a stroke placed over them. 2153% surrounding words by a stroke placed over them.
2036% 2154%
2037% \DescribeMacro{\abjad} \NEWfeature{v.1.1} \arb[trans]{'abjad} 2155% \DescribeMacro{\abjad} \newfeature[v.1.1] \arb[trans]{'abjad}
2038% numbers are inserted with the \cs{abjad}\marg{number} command in any 2156% numbers are inserted with the \cs{abjad}\marg{number} command in any
2039% of the |voc|, |fullvoc| and |novoc| modes, where \meta{number} may 2157% of the |voc|, |fullvoc| and |novoc| modes, where \meta{number} may
2040% be any number between 1 and 1999, like so:--- 2158% be any number between 1 and 1999, like so:---
@@ -2043,19 +2161,19 @@
2043% kitAbu-hu fI 'l-`AdAt-i} \arb[trans]{\abjad{45} kitAbu-hu fI 2161% kitAbu-hu fI 'l-`AdAt-i} \arb[trans]{\abjad{45} kitAbu-hu fI
2044% 'l-`AdAt-i}. 2162% 'l-`AdAt-i}.
2045% \end{quote} 2163% \end{quote}
2046% \begin{quoting} 2164% \begin{remarks}
2047% \textsc{Rem.}~\emph{a.} As can be seen in the above given example, 2165% \item As can be seen in the above given example,
2048% \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in 2166% \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in
2049% Roman numerals if it finds the \cs{abjad} command in any of the 2167% Roman numerals if it finds the \cs{abjad} command in any of the
2050% transliteration modes. 2168% transliteration modes.
2051% 2169%
2052% \textsc{Rem.}~\emph{b.} \cs{abjad} may also be found outside 2170% \item \cs{abjad} may also be found outside Arabic environments. In
2053% Arabic environments. In that case, \package{arabluatex} does not 2171% that case, \package{arabluatex} does not print the stroke as a
2054% print the stroke as a distinctive mark over the number for it is 2172% distinctive mark over the number for it is not surrounded by other
2055% not surrounded by other Arabic words. In case one nonetheless 2173% Arabic words. In case one nonetheless wishes to print the stroke,
2056% wishes to print the stroke, he can either use the \cs{aoline*} 2174% he can either use the \cs{aoline*} command that is described below
2057% command that is described below in \vref{sec:underlining} or 2175% in \vref{sec:underlining} or insert the \arb[trans]{'ab^gad}
2058% insert the \arb[trans]{'ab^gad} number in |\arb[novoc]{}|:--- 2176% number in |\arb[novoc]{}|:---
2059% \begin{quote} 2177% \begin{quote}
2060% |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| 2178% |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is|
2061% |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is 2179% |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is
@@ -2069,9 +2187,9 @@
2069% |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for 2187% |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for
2070% 1874 is \arb[novoc]{\abjad{1874}}. 2188% 1874 is \arb[novoc]{\abjad{1874}}.
2071% \end{quote} 2189% \end{quote}
2072% \end{quoting} 2190% \end{remarks}
2073% 2191%
2074% \NEWfeature{v1.12}\cs{abjad} may also be used to convert values of 2192% \newfeature[v1.12]\cs{abjad} may also be used to convert values of
2075% counters into \arb[trans]{'ab^gad} numbers, like so:--- % 2193% counters into \arb[trans]{'ab^gad} numbers, like so:--- %
2076% \changes{v1.12}{2018/06/24}{\cs{abjad} can now process \LaTeX\ 2194% \changes{v1.12}{2018/06/24}{\cs{abjad} can now process \LaTeX\
2077% counters}% 2195% counters}%
@@ -2103,19 +2221,18 @@
2103% For the time being, the following is included:--- 2221% For the time being, the following is included:---
2104% \begin{longtable}{lllll} 2222% \begin{longtable}{lllll}
2105% \bottomrule 2223% \bottomrule
2106% \caption*{\Cref*{tab:additional-arabic-codings}: Additional Arabic 2224% \caption[]{Additional Arabic codings}
2107% codings}
2108% \endfoot 2225% \endfoot
2109% \captionlistentry{Additional Arabic codings}\\[-1em]
2110% \toprule 2226% \toprule
2227% \captionlistentry{Additional Arabic codings}
2111% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 2228% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
2112% & Arab\TeX\ notation \\ 2229% & Arab\TeX\ notation \\
2113% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 2230% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2114% \endfirsthead 2231% \endfirsthead
2115% \toprule 2232% \toprule
2116% Letter & \multicolumn{3}{l}{Transliteration} 2233% Letter & \multicolumn{3}{l}{Transliteration}
2117% & Arab\TeX\ notation \\ 2234% & Arab\TeX\ notation \\
2118% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} \\ \midrule 2235% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} \\ \midrule
2119% \endhead \footnotetext{See below \vref{sec:transliteration}.} 2236% \endhead \footnotetext{See below \vref{sec:transliteration}.}
2120% \label{tab:additional-arabic-codings} 2237% \label{tab:additional-arabic-codings}
2121% \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\ 2238% \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\
@@ -2123,8 +2240,16 @@
2123% \arb[novoc]{.f} & \dmg{.f} & \loc{.f} & \brill{.f} & |.f| \\ 2240% \arb[novoc]{.f} & \dmg{.f} & \loc{.f} & \brill{.f} & |.f| \\
2124% \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\ 2241% \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\
2125% \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\ 2242% \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\
2126% \pagebreak[1]
2127% \arb[novoc]{.n} & \dmg{.n} & \loc{.n} & \brill{.n} & |.n| \\ 2243% \arb[novoc]{.n} & \dmg{.n} & \loc{.n} & \brill{.n} & |.n| \\
2244% \arb[novoc]{H} & \dmg{aH} & \loc{aH} & \brill{aH} &
2245% |H|\footnote{This letter can be used to encode the \arb[trans]{tA'
2246% marbUtaT} devoid of diacritical points as it is found in some
2247% manuscripts, with the same \arb[trans]{tanwIn} and the same
2248% short vowels as the standard \arb[trans]{tA' marbUtaT} with two
2249% points above, e. g. |al-madInaHa|, |madInaHaN|, \arb{al-madInaHa},
2250% \arb{madInaHaN}.} \\
2251% \arb[novoc]{.y} & \dmg{.y} & \loc{.y} & \brill{.y} &
2252% |.y|\footnote{See above \vref{ref:dotless-ya}.} \\
2128% \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\ 2253% \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\
2129% \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\ 2254% \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\
2130% \end{longtable} 2255% \end{longtable}
@@ -2151,25 +2276,25 @@
2151% \arb[trans]{\abjad{45}: kitAbu-hu \aemph{fI 'l-\uc{`AdAt-i}}}. 2276% \arb[trans]{\abjad{45}: kitAbu-hu \aemph{fI 'l-\uc{`AdAt-i}}}.
2152% \end{quote} 2277% \end{quote}
2153% 2278%
2154% \begin{quoting} 2279% \begin{remarks}
2155% \textsc{Rem.}~\emph{a.} As the above example shows, 2280% \item As the above example shows, \package{arabluatex} places the
2156% \package{arabluatex} places the horizontal stroke \emph{under} the 2281% horizontal stroke \emph{under} the emphasized words in any of the
2157% emphasized words in any of the transliteration modes. 2282% transliteration modes.
2158% 2283%
2159% \textsc{Rem.}~\emph{b.} \NEWfeature{v1.9.2}\DescribeMacro{\aemph*} 2284% \item \newfeature[v1.9.2]\DescribeMacro{\aemph*} \cs{aemph*} is also
2160% \cs{aemph*} is also provided should one wish to always have the 2285% provided should one wish to always have the horizontal stroke
2161% horizontal stroke printed over the emphasized words, like so: 2286% printed over the emphasized words, like so: |\abjad{45}:|
2162% |\abjad{45}:| |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| 2287% |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| \arb[voc]{\abjad{45}:
2163% \arb[voc]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-`AdAt-i}} 2288% kitAbu-hu \aemph*{fI 'l-`AdAt-i}} \arb[trans]{\abjad{45}:
2164% \arb[trans]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}. 2289% kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}.
2165% \end{quoting} 2290% \end{remarks}
2166% 2291%
2167% \subsubsection{Underlining words or numbers} 2292% \subsubsection{Underlining words or numbers}
2168% \label{sec:underlining} 2293% \label{sec:underlining}
2169% \DescribeMacro{\aoline}% 2294% \DescribeMacro{\aoline}%
2170% \DescribeMacro{\aoline*}% 2295% \DescribeMacro{\aoline*}%
2171% \DescribeMacro{\auline}% 2296% \DescribeMacro{\auline}%
2172% \NEWfeature{v1.19}Three additional, non context-sensitive commands 2297% \newfeature[v1.19]Three additional, non context-sensitive commands
2173% are provided to distinguish words or numbers:--- 2298% are provided to distinguish words or numbers:---
2174% \begin{enumerate} 2299% \begin{enumerate}
2175% \item \cs{aoline}, which is equivalent to \cs{aemph*} described 2300% \item \cs{aoline}, which is equivalent to \cs{aemph*} described
@@ -2182,7 +2307,7 @@
2182% 2307%
2183% \section{Arabic poetry} 2308% \section{Arabic poetry}
2184% \label{sec:poetry} 2309% \label{sec:poetry}
2185% \NEWfeature{v1.6} \package{arabluatex} provides a special 2310% \newfeature[v1.6] \package{arabluatex} provides a special
2186% environment for typesetting Arabic poetry. Every line in this 2311% environment for typesetting Arabic poetry. Every line in this
2187% environment must end with |\\|. 2312% environment must end with |\\|.
2188% 2313%
@@ -2192,11 +2317,11 @@
2192% \iffalse 2317% \iffalse
2193%<*example> 2318%<*example>
2194% \fi 2319% \fi
2195\begin{code} 2320\begin{alcode}
2196 \begin{arabverse}[key1=value1, key2=value2, ...] 2321 \begin{arabverse}[key1=value1, key2=value2, ...]
2197 <verses> 2322 <verses>
2198 \end{arabverse} 2323 \end{arabverse}
2199\end{code} 2324\end{alcode}
2200% \iffalse 2325% \iffalse
2201%</example> 2326%</example>
2202% \fi 2327% \fi
@@ -2245,13 +2370,13 @@
2245% 2370%
2246% \DescribeOption{color} |color|$=$\meta{color name} 2371% \DescribeOption{color} |color|$=$\meta{color name}
2247% \hfill\tcboxverb{Default: not set}\\ 2372% \hfill\tcboxverb{Default: not set}\\
2248% \NEWfeature{v1.13} The color in which lines of poetry are to be 2373% \newfeature[v1.13] The color in which lines of poetry are to be
2249% rendered. 2374% rendered.
2250% 2375%
2251% \label{ref:poetry-export} 2376% \label{ref:poetry-export}
2252% \DescribeOption{export} |export|$=$|true|\verb+|+|false| 2377% \DescribeOption{export} |export|$=$|true|\verb+|+|false|
2253% \hfill\tcboxverb{Default: false}\\ 2378% \hfill\tcboxverb{Default: false}\\
2254% \NEWfeature{v.1.13} This named argument does not need a value as it 2379% \newfeature[v.1.13] This named argument does not need a value as it
2255% defaults to |true| if it is used. If |export| is set as a global 2380% defaults to |true| if it is used. If |export| is set as a global
2256% option as well (see above \vpageref{export-mode}), all the lines 2381% option as well (see above \vpageref{export-mode}), all the lines
2257% will be converted to Unicode and exported to the external selected 2382% will be converted to Unicode and exported to the external selected
@@ -2265,8 +2390,9 @@
2265% when \texttt{export} is set to \texttt{true} to instruct some Lua 2390% when \texttt{export} is set to \texttt{true} to instruct some Lua
2266% functions that lines of poetry have already been processed. That 2391% functions that lines of poetry have already been processed. That
2267% aside, \cs{bayt} and \cs{bayt*} do the same, and only \cs{bayt} 2392% aside, \cs{bayt} and \cs{bayt*} do the same, and only \cs{bayt}
2268% should be used.} Additionally, every \cs{bayt} command \emph{must} 2393% should be used.} Additionally, every \cs{bayt} command \emph{must}
2269% be followed with |\\| like so:---% 2394% be followed with |\\| like so:---
2395%
2270% \iffalse 2396% \iffalse
2271%<*example> 2397%<*example>
2272% \fi 2398% \fi
@@ -2371,7 +2497,7 @@
2371% 2497%
2372% \DescribeMacro{\StretchBayt} \cs{StretchBayt}\verb+[true|false]+ 2498% \DescribeMacro{\StretchBayt} \cs{StretchBayt}\verb+[true|false]+
2373% \hfill\tcboxverb{Default: true}\\ 2499% \hfill\tcboxverb{Default: true}\\
2374% \NEWfeature{v1.20} \cs{StretchBayt} takes one optional argument, 2500% \newfeature[v1.20] \cs{StretchBayt} takes one optional argument,
2375% either |true| or |false| and can be used to remove the stretching 2501% either |true| or |false| and can be used to remove the stretching
2376% form lines of Arabic poetry. As a side effect, there will be more 2502% form lines of Arabic poetry. As a side effect, there will be more
2377% space between words, but this can be compensated by inserting double 2503% space between words, but this can be compensated by inserting double
@@ -2401,6 +2527,16 @@
2401% package can also be used for the same effect. However, it must be 2527% package can also be used for the same effect. However, it must be
2402% loaded \emph{after} \package{arabluatex}.} 2528% loaded \emph{after} \package{arabluatex}.}
2403% 2529%
2530% \needspace{3\baselineskip}
2531% \paragraph{Critical Notes}
2532% \DescribeMacro{\bayt+} \newfeature[v1.21] If the \pkg{ekdosis}
2533% package be loaded,\footcite{pkg:ekdosis} the \cs{bayt} command also
2534% accepts a |+| optional argument that can be used to let critical
2535% notes be inserted in lines of poetry. Details on how to use this
2536% command are provided in the relevant section of the documentation of
2537% the \pkg{ekdosis} package.\footcite[\nopp see \enquote{Arabic
2538% Poetry}]{pkg:ekdosis}
2539%
2404% \paragraph{Line numbering} 2540% \paragraph{Line numbering}
2405% Inside the |arabverse| environment, the |linenumbers| environment of 2541% Inside the |arabverse| environment, the |linenumbers| environment of
2406% the \package{lineno} package can be used to have the lines of 2542% the \package{lineno} package can be used to have the lines of
@@ -2423,7 +2559,7 @@
2423% \iffalse 2559% \iffalse
2424%<*example> 2560%<*example>
2425% \fi 2561% \fi
2426\begin{code} 2562\begin{alcode}
2427 \begin{arab}[fullvoc] 2563 \begin{arab}[fullvoc]
2428 qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: 2564 qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi:
2429 \end{arab} 2565 \end{arab}
@@ -2432,7 +2568,7 @@
2432 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}] 2568 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}]
2433 \SetArbDflt* 2569 \SetArbDflt*
2434 \begin{linenumbers*} 2570 \begin{linenumbers*}
2435 \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti 2571 \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti
2436 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ 2572 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\
2437 \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu 2573 \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu
2438 rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2574 rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2446,7 +2582,7 @@
2446 rasmiN dArisiN min mu`awwali}\\ 2582 rasmiN dArisiN min mu`awwali}\\
2447 \end{linenumbers*} 2583 \end{linenumbers*}
2448 \end{arabverse} 2584 \end{arabverse}
2449\end{code} 2585\end{alcode}
2450% \iffalse 2586% \iffalse
2451%</example> 2587%</example>
2452% \fi% 2588% \fi%
@@ -2461,7 +2597,7 @@
2461% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.25\linewidth] 2597% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.25\linewidth]
2462% \SetArbDflt* 2598% \SetArbDflt*
2463% \begin{linenumbers*} 2599% \begin{linenumbers*}
2464% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti 2600% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti
2465% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ 2601% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\
2466% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu 2602% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu
2467% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2603% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2486,7 +2622,7 @@
2486% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.4\linewidth] 2622% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.4\linewidth]
2487% \SetArbDflt* 2623% \SetArbDflt*
2488% \begin{linenumbers*} 2624% \begin{linenumbers*}
2489% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti 2625% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti
2490% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ 2626% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\
2491% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu 2627% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu
2492% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2628% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2515,7 +2651,7 @@
2515% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.3\linewidth] 2651% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.3\linewidth]
2516% \SetArbDflt* 2652% \SetArbDflt*
2517% \begin{linenumbers*} 2653% \begin{linenumbers*}
2518% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti 2654% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti
2519% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ 2655% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\
2520% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`--fu 2656% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`--fu
2521% rasmu---hA}{limA nasa^gat-hA mi--n ^gan----UbiN wa-^sam'ali}\\ 2657% rasmu---hA}{limA nasa^gat-hA mi--n ^gan----UbiN wa-^sam'ali}\\
@@ -2543,7 +2679,7 @@
2543% \SetArbDflt* 2679% \SetArbDflt*
2544% \scriptsize 2680% \scriptsize
2545% \begin{linenumbers*} 2681% \begin{linenumbers*}
2546% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-saq.ti 2682% \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti
2547% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ 2683% 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\
2548% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu 2684% \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu
2549% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2685% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2576,7 +2712,7 @@
2576% 2712%
2577% \paragraph{Brackets} 2713% \paragraph{Brackets}
2578% \phantomsection 2714% \phantomsection
2579% \NEWfeature{v1.4.3} The various bracket symbols are useful in 2715% \newfeature[v1.4.3] The various bracket symbols are useful in
2580% technical documents such as critical editions for indicating that 2716% technical documents such as critical editions for indicating that
2581% some words or some letters must be added or 2717% some words or some letters must be added or
2582% removed. \package{arabluatex} will automatically fit those symbols 2718% removed. \package{arabluatex} will automatically fit those symbols
@@ -2614,18 +2750,18 @@
2614% \arb[trans]{\uc{qur'An}} or in classical poetry. 2750% \arb[trans]{\uc{qur'An}} or in classical poetry.
2615% 2751%
2616% \DescribeMacro{\arbmark} 2752% \DescribeMacro{\arbmark}
2617% \NEWfeature{v1.11}\cs{arbmark}\oarg{rl\textbar{}lr}\marg{shorthand} 2753% \newfeature[v1.11]\cs{arbmark}\oarg{rl\textbar{}lr}\marg{shorthand}
2618% can be used to insert such characters either in Unicode or in 2754% can be used to insert such characters either in Unicode or in
2619% romanized Arabic environments. It takes as argument a shorthand 2755% romanized Arabic environments. It takes as argument a shorthand
2620% defined beforehand in a default list which consists of the following 2756% defined beforehand in a default list which consists of the following
2621% at the time of writing:---\\ 2757% at the time of writing:---
2758%
2622% \begin{longtable}{llp{.3\linewidth}p{.3\linewidth}} 2759% \begin{longtable}{llp{.3\linewidth}p{.3\linewidth}}
2623% \bottomrule 2760% \bottomrule
2624% \caption*{\Cref*{tab:arabtex-additional-marks}: Additional Arabic 2761% \caption[]{Additional Arabic marks}
2625% marks}
2626% \endfoot 2762% \endfoot
2627% \captionlistentry{Additional Arabic marks}\\[-1em]
2628% \toprule 2763% \toprule
2764% \captionlistentry{Additional Arabic marks}
2629% Codepoint & Shorthand & Glyph & Transliteration \\ \midrule 2765% Codepoint & Shorthand & Glyph & Transliteration \\ \midrule
2630% \endfirsthead 2766% \endfirsthead
2631% \toprule 2767% \toprule
@@ -2638,12 +2774,12 @@
2638% |FDFB| & |jalla| & \arb{\arbmark{jalla}} & \arbmark{jalla} \\ 2774% |FDFB| & |jalla| & \arb{\arbmark{jalla}} & \arbmark{jalla} \\
2639% \end{longtable} 2775% \end{longtable}
2640% 2776%
2641% \NEWfeature{v1.13} 2777% \newfeature[v1.13]
2642% The mark to be inserted is determined by contextual analysis, or by 2778% The mark to be inserted is determined by contextual analysis, or by
2643% an optional argument, either |rl| to have the Arabic glyph printed, 2779% an optional argument, either |rl| to have the Arabic glyph printed,
2644% or |lr| to print the tranliterated equivalent. 2780% or |lr| to print the tranliterated equivalent.
2645% 2781%
2646% \DescribeMacro{\newarbmark} \NEWfeature{v1.11} \cs{newarbmark} is 2782% \DescribeMacro{\newarbmark} \newfeature[v1.11] \cs{newarbmark} is
2647% also provided should one wish to define new marks in addition to the 2783% also provided should one wish to define new marks in addition to the
2648% marks defined above. This command takes three arguments, like so:--- 2784% marks defined above. This command takes three arguments, like so:---
2649% \arabluabox{\cs{newarbmark}\marg{shorthand}\marg{RTL 2785% \arabluabox{\cs{newarbmark}\marg{shorthand}\marg{RTL
@@ -2711,7 +2847,7 @@
2711% character (\texttt{U+200D})}% 2847% character (\texttt{U+200D})}%
2712% {The ‘Zero width joiner’ character (\texttt{U+200D})}} 2848% {The ‘Zero width joiner’ character (\texttt{U+200D})}}
2713% \phantomsection% 2849% \phantomsection%
2714% \NEWfeature{v1.18}% 2850% \newfeature[v1.18]%
2715% The \enquote*{Zero width joiner} character (|U+200D|) belongs to the 2851% The \enquote*{Zero width joiner} character (|U+200D|) belongs to the
2716% \enquote*{General Punctuation} block (range |2000|--|206F|) of the 2852% \enquote*{General Punctuation} block (range |2000|--|206F|) of the
2717% Unicode standard. It is a non-printing character which, when it is 2853% Unicode standard. It is a non-printing character which, when it is
@@ -2753,7 +2889,7 @@
2753% new Arabic modes will be available as \package{arabluatex} will 2889% new Arabic modes will be available as \package{arabluatex} will
2754% mature. 2890% mature.
2755% 2891%
2756% \DescribeMacro{\ayah}\NEWfeature{v1.15}For the time being, 2892% \DescribeMacro{\ayah}\newfeature[v1.15]For the time being,
2757% \cs{ayah}\marg{3-digit number} is provided so as to typeset the 2893% \cs{ayah}\marg{3-digit number} is provided so as to typeset the
2758% number of the \arb[trans]{'AyaT} that it is referred to inside the 2894% number of the \arb[trans]{'AyaT} that it is referred to inside the
2759% dedicated mark---Unicode |U+06DD|: \txarb{^^^^06dd}---in Arabic 2895% dedicated mark---Unicode |U+06DD|: \txarb{^^^^06dd}---in Arabic
@@ -2809,7 +2945,7 @@
2809% 2945%
2810% \section{Color} 2946% \section{Color}
2811% \label{sec:color} 2947% \label{sec:color}
2812% \NEWfeature{v1.12}\package{arabluatex} is able to render in color 2948% \newfeature[v1.12]\package{arabluatex} is able to render in color
2813% either words, parts of words or diacritics. As the techniques 2949% either words, parts of words or diacritics. As the techniques
2814% implemented in this section may lead to some complexity, the reader 2950% implemented in this section may lead to some complexity, the reader
2815% should first become well acquainted with the following 2951% should first become well acquainted with the following
@@ -2860,6 +2996,7 @@
2860% shape of the letters while coloring them:--- 2996% shape of the letters while coloring them:---
2861% \begin{quote}\textbf{\enquote*{voc} mode}:\\ 2997% \begin{quote}\textbf{\enquote*{voc} mode}:\\
2862% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| 2998% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}|
2999% \\
2863% |'a`\arbcolor[blue]{^ga}ba-ka| 3000% |'a`\arbcolor[blue]{^ga}ba-ka|
2864% \arb{i^stara\arbcolor[brown]{y}tu-hu bi-_tama\arbcolor[red]{niN} 3001% \arb{i^stara\arbcolor[brown]{y}tu-hu bi-_tama\arbcolor[red]{niN}
2865% 'a`\arbcolor[blue]{^ga}ba-ka} 3002% 'a`\arbcolor[blue]{^ga}ba-ka}
@@ -2868,6 +3005,7 @@
2868% \end{quote} 3005% \end{quote}
2869% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ 3006% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\
2870% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| 3007% |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}|
3008% \\
2871% |'a`\arbcolor[blue]{^ga}ba-ka| 3009% |'a`\arbcolor[blue]{^ga}ba-ka|
2872% \arb[fullvoc]{i^stara\arbcolor[brown]{y}tu-hu 3010% \arb[fullvoc]{i^stara\arbcolor[brown]{y}tu-hu
2873% bi-_tama\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka} 3011% bi-_tama\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka}
@@ -2890,31 +3028,27 @@
2890% applying colors to bare diacritics requires them to have specific 3028% applying colors to bare diacritics requires them to have specific
2891% encodings. 3029% encodings.
2892% 3030%
2893% \Cref{tab:arbcolor-diacritics} gives the Arab\TeX\ equivalents for 3031% \Vref{tab:arbcolor-diacritics} gives the Arab\TeX\ equivalents for
2894% the diacritics to be printed inside or just after \cs{arbcolor}. 3032% the diacritics to be printed inside or just after \cs{arbcolor}.
2895% 3033%
2896% \needspace{7\baselineskip}
2897% \begin{longtable}{lllll} 3034% \begin{longtable}{lllll}
2898% \bottomrule 3035% \bottomrule
2899% \caption*{\Cref*{tab:arbcolor-diacritics}: Arab\TeX\ diacritics 3036% \caption[]{Arab\TeX\ diacritics for \cs{arbcolor}}
2900% for \cs{arbcolor}}
2901% \endfoot 3037% \endfoot
2902% \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}}\\[-1em]
2903% \toprule 3038% \toprule
3039% \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}}
2904% Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark} 3040% Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark}
2905% & Arab\TeX\ notation \\ 3041% & Arab\TeX\ notation \\
2906% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 3042% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2907% \endfirsthead 3043% \endfirsthead
2908% \toprule 3044% \toprule
2909% Diacritic & \multicolumn{3}{l}{Transliteration} 3045% Diacritic & \multicolumn{3}{l}{Transliteration}
2910% & Arab\TeX\ notation \\ 3046% & Arab\TeX\ notation \\
2911% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 3047% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2912% \endhead \footnotetext{See below \vref{sec:transliteration}.} 3048% \endhead \footnotetext{See below \vref{sec:transliteration}.}
2913% \label{tab:arbcolor-diacritics} 3049% \label{tab:arbcolor-diacritics}
2914% \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\ 3050% \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\
2915% \pagebreak[1]
2916% \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\ 3051% \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\
2917% \pagebreak[1]
2918% \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule 3052% \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule
2919% \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\ 3053% \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\
2920% \end{longtable} 3054% \end{longtable}
@@ -2938,7 +3072,7 @@
2938% 'a`\arbcolor[red]{^g}.aba-ka}. 3072% 'a`\arbcolor[red]{^g}.aba-ka}.
2939% 3073%
2940% |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}| 3074% |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}|
2941% \allowbreak 3075% \\
2942% |'a`\arbcolor[red]|\allowbreak|{^g}\arbcolor[blue]{.a}ba-ka| 3076% |'a`\arbcolor[red]|\allowbreak|{^g}\arbcolor[blue]{.a}ba-ka|
2943% \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN} 3077% \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}
2944% 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka} \linebreak 3078% 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka} \linebreak
@@ -2949,14 +3083,15 @@
2949% 3083%
2950% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ 3084% \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\
2951% |i^staray"\arbcolor[red]{o}tu-hu| |bi-_taman"\arbcolor[red]{iN}| 3085% |i^staray"\arbcolor[red]{o}tu-hu| |bi-_taman"\arbcolor[red]{iN}|
3086% \\
2952% |'a`^g"\arbcolor[red]{.a}ba-ka| 3087% |'a`^g"\arbcolor[red]{.a}ba-ka|
2953% \arb[fullvoc]{i^staray"\arbcolor[red]{o}tu-hu 3088% \arb[fullvoc]{i^staray"\arbcolor[red]{o}tu-hu
2954% bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka} 3089% bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka}
2955% \arb[trans]{i^staray"\arbcolor[red]{o}tu-hu 3090% \arb[trans]{i^staray"\arbcolor[red]{o}tu-hu
2956% bi-_taman"\arbcolor[red]{iN} 3091% bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka}.
2957% \linebreak 'a`^g"\arbcolor[red]{.a}ba-ka}.
2958% 3092%
2959% |i^stara\arbcolor[red]{y"}otu-hu| |bi-_tama\arbcolor[red]{n"}iN| 3093% |i^stara\arbcolor[red]{y"}otu-hu| |bi-_tama\arbcolor[red]{n"}iN|
3094% \\
2960% |'a`\arbcolor[red]|\allowbreak|{^g"}.aba-ka| 3095% |'a`\arbcolor[red]|\allowbreak|{^g"}.aba-ka|
2961% \arb[fullvoc]{i^stara\arbcolor[red]{y"}otu-hu 3096% \arb[fullvoc]{i^stara\arbcolor[red]{y"}otu-hu
2962% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka} 3097% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}
@@ -2964,8 +3099,9 @@
2964% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}. 3099% bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}.
2965% 3100%
2966% |i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu| 3101% |i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu|
3102% \\
2967% |bi-_tama\arb|\allowbreak|color[red]{n"}\arbcolor[blue]{iN}| 3103% |bi-_tama\arb|\allowbreak|color[red]{n"}\arbcolor[blue]{iN}|
2968% |'a`\arbcolor[red]|\allowbreak|{^g"}\arb|\allowbreak% 3104% |'a`\arbcolor[red]|\\|{^g"}\arb|
2969% |color[blue]{.a}ba-ka| 3105% |color[blue]{.a}ba-ka|
2970% \arb[fullvoc]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu 3106% \arb[fullvoc]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu
2971% bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN} 3107% bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN}
@@ -2997,8 +3133,8 @@
2997% \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}} 3133% \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}
2998% \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}. 3134% \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}.
2999% \end{quote} 3135% \end{quote}
3000% \begin{quoting} 3136% \begin{remarks}
3001% \textsc{Rem.} Note that in the last example 3137% \item[\textsc{Rem.}] Note that in the last example
3002% (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the 3138% (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the
3003% \enquote*{pipe} character has been inserted before 3139% \enquote*{pipe} character has been inserted before
3004% \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration 3140% \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration
@@ -3007,7 +3143,7 @@
3007% \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe} 3143% \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe}
3008% \enquote{Discarding the \arb[trans]{'i`rAb}} for more 3144% \enquote{Discarding the \arb[trans]{'i`rAb}} for more
3009% information.} 3145% information.}
3010% \end{quoting} 3146% \end{remarks}
3011% 3147%
3012% The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even 3148% The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even
3013% more intricate business to the rendering with the utmost accuracy in 3149% more intricate business to the rendering with the utmost accuracy in
@@ -3037,9 +3173,8 @@
3037% the knowledge of the writer, the \arb[trans]{wa.slaT} alone is not 3173% the knowledge of the writer, the \arb[trans]{wa.slaT} alone is not
3038% part of the Arabic Unicode block.}. 3174% part of the Arabic Unicode block.}.
3039% 3175%
3040% |fI| |"al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i| 3176% |fI| |"al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i|\\
3041% \arb[fullvoc]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i} 3177% \arb[fullvoc]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i}
3042% \linebreak
3043% \arb[trans]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i}. 3178% \arb[trans]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i}.
3044% 3179%
3045% |\arbcolor[red]{'a'\arbnull{k}}kulu| 3180% |\arbcolor[red]{'a'\arbnull{k}}kulu|
@@ -3065,10 +3200,10 @@
3065%</example> 3200%</example>
3066% \fi% 3201% \fi%
3067% 3202%
3068% \begin{quoting} 3203% \begin{remarks}
3069% \textsc{Rem.} In the preceding example, any consonant could have 3204% \item[\textsc{Rem.}] In the preceding example, any consonant could
3070% been passed as argument to the \cs{arbnull} command. 3205% have been passed as argument to the \cs{arbnull} command.
3071% \end{quoting} 3206% \end{remarks}
3072% 3207%
3073% \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}} 3208% \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}}
3074% In the following example, it is assumed that the 3209% In the following example, it is assumed that the
@@ -3122,18 +3257,19 @@
3122% \paragraph{\texorpdfstring{\arb[trans]{hamzaT}}{hamzah}} 3257% \paragraph{\texorpdfstring{\arb[trans]{hamzaT}}{hamzah}}
3123% The \enquote*{quoting} technique provides an easy way to determine 3258% The \enquote*{quoting} technique provides an easy way to determine
3124% the carrier of the \arb[trans]{hamzaT}, as shown in 3259% the carrier of the \arb[trans]{hamzaT}, as shown in
3125% \vref{tab:quoted-hamza}---: 3260% \vref{tab:quoted-hamza}:---
3126% \begin{quote} 3261% \begin{quote}
3127% \verb+yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna+ 3262% \verb+yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna+
3128% \arb{yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna} 3263% \arb{yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna}
3129% \arb[trans]{yatasA\arbnull{'a}\-\arbcolor[red]{|"'}.a\-lUna}, 3264% \arb[trans]{yatasA\arbnull{'a}\-\arbcolor[red]{|"'}.a\-lUna},
3265% \\
3130% \verb+^say\arbcolor[red]{|"'}\arbnull{'}aN+ 3266% \verb+^say\arbcolor[red]{|"'}\arbnull{'}aN+
3131% \arb{^say\arbcolor[red]{|"'}\arbnull{'}aN} 3267% \arb{^say\arbcolor[red]{|"'}\arbnull{'}aN}
3132% \arb[trans]{^say\arbcolor[red]{|"'}\arbnull{'}aN}, 3268% \arb[trans]{^say\arbcolor[red]{|"'}\arbnull{'}aN},
3133% \verb+^say\ar+\allowbreak\verb+bcolor[red]{|"'}iN+ 3269% \verb+^say\arbcolor[red]+\\\verb+{|"'}iN+
3134% \arb{^say\arbcolor[red]{|"'}iN} 3270% \arb{^say\arbcolor[red]{|"'}iN}
3135% \arb[trans]{^say\arbcolor[red]{|"'}iN}, 3271% \arb[trans]{^say\arbcolor[red]{|"'}iN},
3136% |\arbcolor[red]{a"'}.as\arbcolor|\allowbreak|[red]{y"'}.ilaTuN| 3272% |\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN|
3137% \arb{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN} 3273% \arb{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}
3138% \arb[trans]{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}. 3274% \arb[trans]{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}.
3139% \end{quote} 3275% \end{quote}
@@ -3143,7 +3279,7 @@
3143% \label{sec:transliteration} 3279% \label{sec:transliteration}
3144% It may be more appropriate to speak of \enquote{romanization} than 3280% It may be more appropriate to speak of \enquote{romanization} than
3145% \enquote{transliteration} of Arabic. As seen above in 3281% \enquote{transliteration} of Arabic. As seen above in
3146% \cref{sec:options} \vpagerefrange{sec:options}{sec:local-options}, 3282% \vref{sec:options} \vpagerefrange{sec:options}{sec:local-options},
3147% the \enquote{transliteration mode} may be selected globally or locally. 3283% the \enquote{transliteration mode} may be selected globally or locally.
3148% 3284%
3149% This mode transliterates the Arab\TeX\ input into one of the 3285% This mode transliterates the Arab\TeX\ input into one of the
@@ -3154,6 +3290,9 @@
3154% adopted by the International Convention of Orientalist Scholars in 3290% adopted by the International Convention of Orientalist Scholars in
3155% Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration 3291% Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration
3156% convention is selected by default; 3292% convention is selected by default;
3293% \item[dmg+] This is the same as above, with the difference that the
3294% hamza is always printed, even in words preceded by the definite
3295% article, as in \arb[trans]{al-'asadu}.
3157% \item[loc] \emph{Library of Congress}: this standard is part of a 3296% \item[loc] \emph{Library of Congress}: this standard is part of a
3158% large set of standards for romanization of non-roman scripts 3297% large set of standards for romanization of non-roman scripts
3159% adopted by the American Library Association and the Library of 3298% adopted by the American Library Association and the Library of
@@ -3161,7 +3300,7 @@
3161% \url{http://www.loc.gov/catdir/cpso/roman.html} for the 3300% \url{http://www.loc.gov/catdir/cpso/roman.html} for the
3162% \href{http://www.loc.gov/catdir/cpso/romanization/arabic.pdf}{source 3301% \href{http://www.loc.gov/catdir/cpso/romanization/arabic.pdf}{source
3163% document concerning Arabic language}.} 3302% document concerning Arabic language}.}
3164% \item[arabica] \NEWfeature{v1.8} 3303% \item[arabica] \newfeature[v1.8]
3165% \changes{v1.8}{2017/03/30}{\texttt{arabica} transliteration 3304% \changes{v1.8}{2017/03/30}{\texttt{arabica} transliteration
3166% standard is now supported} \emph{Journal of Arabic and Islamic 3305% standard is now supported} \emph{Journal of Arabic and Islamic
3167% Studies}/\emph{Revue d'études arabes et islamiques}: this standard 3306% Studies}/\emph{Revue d'études arabes et islamiques}: this standard
@@ -3176,16 +3315,16 @@
3176% transliteration mode, which is set to |dmg| by default, may be 3315% transliteration mode, which is set to |dmg| by default, may be
3177% changed at any point of the document by the 3316% changed at any point of the document by the
3178% \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode} 3317% \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode}
3179% may be either |dmg|, |loc| or |arabica|. This command is also 3318% may be either |dmg|, |dmg+|, |loc| or |arabica|. This command is also
3180% accepted in the preamble should one wish to set the transliteration 3319% accepted in the preamble should one wish to set the transliteration
3181% mode globally, e.g.:---% 3320% mode globally, e.g.:---%
3182% \iffalse 3321% \iffalse
3183%<*example> 3322%<*example>
3184% \fi 3323% \fi
3185\begin{code} 3324\begin{alcode}
3186 \usepackage{arabluatex} 3325 \usepackage{arabluatex}
3187 \SetTranslitConvention{loc} 3326 \SetTranslitConvention{loc}
3188\end{code} 3327\end{alcode}
3189% \iffalse 3328% \iffalse
3190%</example> 3329%</example>
3191% \fi 3330% \fi
@@ -3197,7 +3336,7 @@
3197% command, where \meta{style} may be any font shape selection 3336% command, where \meta{style} may be any font shape selection
3198% command, e.g. \cs{upshape}, \cs{itshape}, \cs{slshape}, and so forth. 3337% command, e.g. \cs{upshape}, \cs{itshape}, \cs{slshape}, and so forth.
3199% 3338%
3200% \paragraph{Font} \NEWfeature{v1.4} \DescribeMacro{\SetTranslitFont} 3339% \paragraph{Font} \newfeature[v1.4] \DescribeMacro{\SetTranslitFont}
3201% \cs{SetTranslitFont}\marg{font selection command} allows any 3340% \cs{SetTranslitFont}\marg{font selection command} allows any
3202% specific font to be selected for rendering transliterated text with 3341% specific font to be selected for rendering transliterated text with
3203% the font-selecting commands of the \package{fontspec} or 3342% the font-selecting commands of the \package{fontspec} or
@@ -3207,10 +3346,10 @@
3207% \iffalse 3346% \iffalse
3208%<*example> 3347%<*example>
3209% \fi 3348% \fi
3210\begin{code} 3349\begin{alcode}
3211 \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX] 3350 \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX]
3212 \SetTranslitFont{\translitfont} 3351 \SetTranslitFont{\translitfont}
3213\end{code} 3352\end{alcode}
3214% \iffalse 3353% \iffalse
3215%</example> 3354%</example>
3216% \fi 3355% \fi
@@ -3269,7 +3408,7 @@
3269% 3408%
3270% \paragraph{\texorpdfstring{\enquote*{Long} pro\-per 3409% \paragraph{\texorpdfstring{\enquote*{Long} pro\-per
3271% names}{‘Long’ proper names}} 3410% names}{‘Long’ proper names}}
3272% \NEWfeature{v1.10} \cs{uc} is also able to process proper names 3411% \newfeature[v1.10] \cs{uc} is also able to process proper names
3273% consisting of several subsequent words:--- 3412% consisting of several subsequent words:---
3274% \begin{quote} 3413% \begin{quote}
3275% |\arb[trans]{\uc{'abU| |zaydiN| |.hunaynu| |bnu| |'is.h_aqa| 3414% |\arb[trans]{\uc{'abU| |zaydiN| |.hunaynu| |bnu| |'is.h_aqa|
@@ -3279,7 +3418,7 @@
3279% 3418%
3280% \paragraph{Proper names outside Arabic environments} 3419% \paragraph{Proper names outside Arabic environments}
3281% \changes{v1.10}{2018/01/03}{\cs{uc} supersedes \cs{cap}} 3420% \changes{v1.10}{2018/01/03}{\cs{uc} supersedes \cs{cap}}
3282% \DescribeMacro{\prname}\NEWfeature{v1.10} Transliterated proper 3421% \DescribeMacro{\prname}\newfeature[v1.10] Transliterated proper
3283% names inserted in paragraphs of English text should be printed in 3422% names inserted in paragraphs of English text should be printed in
3284% the same typeface as the surrounding text. \cs{prname}\marg{Arabic 3423% the same typeface as the surrounding text. \cs{prname}\marg{Arabic
3285% proper name} is provided to that effect:\footnote{Just as \cs{uc}, 3424% proper name} is provided to that effect:\footnote{Just as \cs{uc},
@@ -3323,18 +3462,19 @@
3323%</example> 3462%</example>
3324% \fi 3463% \fi
3325% 3464%
3326% \begin{quoting}\label{ref:prname-star} 3465% \begin{remarks}
3327% \textsc{Rem.} \DescribeMacro{\prname*} \package{arabluatex} also 3466% \item[\textsc{Rem.}] \label{ref:prname-star}
3328% provides \cs{prname*} which only renders in upright roman style 3467% \DescribeMacro{\prname*} \package{arabluatex} also provides
3329% already transliterated proper names without applying any further 3468% \cs{prname*} which only renders in upright roman style already
3469% transliterated proper names without applying any further
3330% processing. It is mostly used internally and applied to proper 3470% processing. It is mostly used internally and applied to proper
3331% names exported in Unicode to an external selected 3471% names exported in Unicode to an external selected
3332% file.\footnote{See below \vref{sec:arabtex2utf} for more details.} 3472% file.\footnote{See below \vref{sec:arabtex2utf} for more details.}
3333% \end{quoting} 3473% \end{remarks}
3334% 3474%
3335% \subsection{Additional note on \texttt{dmg} convention} 3475% \subsection{Additional note on \texttt{dmg} convention}
3336% \label{sec:additional-note-dmg} 3476% \label{sec:additional-note-dmg}
3337% \NEWfeature{v1.3} According to \textcite[6]{dmg}, Arabic 3477% \newfeature[v1.3] According to \textcite[6]{dmg}, Arabic
3338% \arb[trans]{'i`rAb} may be rendered into |dmg| in three different 3478% \arb[trans]{'i`rAb} may be rendered into |dmg| in three different
3339% ways: 3479% ways:
3340% \begin{enumerate} 3480% \begin{enumerate}
@@ -3401,29 +3541,29 @@
3401% \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}. 3541% \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}.
3402% \end{quote} 3542% \end{quote}
3403% 3543%
3404% \begin{quoting} 3544% \begin{remarks}
3405% \textsc{Rem.}~\emph{a.} As the \arb[trans]{tanwIn} is passed over 3545% \item As the \arb[trans]{tanwIn} is passed over in pronunciation
3406% in pronunciation when it is followed by the letters 3546% when it is followed by the letters \arb[novoc]{r}, \arb[novoc]{l},
3407% \arb[novoc]{r}, \arb[novoc]{l}, \arb[novoc]{m}, \arb[novoc]{w}, 3547% \arb[novoc]{m}, \arb[novoc]{w}, \arb[novoc]{y} (see
3408% \arb[novoc]{y} (see \vref{ref:assimilation}), it may be desirable 3548% \vref{ref:assimilation}), it may be desirable to further
3409% to further distinguish it by putting it above the line, but not to 3549% distinguish it by putting it above the line, but not to do the
3410% do the same for \arb[trans]{.gayr mun.sarif} terminations. This 3550% same for \arb[trans]{.gayr mun.sarif} terminations. This can be
3411% can be achieved by simply omitting the hyphen before any 3551% achieved by simply omitting the hyphen before any
3412% \arb[trans]{.gayr mun.sarif} termination:---\\ 3552% \arb[trans]{.gayr mun.sarif} termination:---\\
3413% |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN| 3553% |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN|
3414% |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN 3554% |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN
3415% mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa 3555% mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa
3416% ^gubbaTaN mumazzaqaN 'aydu-hA}. 3556% ^gubbaTaN mumazzaqaN 'aydu-hA}.
3417% 3557%
3418% \textsc{Rem.}~\emph{b.} Although the hyphen before the 3558% \item Although the hyphen before the \arb[trans]{tanwIn} is optional
3419% \arb[trans]{tanwIn} is optional as \package{arabluatex} always 3559% as \package{arabluatex} always parses nouns with such termination,
3420% parses nouns with such termination, it may also be used to mark 3560% it may also be used to mark
3421% better the inflectional endings:---\\ 3561% better the inflectional endings:---\\
3422% |mana`a| |'l-nAs-a| |kAffaT-aN| |min| |mu_hA.tabati-hi| 3562% |mana`a| |'l-nAs-a| |kAffaT-aN| |min| |mu_hA.tabati-hi|
3423% |'a.had-uN| |bi-sayyidi-nA| \arb[voc]{mana`a 'l-nAs-a kAffaT-aN 3563% |'a.had-uN| |bi-sayyidi-nA| \arb[voc]{mana`a 'l-nAs-a kAffaT-aN
3424% min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA} \arb[trans]{mana`a 3564% min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA} \arb[trans]{mana`a
3425% 'l-nAs-a kAffaT-aN min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA}. 3565% 'l-nAs-a kAffaT-aN min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA}.
3426% \end{quoting} 3566% \end{remarks}
3427% 3567%
3428% \paragraph{\texorpdfstring{Discar\-ding the 3568% \paragraph{\texorpdfstring{Discar\-ding the
3429% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}} 3569% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}}
@@ -3441,17 +3581,17 @@
3441% state): |.hikmaT| |al-l_ah| \arb[trans]{.hikmaT| \uc{al-l_ah}}, 3581% state): |.hikmaT| |al-l_ah| \arb[trans]{.hikmaT| \uc{al-l_ah}},
3442% |fi.d.daT| |al-darAhim| \arb[trans]{fi.d.daT al-darAhim}. 3582% |fi.d.daT| |al-darAhim| \arb[trans]{fi.d.daT al-darAhim}.
3443% \end{enumerate} 3583% \end{enumerate}
3444% \begin{quoting} 3584% \begin{remarks}
3445% \textsc{Rem.} It may so happen, as in the absence of the article 3585% \item[\textsc{Rem.}] It may so happen, as in the absence of the
3446% before the annexed word, that \package{arabluatex} be unable to 3586% article before the annexed word, that \package{arabluatex} be
3447% determine which of the above two cases the word ending with 3587% unable to determine which of the above two cases the word ending
3448% \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe} 3588% with \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe}
3449% character (see \vref{sec:pipe}) may be appended to that word to 3589% character (see \vref{sec:pipe}) may be appended to that word to
3450% indicate that what follows is in the construct state: 3590% indicate that what follows is in the construct state:
3451% |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub| 3591% |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub|
3452% |\uc{^g}AlInUs| \arb[trans]{\uc{r}isAlaT fI tartIb qirA'aT| 3592% |\uc{^g}AlInUs| \arb[trans]{\uc{r}isAlaT fI tartIb qirA'aT| kutub
3453% kutub \uc{^g}AlInUs}. 3593% \uc{^g}AlInUs}.
3454% \end{quoting} 3594% \end{remarks}
3455% 3595%
3456% 3596%
3457% \paragraph{Uncertain short vowels} 3597% \paragraph{Uncertain short vowels}
@@ -3468,9 +3608,9 @@
3468% \arb[trans]{\uc{ju.hA}} and his donkey (\arb[voc]{\uc{ju.hA 3608% \arb[trans]{\uc{ju.hA}} and his donkey (\arb[voc]{\uc{ju.hA
3469% wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:--- 3609% wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:---
3470% 3610%
3471% \SetTranslitConvention{dmg} 3611% \SetTranslitConvention{dmg+}
3472% \begin{arab}[trans] 3612% \begin{arab}[trans]
3473% \LR{\textbf{\emph{\enquote*{dmg}} standard:}} 'at_A .sadIquN 'il_A 3613% \LR{\textbf{\emph{\enquote*{dmg+}} standard:}} 'at_A .sadIquN 'il_A
3474% \uc{ju.hA} ya.tlubu min-hu .himAra-hu li-yarkaba-hu fI safraTiN 3614% \uc{ju.hA} ya.tlubu min-hu .himAra-hu li-yarkaba-hu fI safraTiN
3475% qa.sIraTiN fa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI 3615% qa.sIraTiN fa-qAla la-hu: \enquote{sawfa 'u`Idu-hu 'ilay-ka fI
3476% 'l-masA'-i wa-'adfa`u la-ka 'ujraTaN.} fa-qAla \uc{ju.hA}: 3616% 'l-masA'-i wa-'adfa`u la-ka 'ujraTaN.} fa-qAla \uc{ju.hA}:
@@ -3497,7 +3637,7 @@
3497% \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu 'l-.himAr-a 3637% \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu 'l-.himAr-a
3498% wa-tuka_d_diba-nI?} 3638% wa-tuka_d_diba-nI?}
3499% \end{arab} 3639% \end{arab}
3500% \SetTranslitConvention{dmg} 3640% \SetTranslitConvention{dmg+}
3501% 3641%
3502% \SetTranslitConvention{arabica} 3642% \SetTranslitConvention{arabica}
3503% \begin{arab}[trans] 3643% \begin{arab}[trans]
@@ -3513,11 +3653,11 @@
3513% \uc{ju.hA}: \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu 3653% \uc{ju.hA}: \enquote{.garIbuN 'amru-ka yA .sadIqI 'a-tu.saddiqu
3514% 'l-.himAr-a wa-tuka_d_diba-nI?} 3654% 'l-.himAr-a wa-tuka_d_diba-nI?}
3515% \end{arab} 3655% \end{arab}
3516% \SetTranslitConvention{dmg} 3656% \SetTranslitConvention{dmg+}
3517% 3657%
3518% \section{Buckwalter input scheme} 3658% \section{Buckwalter input scheme}
3519% \label{sec:buckwalter-scheme} 3659% \label{sec:buckwalter-scheme}
3520% \NEWfeature{v1.4} Even though \package{arabluatex} is primarily 3660% \newfeature[v1.4] Even though \package{arabluatex} is primarily
3521% designed to process the Arab\TeX\ notation, it can also process the 3661% designed to process the Arab\TeX\ notation, it can also process the
3522% Buckwalter input scheme to a large extent.\footnote{See 3662% Buckwalter input scheme to a large extent.\footnote{See
3523% \url{http://www.qamus.org/transliteration.htm}} The Buckwalter 3663% \url{http://www.qamus.org/transliteration.htm}} The Buckwalter
@@ -3537,10 +3677,10 @@
3537% \iffalse 3677% \iffalse
3538%<*example> 3678%<*example>
3539% \fi 3679% \fi
3540\begin{code} 3680\begin{alcode}
3541 \usepackage{arabluatex} 3681 \usepackage{arabluatex}
3542 \SetInputScheme{buckwalter} 3682 \SetInputScheme{buckwalter}
3543\end{code} 3683\end{alcode}
3544% \iffalse 3684% \iffalse
3545%</example> 3685%</example>
3546% \fi 3686% \fi
@@ -3560,27 +3700,26 @@
3560% It is therefore recommended to use the Buckwalter \enquote*{safe} 3700% It is therefore recommended to use the Buckwalter \enquote*{safe}
3561% scheme. 3701% scheme.
3562% 3702%
3563% \Cref{tab:buckwalter-scheme} gives the Buckwalter equivalents that 3703% \Vref{tab:buckwalter-scheme} gives the Buckwalter equivalents that
3564% are currently used by \package{arabluatex}. The additional 3704% are currently used by \package{arabluatex}. The additional
3565% characters that are defined in \vref{tab:additional-arabic-codings} 3705% characters that are defined in \vref{tab:additional-arabic-codings}
3566% are also available. 3706% are also available.
3567% 3707%
3568% \enlargethispage{\baselineskip}
3569% \begin{longtable}{llllll} 3708% \begin{longtable}{llllll}
3570% \bottomrule 3709% \bottomrule
3571% \caption*{\Cref*{tab:buckwalter-scheme}: Buckwalter scheme} 3710% \caption[]{Buckwalter input scheme}
3572% \endfoot 3711% \endfoot
3573% \captionlistentry{Buckwalter scheme}\\[-1em]
3574% \toprule 3712% \toprule
3713% \captionlistentry{Buckwalter input scheme}
3575% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 3714% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
3576% & \multicolumn{2}{l}{Buckwalter notation} \\ 3715% & \multicolumn{2}{l}{Buckwalter notation} \\
3577% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & 3716% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| &
3578% |safe| \\ \midrule 3717% |safe| \\ \midrule
3579% \endfirsthead 3718% \endfirsthead
3580% \toprule 3719% \toprule
3581% Letter & \multicolumn{3}{l}{Transliteration} 3720% Letter & \multicolumn{3}{l}{Transliteration}
3582% & \multicolumn{2}{l}{Buckwalter notation} \\ 3721% & \multicolumn{2}{l}{Buckwalter notation} \\
3583% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & 3722% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| &
3584% |safe| \\ \midrule 3723% |safe| \\ \midrule
3585% \endhead \footnotetext{See \vref{sec:transliteration}.} 3724% \endhead \footnotetext{See \vref{sec:transliteration}.}
3586% \label{tab:buckwalter-scheme} 3725% \label{tab:buckwalter-scheme}
@@ -3602,7 +3741,6 @@
3602% \arb[novoc]{.t} & \dmg{.t} & \loc{.t} & \brill{.t} & |T| & |T| \\ 3741% \arb[novoc]{.t} & \dmg{.t} & \loc{.t} & \brill{.t} & |T| & |T| \\
3603% \arb[novoc]{.z} & \dmg{.z} & \loc{.z} & \brill{.z} & |Z| & |Z| \\ 3742% \arb[novoc]{.z} & \dmg{.z} & \loc{.z} & \brill{.z} & |Z| & |Z| \\
3604% \arb[novoc]{`} & \dmg{`} & \loc{`} & \brill{`} & |E| & |E| \\ 3743% \arb[novoc]{`} & \dmg{`} & \loc{`} & \brill{`} & |E| & |E| \\
3605% \pagebreak[2]
3606% \arb[novoc]{.g} & \dmg{.g} & \loc{.g} & \brill{.g} & |g| & |g| \\ 3744% \arb[novoc]{.g} & \dmg{.g} & \loc{.g} & \brill{.g} & |g| & |g| \\
3607% \arb[novoc]{f} & \dmg{f} & \loc{f} & \brill{f} & |f| & |f| \\ 3745% \arb[novoc]{f} & \dmg{f} & \loc{f} & \brill{f} & |f| & |f| \\
3608% \arb[novoc]{q} & \dmg{q} & \loc{q} & \brill{q} & |q| & |q| \\ 3746% \arb[novoc]{q} & \dmg{q} & \loc{q} & \brill{q} & |q| & |q| \\
@@ -3677,7 +3815,7 @@
3677% 3815%
3678% \section{Unicode Arabic input} 3816% \section{Unicode Arabic input}
3679% \label{sec:unicode-input} 3817% \label{sec:unicode-input}
3680% \NEWfeature{v1.5} As said above in \vref{sec:buckwalter-scheme} 3818% \newfeature[v1.5] As said above in \vref{sec:buckwalter-scheme}
3681% about the Buckwalter input scheme, even though \package{arabluatex} 3819% about the Buckwalter input scheme, even though \package{arabluatex}
3682% is primarily designed to process the Arab\TeX\ notation, it also 3820% is primarily designed to process the Arab\TeX\ notation, it also
3683% accepts Unicode Arabic input. It should be noted that 3821% accepts Unicode Arabic input. It should be noted that
@@ -3695,17 +3833,16 @@
3695% \iffalse 3833% \iffalse
3696%<*example> 3834%<*example>
3697% \fi 3835% \fi
3698\begin{code} 3836\begin{alcode}
3699 \begin{txarab} 3837 \begin{txarab}
3700 <Unicode Arabic text> 3838 <Unicode Arabic text>
3701 \end{txarab} 3839 \end{txarab}
3702\end{code} 3840\end{alcode}
3703% \iffalse 3841% \iffalse
3704%</example> 3842%</example>
3705% \fi 3843% \fi
3706% \end{enumerate} 3844% \end{enumerate}
3707% 3845%
3708% \needspace{4\baselineskip}
3709% \section{\LaTeX\ Commands in Arabic environments} 3846% \section{\LaTeX\ Commands in Arabic environments}
3710% \label{sec:commands-in-arb} 3847% \label{sec:commands-in-arb}
3711% \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\ 3848% \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\
@@ -3799,6 +3936,7 @@
3799% for that, but should it happen, it may be necessary to redefine in 3936% for that, but should it happen, it may be necessary to redefine in
3800% the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\ 3937% the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\
3801% \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}} 3938% \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}}
3939%
3802% \DescribeMacro{\FixArbFtnmk} Another solution is to put in the 3940% \DescribeMacro{\FixArbFtnmk} Another solution is to put in the
3803% preamble, below the line that loads \package{arabluatex}, the 3941% preamble, below the line that loads \package{arabluatex}, the
3804% \cs{FixArbFtnmk} command. However, for more control over the layout 3942% \cs{FixArbFtnmk} command. However, for more control over the layout
@@ -3837,7 +3975,7 @@
3837% 3975%
3838% \subsection{New commands} 3976% \subsection{New commands}
3839% \label{sec:declare-new-commands} 3977% \label{sec:declare-new-commands}
3840% \NEWfeature{v1.9}% 3978% \newfeature[v1.9]%
3841% In some particular cases, it may be useful to define new commands to 3979% In some particular cases, it may be useful to define new commands to
3842% be inserted in Arabic environments. From the general principle laid 3980% be inserted in Arabic environments. From the general principle laid
3843% \vpageref{ref:cmd-inside-arabic}, it follows that any command that 3981% \vpageref{ref:cmd-inside-arabic}, it follows that any command that
@@ -3883,7 +4021,7 @@
3883% of commands declared with \cs{MkArbBreak} are not to be processed by 4021% of commands declared with \cs{MkArbBreak} are not to be processed by
3884% \package{arabluatex}. Therefore, as in the previous example, any of 4022% \package{arabluatex}. Therefore, as in the previous example, any of
3885% their argument to be rendered in Arabic must be inserted again in 4023% their argument to be rendered in Arabic must be inserted again in
3886% \cs{arb}. \NEWfeature{v1.12}These commands themselves may have up to 4024% \cs{arb}. \newfeature[v1.12]These commands themselves may have up to
3887% two optional and/or mandatory arguments followed by one optional 4025% two optional and/or mandatory arguments followed by one optional
3888% argument, like so:--- 4026% argument, like so:---
3889% \begin{enumerate} 4027% \begin{enumerate}
@@ -3899,7 +4037,7 @@
3899% (uppermost combination) 4037% (uppermost combination)
3900% \end{enumerate} 4038% \end{enumerate}
3901% 4039%
3902% \DescribeMacro{\MkArbBreak*}\NEWfeature{v1.12} As said above, 4040% \DescribeMacro{\MkArbBreak*}\newfeature[v1.12] As said above,
3903% \cs{MkArbBreak} prevents \package{arabluatex} from processing the 4041% \cs{MkArbBreak} prevents \package{arabluatex} from processing the
3904% arguments of \enquote*{declared} commands as Arabic text. This 4042% arguments of \enquote*{declared} commands as Arabic text. This
3905% technique proves sufficient in most cases. However, a 4043% technique proves sufficient in most cases. However, a
@@ -3926,20 +4064,20 @@
3926% \label{sec:environments} 4064% \label{sec:environments}
3927% \changes{v1.5}{2016/11/14}{Environments may be nested inside the 4065% \changes{v1.5}{2016/11/14}{Environments may be nested inside the
3928% \texttt{arab} environment} 4066% \texttt{arab} environment}
3929% \NEWfeature{v1.5} Environments such as 4067% \newfeature[v1.5] Environments such as
3930% \tcboxverb{\begin{quote} ... \end{quote}} may be nested inside the 4068% \tcboxverb{\begin{quote} ... \end{quote}} may be nested inside the
3931% |arab| environment. Up to one optional argument may be passed to 4069% |arab| environment. Up to one optional argument may be passed to
3932% each nested environment, like so:--- 4070% each nested environment, like so:---
3933% \iffalse 4071% \iffalse
3934%<*example> 4072%<*example>
3935% \fi 4073% \fi
3936\begin{code} 4074\begin{alcode}
3937 \begin{arab} 4075 \begin{arab}
3938 \begin{<environment>}[<options>] 4076 \begin{<environment>}[<options>]
3939 <Arabic text> 4077 <Arabic text>
3940 \end{<environment>} 4078 \end{<environment>}
3941 \end{arab} 4079 \end{arab}
3942\end{code} 4080\end{alcode}
3943% \iffalse 4081% \iffalse
3944%</example> 4082%</example>
3945% \fi 4083% \fi
@@ -4036,13 +4174,13 @@
4036% \iffalse 4174% \iffalse
4037%<*example> 4175%<*example>
4038% \fi 4176% \fi
4039\begin{code} 4177\begin{alcode}
4040 % preamble:--- 4178 % preamble:---
4041 \usepackage{enumitem} 4179 \usepackage{enumitem}
4042 \newlist{enumabjad}{enumerate}{10} 4180 \newlist{enumabjad}{enumerate}{10}
4043 \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}} 4181 \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}}
4044 \usepackage{multicol} 4182 \usepackage{multicol}
4045\end{code} 4183\end{alcode}
4046\begin{example} 4184\begin{example}
4047 From \textcite[i. 29 B--C]{Wright}:--- The derived forms of the 4185 From \textcite[i. 29 B--C]{Wright}:--- The derived forms of the
4048 triliteral verb are usually reckoned fifteen in number, but the 4186 triliteral verb are usually reckoned fifteen in number, but the
@@ -4085,10 +4223,10 @@
4085% \iffalse 4223% \iffalse
4086%<*example> 4224%<*example>
4087% \fi 4225% \fi
4088\begin{code} 4226\begin{alcode}
4089 \usepackage[french]{babel} 4227 \usepackage[french]{babel}
4090 \frenchsetup{StandardLists=true} 4228 \frenchsetup{StandardLists=true}
4091\end{code} 4229\end{alcode}
4092% \iffalse 4230% \iffalse
4093%</example> 4231%</example>
4094% \fi% 4232% \fi%
@@ -4106,12 +4244,12 @@
4106% \iffalse 4244% \iffalse
4107%<*example> 4245%<*example>
4108% \fi 4246% \fi
4109\begin{code} 4247\begin{alcode}
4110 \usepackage{csquotes} 4248 \usepackage{csquotes}
4111 \DeclareQuoteStyle{arabic} 4249 \DeclareQuoteStyle{arabic}
4112 {\textquotedblright}{\textquotedblleft} 4250 {\textquotedblright}{\textquotedblleft}
4113 {\textquoteright}{\textquoteleft} 4251 {\textquoteright}{\textquoteleft}
4114\end{code} 4252\end{alcode}
4115% \iffalse 4253% \iffalse
4116%</example> 4254%</example>
4117% \fi 4255% \fi
@@ -4130,11 +4268,11 @@
4130% \iffalse 4268% \iffalse
4131%</example> 4269%</example>
4132% \fi 4270% \fi
4133% \begin{quoting} 4271% \begin{remarks}
4134% \textsc{Rem.} Do not forget to set back the quoting style to its 4272% \item[\textsc{Rem.}] Do not forget to set back the quoting style to
4135% initial state once the Arabic environment is closed. See the last 4273% its initial state once the Arabic environment is closed. See the
4136% line in the code above. 4274% last line in the code above.
4137% \end{quoting} 4275% \end{remarks}
4138% 4276%
4139% \subsection{Two-argument special commands} 4277% \subsection{Two-argument special commands}
4140% \label{sec:two-arg-cmds} 4278% \label{sec:two-arg-cmds}
@@ -4183,7 +4321,7 @@
4183% \iffalse 4321% \iffalse
4184%<*example> 4322%<*example>
4185% \fi 4323% \fi
4186\begin{code} 4324\begin{alcode}
4187 \beginnumbering 4325 \beginnumbering
4188 \pstart 4326 \pstart
4189 \begin{arab} 4327 \begin{arab}
@@ -4192,7 +4330,7 @@
4192 \end{arab} 4330 \end{arab}
4193 \pend 4331 \pend
4194 \endnumbering 4332 \endnumbering
4195\end{code} 4333\end{alcode}
4196% \iffalse 4334% \iffalse
4197%</example> 4335%</example>
4198% \fi 4336% \fi
@@ -4217,10 +4355,10 @@
4217% \iffalse 4355% \iffalse
4218%<*example> 4356%<*example>
4219% \fi 4357% \fi
4220\begin{code} 4358\begin{alcode}
4221 \usepackage{arabluatex} 4359 \usepackage{arabluatex}
4222 \usepackage[nopar]{quran} 4360 \usepackage[nopar]{quran}
4223\end{code} 4361\end{alcode}
4224% \iffalse 4362% \iffalse
4225%</example> 4363%</example>
4226% \fi 4364% \fi
@@ -4241,7 +4379,7 @@
4241% 4379%
4242% \section{Exporting Unicode Arabic to an external file} 4380% \section{Exporting Unicode Arabic to an external file}
4243% \label{sec:arabtex2utf} 4381% \label{sec:arabtex2utf}
4244% \NEWfeature{v.1.13}\package{arabluatex} is able to produce a 4382% \newfeature[v.1.13]\package{arabluatex} is able to produce a
4245% duplicate of the original |.tex| source file in which all |arabtex| 4383% duplicate of the original |.tex| source file in which all |arabtex|
4246% or |buckwalter| strings will have been replaced with Unicode 4384% or |buckwalter| strings will have been replaced with Unicode
4247% equivalents, either in Arabic script or in any accepted standard of 4385% equivalents, either in Arabic script or in any accepted standard of
@@ -4259,12 +4397,12 @@
4259% \iffalse 4397% \iffalse
4260%<*example> 4398%<*example>
4261% \fi 4399% \fi
4262\begin{code} 4400\begin{alcode}
4263 % preamble 4401 % preamble
4264 \usepackage[export]{arabluatex} 4402 \usepackage[export]{arabluatex}
4265 % or: 4403 % or:
4266 \usepackage[export=true]{arabluatex} 4404 \usepackage[export=true]{arabluatex}
4267\end{code} 4405\end{alcode}
4268% \iffalse 4406% \iffalse
4269%</example> 4407%</example>
4270% \fi 4408% \fi
@@ -4284,11 +4422,11 @@
4284% \iffalse 4422% \iffalse
4285%<*example> 4423%<*example>
4286% \fi 4424% \fi
4287\begin{code} 4425\begin{alcode}
4288 \begin{arabexport} 4426 \begin{arabexport}
4289 <Running paragraphs of either Arabic or non-Arabic text> 4427 <Running paragraphs of either Arabic or non-Arabic text>
4290 \end{arabexport} 4428 \end{arabexport}
4291\end{code} 4429\end{alcode}
4292% \iffalse 4430% \iffalse
4293%</example> 4431%</example>
4294% \fi 4432% \fi
@@ -4346,11 +4484,11 @@
4346% \iffalse 4484% \iffalse
4347%<*example> 4485%<*example>
4348% \fi 4486% \fi
4349\begin{code} 4487\begin{alcode}
4350 Package arabluatex Warning: There are still 'arabtex' strings 4488 Package arabluatex Warning: There are still 'arabtex' strings
4351 to be converted. Please open <jobname><suffix>.tex and compile 4489 to be converted. Please open <jobname><suffix>.tex and compile
4352 it one more time. 4490 it one more time.
4353\end{code} 4491\end{alcode}
4354% \iffalse 4492% \iffalse
4355%</example> 4493%</example>
4356% \fi 4494% \fi
@@ -4368,9 +4506,9 @@
4368% \iffalse 4506% \iffalse
4369%<*example> 4507%<*example>
4370% \fi 4508% \fi
4371\begin{code} 4509\begin{alcode}
4372 pandoc file_out.tex -s -o file_out.odt 4510 pandoc file_out.tex -s -o file_out.odt
4373\end{code} 4511\end{alcode}
4374% \iffalse 4512% \iffalse
4375%</example> 4513%</example>
4376% \fi 4514% \fi
@@ -4382,7 +4520,7 @@
4382% \iffalse 4520% \iffalse
4383%<*example> 4521%<*example>
4384% \fi 4522% \fi
4385\begin{code} 4523\begin{alcode}
4386 % preamble: 4524 % preamble:
4387 \usepackage{arabluatex} % note that 'export' has been removed 4525 \usepackage{arabluatex} % note that 'export' has been removed
4388 \renewcommand{\txarb}[1]{#1} 4526 \renewcommand{\txarb}[1]{#1}
@@ -4392,7 +4530,7 @@
4392 % be safe to say: 4530 % be safe to say:
4393 \renewcommand{\prname}[2]{#2} 4531 \renewcommand{\prname}[2]{#2}
4394 % &c 4532 % &c
4395\end{code} 4533\end{alcode}
4396% \iffalse 4534% \iffalse
4397%</example> 4535%</example>
4398% \fi 4536% \fi
@@ -4509,8 +4647,16 @@
4509% it to suit our purpose: 4647% it to suit our purpose:
4510% \begin{macrocode} 4648% \begin{macrocode}
4511\AtBeginDocument{\ifdef{\LR}% 4649\AtBeginDocument{\ifdef{\LR}%
4512 {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}} 4650 {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\reset@font#1\egroup}}
4513 {\NewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}}} 4651 {\NewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\reset@font#1\egroup}}}
4652% \end{macrocode}
4653% \end{macro}
4654% \begin{macro}{\SetArbNumbers}
4655% \changes{v1.21}{2023/05/21}{selects Indian or Arabic numbers}
4656% \begin{macrocode}
4657\NewDocumentCommand{\SetArbNumbers}{m}{%
4658 \luadirect{arabluatex.setnums(\luastringN{#1})}%
4659}
4514% \end{macrocode} 4660% \end{macrocode}
4515% \end{macro} 4661% \end{macro}
4516% \begin{macro}{\RL} This one typesets its argument from right to 4662% \begin{macro}{\RL} This one typesets its argument from right to
@@ -4669,12 +4815,13 @@
4669% \end{macrocode} 4815% \end{macrocode}
4670% \end{macro} 4816% \end{macro}
4671% \begin{macro}{\altrfont} 4817% \begin{macro}{\altrfont}
4672% \changes{v1.21}{2020/07/13}{new command \cs{altrfont} to store 4818% \changes{v1.21}{2023/05/21}{new command \cs{altrfont} to store
4673% font and shape information (trans mode)} Finally \cs{altrfont} 4819% font and shape information (trans mode)} Finally \cs{altrfont}
4674% is used internally by \package{arabluatex} to store the family and 4820% is used internally by \package{arabluatex} to store family and
4675% the shape of the font to be used for transliterated Arabic. 4821% shape information about the font to be used for transliterated
4822% Arabic.
4676% \begin{macrocode} 4823% \begin{macrocode}
4677\def\altrfont{\al@trans@font\al@trans@style } 4824\def\altrfont{\al@trans@font\al@trans@style}
4678% \end{macrocode} 4825% \end{macrocode}
4679% \end{macro} 4826% \end{macro}
4680% \begin{macro}{\SetTranslitConvention} 4827% \begin{macro}{\SetTranslitConvention}
@@ -4767,7 +4914,7 @@
4767 \ifvmode\leavevmode\fi% 4914 \ifvmode\leavevmode\fi%
4768 \bgroup\textdir TRT\arabicfont#1\egroup} 4915 \bgroup\textdir TRT\arabicfont#1\egroup}
4769\NewDocumentCommand{\txtrans}{+m}{% 4916\NewDocumentCommand{\txtrans}{+m}{%
4770 \bgroup\textdir TLT\al@trans@font\al@trans@style#1\egroup} 4917 \bgroup\textdir TLT\altrfont#1\egroup}
4771% \end{macrocode} 4918% \end{macrocode}
4772% \end{macro} 4919% \end{macro}
4773% \end{macro} 4920% \end{macro}
@@ -4791,7 +4938,7 @@
4791\NewDocumentEnvironment{txarabtr}{}{% 4938\NewDocumentEnvironment{txarabtr}{}{%
4792 \par% 4939 \par%
4793 \pardir TLT\textdir TLT% 4940 \pardir TLT\textdir TLT%
4794 \al@trans@font\al@trans@style}{\par} 4941 \altrfont}{\par}
4795% \end{macrocode} 4942% \end{macrocode}
4796% \end{environment} 4943% \end{environment}
4797% \begin{macro}{\arb} 4944% \begin{macro}{\arb}
@@ -4820,7 +4967,7 @@
4820 \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% 4967 \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
4821 \else% 4968 \else%
4822 \ifx\@tempa\al@mode@trans% 4969 \ifx\@tempa\al@mode@trans%
4823 \bgroup\textdir TLT\al@trans@font\al@trans@style% 4970 \bgroup\textdir TLT%
4824 \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, 4971 \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2},
4825 \luastringO{\al@trans@convention}, 4972 \luastringO{\al@trans@convention},
4826 \luastringO{\al@arb@rules}, 4973 \luastringO{\al@arb@rules},
@@ -4885,7 +5032,7 @@
4885 \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% 5032 \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup%
4886 \else% 5033 \else%
4887 \ifx\@tempa\al@mode@trans% 5034 \ifx\@tempa\al@mode@trans%
4888 \bgroup\pardir TLT\textdir TLT\al@trans@font\al@trans@style% 5035 \bgroup\pardir TLT\textdir TLT%
4889 \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, 5036 \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2},
4890 \luastringO{\al@trans@convention}, 5037 \luastringO{\al@trans@convention},
4891 \luastringO{\al@arb@rules}, 5038 \luastringO{\al@arb@rules},
@@ -4905,55 +5052,63 @@
4905% \begin{macrocode} 5052% \begin{macrocode}
4906\newlength{\al@bayt@width} 5053\newlength{\al@bayt@width}
4907\newlength{\al@gutter@width} 5054\newlength{\al@gutter@width}
5055\newlength{\al@verse@twidth}
4908\setlength{\al@bayt@width}{.3\textwidth} 5056\setlength{\al@bayt@width}{.3\textwidth}
4909\setlength{\al@gutter@width}{.15\al@bayt@width} 5057\setlength{\al@gutter@width}{.15\al@bayt@width}
4910\define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}} 5058\define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}}
4911\define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}} 5059\define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}}
4912\define@key[al]{verse}{metre}{\arb{#1}} 5060\define@key[al]{verse}{metre}{\def\al@verse@metre@value{\arb{#1}}}
4913\define@key[al]{verse}{color}[]{\color{#1}} 5061\define@key[al]{verse}{color}[]{\color{#1}}
4914\define@boolkey[al]{verse}{utf}[true]{} 5062\define@boolkey[al]{verse}{utf}[true]{}
4915\define@boolkey[al]{verse}{delim}[true]{} 5063\define@boolkey[al]{verse}{delim}[true]{}
4916\define@boolkey[al]{verse}{export}[true]{} 5064\define@boolkey[al]{verse}{export}[true]{}
4917\define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, 5065\define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc,
4918 trans}{\def\al@mode{#1}} 5066 trans}{\def\al@mode{#1}}
4919\presetkeys[al]{verse}{metre={}, utf=false, 5067\presetkeys[al]{verse}{utf=false, delim=false}{}
4920 delim=false}{}
4921% \end{macrocode} 5068% \end{macrocode}
4922% Then follows the environment itself: 5069% Then follows the environment itself:
4923% \begin{macrocode} 5070% \begin{macrocode}
4924\NewDocumentEnvironment{arabverse}{!O{}}% 5071\NewDocumentEnvironment{arabverse}{!O{}}%
4925{\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, 5072{\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim,
4926 metre]{#1}% 5073 metre]{#1}%
4927 \if@pkg@export\ifal@verse@export% 5074 \if@pkg@export
4928 \ArbOutFile{\begin{arabverse}}% 5075 \ifal@verse@export
4929 % \ifx\al@mode\al@mode@trans% 5076 \ArbOutFile{\begin{arabverse}}%
4930 % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}% 5077 % \ifx\al@mode\al@mode@trans%
4931 % \else% 5078 % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}%
4932 \IfSubStr[1]{#1}{utf}% 5079 % \else%
5080 \IfSubStr[1]{#1}{utf}%
4933 {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}% 5081 {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}%
4934 {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}% 5082 {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}%
4935 % \fi 5083 % \fi
4936 \else\fi\else\fi\egroup% 5084 \else
4937 \par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% 5085 \fi
4938 % \ifx\al@mode\al@mode@trans% 5086 \else
4939 % \ifal@verse@utf\setRL\else\setLR\fi% 5087 \fi
4940 % \else\setRL\fi% 5088 \egroup
4941 \ifal@verse@utf% 5089 \centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}%
4942 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% 5090 % \ifx\al@mode\al@mode@trans%
4943 \else% 5091 % \ifal@verse@utf\setRL\else\setLR\fi%
4944 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% 5092 % \else\setRL\fi%
4945 \fi% 5093 \ifal@verse@utf
4946 \arab@v@export[#1] 5094 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi
5095 \else
5096 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi
5097 \fi
5098 \addtolength{\al@verse@twidth}{2\al@bayt@width}%
5099 \addtolength{\al@verse@twidth}{\al@gutter@width}%
5100 \arab@v@export[#1]
4947 }% 5101 }%
4948 {\endarab@v@export 5102 {\endarab@v@export
4949 \hfill\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5103 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
4950 export]{#1}% 5104 export]{#1}%
4951 \egroup\par% 5105 \ifdefined\al@verse@metre@value\hfill\al@verse@metre@value\fi
5106 \egroup
4952 \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5107 \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
4953 metre]{#1}% 5108 metre]{#1}%
4954 \if@pkg@export\ifal@verse@export% 5109 \if@pkg@export\ifal@verse@export
4955 \ArbOutFile{\end{arabverse}} 5110 \ArbOutFile{\end{arabverse}}%
4956 \else\fi\else\fi\egroup} 5111 \else\fi\else\fi\egroup}
4957% \end{macrocode} 5112% \end{macrocode}
4958% \begin{macro}{\bayt} 5113% \begin{macro}{\bayt}
4959% \changes{v1.6}{2016/12/17}{New macro \cs{bayt} for typesetting 5114% \changes{v1.6}{2016/12/17}{New macro \cs{bayt} for typesetting
@@ -5002,22 +5157,33 @@
5002\def\al@hemistich@delim{*} 5157\def\al@hemistich@delim{*}
5003\NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}} 5158\NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}}
5004\def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt} 5159\def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt}
5005\NewDocumentCommand{\bayt}{s m o m}{% 5160\providebool{ekd@state}
5006 \IfBooleanTF{#1}{\relax}{\relax}% 5161\NewDocumentCommand{\bayt}{t+ s m o m}{%
5162 \IfBooleanTF{#1}{%
5163 \ifekd@state
5164 \leavevmode
5165 \stepcounter{ekd@lab}%
5166 \zlabel{ekd:\theekd@lab}%
5167 \luadirect{ekdosis.storeabspg(
5168 \luastring{\zref@extract{ekd:\theekd@lab}{abspage}})}%
5169 \add@apparatus
5170 \fi
5171 }{\relax}%
5172 \IfBooleanTF{#2}{\relax}{\relax}%
5007 \ifdefined\savenotes\savenotes\else\fi% 5173 \ifdefined\savenotes\savenotes\else\fi%
5008 \edef\al@tatweel{--}% 5174 \edef\al@tatweel{--}%
5009 \ifal@warp@bayt% 5175 \ifal@warp@bayt%
5010 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% 5176 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#3}}%
5011 \else% 5177 \else%
5012 \makebox[\al@bayt@width][s]{\arb@utf{#2}}% 5178 \makebox[\al@bayt@width][s]{\arb@utf{#3}}%
5013 \fi% 5179 \fi%
5014 \IfNoValueTF{#3}{% 5180 \IfNoValueTF{#4}{%
5015 \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% 5181 \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}%
5016 \else% 5182 \else%
5017 \hspace{\al@gutter@width}% 5183 \hspace{\al@gutter@width}%
5018 \fi 5184 \fi
5019 }{% 5185 }{%
5020 \edef\@tempa{#3}% 5186 \edef\@tempa{#4}%
5021 \ifx\@tempa\al@tatweel% 5187 \ifx\@tempa\al@tatweel%
5022 \ifx\al@mode\al@mode@trans% 5188 \ifx\al@mode\al@mode@trans%
5023 \hspace{\al@gutter@width}% 5189 \hspace{\al@gutter@width}%
@@ -5027,17 +5193,17 @@
5027 \else% 5193 \else%
5028 \ifx\al@mode\al@mode@trans% 5194 \ifx\al@mode\al@mode@trans%
5029 \ifal@warp@bayt% 5195 \ifal@warp@bayt%
5030 \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% 5196 \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#4}}%
5031 \else% 5197 \else%
5032 \makebox[\al@gutter@width][s]{\arb@utf{#3}}% 5198 \makebox[\al@gutter@width][s]{\arb@utf{#4}}%
5033 \fi% 5199 \fi%
5034 \else% 5200 \else%
5035 \makebox[\al@gutter@width][s]{\arb@utf{#3}}% 5201 \makebox[\al@gutter@width][s]{\arb@utf{#4}}%
5036 \fi\fi}% 5202 \fi\fi}%
5037 \ifal@warp@bayt% 5203 \ifal@warp@bayt%
5038 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% 5204 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#5}}%
5039 \else% 5205 \else%
5040 \makebox[\al@bayt@width][s]{\arb@utf{#4}}% 5206 \makebox[\al@bayt@width][s]{\arb@utf{#5}}%
5041 \fi% 5207 \fi%
5042 \ifdefined\spewnotes\spewnotes\else\fi% 5208 \ifdefined\spewnotes\spewnotes\else\fi%
5043} 5209}
@@ -5274,14 +5440,37 @@
5274\NewDocumentEnvironment{arab@v@export}{O{} +b}{% 5440\NewDocumentEnvironment{arab@v@export}{O{} +b}{%
5275 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5441 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
5276 metre]{#1} 5442 metre]{#1}
5277 \if@pkg@export\ifal@verse@export% 5443 \if@pkg@export
5278 \par 5444 \ifal@verse@export
5279 #2 5445 \ifekd@state
5280 \luadirect{arabluatex.doexport("arabverse")} 5446 \begin{ekdverse}[width=\al@verse@twidth]
5281 \luadirect{tex.sprint(arabluatex.arbtoutf(\luastringN{#2}))} 5447 #2
5282 \luadirect{arabluatex.doexport("no")} 5448 \end{ekdverse}
5283 \else\par#2\fi\else\par#2\fi 5449 \else
5284}{\par} 5450 #2
5451 \fi
5452 \luadirect{arabluatex.doexport("arabverse")}%
5453 \luadirect{tex.sprint(arabluatex.arbtoutf(\luastringN{#2}))}%
5454 \luadirect{arabluatex.doexport("no")}%
5455 \else
5456 \ifekd@state
5457 \begin{ekdverse}[width=\al@verse@twidth]
5458 #2
5459 \end{ekdverse}
5460 \else
5461 #2
5462 \fi
5463 \fi
5464 \else
5465 \ifekd@state
5466 \begin{ekdverse}[width=\al@verse@twidth]
5467 #2
5468 \end{ekdverse}
5469 \else
5470 #2
5471 \fi
5472 \fi
5473}{}
5285% \end{macrocode} 5474% \end{macrocode}
5286% \end{environment} 5475% \end{environment}
5287% \begin{macro}{\arbpardir} 5476% \begin{macro}{\arbpardir}
diff --git a/arabluatex.el b/arabluatex.el
index 8977b32..5007675 100644
--- a/arabluatex.el
+++ b/arabluatex.el
@@ -1,8 +1,23 @@
1;;; arabluatex.el --- AUCTeX style for `arabluatex.sty' 1;;; arabluatex.el --- AUCTeX style for `arabluatex.sty'
2;; This file is part of the `arabluatex' package 2;; This file is part of the `arabluatex' package
3 3
4;; ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4;; arabluatex -- ArabTeX for LuaLaTeX
5;; Copyright (C) 2016--2020 Robert Alessi 5;; Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6;; Robert Alessi <alessi@robertalessi.net>
7
8;; Permission to use, copy, modify, and distribute this software for
9;; any purpose with or without fee is hereby granted, provided that
10;; the above copyright notice and this permission notice appear in all
11;; copies.
12
13;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
14;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
15;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
16;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
17;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
18;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
19;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
6 21
7;; The author would like to express his grateful thanks to Arash 22;; The author would like to express his grateful thanks to Arash
8;; Esbati <arash@gnu.org> whose comments helped to improve this file 23;; Esbati <arash@gnu.org> whose comments helped to improve this file
@@ -11,20 +26,6 @@
11;; Please send error reports and suggestions for improvements to Robert 26;; Please send error reports and suggestions for improvements to Robert
12;; Alessi <alessi@robertalessi.net> 27;; Alessi <alessi@robertalessi.net>
13 28
14;; This program is free software: you can redistribute it and/or modify
15;; it under the terms of the GNU General Public License as published by
16;; the Free Software Foundation, either version 3 of the License, or
17;; (at your option) any later version.
18
19;; This program is distributed in the hope that it will be useful, but
20;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22;; General Public License for more details.
23
24;; You should have received a copy of the GNU General Public License
25;; along with this program. If not, see
26;; <http://www.gnu.org/licenses/>.
27
28(defvar LaTeX-arabluatex-preamble-options 29(defvar LaTeX-arabluatex-preamble-options
29 '(("voc") 30 '(("voc")
30 ("fullvoc") 31 ("fullvoc")
@@ -38,10 +39,10 @@
38 (TeX-read-key-val t LaTeX-arabluatex-preamble-options)) 39 (TeX-read-key-val t LaTeX-arabluatex-preamble-options))
39 40
40(defvar LaTeX-arabluatex-mode-options 41(defvar LaTeX-arabluatex-mode-options
41 '("voc" 42 '(("voc")
42 "fullvoc" 43 ("fullvoc")
43 "novoc" 44 ("novoc")
44 "trans") 45 ("trans"))
45 "List of local options for arabluatex macros.") 46 "List of local options for arabluatex macros.")
46 47
47(defvar LaTeX-arabluatex-key-val-options 48(defvar LaTeX-arabluatex-key-val-options
@@ -101,30 +102,32 @@
101 "prname" 102 "prname"
102 "txarb" 103 "txarb"
103 '("arb" [ TeX-arg-eval completing-read 104 '("arb" [ TeX-arg-eval completing-read
104 (TeX-argument-prompt optional nil "Mode") 105 (TeX-argument-prompt nil nil "Mode")
105 LaTeX-arabluatex-mode-options ] 106 LaTeX-arabluatex-mode-options ]
106 t) 107 t)
107 '("arbcolor" [ TeX-arg-eval completing-read 108 '("arbcolor" [ TeX-arg-eval completing-read
108 (TeX-argument-prompt optional nil "Color") 109 (TeX-argument-prompt nil nil "Color")
109 (LaTeX-xcolor-definecolor-list) ] 110 (LaTeX-xcolor-definecolor-list) ]
110 t) 111 t)
111 '("arbmark" [ TeX-arg-eval completing-read 112 '("arbmark" [ TeX-arg-eval completing-read
112 (TeX-argument-prompt optional nil "Option") 113 (TeX-argument-prompt nil nil "Option")
113 LaTeX-arabluatex-arbmark-options ] 114 LaTeX-arabluatex-arbmark-options ]
114 t) 115 t)
115 '("ArbOutFile" [ TeX-arg-eval completing-read 116 '("ArbOutFile" [ TeX-arg-eval completing-read
116 (TeX-argument-prompt optional nil "Option") 117 (TeX-argument-prompt nil nil "Option")
117 LaTeX-arabluatex-outfile-options ] 118 LaTeX-arabluatex-outfile-options ]
118 t) 119 t)
119 '("ArbOutFile*" [ TeX-arg-eval completing-read 120 '("ArbOutFile*" [ TeX-arg-eval completing-read
120 (TeX-argument-prompt optional nil "Option") 121 (TeX-argument-prompt nil nil "Option")
121 LaTeX-arabluatex-outfile-options ] 122 LaTeX-arabluatex-outfile-options ]
122 t) 123 t)
123 '("arind" [ TeX-arg-key-val LaTeX-arabluatex-arind-options ] 124 '("arind" [ TeX-arg-key-val LaTeX-arabluatex-arind-options ]
124 TeX-arg-index) 125 TeX-arg-index)
125 "SetHemistichDelim" 126 "SetHemistichDelim"
126 '("bayt" 2) 127 '("bayt" 2)
128 '("bayt+" 2)
127 "abjad" 129 "abjad"
130 '("SetArbNumbers" "Indian or Arabic")
128 "arbnull" 131 "arbnull"
129 "abraces" 132 "abraces"
130 "LR" 133 "LR"
@@ -145,7 +148,7 @@
145 (LaTeX-add-environments 148 (LaTeX-add-environments
146 '("arab" LaTeX-env-args 149 '("arab" LaTeX-env-args
147 [ TeX-arg-eval completing-read 150 [ TeX-arg-eval completing-read
148 (TeX-argument-prompt optional nil "Mode") 151 (TeX-argument-prompt nil nil "Mode")
149 LaTeX-arabluatex-mode-options ] 152 LaTeX-arabluatex-mode-options ]
150 ) 153 )
151 "txarab" 154 "txarab"
diff --git a/arabluatex.ins b/arabluatex.ins
index f51c46d..a8c65c6 100644
--- a/arabluatex.ins
+++ b/arabluatex.ins
@@ -1,24 +1,23 @@
1%% This file is part of the `arabluatex' package 1%% This file is part of the `arabluatex' package
2%% 2%%
3%% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 3%% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
4%% Copyright (C) 2016--2020 Robert Alessi 4%% Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
5%%
6%% Please send error reports and suggestions for improvements to
7%% Robert Alessi <alessi@robertalessi.net> 5%% Robert Alessi <alessi@robertalessi.net>
8%% 6%%
9%% This program is free software: you can redistribute it and/or 7%% Permission to use, copy, modify, and distribute this software for any
10%% modify it under the terms of the GNU General Public License 8%% purpose with or without fee is hereby granted, provided that the above
11%% as published by the Free Software Foundation, either version 3 9%% copyright notice and this permission notice appear in all copies.
12%% of the License, or (at your option) any later version. 10%%
13%% 11%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14%% This program is distributed in the hope that it will be useful, 12%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15%% but WITHOUT ANY WARRANTY; without even the implied warranty of 13%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
16%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17%% GNU General Public License for more details. 15%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18%% 18%%
19%% You should have received a copy of the GNU General Public License 19%% Please send error reports and suggestions for improvements to
20%% along with this program. If not, see 20%% Robert Alessi <alessi@robertalessi.net>
21%% <http://www.gnu.org/licenses/>.
22%% 21%%
23%% This release of 'arabluatex' consists of the following source files: 22%% This release of 'arabluatex' consists of the following source files:
24%% - arabluatex.ins 23%% - arabluatex.ins
@@ -28,8 +27,6 @@
28%% - arabluatex_fullvoc.lua 27%% - arabluatex_fullvoc.lua
29%% - arabluatex_novoc.lua 28%% - arabluatex_novoc.lua
30%% - arabluatex_trans.lua 29%% - arabluatex_trans.lua
31%%
32
33 30
34\input docstrip.tex 31\input docstrip.tex
35\keepsilent 32\keepsilent
@@ -43,24 +40,23 @@ This is a generated file.
43This file is part of the `arabluatex' package 40This file is part of the `arabluatex' package
44 41
45ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 42ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
46Copyright (C) 2016--2020 Robert Alessi 43Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
47 44Robert Alessi <alessi@robertalessi.net>
48Please send error reports and suggestions for improvements to Robert 45
49Alessi <alessi@robertalessi.net> 46Permission to use, copy, modify, and distribute this software for any
50 47purpose with or without fee is hereby granted, provided that the above
51This program is free software: you can redistribute it and/or modify 48copyright notice and this permission notice appear in all copies.
52it under the terms of the GNU General Public License as published by 49
53the Free Software Foundation, either version 3 of the License, or 50THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
54(at your option) any later version. 51WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
55 52MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
56This program is distributed in the hope that it will be useful, but 53ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
57WITHOUT ANY WARRANTY; without even the implied warranty of 54WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
58MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 55ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
59General Public License for more details. 56OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
60 57
61You should have received a copy of the GNU General Public License 58Please send error reports and suggestions for improvements to
62along with this program. If not, see 59Robert Alessi <alessi@robertalessi.net>
63<http://www.gnu.org/licenses/>.
64 60
65This release of 'arabluatex' consists of the following source files: 61This release of 'arabluatex' consists of the following source files:
66- arabluatex.ins 62- arabluatex.ins
diff --git a/arabluatex.lua b/arabluatex.lua
index 8897194..114a569 100644
--- a/arabluatex.lua
+++ b/arabluatex.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
10copyright notice and this permission notice appear in all copies.
9 11
10This program is free software: you can redistribute it and/or modify 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11it under the terms of the GNU General Public License as published by 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12the Free Software Foundation, either version 3 of the License, or 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13(at your option) any later version. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 19
15This program is distributed in the hope that it will be useful, but 20Please send error reports and suggestions for improvements to Robert
16WITHOUT ANY WARRANTY; without even the implied warranty of 21Alessi <alessi@robertalessi.net>
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18General Public License for more details.
19
20You should have received a copy of the GNU General Public License
21along with this program. If not, see
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25arabluatex = {} 24arabluatex = {}
@@ -54,11 +53,26 @@ local cmd = lpeg.Cs(dblbkslash * ascii^1 * cmdstar^-1)
54local rawcmd = lpeg.Cs(dblbkslash * ascii^1) 53local rawcmd = lpeg.Cs(dblbkslash * ascii^1)
55local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash) 54local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash)
56local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) 55local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1)
56local cmdargsnobs = lpeg.Cs(spce^-1 * bcbracesii)
57local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces) 57local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces)
58local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces) 58local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces)
59local arind = lpeg.Cs(dblbkslash * lpeg.P("arind") * spce^-1 * bsqbracketsii) 59local arind = lpeg.Cs(dblbkslash * lpeg.P("arind") * spce^-1 * bsqbracketsii)
60 60
61local function protectarb(str) 61local function protectarb(str)
62 -- \App[]{}{}
63 str = string.gsub(str, "(\\App%s?)(%b{})(%b{})", "%1[]%2%3")
64 str = gsub(str, lpeg.P("\\App") * spcenc^-1 * bsqbrackets * bcbraces * bcbraces,
65 function(opt, lem, rdg)
66 opt = string.sub(opt, 2, -2)
67 lem = string.sub(lem, 2, -2)
68 rdg = string.sub(rdg, 2, -2)
69 if opt == ""
70 then
71 return string.format("\\app{%s%s}", lem, rdg)
72 else
73 return string.format("\\app[%s]{%s%s}", opt, lem, rdg)
74 end
75 end)
62 str = string.gsub(str, "(\\arb%s?)(%[.-%])(%b{})", "\\al@brk{\\arb%2%3}") 76 str = string.gsub(str, "(\\arb%s?)(%[.-%])(%b{})", "\\al@brk{\\arb%2%3}")
63 str = string.gsub(str, "(\\LR%s?)(%b{})", "\\@LR%2") 77 str = string.gsub(str, "(\\LR%s?)(%b{})", "\\@LR%2")
64 str = string.gsub(str, "(\\RL%s?)(%b{})", "\\@RL%2") 78 str = string.gsub(str, "(\\RL%s?)(%b{})", "\\@RL%2")
@@ -90,11 +104,11 @@ local outofarb = {
90local albrkcmds = { 104local albrkcmds = {
91 "begin", 105 "begin",
92 "end", 106 "end",
93 "par",
94 "LRmarginpar", 107 "LRmarginpar",
95 "arbmark", 108 "arbmark",
96 "abjad", 109 "abjad",
97 "ayah" 110 "ayah",
111 "SetArbNumbers"
98} 112}
99local brkcmds = {} 113local brkcmds = {}
100 114
@@ -120,13 +134,15 @@ function arabluatex.mkarbbreak(str, opt)
120end 134end
121 135
122local function breakcmd(str) 136local function breakcmd(str)
137 -- \par
138 str = gsub(str, dblbkslash * lpeg.Cs("par") * cmdargsnobs, "\\al@brk{%1%2%3}")
123 -- process \item[], then \item[] 139 -- process \item[], then \item[]
124 str = string.gsub(str, "\\(item.?)(%b[])", 140 str = string.gsub(str, "\\(item.?)(%b[])",
125 function(tag, body) 141 function(tag, body)
126 body = string.sub(body, 2, -2) 142 body = string.sub(body, 2, -2)
127 return string.format("\\al@brk{\\item[\\arb{%s}] }", body) 143 return string.format("\\al@brk{\\item[\\arb{%s}] }", body)
128 end) 144 end)
129 str = string.gsub(str, "(\\item)(%s+)", "%1{}%2") 145 str = string.gsub(str, "(\\item)(%s+)", "%1{}%2")
130 -- \textcolor 146 -- \textcolor
131 str = string.gsub(str, "\\(textcolor%s?)(%b{})(%b{})", 147 str = string.gsub(str, "\\(textcolor%s?)(%b{})(%b{})",
132 function(tag, bodycolor, bodytext) 148 function(tag, bodycolor, bodytext)
@@ -170,19 +186,38 @@ local function holdcmd(str)
170 return str 186 return str
171end 187end
172 188
173local function arbnum(str) 189local indorarbnum = "Indian"
190
191function arabluatex.setnums(opt)
192 if opt == "Indian"
193 then
194 indorarbnum = "Indian"
195 else
196 indorarbnum = "Arabic"
197 end
198end
199
200local function arbnum(str) -- not used, see below
174 str = string.gsub(str, "([0-9%,%-%/]+)", function(num) 201 str = string.gsub(str, "([0-9%,%-%/]+)", function(num)
175 return string.reverse(num) 202 return string.reverse(num)
176 end) 203 end)
177 return str 204 return str
178end 205end
179 206
180local function indnum(str) 207local function indnum(str, dir)
181 str = string.gsub(str, "([0-9%,%-%/]+)", function(num) 208 if dir == "ltr"
182 return string.reverse(num) 209 then
183 end) 210 -- do nothing
184 for i = 1,#numbers do 211 else
185 str = string.gsub(str, numbers[i].a, numbers[i].b) 212 str = string.gsub(str, "([0-9%,%-%/]+)", function(num)
213 return string.reverse(num)
214 end)
215 end
216 if indorarbnum == "Indian"
217 then
218 for i = 1,#numbers do
219 str = string.gsub(str, numbers[i].a, numbers[i].b)
220 end
186 end 221 end
187 return str 222 return str
188end 223end
@@ -276,6 +311,16 @@ local function takeoutarb(str)
276 return str 311 return str
277end 312end
278 313
314-- I owe this function to M. Krüger and U. Fischer. Thank to them both.
315local function getrenderer()
316 local a = nil
317 if font.getfont(font.current()).specification
318 then
319 a=font.getfont(font.current()).specification.features.normal.mode
320 end
321 return a
322end
323
279local function voc(str, rules) 324local function voc(str, rules)
280 str = string.gsub(str, "\\arb(%b{})", function(inside) 325 str = string.gsub(str, "\\arb(%b{})", function(inside)
281 inside = string.sub(inside, 2, -2) 326 inside = string.sub(inside, 2, -2)
@@ -311,8 +356,16 @@ local function voc(str, rules)
311 for i = 1,#shortv do 356 for i = 1,#shortv do
312 inside = string.gsub(inside, shortv[i].a, shortv[i].b) 357 inside = string.gsub(inside, shortv[i].a, shortv[i].b)
313 end 358 end
314 for i = 1,#punctuation do 359 if getrenderer() == "harf"
315 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 360 then
361 for i = 1,#punctuationhb do
362 inside = string.gsub(inside, punctuationhb[i].a,
363 punctuationhb[i].b)
364 end
365 else
366 for i = 1,#punctuation do
367 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
368 end
316 end 369 end
317 for i = 1,#null do 370 for i = 1,#null do
318 inside = string.gsub(inside, null[i].a, null[i].b) 371 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -347,8 +400,16 @@ local function voceasy(str)
347 for i = 1,#shortv do 400 for i = 1,#shortv do
348 inside = string.gsub(inside, shortv[i].a, shortv[i].b) 401 inside = string.gsub(inside, shortv[i].a, shortv[i].b)
349 end 402 end
350 for i = 1,#punctuation do 403 if getrenderer() == "harf"
351 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 404 then
405 for i = 1,#punctuationhb do
406 inside = string.gsub(inside, punctuationhb[i].a,
407 punctuationhb[i].b)
408 end
409 else
410 for i = 1,#punctuation do
411 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
412 end
352 end 413 end
353 for i = 1,#null do 414 for i = 1,#null do
354 inside = string.gsub(inside, null[i].a, null[i].b) 415 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -400,8 +461,16 @@ local function fullvoc(str, rules)
400 for i = 1,#shortv do 461 for i = 1,#shortv do
401 inside = string.gsub(inside, shortv[i].a, shortv[i].b) 462 inside = string.gsub(inside, shortv[i].a, shortv[i].b)
402 end 463 end
403 for i = 1,#punctuation do 464 if getrenderer() == "harf"
404 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 465 then
466 for i = 1,#punctuationhb do
467 inside = string.gsub(inside, punctuationhb[i].a,
468 punctuationhb[i].b)
469 end
470 else
471 for i = 1,#punctuation do
472 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
473 end
405 end 474 end
406 for i = 1,#null do 475 for i = 1,#null do
407 inside = string.gsub(inside, null[i].a, null[i].b) 476 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -448,8 +517,16 @@ local function fullvoceasy(str, rules)
448 for i = 1,#shortv do 517 for i = 1,#shortv do
449 inside = string.gsub(inside, shortv[i].a, shortv[i].b) 518 inside = string.gsub(inside, shortv[i].a, shortv[i].b)
450 end 519 end
451 for i = 1,#punctuation do 520 if getrenderer() == "harf"
452 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 521 then
522 for i = 1,#punctuationhb do
523 inside = string.gsub(inside, punctuationhb[i].a,
524 punctuationhb[i].b)
525 end
526 else
527 for i = 1,#punctuation do
528 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
529 end
453 end 530 end
454 for i = 1,#null do 531 for i = 1,#null do
455 inside = string.gsub(inside, null[i].a, null[i].b) 532 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -484,8 +561,16 @@ local function novoc(str)
484 for i = 1,#shortvnv do 561 for i = 1,#shortvnv do
485 inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) 562 inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b)
486 end 563 end
487 for i = 1,#punctuation do 564 if getrenderer() == "harf"
488 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 565 then
566 for i = 1,#punctuationhb do
567 inside = string.gsub(inside, punctuationhb[i].a,
568 punctuationhb[i].b)
569 end
570 else
571 for i = 1,#punctuation do
572 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
573 end
489 end 574 end
490 for i = 1,#null do 575 for i = 1,#null do
491 inside = string.gsub(inside, null[i].a, null[i].b) 576 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -520,8 +605,16 @@ local function novoceasy(str)
520 for i = 1,#shortvnv do 605 for i = 1,#shortvnv do
521 inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) 606 inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b)
522 end 607 end
523 for i = 1,#punctuation do 608 if getrenderer() == "harf"
524 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) 609 then
610 for i = 1,#punctuationhb do
611 inside = string.gsub(inside, punctuationhb[i].a,
612 punctuationhb[i].b)
613 end
614 else
615 for i = 1,#punctuation do
616 inside = string.gsub(inside, punctuation[i].a, punctuation[i].b)
617 end
525 end 618 end
526 for i = 1,#null do 619 for i = 1,#null do
527 inside = string.gsub(inside, null[i].a, null[i].b) 620 inside = string.gsub(inside, null[i].a, null[i].b)
@@ -532,13 +625,19 @@ local function novoceasy(str)
532 return str 625 return str
533end 626end
534 627
535local trfontinfo = "\\altrfont " 628local function transdmg(str, mode, rules)
536
537local function transdmg(str, rules)
538 str = string.gsub(str, "\\arb(%b{})", function(inside) 629 str = string.gsub(str, "\\arb(%b{})", function(inside)
539 inside = string.sub(inside, 2, -2) 630 inside = string.sub(inside, 2, -2)
540 for i = 1,#hamzatrdmg do 631 if mode == "dmg"
541 inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b) 632 then
633 for i = 1,#hamzatrnoinitialdmg do
634 inside = string.gsub(inside, hamzatrnoinitialdmg[i].a, hamzatrnoinitialdmg[i].b)
635 end
636 elseif mode == "dmg+"
637 then
638 for i = 1,#hamzatrdmg do
639 inside = string.gsub(inside, hamzatrdmg[i].a, hamzatrdmg[i].b)
640 end
542 end 641 end
543 for i = 1,#tanwintrdmg do 642 for i = 1,#tanwintrdmg do
544 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) 643 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b)
@@ -569,7 +668,7 @@ local function transdmg(str, rules)
569 for i = 1,#nulltr do 668 for i = 1,#nulltr do
570 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) 669 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b)
571 end 670 end
572 return string.format("{%s%s}", trfontinfo, inside) 671 return string.format("\\altrfont{}%s", inside)
573 end) 672 end)
574 return str 673 return str
575end 674end
@@ -607,7 +706,7 @@ local function transloc(str)
607 for i = 1,#nulltr do 706 for i = 1,#nulltr do
608 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) 707 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b)
609 end 708 end
610 return string.format("{%s%s}", trfontinfo, inside) 709 return string.format("\\altrfont{}%s", inside)
611 end) 710 end)
612 return str 711 return str
613end 712end
@@ -642,7 +741,7 @@ local function transarabica(str)
642 for i = 1,#nulltr do 741 for i = 1,#nulltr do
643 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) 742 inside = string.gsub(inside, nulltr[i].a, nulltr[i].b)
644 end 743 end
645 return string.format("{%s%s}", trfontinfo, inside) 744 return string.format("\\altrfont{}%s", inside)
646 end) 745 end)
647 return str 746 return str
648end 747end
@@ -741,16 +840,16 @@ local function processarbtoutf(str)
741 end) 840 end)
742 return string.format("%s{%s}", tag, body) 841 return string.format("%s{%s}", tag, body)
743 end) 842 end)
744 str = string.gsub(str, "(\\bayt)%s?(%b{})(%b[])(%b{})", function(tag, argi, argii, argiii) 843 str = string.gsub(str, "(\\bayt)%s?(%+?)(%b{})(%b[])(%b{})", function(tag, plus, argi, argii, argiii)
745 argi = string.sub(argi, 2, -2) 844 argi = string.sub(argi, 2, -2)
746 argii = string.sub(argii, 2, -2) 845 argii = string.sub(argii, 2, -2)
747 argiii = string.sub(argiii, 2, -2) 846 argiii = string.sub(argiii, 2, -2)
748 return string.format("%s*{\\arb{%s}}[\\arb{%s}]{\\arb{%s}}", tag, argi, argii, argiii) 847 return string.format("%s%s*{\\arb{%s}}[\\arb{%s}]{\\arb{%s}}", tag, argi, argii, argiii)
749 end) 848 end)
750 str = string.gsub(str, "(\\bayt)%s?(%b{})(%b{})", function(tag, argi, argii) 849 str = string.gsub(str, "(\\bayt)%s?(%+?)(%b{})(%b{})", function(tag, plus, argi, argii)
751 argi = string.sub(argi, 2, -2) 850 argi = string.sub(argi, 2, -2)
752 argii = string.sub(argii, 2, -2) 851 argii = string.sub(argii, 2, -2)
753 return string.format("%s*{\\arb{%s}}{\\arb{%s}}", tag, argi, argii) 852 return string.format("%s%s*{\\arb{%s}}{\\arb{%s}}", tag, plus, argi, argii)
754 end) 853 end)
755 str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body) 854 str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body)
756 body = string.sub(body, 2, -2) 855 body = string.sub(body, 2, -2)
@@ -843,6 +942,7 @@ function arabluatex.closestream()
843 local o = io.open(tex.jobname..utffilesuffix..".tex", "w") 942 local o = io.open(tex.jobname..utffilesuffix..".tex", "w")
844 local t = f:read("*a") 943 local t = f:read("*a")
845 t = string.gsub(t, "\\arabicfont{}", "") 944 t = string.gsub(t, "\\arabicfont{}", "")
945 t = string.gsub(t, "\\altrfont{}", "")
846 t = string.gsub(t, "\\par ", "\n\n") 946 t = string.gsub(t, "\\par ", "\n\n")
847 t = string.gsub(t, "(\\@al@ob)", "{") 947 t = string.gsub(t, "(\\@al@ob)", "{")
848 t = string.gsub(t, "(\\@al@cb@sp)", "} ") 948 t = string.gsub(t, "(\\@al@cb@sp)", "} ")
@@ -1005,8 +1105,8 @@ function arabluatex.processtrans(str, mode, rules, scheme)
1005 if scheme == "buckwalter" then 1105 if scheme == "buckwalter" then
1006 str = processbuckw(str) 1106 str = processbuckw(str)
1007 end 1107 end
1008 if mode == "dmg" then 1108 if mode == "dmg" or mode == "dmg+" then
1009 str = transdmg(str, rules) 1109 str = transdmg(str, mode, rules)
1010 elseif mode == "loc" then 1110 elseif mode == "loc" then
1011 str = transloc(str) 1111 str = transloc(str)
1012 elseif mode == "arabica" then 1112 elseif mode == "arabica" then
@@ -1082,6 +1182,7 @@ function arabluatex.uc(str)
1082 body = string.sub(body, 2, -2) 1182 body = string.sub(body, 2, -2)
1083 return string.format("%s", body) 1183 return string.format("%s", body)
1084 end) 1184 end)
1185 str = string.gsub(str, "\\altrfont%s?{}", "")
1085 str = string.gsub(str, "{", "\\@al@ob") 1186 str = string.gsub(str, "{", "\\@al@ob")
1086 str = string.gsub(str, "} ", "\\@al@cb@sp ") 1187 str = string.gsub(str, "} ", "\\@al@cb@sp ")
1087 str = string.gsub(str, "}", "\\@al@cb") 1188 str = string.gsub(str, "}", "\\@al@cb")
@@ -1136,6 +1237,7 @@ function arabluatex.uc(str)
1136 str = string.gsub(str, "\\@al@ob", "{") 1237 str = string.gsub(str, "\\@al@ob", "{")
1137 str = string.gsub(str, "\\@al@cb@sp ", "} ") 1238 str = string.gsub(str, "\\@al@cb@sp ", "} ")
1138 str = string.gsub(str, "\\@al@cb", "}") 1239 str = string.gsub(str, "\\@al@cb", "}")
1240 str = "\\altrfont{}"..str
1139 if export_utf == "yes" then 1241 if export_utf == "yes" then
1140 tofile = str 1242 tofile = str
1141 arabluatex.tooutfile(tofile) 1243 arabluatex.tooutfile(tofile)
@@ -1175,8 +1277,14 @@ function arabluatex.abjadify(n)
1175end 1277end
1176 1278
1177function arabluatex.abraces(str) 1279function arabluatex.abraces(str)
1178 if tex.textdir == "TRT" then 1280 if tex.textdir == "TRT"
1179 str = "\\}"..str.."\\{" 1281 then
1282 if getrenderer() == "harf"
1283 then
1284 str = "\\{"..str.."\\}"
1285 else
1286 str = "\\}"..str.."\\{"
1287 end
1180 elseif tex.textdir == "TLT" then 1288 elseif tex.textdir == "TLT" then
1181 str = "\\{"..str.."\\}" 1289 str = "\\{"..str.."\\}"
1182 end 1290 end
@@ -1199,7 +1307,9 @@ end
1199function arabluatex.ayah(str) 1307function arabluatex.ayah(str)
1200 if tonumber(str) ~= nil and str.len(str) < 4 then 1308 if tonumber(str) ~= nil and str.len(str) < 4 then
1201 if tex.textdir == "TRT" then 1309 if tex.textdir == "TRT" then
1202 str = indnum(str).."^^^^06dd" 1310 -- end of ayah is typeset LTR and the number comes after the
1311 -- sign (see https://github.com/aliftype/amiri/issues/263#issuecomment-1872979252)
1312 str = "{\\textdir TLT ".."^^^^06dd"..indnum(str, "ltr").."}"
1203 elseif tex.textdir == "TLT" then 1313 elseif tex.textdir == "TLT" then
1204 str = "\\arb[trans]{("..str..")}" 1314 str = "\\arb[trans]{("..str..")}"
1205 end 1315 end
diff --git a/arabluatex_fullvoc.lua b/arabluatex_fullvoc.lua
index a53adce..7483734 100644
--- a/arabluatex_fullvoc.lua
+++ b/arabluatex_fullvoc.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
9 10copyright notice and this permission notice appear in all copies.
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14 11
15This program is distributed in the hope that it will be useful, but 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16WITHOUT ANY WARRANTY; without even the implied warranty of 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18General Public License for more details. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 19
20You should have received a copy of the GNU General Public License 20Please send error reports and suggestions for improvements to Robert
21along with this program. If not, see 21Alessi <alessi@robertalessi.net>
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25hamzafv = { 24hamzafv = {
@@ -104,7 +103,7 @@ hamzafv = {
104 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN): 103 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN):
105 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new 104 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new
106 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new 105 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new
107 {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, 106 {a="(mi)(%')(a[TtH])", b="%1ائ%3"},
108 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, 107 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"},
109 -- final hamzah is on the line after a letter of prolongation or a 108 -- final hamzah is on the line after a letter of prolongation or a
110 -- consonant with sukūn 109 -- consonant with sukūn
@@ -256,7 +255,7 @@ hamzafveasy = { -- differences marked below with 'easy'
256 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) 255 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN)
257 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new 256 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new
258 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new 257 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new
259 {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, 258 {a="(mi)(%')(a[TtH])", b="%1ائ%3"},
260 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, 259 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"},
261 -- easy (begin) 260 -- easy (begin)
262 -- The Munjid says that such words as radI'aN do not have the 261 -- The Munjid says that such words as radI'aN do not have the
@@ -351,9 +350,9 @@ tanwinfv = { -- with assimilations (\SetArbDflt*)
351 {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, 350 {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"},
352 {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, 351 {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"},
353 {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, 352 {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"},
354 {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, 353 {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"},
355-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new 354-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new
356 {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 355 {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
357 {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 356 {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"},
358 -- assimilations (end) 357 -- assimilations (end)
359 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, 358 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"},
@@ -363,9 +362,9 @@ tanwinfv = { -- with assimilations (\SetArbDflt*)
363 {a="(B)%-?(\"aN)", b="%1"}, 362 {a="(B)%-?(\"aN)", b="%1"},
364 {a="%-?(\"aN)(_A)", b="ى"}, 363 {a="%-?(\"aN)(_A)", b="ى"},
365 {a="%-?(\"aN)(Y)", b="ى"}, 364 {a="%-?(\"aN)(Y)", b="ى"},
366 {a="(T)%-?(\"aN)", b="%1"}, 365 {a="([TH])%-?(\"aN)", b="%1"},
367 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new 366 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new
368 {a="([^TA])%-?(\"aN)", b="%1ا"}, 367 {a="([^TAH])%-?(\"aN)", b="%1ا"},
369 {a="%-?(\"iNI?)", b=""}, 368 {a="%-?(\"iNI?)", b=""},
370 -- quoted tanwīn (end) 369 -- quoted tanwīn (end)
371 {a="%-?(uN)", b="ٌ"}, 370 {a="%-?(uN)", b="ٌ"},
@@ -373,15 +372,15 @@ tanwinfv = { -- with assimilations (\SetArbDflt*)
373 -- needed by \arbcolor: 372 -- needed by \arbcolor:
374 {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, 373 {a="%-?(aN)(O[%S]-%_AO)", b="ً"},
375 {a="%-?(aN)(O[%S]-YO)", b="ً"}, 374 {a="%-?(aN)(O[%S]-YO)", b="ً"},
376 {a="(O[%S]-TO)%-?(aN)", b="ً"}, 375 {a="(O[%S]-[TH]O)%-?(aN)", b="ً"},
377 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new 376 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new
378 {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, 377 {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"},
379 -- 378 --
380 {a="%-?(aN)(_A)", b="ًى"}, 379 {a="%-?(aN)(_A)", b="ًى"},
381 {a="%-?(aN)(Y)", b="ًى"}, 380 {a="%-?(aN)(Y)", b="ًى"},
382 {a="(T)%-?(aN)", b="%1ً"}, 381 {a="([TH])%-?(aN)", b="%1ً"},
383 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new 382 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new
384 {a="([^TA])%-?(aN)", b="%1ًا"}, 383 {a="([^TAH])%-?(aN)", b="%1ًا"},
385 {a="%-?(iNI?)", b="ٍ"} 384 {a="%-?(iNI?)", b="ٍ"}
386} 385}
387 386
@@ -405,9 +404,9 @@ tanwinfveasy = { -- no assimilations (see below)
405--easy {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, 404--easy {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"},
406--easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, 405--easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"},
407--easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, 406--easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"},
408--easy {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, 407--easy {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"},
409--easy {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new 408--easy {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new
410--easy {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 409--easy {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
411--easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 410--easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"},
412 -- assimilations (end) 411 -- assimilations (end)
413 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, 412 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"},
@@ -417,9 +416,9 @@ tanwinfveasy = { -- no assimilations (see below)
417 {a="(B)%-?(\"aN)", b="%1"}, 416 {a="(B)%-?(\"aN)", b="%1"},
418 {a="%-?(\"aN)(_A)", b="ى"}, 417 {a="%-?(\"aN)(_A)", b="ى"},
419 {a="%-?(\"aN)(Y)", b="ى"}, 418 {a="%-?(\"aN)(Y)", b="ى"},
420 {a="(T)%-?(\"aN)", b="%1"}, 419 {a="([TH])%-?(\"aN)", b="%1"},
421 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new 420 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new
422 {a="([^TA])%-?(\"aN)", b="%1ا"}, 421 {a="([^TAH])%-?(\"aN)", b="%1ا"},
423 {a="%-?(\"iNI?)", b=""}, 422 {a="%-?(\"iNI?)", b=""},
424 -- quoted tanwīn (end) 423 -- quoted tanwīn (end)
425 {a="%-?(uN)", b="ٌ"}, 424 {a="%-?(uN)", b="ٌ"},
@@ -427,15 +426,15 @@ tanwinfveasy = { -- no assimilations (see below)
427 -- needed by \arbcolor: 426 -- needed by \arbcolor:
428 {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, 427 {a="%-?(aN)(O[%S]-%_AO)", b="ً"},
429 {a="%-?(aN)(O[%S]-YO)", b="ً"}, 428 {a="%-?(aN)(O[%S]-YO)", b="ً"},
430 {a="(O[%S]-TO)%-?(aN)", b="ً"}, 429 {a="(O[%S]-[TH]O)%-?(aN)", b="ً"},
431 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new 430 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new
432 {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, 431 {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"},
433 -- 432 --
434 {a="%-?(aN)(_A)", b="ًى"}, 433 {a="%-?(aN)(_A)", b="ًى"},
435 {a="%-?(aN)(Y)", b="ًى"}, 434 {a="%-?(aN)(Y)", b="ًى"},
436 {a="(T)%-?(aN)", b="%1ً"}, 435 {a="([TH])%-?(aN)", b="%1ً"},
437 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new 436 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new
438 {a="([^TA])%-?(aN)", b="%1ًا"}, 437 {a="([^TAH])%-?(aN)", b="%1ًا"},
439 {a="%-?(iNI?)", b="ٍ"} 438 {a="%-?(iNI?)", b="ٍ"}
440} 439}
441 440
@@ -1007,6 +1006,7 @@ singlefv = {
1007 {a="w", b="و"}, 1006 {a="w", b="و"},
1008 {a="y", b="ي"}, 1007 {a="y", b="ي"},
1009 {a="T", b="ة"}, 1008 {a="T", b="ة"},
1009 {a="H", b="ه"},
1010 -- additional characters (begin) 1010 -- additional characters (begin)
1011 {a="p", b="پ"}, 1011 {a="p", b="پ"},
1012 {a="v", b="ڤ"}, 1012 {a="v", b="ڤ"},
@@ -1042,6 +1042,7 @@ singlefveasy = { -- see the differences under 'easy' tag below
1042 {a="y", b="ي"}, 1042 {a="y", b="ي"},
1043 {a="T", b="ة"}, 1043 {a="T", b="ة"},
1044 -- additional characters (begin) 1044 -- additional characters (begin)
1045 {a="H", b="ه"},
1045 {a="p", b="پ"}, 1046 {a="p", b="پ"},
1046 {a="v", b="ڤ"}, 1047 {a="v", b="ڤ"},
1047 {a="g", b="گ"}, 1048 {a="g", b="گ"},
diff --git a/arabluatex_novoc.lua b/arabluatex_novoc.lua
index f3410e7..1800655 100644
--- a/arabluatex_novoc.lua
+++ b/arabluatex_novoc.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
9 10copyright notice and this permission notice appear in all copies.
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14 11
15This program is distributed in the hope that it will be useful, but 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16WITHOUT ANY WARRANTY; without even the implied warranty of 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18General Public License for more details. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 19
20You should have received a copy of the GNU General Public License 20Please send error reports and suggestions for improvements to Robert
21along with this program. If not, see 21Alessi <alessi@robertalessi.net>
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25tanwinnv = { 24tanwinnv = {
@@ -36,9 +35,9 @@ tanwinnv = {
36-- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, 35-- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"},
37-- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ى%3%4%4"}, 36-- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ى%3%4%4"},
38-- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ى%3%4%4"}, 37-- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ى%3%4%4"},
39-- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1%3%4%4"}, 38-- {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1%3%4%4"},
40-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%3%4%4"}, 39-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%3%4%4"},
41-- {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ا%3%4%4"}, 40-- {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ا%3%4%4"},
42-- {a="%-?(iNI?)(%s)([rlmnwy])", b="|%2%3%3"}, 41-- {a="%-?(iNI?)(%s)([rlmnwy])", b="|%2%3%3"},
43 -- assimilations (end) 42 -- assimilations (end)
44 -- "quoted" tanwīn (begin) 43 -- "quoted" tanwīn (begin)
@@ -46,9 +45,9 @@ tanwinnv = {
46 {a="(B)%-?(\"aN)", b="%1ً"}, 45 {a="(B)%-?(\"aN)", b="%1ً"},
47 {a="%-?(\"aN)(_A)", b="ًى"}, 46 {a="%-?(\"aN)(_A)", b="ًى"},
48 {a="%-?(\"aN)(Y)", b="ًى"}, 47 {a="%-?(\"aN)(Y)", b="ًى"},
49 {a="(T)%-?(\"aN)", b="%1ً"}, 48 {a="([TH])%-?(\"aN)", b="%1ً"},
50 {a="([اآ])(ء)%-?(\"aN)", b="%1%2ً"}, --new 49 {a="([اآ])(ء)%-?(\"aN)", b="%1%2ً"}, --new
51 {a="([^TA])%-?(\"aN)", b="%1ًا"}, 50 {a="([^TAH])%-?(\"aN)", b="%1ًا"},
52 {a="%-?(\"iNI?)", b="ٍ"}, 51 {a="%-?(\"iNI?)", b="ٍ"},
53 -- "quoted" tanwīn (end) 52 -- "quoted" tanwīn (end)
54 {a="%-?(uN)", b=""}, 53 {a="%-?(uN)", b=""},
@@ -56,15 +55,15 @@ tanwinnv = {
56 -- needed by \arbcolor: 55 -- needed by \arbcolor:
57 {a="%-?(aN)(O[%S]-%_AO)", b=""}, 56 {a="%-?(aN)(O[%S]-%_AO)", b=""},
58 {a="%-?(aN)(O[%S]-YO)", b=""}, 57 {a="%-?(aN)(O[%S]-YO)", b=""},
59 {a="(O[%S]-TO)%-?(aN)", b=""}, 58 {a="(O[%S]-[TH]O)%-?(aN)", b=""},
60 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b=""}, --new 59 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b=""}, --new
61 {a="(O[%S]-[^TA]O)%-?(aN)", b=""}, 60 {a="(O[%S]-[^TAH]O)%-?(aN)", b=""},
62 -- 61 --
63 {a="%-?(aN)(_A)", b="ى"}, 62 {a="%-?(aN)(_A)", b="ى"},
64 {a="%-?(aN)(Y)", b="ى"}, 63 {a="%-?(aN)(Y)", b="ى"},
65 {a="(T)%-?(aN)", b="%1"}, 64 {a="([TH])%-?(aN)", b="%1"},
66 {a="([اآ])(ء)%-?(aN)", b="%1%2"}, --new 65 {a="([اآ])(ء)%-?(aN)", b="%1%2"}, --new
67 {a="([^TA])%-?(aN)", b="%1ا"}, 66 {a="([^TAH])%-?(aN)", b="%1ا"},
68 {a="%-?(iNI?)", b=""}, 67 {a="%-?(iNI?)", b=""},
69 -- ʾalif al-waṣl: put it back on with \arbnull 68 -- ʾalif al-waṣl: put it back on with \arbnull
70 {a="(O[%S]-)([%'a]l%-)(O)(\"?[uai])", b="%4"}, 69 {a="(O[%S]-)([%'a]l%-)(O)(\"?[uai])", b="%4"},
diff --git a/arabluatex_trans.lua b/arabluatex_trans.lua
index 455b57b..c3c21e1 100644
--- a/arabluatex_trans.lua
+++ b/arabluatex_trans.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
9 10copyright notice and this permission notice appear in all copies.
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14 11
15This program is distributed in the hope that it will be useful, but 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16WITHOUT ANY WARRANTY; without even the implied warranty of 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18General Public License for more details. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 19
20You should have received a copy of the GNU General Public License 20Please send error reports and suggestions for improvements to Robert
21along with this program. If not, see 21Alessi <alessi@robertalessi.net>
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25-- common 24-- common
@@ -202,6 +201,91 @@ hamzatrdmg = {
202 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"} 201 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"}
203} 202}
204 203
204hamzatrnoinitialdmg = {
205 -- next lines for ʾalif alone
206 {a="(%.A)l%-(%^n)", b=".|l-%2"}, --additional (^n is lunar)
207 {a="([%(%[%|%<%s%-O])(%.A)l%-(%^n)", b="%1.|l-%3"}, --additional (^n is lunar) --p
208 {a="(%.A)l%-([%_%^%.]?[tdrzsnc])", b=".|%2-%2"},
209 {a="([%(%[%|%<%s%-O])(%.A)l%-([%_%^%.]?[tdrzsnc])", b="%1.|%3-%3"}, --p
210 {a="(%.A)([uai])l%-(%^n)", b="||%2l-%3"}, --additional (^n is lunar)
211 {a="([%(%[%|%<%s%-O])(%.A)([uai])l%-(%^n)", b="%1||%3l-%4"}, --additional (^n is lunar) --p
212 {a="(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="||%2%3-%3"},
213 {a="([%(%[%|%<%s%-O])(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="%1||%3%4-%4"}, --p
214 {a="(%.A)([^uai])", b=".|%2"},
215 {a="(%.A)([uai])", b="||%2"},
216 -- hard coded hamza
217 {a="|\"'", b="ʾ"},
218 {a="A\"'", b="ʾA"},
219 {a="[au]\"'", b="ʾ"},
220 {a="w\"'", b="ʾ"},
221 {a="i\"'", b="ʾ"},
222 {a="y\"'", b="ʾ"},
223 -- hamza takes tašdīd too
224 {a="''([Uu])", b="ʾʾ%1"},
225 {a="''([Aa])", b="ʾʾ%1"},
226 {a="''([Ii])", b="ʾʾ%1"},
227 -- initial long u and i (for a, see below)
228 {a="%'%_U", b="||U"},
229 {a="%'%_I", b="||I"},
230 -- taḫfīfu 'l-hamza
231 {a="'u'([^uaiUAI])", b="|U%1"},
232 {a="'i'([^uaiUAI])", b="|I%1"},
233 {a="^u'([^uaiUAI])", b="U%1"},
234 {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1U%2"},
235 {a="^i'([^uaiUAI])", b="I%1"},
236 {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1I%2"},
237 -- madda (historic writing below)
238 {a="'a'([^uaiUAI])", b="ʾA%1"},
239 {a="'a?A", b="ʾA"},
240 {a="(A)(')(i)$", b="%1ʾ%3"},
241 {a="(A)(')(i)(%W)", b="%1ʾ%3%4"},
242 {a="(A)(')(i)", b="%1ʾ%3"}, -- historic madda
243 {a="(A)(')", b="%1ʾ"}, -- historic madda
244 -- initial (needs both ^ and %W patterns)
245 -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines)
246 {a="^('aw)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1i"},
247 {a="(%W)('aw)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1%2i"},
248 {a="^('aw)(O)(\"?[uai])([%S]-O)", b="%1i"},
249 {a="(%W)('aw)(O)(\"?[uai])([%S]-O)", b="%1%2i"},
250 {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"},
251 {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"},
252 {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p
253 {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p
254 -- then the 'initial' rules for the remaining cases
255 {a="^(')([ua])", b="||%2"},
256 {a="^(')(i)", b="||%2"},
257 -- consider replacing initial %W with [%s%(%[%<%-]:
258 -- {a="(%W)(')([ua])", b="%1||%3"},
259 -- {a="(%W)(')(i)", b="%1||%3"},
260 {a="([%s%(%[%<%-])(')([ua])", b="%1||%3"},
261 {a="([%s%(%[%<%-])(')(i)", b="%1||%3"},
262 -- final
263 {a="([Iy])(')(aN)$", b="%1ʾ%3"},
264 {a="([Iy])(')(aN)(%W)", b="%1ʾ%3%4"},
265 {a="([^uai])(')([uai]N?)$", b="%1ʾ%3"},
266 {a="([^uai])(')([uai]N?)(%W)", b="%1ʾ%3%4"},
267 {a="([UI])(')([uai])$", b="%1ʾ%3"},
268 {a="([UI])(')([uai])(%W)", b="%1ʾ%3%4"},
269 -- middle
270 {a="(U)(')", b="%1ʾ"},
271 {a="([Iy])(')", b="%1ʾ"},
272 {a="([^uai])(')([uU])", b="%1ʾ%3"},
273 {a="([^uai])(')(%_?[aAY])", b="%1ʾ%3"},
274 {a="([^uai])(')([iI])", b="%1ʾ%3"},
275 {a="(u)(')([uU])", b="%1ʾ%3"},
276 {a="(u)(')(%_?[aAY])", b="%1ʾ%3"},
277 {a="(u)(')([iI])", b="%1ʾ%3"},
278 {a="(a)(')(%_?[aAY])", b="%1ʾ%3"},
279 {a="(a)(')([uU])", b="%1ʾ%3"},
280 {a="(a)(')([iI])", b="%1ʾ%3"},
281 {a="(i)(')(%_?[aAY])", b="%1ʾ%3"},
282 {a="(i)(')([uU])", b="%1ʾ%3"},
283 {a="(i)(')([iI])", b="%1ʾ%3"},
284 {a="(a)(')([^uaiUAI])", b="%1ʾ%3"},
285 {a="(u)(')([^uaiUAI])", b="%1ʾ%3"},
286 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"}
287}
288
205tanwintrdmg = { 289tanwintrdmg = {
206 {a="%-?([uai]NU)(O)([ui])([%S]-O)", b="\\arbup{un%3}"}, 290 {a="%-?([uai]NU)(O)([ui])([%S]-O)", b="\\arbup{un%3}"},
207 {a="%-?([uai]NU)(%s)([ui])", b="\\arbup{un%3}%2'"}, 291 {a="%-?([uai]NU)(%s)([ui])", b="\\arbup{un%3}%2'"},
@@ -216,41 +300,41 @@ tanwintrdmg = {
216 {a="%-?(uN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{uni}"}, 300 {a="%-?(uN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{uni}"},
217 {a="%-?(aN)(_A)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"}, 301 {a="%-?(aN)(_A)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"},
218 {a="%-?(aN)(Y)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"}, 302 {a="%-?(aN)(Y)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"},
219 {a="(T)%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="t\\arbup{ani}"}, 303 {a="([TH])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="t\\arbup{ani}"},
220 {a="([^TA])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1\\arbup{ani}"}, 304 {a="([^TAH])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1\\arbup{ani}"},
221 {a="%-?(iN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{ini}"}, 305 {a="%-?(iN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{ini}"},
222 {a="%-?(uN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{uni}%2%3"}, 306 {a="%-?(uN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{uni}%2%3"},
223 {a="%-?(aN)(_A)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, 307 {a="%-?(aN)(_A)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"},
224 {a="%-?(aN)(Y)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, 308 {a="%-?(aN)(Y)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"},
225 {a="(T)%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="t\\arbup{ani}%3%4"}, 309 {a="([TH])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="t\\arbup{ani}%3%4"},
226 {a="([^TA])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1\\arbup{ani}%3%4"}, 310 {a="([^TAH])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1\\arbup{ani}%3%4"},
227 {a="%-?(iN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{ini}%2%3"}, 311 {a="%-?(iN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{ini}%2%3"},
228 -- tanwīn preceding 'lla_dI/'llatI 312 -- tanwīn preceding 'lla_dI/'llatI
229 {a="%-?(uN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{uni}"}, 313 {a="%-?(uN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{uni}"},
230 {a="%-?(aN)(_A)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"}, 314 {a="%-?(aN)(_A)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"},
231 {a="%-?(aN)(Y)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"}, 315 {a="%-?(aN)(Y)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"},
232 {a="(T)%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="t\\arbup{ani}"}, 316 {a="([TH])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="t\\arbup{ani}"},
233 {a="([^TA])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="%1\\arbup{ani}"}, 317 {a="([^TAH])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="%1\\arbup{ani}"},
234 {a="%-?(iN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{ini}"}, 318 {a="%-?(iN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{ini}"},
235 {a="%-?(uN)(%s)('lla[%_]?[dt])", b="\\arbup{uni}%2%3"}, 319 {a="%-?(uN)(%s)('lla[%_]?[dt])", b="\\arbup{uni}%2%3"},
236 {a="%-?(aN)(_A)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, 320 {a="%-?(aN)(_A)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"},
237 {a="%-?(aN)(Y)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, 321 {a="%-?(aN)(Y)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"},
238 {a="(T)%-?(aN)(%s)('lla[%_]?[dt])", b="t\\arbup{ani}%3%4"}, 322 {a="([TH])%-?(aN)(%s)('lla[%_]?[dt])", b="t\\arbup{ani}%3%4"},
239 {a="([^TA])%-?(aN)(%s)('lla[%_]?[dt])", b="%1\\arbup{ani}%3%4"}, 323 {a="([^TAH])%-?(aN)(%s)('lla[%_]?[dt])", b="%1\\arbup{ani}%3%4"},
240 {a="%-?(iN)(%s)('lla[%_]?[dt])", b="\\arbup{ini}%2%3"}, 324 {a="%-?(iN)(%s)('lla[%_]?[dt])", b="\\arbup{ini}%2%3"},
241 -- tanwīn + alif without hamza and kasra (ibn) or dhamma (uhrub) 325 -- tanwīn + alif without hamza and kasra (ibn) or dhamma (uhrub)
242 {a="%-?(uN)(O)([ui])([%S]-O)", b="\\arbup{un%3}"}, 326 {a="%-?(uN)(O)([ui])([%S]-O)", b="\\arbup{un%3}"},
243 {a="%-?(aN)(_A)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"}, 327 {a="%-?(aN)(_A)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"},
244 {a="%-?(aN)(Y)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"}, 328 {a="%-?(aN)(Y)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"},
245 {a="(T)%-?(aN)(O)([ui])([%S]-O)", b="t\\arbup{an%4}"}, 329 {a="([TH])%-?(aN)(O)([ui])([%S]-O)", b="t\\arbup{an%4}"},
246 {a="([^TA])%-?(aN)(O)([ui])([%S]-O)", b="%1\\arbup{an%4}"}, 330 {a="([^TAH])%-?(aN)(O)([ui])([%S]-O)", b="%1\\arbup{an%4}"},
247 {a="%-?(iN)(O)([ui])([%S]-O)", b="\\arbup{in%3}"}, 331 {a="%-?(iN)(O)([ui])([%S]-O)", b="\\arbup{in%3}"},
248 {a="(O[%S]-)([uai]N)(O)(\"?[ui])", b="'"}, 332 {a="(O[%S]-)([uai]N)(O)(\"?[ui])", b="'"},
249 {a="%-?(uN)(%s)([ui])", b="\\arbup{un%3}%2'"}, 333 {a="%-?(uN)(%s)([ui])", b="\\arbup{un%3}%2'"},
250 {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, 334 {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3'"},
251 {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, 335 {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3'"},
252 {a="(T)%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3'"}, 336 {a="([TH])%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3'"},
253 {a="([^TA])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3'"}, 337 {a="([^TAH])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3'"},
254 {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2'"}, 338 {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2'"},
255 -- 339 --
256-- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table) 340-- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table)
@@ -258,13 +342,13 @@ tanwintrdmg = {
258 -- needed by \arbcolor: 342 -- needed by \arbcolor:
259 {a="%-?(aN)(O[%S]-%_AO)", b="ạ\\arbup{n}"}, 343 {a="%-?(aN)(O[%S]-%_AO)", b="ạ\\arbup{n}"},
260 {a="%-?(aN)(O[%S]-YO)", b="ạ\\arbup{n}"}, 344 {a="%-?(aN)(O[%S]-YO)", b="ạ\\arbup{n}"},
261 {a="(O[%S]-TO)%-?(\"?aN)", b="\\arbup{an}"}, 345 {a="(O[%S]-[TH]O)%-?(\"?aN)", b="\\arbup{an}"},
262 {a="(O[%S]-[^TA]O)%-?(\"?aN)", b="\\arbup{an}"}, 346 {a="(O[%S]-[^TAH]O)%-?(\"?aN)", b="\\arbup{an}"},
263 -- 347 --
264 {a="%-?(aN)(_A)", b="ạ\\arbup{n}"}, 348 {a="%-?(aN)(_A)", b="ạ\\arbup{n}"},
265 {a="%-?(aN)(Y)", b="ạ\\arbup{n}"}, 349 {a="%-?(aN)(Y)", b="ạ\\arbup{n}"},
266 {a="(T)%-?(\"?aN)", b="t\\arbup{an}"}, 350 {a="([TH])%-?(\"?aN)", b="t\\arbup{an}"},
267 {a="([^TA])%-?(\"?aN)", b="%1\\arbup{an}"}, 351 {a="([^TAH])%-?(\"?aN)", b="%1\\arbup{an}"},
268 {a="%-?([ui])N", b="\\arbup{%1n}"} 352 {a="%-?([ui])N", b="\\arbup{%1n}"}
269} 353}
270 354
@@ -414,18 +498,20 @@ digraphstrdmg = {
414 {a="([%_]?[Uu])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="u%2%3"}, 498 {a="([%_]?[Uu])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="u%2%3"},
415 {a="([%_]?[Ii])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="i%2%3"}, 499 {a="([%_]?[Ii])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="i%2%3"},
416 {a="%-%-", b=""}, 500 {a="%-%-", b=""},
417 {a="iyyaT(%p*)$", b="īyaT%1"}, 501-- {a="iyyaT(%p*)$", b="īyaT%1"}, -- previously. is now:
418 {a="iyyaT(%p*%s)", b="īyaT%1"}, 502 {a="iyya([TH])(%p*)$", b="īya%1%2"},
503-- {a="iyyaT(%p*%s)", b="īyaT%1"}, -- previously. is now:
504 {a="iyya([TH])(%p*%s)", b="īya%1%2"},
419 {a="iyy(%p*)$", b="ī%1"}, 505 {a="iyy(%p*)$", b="ī%1"},
420 {a="iyy(%p*%s)", b="ī%1"}, 506 {a="iyy(%p*%s)", b="ī%1"},
421 -- {a="T([^uai])", b="%1"}, 507 -- {a="[TH]([^uai])", b="%1"},
422 {a="T(\\arbup)", b="t%1"}, 508 {a="[TH](\\arbup)", b="t%1"},
423 {a="([a%'][%_%^%.]?[tdrzsln]%-)(%S-)T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="%1%2h%3%4"}, --p 509 {a="([a%'][%_%^%.]?[tdrzsln]%-)(%S-)[TH]([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="%1%2h%3%4"}, --p
424 {a="T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="t%1%2"}, --p 510 {a="[TH]([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="t%1%2"}, --p
425 {a="T([%|\"])", b="t%1"}, 511 {a="[TH]([%|\"])", b="t%1"},
426 {a="T(%p*%s)", b="h%1"}, 512 {a="[TH](%p*%s)", b="h%1"},
427 {a="T(%p*)$", b="h%1"}, 513 {a="[TH](%p*)$", b="h%1"},
428 {a="T(%p*)(%W)", b="h%1%2"}, 514 {a="[TH](%p*)(%W)", b="h%1%2"},
429 {a="_t", b="ṯ"}, 515 {a="_t", b="ṯ"},
430 {a="%^g", b="ǧ"}, 516 {a="%^g", b="ǧ"},
431 {a="%.h", b="ḥ"}, 517 {a="%.h", b="ḥ"},
@@ -480,6 +566,7 @@ singletrdmg = {
480 {a="y", b="y"}, 566 {a="y", b="y"},
481 {a="T", b="t"}, 567 {a="T", b="t"},
482 -- additional characters (begin) 568 -- additional characters (begin)
569 {a="H", b="t"},
483 {a="p", b="p"}, 570 {a="p", b="p"},
484 {a="v", b="v"}, 571 {a="v", b="v"},
485 {a="g", b="g"}, 572 {a="g", b="g"},
@@ -595,13 +682,13 @@ tanwintrloc = {
595 -- needed by \arbcolor: 682 -- needed by \arbcolor:
596 {a="%-?(aN)(O[%S]-%_AO)", b="an"}, 683 {a="%-?(aN)(O[%S]-%_AO)", b="an"},
597 {a="%-?(aN)(O[%S]-YO)", b="an"}, 684 {a="%-?(aN)(O[%S]-YO)", b="an"},
598 {a="(O[%S]-TO)%-?(\"?aN)", b="an"}, 685 {a="(O[%S]-[TH]O)%-?(\"?aN)", b="an"},
599 {a="(O[%S]-[^TA]O)%-?(\"?aN)", b="an"}, 686 {a="(O[%S]-[^TAH]O)%-?(\"?aN)", b="an"},
600 -- 687 --
601 {a="%-?(aN)(_A)", b="an"}, 688 {a="%-?(aN)(_A)", b="an"},
602 {a="%-?(aN)(Y)", b="an"}, 689 {a="%-?(aN)(Y)", b="an"},
603 {a="(T)%-?(\"?aN)", b="tan"}, 690 {a="([TH])%-?(\"?aN)", b="tan"},
604 {a="([^TA])%-?(\"?aN)", b="%1an"} 691 {a="([^TAH])%-?(\"?aN)", b="%1an"}
605} 692}
606 693
607trigraphstrloc = { -- trigraphs or more 694trigraphstrloc = { -- trigraphs or more
@@ -688,12 +775,12 @@ digraphstrloc = {
688 {a="iyy(%p*%s)", b="ī%1"}, 775 {a="iyy(%p*%s)", b="ī%1"},
689 {a="iyy", b="īy"}, 776 {a="iyy", b="īy"},
690 {a="([tkdsg])(h)", b="%1'%2"}, 777 {a="([tkdsg])(h)", b="%1'%2"},
691 -- {a="T([^uai])", b="h%1"}, 778 -- {a="[TH]([^uai])", b="h%1"},
692 {a="([a%']l%-)(%S-)T([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p 779 {a="([a%']l%-)(%S-)[TH]([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p
693 {a="T([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p 780 {a="[TH]([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p
694 {a="T([%|\"])", b="t%1"}, 781 {a="[TH]([%|\"])", b="t%1"},
695 {a="T(%p*)$", b="h%1"}, 782 {a="[TH](%p*)$", b="h%1"},
696 {a="T(%p*%s)", b="h%1"}, 783 {a="[TH](%p*%s)", b="h%1"},
697 {a="_t", b="th"}, 784 {a="_t", b="th"},
698 {a="%^g", b="j"}, 785 {a="%^g", b="j"},
699 {a="%.h", b="ḥ"}, 786 {a="%.h", b="ḥ"},
@@ -747,6 +834,7 @@ singletrloc = {
747 {a="y", b="y"}, 834 {a="y", b="y"},
748 {a="T", b="t"}, 835 {a="T", b="t"},
749 -- additional characters (begin) 836 -- additional characters (begin)
837 {a="H", b="t"},
750 {a="p", b="p"}, 838 {a="p", b="p"},
751 {a="v", b="v"}, 839 {a="v", b="v"},
752 {a="g", b="g"}, 840 {a="g", b="g"},
@@ -942,12 +1030,12 @@ digraphstrarabica = {
942 {a="%-%-", b=""}, 1030 {a="%-%-", b=""},
943 {a="iyy(%p*)$", b="ī%1"}, 1031 {a="iyy(%p*)$", b="ī%1"},
944 {a="iyy(%p*%s)", b="ī%1"}, 1032 {a="iyy(%p*%s)", b="ī%1"},
945 -- {a="T([^uai])", b="h%1"}, 1033 -- {a="[TH]([^uai])", b="h%1"},
946 {a="([a%']l%-)(%S-)aT([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p 1034 {a="([a%']l%-)(%S-)a[TH]([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p
947 {a="aT([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p 1035 {a="a[TH]([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p
948 {a="T([%|\"])", b="t%1"}, 1036 {a="[TH]([%|\"])", b="t%1"},
949 {a="aT(%p*)$", b="a%1"}, 1037 {a="a[TH](%p*)$", b="a%1"},
950 {a="aT(%p*%s)", b="a%1"}, 1038 {a="a[TH](%p*%s)", b="a%1"},
951 {a="_t", b="ṯ"}, 1039 {a="_t", b="ṯ"},
952 {a="%^g", b="ǧ"}, 1040 {a="%^g", b="ǧ"},
953 {a="%.h", b="ḥ"}, 1041 {a="%.h", b="ḥ"},
@@ -1001,6 +1089,7 @@ singletrarabica = {
1001 {a="y", b="y"}, 1089 {a="y", b="y"},
1002 {a="T", b="t"}, 1090 {a="T", b="t"},
1003 -- additional characters (begin) 1091 -- additional characters (begin)
1092 {a="H", b="t"},
1004 {a="p", b="p"}, 1093 {a="p", b="p"},
1005 {a="v", b="v"}, 1094 {a="v", b="v"},
1006 {a="g", b="g"}, 1095 {a="g", b="g"},
diff --git a/arabluatex_voc.lua b/arabluatex_voc.lua
index 4ec0fe3..6211b4b 100644
--- a/arabluatex_voc.lua
+++ b/arabluatex_voc.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2020 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
9 10copyright notice and this permission notice appear in all copies.
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14 11
15This program is distributed in the hope that it will be useful, but 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16WITHOUT ANY WARRANTY; without even the implied warranty of 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18General Public License for more details. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 19
20You should have received a copy of the GNU General Public License 20Please send error reports and suggestions for improvements to Robert
21along with this program. If not, see 21Alessi <alessi@robertalessi.net>
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25arbmarks = { 24arbmarks = {
@@ -243,7 +242,7 @@ hamza = {
243 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN): 242 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN):
244 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new 243 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new
245 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new 244 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new
246 {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, 245 {a="(mi)(%')(a[TtH])", b="%1ائ%3"},
247 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, 246 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"},
248 -- final hamzah is on the line after a letter of prolongation or a 247 -- final hamzah is on the line after a letter of prolongation or a
249 -- consonant with sukūn 248 -- consonant with sukūn
@@ -368,7 +367,7 @@ hamzaeasy = { -- differences marked below with 'easy'
368 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) 367 -- mi'aT is special orthography (unlike ^say'aN and .zim'aN)
369 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new 368 -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new
370 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new 369 -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new
371 {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, 370 {a="(mi)(%')(a[TtH])", b="%1ائ%3"},
372 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, 371 {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"},
373 -- easy (begin) 372 -- easy (begin)
374 -- The Munjid says that such words as radI'aN do not have the 373 -- The Munjid says that such words as radI'aN do not have the
@@ -443,9 +442,9 @@ tanwin = {
443 {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, 442 {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"},
444 {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, 443 {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"},
445 {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, 444 {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"},
446 {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, 445 {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"},
447 {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new 446 {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new
448 {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 447 {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
449 {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 448 {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"},
450 -- assimilations (end) 449 -- assimilations (end)
451 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, 450 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"},
@@ -455,9 +454,9 @@ tanwin = {
455 {a="(B)%-?(\"aN)", b="%1"}, 454 {a="(B)%-?(\"aN)", b="%1"},
456 {a="%-?(\"aN)(_A)", b="ى"}, 455 {a="%-?(\"aN)(_A)", b="ى"},
457 {a="%-?(\"aN)(Y)", b="ى"}, 456 {a="%-?(\"aN)(Y)", b="ى"},
458 {a="(T)%-?(\"aN)", b="%1"}, 457 {a="([TH])%-?(\"aN)", b="%1"},
459 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new 458 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new
460 {a="([^TA])%-?(\"aN)", b="%1ا"}, 459 {a="([^TAH])%-?(\"aN)", b="%1ا"},
461 {a="%-?(\"iNI?)", b=""}, 460 {a="%-?(\"iNI?)", b=""},
462 -- quoted tanwīn (end) 461 -- quoted tanwīn (end)
463 {a="%-?(uN)", b="ٌ"}, 462 {a="%-?(uN)", b="ٌ"},
@@ -465,15 +464,15 @@ tanwin = {
465 -- needed by \arbcolor: 464 -- needed by \arbcolor:
466 {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, 465 {a="%-?(aN)(O[%S]-%_AO)", b="ً"},
467 {a="%-?(aN)(O[%S]-YO)", b="ً"}, 466 {a="%-?(aN)(O[%S]-YO)", b="ً"},
468 {a="(O[%S]-TO)%-?(aN)", b="ً"}, 467 {a="(O[%S]-[TH]O)%-?(aN)", b="ً"},
469 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new 468 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new
470 {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, 469 {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"},
471 -- 470 --
472 {a="%-?(aN)(_A)", b="ًى"}, 471 {a="%-?(aN)(_A)", b="ًى"},
473 {a="%-?(aN)(Y)", b="ًى"}, 472 {a="%-?(aN)(Y)", b="ًى"},
474 {a="(T)%-?(aN)", b="%1ً"}, 473 {a="([TH])%-?(aN)", b="%1ً"},
475 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new 474 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new
476 {a="([^TA])%-?(aN)", b="%1ًا"}, 475 {a="([^TAH])%-?(aN)", b="%1ًا"},
477 {a="%-?(iNI?)", b="ٍ"} 476 {a="%-?(iNI?)", b="ٍ"}
478} 477}
479 478
@@ -492,9 +491,9 @@ tanwineasy = { -- 'easy' requires some lines to be taken out:
492-- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, 491-- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"},
493-- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, 492-- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"},
494-- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, 493-- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"},
495-- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, 494-- {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"},
496-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new 495-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new
497-- {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, 496-- {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"},
498-- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, 497-- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"},
499 -- assimilations (end) 498 -- assimilations (end)
500 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, 499 {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"},
@@ -504,9 +503,9 @@ tanwineasy = { -- 'easy' requires some lines to be taken out:
504 {a="(B)%-?(\"aN)", b="%1"}, 503 {a="(B)%-?(\"aN)", b="%1"},
505 {a="%-?(\"aN)(_A)", b="ى"}, 504 {a="%-?(\"aN)(_A)", b="ى"},
506 {a="%-?(\"aN)(Y)", b="ى"}, 505 {a="%-?(\"aN)(Y)", b="ى"},
507 {a="(T)%-?(\"aN)", b="%1"}, 506 {a="([TH])%-?(\"aN)", b="%1"},
508 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new 507 {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new
509 {a="([^TA])%-?(\"aN)", b="%1ا"}, 508 {a="([^TAH])%-?(\"aN)", b="%1ا"},
510 {a="%-?(\"iNI?)", b=""}, 509 {a="%-?(\"iNI?)", b=""},
511 -- quoted tanwīn (end) 510 -- quoted tanwīn (end)
512 {a="%-?(uN)", b="ٌ"}, 511 {a="%-?(uN)", b="ٌ"},
@@ -514,15 +513,15 @@ tanwineasy = { -- 'easy' requires some lines to be taken out:
514 -- needed by \arbcolor: 513 -- needed by \arbcolor:
515 {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, 514 {a="%-?(aN)(O[%S]-%_AO)", b="ً"},
516 {a="%-?(aN)(O[%S]-YO)", b="ً"}, 515 {a="%-?(aN)(O[%S]-YO)", b="ً"},
517 {a="(O[%S]-TO)%-?(aN)", b="ً"}, 516 {a="(O[%S]-[TH]O)%-?(aN)", b="ً"},
518 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new 517 {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new
519 {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, 518 {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"},
520 -- 519 --
521 {a="%-?(aN)(_A)", b="ًى"}, 520 {a="%-?(aN)(_A)", b="ًى"},
522 {a="%-?(aN)(Y)", b="ًى"}, 521 {a="%-?(aN)(Y)", b="ًى"},
523 {a="(T)%-?(aN)", b="%1ً"}, 522 {a="([TH])%-?(aN)", b="%1ً"},
524 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new 523 {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new
525 {a="([^TA])%-?(aN)", b="%1ًا"}, 524 {a="([^TAH])%-?(aN)", b="%1ًا"},
526 {a="%-?(iNI?)", b="ٍ"} 525 {a="%-?(iNI?)", b="ٍ"}
527} 526}
528 527
@@ -836,6 +835,7 @@ single = {
836 {a="y", b="ي"}, 835 {a="y", b="ي"},
837 {a="T", b="ة"}, 836 {a="T", b="ة"},
838 -- additional characters (begin) 837 -- additional characters (begin)
838 {a="H", b="ه"},
839 {a="p", b="پ"}, 839 {a="p", b="پ"},
840 {a="v", b="ڤ"}, 840 {a="v", b="ڤ"},
841 {a="g", b="گ"}, 841 {a="g", b="گ"},
@@ -873,6 +873,19 @@ shortv = {
873 {a="i", b="ِ"} 873 {a="i", b="ِ"}
874} 874}
875 875
876punctuationhb = {
877 {a="%(%(", b="﴿"},
878 {a="%)%)", b="﴾"},
879 {a="%.", b="."},
880 -- replaced with the next two rules to make the Arabic comma work
881 -- after \abraces{}
882-- {a="([^0-9])%,", b="%1،"},
883 {a="%,", b="،"},
884 {a="([%d])%،", b="%1,"},
885 {a="%?", b="؟"},
886 {a="%;", b="؛"},
887}
888
876punctuation = { 889punctuation = {
877 {a="%(%(", b="﴿"}, 890 {a="%(%(", b="﴿"},
878 {a="%)%)", b="﴾"}, 891 {a="%)%)", b="﴾"},
diff --git a/makefile b/makefile
index 4ceb067..d88512f 100644
--- a/makefile
+++ b/makefile
@@ -1,8 +1,10 @@
1pkg := arabluatex 1pkg := arabluatex
2ver := $(shell ltxfileinfo -v $(pkg).dtx|sed -e 's/^v//') 2#VERS := $(shell ltxfileinfo -v $(pkg).dtx|sed -e 's/^v//')
3VERS := $(shell typeoutfileinfo $(pkg).dtx | egrep -o '\+.*$$' | awk '{ print $$6 }' | sed -e 's/^v//')
3TEXMFDIR := $(shell kpsewhich -expand-var='$$TEXMFHOME') 4TEXMFDIR := $(shell kpsewhich -expand-var='$$TEXMFHOME')
4HOMEDIR := $$HOME 5HOMEDIR := $$HOME
5CMP = lualatex-dev 6CMP = lualatex-dev
7SHELL = bash
6 8
7sty: clean 9sty: clean
8 $(CMP) $(pkg).ins 10 $(CMP) $(pkg).ins
@@ -27,16 +29,39 @@ local: clean sty
27 mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \ 29 mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \
28 fi 30 fi
29 cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex 31 cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex
30 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ 32 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \
31 mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ 33 mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \
32 fi 34 fi
33 cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto 35 cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/style
36
37inst: doc
38 if [ ! -d "$(TEXMFDIR)/tex/lualatex/arabluatex" ]; then \
39 mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \
40 fi
41 cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex
42 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \
43 mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \
44 fi
45 cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/style
46 if [ ! -d "$(TEXMFDIR)/doc/lualatex/arabluatex" ]; then \
47 mkdir -p $(TEXMFDIR)/doc/lualatex/arabluatex; \
48 fi
49 cp $(pkg).pdf $(TEXMFDIR)/doc/lualatex/arabluatex
50 cp -r samples/ $(TEXMFDIR)/doc/lualatex/arabluatex
34 51
35auctex: clean 52auctex: clean
36 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ 53 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \
37 mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ 54 mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \
38 fi 55 fi
39 cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto 56 cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/style
57
58zip: all
59 ln -sf . $(pkg)
60 zip -Drq $(PWD)/$(pkg)-$(VERS).zip $(pkg)/{samples,README.md,$(pkg)*.{pdf,sty,lua,el}}
61 rm $(pkg)
62
63hal: clean
64 zip -Drq $(PWD)/$(pkg)-$(VERS).zip *
40 65
41package: clean all 66package: clean all
42 mkdir -p arabluatex/samples/ 67 mkdir -p arabluatex/samples/
@@ -50,21 +75,21 @@ package: clean all
50 mkdir -p source/lualatex/arabluatex/ 75 mkdir -p source/lualatex/arabluatex/
51 cp *.{ins,dtx,tex,md} makefile source/lualatex/arabluatex/ # .bib is in dtx 76 cp *.{ins,dtx,tex,md} makefile source/lualatex/arabluatex/ # .bib is in dtx
52 zip -r arabluatex.tds.zip tex doc source 77 zip -r arabluatex.tds.zip tex doc source
53 tar czf arabluatex-$(ver).tar.gz arabluatex.tds.zip arabluatex/ 78 tar czf arabluatex-$(VERS).tar.gz arabluatex.tds.zip arabluatex/
54 79
55clean: 80clean:
56 rm -rf $(TEXMFDIR)/tex/lualatex/arabluatex/ 81 rm -rf $(TEXMFDIR)/{tex,doc}/lualatex/arabluatex/
57 rm -rf $(HOMEDIR)/.emacs.d/auctex/auto/arabluatex*.{el,elc} 82 rm -rf $(HOMEDIR)/.emacs.d/auctex/style/arabluatex*.{el,elc}
58 rm -rf tex/ doc/ source/ auto/ 83 rm -rf tex/ doc/ source/ auto/
59 rm -rf arabluatex/ 84 rm -rf arabluatex/
60 rm -rf saved/ TMP/ _minted-arabluatex/ 85 rm -rf saved/ TMP/ _minted-arabluatex/
61 find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf 86 find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf
62 mkdir saved 87 mkdir saved
63 cp *.{lua,ins,dtx,tex,el} makefile saved # .bib is in dtx 88 cp *.{lua,ins,dtx,tex,el} AUTHORS.md LICENSE makefile saved # .bib is in dtx
64 rm *.* 89 rm *.*
65 cp saved/* . 90 cp saved/* .
66 rm -rf saved/ 91 rm -rf saved/
67 pandoc -s README.tex -o README.md && sed -i 's/{#.*}//g' README.md 92 pandoc README.tex -o README.md && sed -i 's/{#.*}//g' README.md
68 pandoc -s README.tex -o about.html 93 pandoc README.tex -o about.html
69 94
70.PHONY: sty doc all local auctex package clean 95.PHONY: sty doc all local inst auctex zip package clean
diff --git a/samples/al-Jahiz.tex b/samples/al-Jahiz.tex
index 6c34bcc..d7dd3f7 100644
--- a/samples/al-Jahiz.tex
+++ b/samples/al-Jahiz.tex
@@ -5,10 +5,9 @@
5% 5%
6\documentclass[fontsize=12pt, paper=letter, DIV=classic]{scrartcl} 6\documentclass[fontsize=12pt, paper=letter, DIV=classic]{scrartcl}
7\usepackage{fontspec} 7\usepackage{fontspec}
8\usepackage[default]{fontsetup}
8\usepackage[english]{babel} 9\usepackage[english]{babel}
9\babelfont{rm}{Old Standard} 10\babelfont{rm}{Old Standard}
10\babelfont{sf}{NewComputerModern Sans}
11\babelfont{tt}{NewComputerModern Mono}
12\usepackage{filecontents} 11\usepackage{filecontents}
13 12
14\usepackage{xcolor} 13\usepackage{xcolor}
@@ -29,9 +28,9 @@
29\SetArbEasy 28\SetArbEasy
30 29
31\PassOptionsToPackage{pdfa}{hyperref} 30\PassOptionsToPackage{pdfa}{hyperref}
32\usepackage{hyperxmp}
33\usepackage{hyperref} 31\usepackage{hyperref}
34\hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert Alessi}} 32\hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert Alessi}}
33\usepackage{hyperxmp}
35 34
36\begin{document} 35\begin{document}
37\begin{filecontents*}{dajaja.tex} 36\begin{filecontents*}{dajaja.tex}
diff --git a/samples/exporting.tex b/samples/exporting.tex
index 7f22c2c..16066f0 100644
--- a/samples/exporting.tex
+++ b/samples/exporting.tex
@@ -134,10 +134,10 @@
134{\textquoteright}{\textquoteleft} 134{\textquoteright}{\textquoteleft}
135 135
136\PassOptionsToPackage{pdfa}{hyperref} 136\PassOptionsToPackage{pdfa}{hyperref}
137\usepackage{hyperxmp}
138\usepackage{hyperref} 137\usepackage{hyperref}
139\hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert 138\hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert
140 Alessi}} 139 Alessi}}
140\usepackage{hyperxmp}
141 141
142\title{\large Exporting Unicode Arabic to an external 142\title{\large Exporting Unicode Arabic to an external
143 .tex source file} 143 .tex source file}