aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS.md8
-rw-r--r--LICENSE17
-rw-r--r--README.md123
-rw-r--r--README.tex81
-rw-r--r--about.html134
-rw-r--r--arabluatex.dtx1300
-rw-r--r--arabluatex.el35
-rw-r--r--arabluatex.ins66
-rw-r--r--arabluatex.lua125
-rw-r--r--arabluatex_fullvoc.lua67
-rw-r--r--arabluatex_novoc.lua45
-rw-r--r--arabluatex_trans.lua203
-rw-r--r--arabluatex_voc.lua66
-rw-r--r--makefile52
-rw-r--r--samples/al-Jahiz.tex5
-rw-r--r--samples/exporting.tex2
16 files changed, 1056 insertions, 1273 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 e110efd..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
7\maketitle 7documents or critical editions where a lot of left-to-right commands
8Overview 8intertwine with Arabic writing. arabluatex is able to process any
9======== 9ArabTeX input notation. Its output can be set in the same modes of
10 10vocalization as ArabTeX, or in different roman transliterations. It
11This package provides for [LuaLaTeX](http://luatex.org) an 11further allows many typographical refinements. It can also operate with
12[ArabTeX](http://ctan.org/pkg/arabtex)-like interface to generate Arabic 12the [ekdosis](https://ctan.org/pkg/ekdosis) package to produce from
13writing from an [ascii]{.smallcaps} transliteration. It is particularly 13`.tex` source files, in addition to printed books, `TEI xml` compliant
14well-suited for complex documents such as technical documents or 14critical editions and/or lexicons that can be searched, analyzed and
15critical editions where a lot of left-to-right commands intertwine with 15correlated in various ways.
16Arabic writing. arabluatex is able to process any ArabTeX input 16
17notation. Its output can be set in the same modes of vocalization as 17# License and disclamer
18ArabTeX, or in different roman transliterations. It further allows many
19typographical refinements. It will eventually interact with some other
20packages yet to come to produce from `.tex` source files, in addition to
21printed books, `TEI xml` compliant critical editions and/or lexicons
22that can be searched, analyzed and correlated in various ways.
23
24License and disclamer
25=====================
26 18
27ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 19ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
28 20
29Copyright ⓒ 2016--2020 Robert Alessi 21Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert Alessi
22\<`alessi@robertalessi.net`\>
23
24Permission to use, copy, modify, and distribute this software for any
25purpose with or without fee is hereby granted, provided that the above
26copyright notice and this permission notice appear in all copies.
27
28THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
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 \<http://www.gnu.org/licenses/\>.
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,20 +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
75Permission is granted to copy, distribute and/or modify this document
76under the terms of the GNU Free Documentation License, Version 1.3 or
77any later version published by the Free Software Foundation; with no
78Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
79copy of the license is included in the section entitled "GNU Free
80Documentation License" of the documentation.
81
82Installation
83============
84 63
851. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty` 641. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty`
86 file; 65 file;
@@ -107,41 +86,39 @@ Installation
107 `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory. 86 `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory.
108 This will enable the appropriate hooks for ArabLuaTeX in AUCTeX. 87 This will enable the appropriate hooks for ArabLuaTeX in AUCTeX.
109 88
110Development, Git Repository 89# Development, Git Repository
111===========================
112 90
113Browse the code 91## Browse the code
114---------------
115 92
116You can browse ArabLuaTeX repository on the web: 93You can browse ArabLuaTeX repository on the web:
117<http://git.robertalessi.net/arabluatex> 94<http://git.robertalessi.net/arabluatex>\
95or\
96<https://sr.ht/~ralessi/arabluatex>
118 97
119From this page, you can download all the releases of ArabLuaTeX. For 98From this page, you can download all the releases of ArabLuaTeX. For
120instructions on how to install ArabLuaTeX, please see above. 99instructions on how to install ArabLuaTeX, please see above.
121 100
122Comments, Feature requests, Bug Reports 101## Comments, Feature requests, Bug Reports
123---------------------------------------
124 102
125<https://gitlab.com/ralessi/arabluatex/issues> 103<https://todo.sr.ht/~ralessi/arabluatex>
126 104
127Download the repository 105## Download the repository
128-----------------------
129 106
130ArabLuaTeX development is facilitated by git, a distributed version 107ArabLuaTeX development is facilitated by git, a distributed version
131control system. You will need to install git (most GNU/Linux 108control system. You will need to install git (most Unix/Linux
132distributions package it in their repositories). 109distributions package it in their repositories).
133 110
134Use this command to download the repository 111Use this command to download the repository
135 112
136 git clone http://git.robertalessi.net/arabluatex 113 git clone https://git.sr.ht/~ralessi/arabluatex
137 114
138A new directory named arabluatex will have been created, containing 115A new directory named arabluatex will have been created, containing
139ArabLuaTeX. 116ArabLuaTeX.
140 117
141Git hosting 118## Git hosting
142-----------
143 119
144Make an account on <https://gitlab.com> and navigate (while logged in) 120Make an account on <https://sr.ht> and navigate (while logged in) to
145to <https://gitlab.com/ralessi/arabluatex>. Click *Fork* and you will 121<https://git.sr.ht/~ralessi/arabluatex>. Click *Clone repo to your
146have in your account your own repository of `arabluatex` where you will 122account* and you will have in your account your own repository of
147be 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 3bec1cb..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
77Permission is granted to copy, distribute and/or modify this document
78under the terms of the GNU Free Documentation License, Version 1.3 or
79any later version published by the Free Software Foundation; with no
80Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
81copy of the license is included in the section entitled ``GNU Free
82Documentation License'' of the documentation.
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 @@ Documentation License'' of the documentation.
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 a718fa2..d5b5236 100644
--- a/about.html
+++ b/about.html
@@ -1,39 +1,47 @@
1<!DOCTYPE html> 1<h1 class="unnumbered" id="sec:overview">Overview</h1>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> 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 charset="utf-8" /> 4generate Arabic writing from an <span class="smallcaps">ascii</span>
5 <meta name="generator" content="pandoc" /> 5transliteration. It is particularly well-suited for complex documents
6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> 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"> 9same modes of vocalization as ArabTeX, or in different roman
10 code{white-space: pre-wrap;} 10transliterations. It further allows many typographical refinements. It
11 span.smallcaps{font-variant: small-caps;} 11can also operate with the <a
12 span.underline{text-decoration: underline;} 12href="https://ctan.org/pkg/ekdosis">ekdosis</a> package to produce from
13 div.column{display: inline-block; vertical-align: top; width: 50%;} 13<code>.tex</code> source files, in addition to printed books,
14 </style> 14<code>TEI xml</code> compliant critical editions and/or lexicons that
15</head> 15can be searched, analyzed and correlated in various ways.</p>
16<body> 16<h1 class="unnumbered" id="license-and-disclamer">License and
17<header> 17disclamer</h1>
18<h1 class="title">The arabluatex package – README file</h1>
19<p class="author">Robert Alessi</p>
20</header>
21
22<h1 id="sec:overview" class="unnumbered unnumbered">Overview</h1>
23<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 class="smallcaps">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>
24<h1 id="license-and-disclamer" class="unnumbered unnumbered">License and disclamer</h1>
25<p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p> 18<p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p>
26<p>Copyright ⓒ 2016–2020 Robert Alessi</p> 19<p>Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert
27<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>
28<ul> 34<ul>
29<li><p>email: <a href="mailto:alessi@robertalessi.net">alessi@robertalessi.net</a></p></li> 35<li><p>email: <a
30<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>
31<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>
32</ul> 42</ul>
33<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
34<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>
35<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>
36<p>This release of arabluatex consists of the following source files:</p>
37<ul> 45<ul>
38<li><p><code>arabluatex.ins</code></p></li> 46<li><p><code>arabluatex.ins</code></p></li>
39<li><p><code>arabluatex.dtx</code></p></li> 47<li><p><code>arabluatex.dtx</code></p></li>
@@ -43,13 +51,14 @@
43<li><p><code>arabluatex_novoc.lua</code></p></li> 51<li><p><code>arabluatex_novoc.lua</code></p></li>
44<li><p><code>arabluatex_trans.lua</code></p></li> 52<li><p><code>arabluatex_trans.lua</code></p></li>
45</ul> 53</ul>
46<h2 id="sec:documentation-license" class="unnumbered unnumbered">License applicable to the documentation</h2> 54<h1 class="unnumbered" id="sec:installation">Installation</h1>
47<p>Copyright ⓒ 2016–2020 Robert Alessi</p>
48<p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License” of the documentation.</p>
49<h1 id="sec:installation" class="unnumbered unnumbered">Installation</h1>
50<ol> 55<ol>
51<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
52<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>
53<ul> 62<ul>
54<li><p><code>arabluatex.sty</code></p></li> 63<li><p><code>arabluatex.sty</code></p></li>
55<li><p><code>arabluatex-patch.sty</code></p></li> 64<li><p><code>arabluatex-patch.sty</code></p></li>
@@ -59,20 +68,39 @@
59<li><p><code>arabluatex_novoc.lua</code></p></li> 68<li><p><code>arabluatex_novoc.lua</code></p></li>
60<li><p><code>arabluatex_trans.lua</code></p></li> 69<li><p><code>arabluatex_trans.lua</code></p></li>
61</ul></li> 70</ul></li>
62<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>
63</ol> 75</ol>
64<h1 id="sec:devel-git-repos">Development, Git Repository</h1> 76<h1 id="sec:devel-git-repos">Development, Git Repository</h1>
65<h2 id="sec:browse-code" class="unnumbered unnumbered">Browse the code</h2> 77<h2 class="unnumbered" id="sec:browse-code">Browse the code</h2>
66<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
67<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"
68<h2 id="sec:comm-feat-requ" class="unnumbered unnumbered">Comments, Feature requests, Bug Reports</h2> 80class="uri">http://git.robertalessi.net/arabluatex</a><br />
69<p><a href="https://gitlab.com/ralessi/arabluatex/issues" class="uri">https://gitlab.com/ralessi/arabluatex/issues</a></p> 81or<br />
70<h2 id="sec:download-repository" class="unnumbered unnumbered">Download the repository</h2> 82<a href="https://sr.ht/~ralessi/arabluatex"
71<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>
72<p>Use this command to download the repository</p> 95<p>Use this command to download the repository</p>
73<pre><code>git clone http://git.robertalessi.net/arabluatex</code></pre> 96<pre><code>git clone https://git.sr.ht/~ralessi/arabluatex</code></pre>
74<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
75<h2 id="sec:git-hosting" class="unnumbered unnumbered">Git hosting</h2> 98ArabLuaTeX.</p>
76<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>
77</body> 100<p>Make an account on <a href="https://sr.ht"
78</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 92e04df..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},
@@ -161,14 +169,23 @@
161\usepackage{fontspec} 169\usepackage{fontspec}
162\defaultfontfeatures{Renderer=Harfbuzz} 170\defaultfontfeatures{Renderer=Harfbuzz}
163\usepackage[english]{babel} 171\usepackage[english]{babel}
164\usepackage{dox} 172%^^A dox does not work with the latest latex-dev:
165\doxitem{Option}{option}{options} 173\ifdefined\SpecialMacroIndex
174 \NewDocElement{Option}{option}
175\else
176 \usepackage{dox}
177 \doxitem{Option}{option}{options}
178\fi
166\usepackage{microtype} 179\usepackage{microtype}
167\babelfont{rm}{Old Standard} 180\babelfont{rm}[RawFeature=onum]{Old Standard}
168\babelfont{sf}{NewComputerModern Sans} 181\babelfont{sf}{NewComputerModernSans10}
169\babelfont{tt}{NewComputerModern Mono} 182\babelfont{tt}{NewComputerModernMono10}
183\usepackage{manfnt}
184\usepackage{lettrine}
185\newcommand\danger{\lettrine[loversize=-.5]{\textdbend}{\hskip6pt}}
170\usepackage{metalogox} 186\usepackage{metalogox}
171\usepackage{arabluatex}[2020/03/23] 187\usepackage{arabluatex}[2023/05/21]
188\SetTranslitConvention{dmg+}
172\SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this 189\SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this
173\usepackage[nopar]{quran} 190\usepackage[nopar]{quran}
174\usepackage[noindex]{nameauth} 191\usepackage[noindex]{nameauth}
@@ -176,7 +193,7 @@
176\usepackage{latexcolors} 193\usepackage{latexcolors}
177\PassOptionsToPackage{bookmarks=true}{hyperref} 194\PassOptionsToPackage{bookmarks=true}{hyperref}
178\usepackage[numbered]{hypdoc} 195\usepackage[numbered]{hypdoc}
179\usepackage{uri} 196\newcommand{\phts}{\phantomsection}
180\usepackage[loadlang=en]{metastr} 197\usepackage[loadlang=en]{metastr}
181\hypersetup{ 198\hypersetup{
182 colorlinks, 199 colorlinks,
@@ -206,6 +223,7 @@
206\metaset[sep]{draft}{ -- } 223\metaset[sep]{draft}{ -- }
207\metasetlang{en-US} 224\metasetlang{en-US}
208\metaset{title}{arabluatex} 225\metaset{title}{arabluatex}
226\metaset[print]{title}{\textsf{arabluatex}}
209\metaset{date}{\filedate} 227\metaset{date}{\filedate}
210\metaset{draft}{\fileversion} 228\metaset{draft}{\fileversion}
211\metaset{subject}{ArabTeX} 229\metaset{subject}{ArabTeX}
@@ -220,18 +238,24 @@
220\metaset{partof}{The arabluatex Package} 238\metaset{partof}{The arabluatex Package}
221\metaset[print]{partof}{The \textsf{arabluatex} Package} 239\metaset[print]{partof}{The \textsf{arabluatex} Package}
222\metaset{copyrightowner}{\metapick[#1]{author}} 240\metaset{copyrightowner}{\metapick[#1]{author}}
223\metaset{copyrightdate}{2016--2020} 241\metaset{copyrightdate}{2016, 2017, 2018, 2019, 2020, 2021, 2022,
224\metaset{licensemessage}{Permission is granted to copy, distribute 242 2023}
225 and/or modify this document under the terms of the GNU Free 243\metaset{licensemessage}{Permission to use, copy, modify, and
226 Documentation License, Version 1.3 or any later version published by 244 distribute this software for any purpose with or without fee is
227 the Free Software Foundation; with no Invariant Sections, no 245 hereby granted, provided that the above copyright notice and this
228 Front-Cover Texts, and no Back-Cover Texts. A copy of the license 246 permission notice appear in all copies.
229 is included in the section entitled ``GNU Free Documentation 247 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
230 License''.} 248 WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
231\metaset{licenseurl}{https://www.gnu.org/licenses/fdl-1.3.html} 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}
232\metaset[print]{licenseurl}{% 257\metaset[print]{licenseurl}{%
233 \url{https://www.gnu.org/licenses/fdl-1.3.html}} 258 \url{https://cvsweb.openbsd.org/src/share/misc/license.template?rev=HEAD}}
234\metaset[cmd]{licenselogo}{\includegraphics[scale=0.75]{#1}}
235\metawritepdfinfo 259\metawritepdfinfo
236\metawritepdfaux 260\metawritepdfaux
237\metawritepdfpreamble 261\metawritepdfpreamble
@@ -247,8 +271,11 @@
247\setlist[enumerate,2]{label=\roman*.} 271\setlist[enumerate,2]{label=\roman*.}
248\newlist{enumabjad}{enumerate}{10} 272\newlist{enumabjad}{enumerate}{10}
249\setlist[enumabjad]{label={\abjad{\arabic*}}} 273\setlist[enumabjad]{label={\abjad{\arabic*}}}
250\usepackage{multicol} 274\newlist{remarks}{enumerate}{10}
251\setlength\IndexMin{100pt} 275\setlist[remarks]{
276 label*=\textsc{Rem.} \emph{\alph*},
277 left=0.25in,
278 before=\smaller}
252\usepackage{quoting} 279\usepackage{quoting}
253\quotingsetup{noorphans, rightmargin=0pt} 280\quotingsetup{noorphans, rightmargin=0pt}
254\renewcommand*{\quotingfont}{\footnotesize} 281\renewcommand*{\quotingfont}{\footnotesize}
@@ -268,15 +295,16 @@
268 bottom=0mm} 295 bottom=0mm}
269\newtcblisting{example}{minted options={linenos, numbersep=0mm, 296\newtcblisting{example}{minted options={linenos, numbersep=0mm,
270 fontsize=\smaller}} 297 fontsize=\smaller}}
271\newtcblisting{code}{minted options={linenos, numbersep=0mm, 298\newtcblisting{alcode}{minted options={linenos, numbersep=0mm,
272 fontsize=\smaller}, listing only} 299 fontsize=\smaller}, listing only}
300\VerbatimFootnotes
273\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} 301\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}}
274\usepackage[contents]{colordoc} 302\usepackage[contents]{colordoc}
275\usepackage{csquotes} 303\usepackage{csquotes}
276\DeclareQuoteStyle{arabic} 304\DeclareQuoteStyle{arabic}
277{\rmfamily\textquotedblright}{\rmfamily\textquotedblleft} 305{\rmfamily\textquotedblright}{\rmfamily\textquotedblleft}
278{\rmfamily\textquoteright}{\rmfamily\textquoteleft} 306{\rmfamily\textquoteright}{\rmfamily\textquoteleft}
279\usepackage[style=authoryear, indexing=cite]{biblatex} 307\usepackage[style=oxnotes-inote,indexing=cite]{biblatex}
280\DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}} 308\DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}}
281\addbibresource{arabluatex.bib} 309\addbibresource{arabluatex.bib}
282\NewDocumentCommand{\newfeature}{o}{% 310\NewDocumentCommand{\newfeature}{o}{%
@@ -286,6 +314,8 @@
286 {\marginpar{\hfill\emph{New feature} #1}}% 314 {\marginpar{\hfill\emph{New feature} #1}}%
287 \ignorespaces 315 \ignorespaces
288} 316}
317\usepackage{uri}
318\usepackage[obeyspaces]{xurl}
289\usepackage{multicol} 319\usepackage{multicol}
290\usepackage{tocloft} 320\usepackage{tocloft}
291\renewcommand\cftlotprehook{\begin{multicols}{2}} 321\renewcommand\cftlotprehook{\begin{multicols}{2}}
@@ -293,24 +323,27 @@
293\renewcommand\cftlottitlefont{\Large\bfseries} 323\renewcommand\cftlottitlefont{\Large\bfseries}
294\usepackage{etoc} 324\usepackage{etoc}
295\etocsettocdepth{paragraph} 325\etocsettocdepth{paragraph}
326\makeatletter
296\newcommand{\altableofcontents}{% 327\newcommand{\altableofcontents}{%
297 \begingroup 328 \begingroup
298 \etocsetstyle{section}{}{} 329 \etocsetstyle{section}{}{}
299 {\etocsavedsectiontocline{% 330 {\l@section{%
300 \numberline{\etocnumber}\etocname}{\etocpage}}{} 331 \numberline{\etocnumber}\etocname}{\etocpage}}{}
301 \etocsetstyle{subsection}{}{} 332 \etocsetstyle{subsection}{}{}
302 {\etocsavedsubsectiontocline{% 333 {\l@subsection{%
303 \numberline{\etocnumber}\etocname}{\etocpage}}{}% 334 \numberline{\etocnumber}\etocname}{\etocpage}}{}%
304 \etocsetstyle{subsubsection}{}{} 335 \etocsetstyle{subsubsection}{}{}
305 {\etocsavedsubsubsectiontocline{% 336 {\l@subsubsection{%
306 \numberline{\etocnumber}\etocname}{\etocpage}}{}% 337 \numberline{\etocnumber}\etocname}{\etocpage}}{}%
307 \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip 338 \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip
308 0pt plus 1fil\relax \nobreak} 339 0pt plus 1fil\relax \nobreak}
309 {\noindent\etocname{} \etocpage{} }{\par}% 340 {\noindent\etocname{} \etocpage{} }{\par}%
310 \etocmulticolstyle[2]{\section*{Contents}} 341 \etocmulticolstyle[2]{\section*{Contents}}
311 \pdfbookmark[1]{Contents}{toc} 342 \pdfbookmark[1]{Contents}{toc}
312 \tableofcontents 343 \etoctoclines
344 \localtableofcontents
313 \endgroup} 345 \endgroup}
346\makeatother
314\setlength\IndexMin{100pt} 347\setlength\IndexMin{100pt}
315\EnableCrossrefs 348\EnableCrossrefs
316\RecordChanges 349\RecordChanges
@@ -392,6 +425,7 @@
392% \altableofcontents 425% \altableofcontents
393% \listoftables 426% \listoftables
394% \normalsize 427% \normalsize
428% \VerbatimFootnotes
395% 429%
396% \begin{abstract} 430% \begin{abstract}
397% This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface 431% This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface
@@ -403,53 +437,59 @@
403% 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
404% vocalization as Arab\TeX, or in different roman 438% vocalization as Arab\TeX, or in different roman
405% transliterations. It further allows many typographical 439% transliterations. It further allows many typographical
406% refinements. It will eventually interact with some other packages 440% refinements. Furthermore, it can interact with the \pkg{ekdosis}
407% yet to come to produce from \verb|.tex| source files, in addition 441% package to produce from \verb|.tex| source files, in addition to
408% to printed books, \texttt{TEI xml} compliant critical editions 442% printed books, \texttt{TEI xml} compliant critical editions and/or
409% and/or lexicons that can be searched, analyzed and correlated in 443% lexicons that can be searched, analyzed and correlated in various
410% various ways. 444% ways.
411% \end{abstract} 445% \end{abstract}
412% 446%
413% \section*{License and Disclaimer} 447% \section*{License and Disclaimer}
414% \addcontentsline{toc}{section}{License and disclamer} 448% \addcontentsline{toc}{section}{License and disclamer}
415% \subsection*{License Applicable to this Document} 449% \leavevmode\marginpar{\hfill\texttt{OpenBSD}} \pkg{arabluatex} is
416% \pdfbookmark[2]{Licence applicable to this document}{copyright-doc} 450% licensed under the terms of the so-called OpenBSD license, as it is
417% \leavevmode\marginpar{\hfill\texttt{fdl1.3}} 451% modelled after the ISC copyright, which is functionally equivalent
418% \metapick[print]{rightstext} (See below \vref{sec:fdl}.) 452% to a two-term BSD copyright with language removed that is made
419% 453% unnecessary by the Berne convention.\footnote{More information about
420% \subsection*{License Applicable to the Software} 454% the OpenBSD policy to which \pkg{arabluatex} adheres:
421% \pdfbookmark[2]{Licence applicable to the software}{copyright-soft} 455% \url{https://www.openbsd.org/policy.html}.}
422% \label{sec:license-software}
423% 456%
424% \package{arabluatex} --- \metapick[print]{subtitle} 457% \iffalse
425% \metapick[print]{copyrightstatement} 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
426% 482%
427% Please send error reports and suggestions for improvements to Robert 483% Please send error reports and suggestions for improvements to Robert
428% Alessi: 484% Alessi:
429% \begin{itemize} 485% \begin{itemize}
430% \item email: \mailto[arabluatex package]{alessi@roberalessi.net} 486% \item email: \mailto[arabluatex package]{alessi@roberalessi.net}
431% \item website: \url{http://www.robertalessi.net/arabluatex} 487% \item website: \url{https://sr.ht/~ralessi/arabluatex/}
432% \item development: \url{http://git.robertalessi.net/arabluatex} 488% \item development: \url{http://git.robertalessi.net/arabluatex}
433% \item comments, feature requests, bug reports: 489% \item comments, feature requests, bug reports:
434% \url{https://gitlab.com/ralessi/arabluatex/issues} 490% \url{https://todo.sr.ht/~ralessi/arabluatex}
435% \end{itemize} 491% \end{itemize}
436% 492%
437% \leavevmode\marginpar{\hfill\texttt{gpl3+}}
438% This program is free software: you can redistribute it and/or modify
439% it under the terms of the GNU General Public License as published by
440% the Free Software Foundation, either version 3 of the License, or
441% (at your option) any later version.
442%
443% This program is distributed in the hope that it will be useful, but
444% WITHOUT ANY WARRANTY; without even the implied warranty of
445% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
446% General Public License for more details.
447%
448% You should have received a copy of the GNU General Public License
449% along with this program. If not, see
450% \href{http://www.gnu.org/licenses}%
451% {\texttt{<http://www.gnu.org/licenses/>}}.
452%
453% This release of \package{arabluatex} consists of the following 493% This release of \package{arabluatex} consists of the following
454% source files: 494% source files:
455% \begin{itemize} 495% \begin{itemize}
@@ -581,21 +621,25 @@
581% issue a warning message and attempt to load the Amiri 621% issue a warning message and attempt to load the Amiri
582% font\footnote{\textcite{pkg:amiri}.} like so:---\\ 622% font\footnote{\textcite{pkg:amiri}.} like so:---\\
583% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]} 623% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]}
584% \begin{quoting} 624% \begin{remarks}
585% \textsc{Rem.} By default Amiri places the \arb[trans]{kasraT} in 625% \item By default Amiri places the \arb[trans]{kasraT} in combination
586% combination with the \arb[trans]{ta^sdId} below the consonant, 626% with the \arb[trans]{ta^sdId} below the consonant, like so:
587% 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
588% manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic, 628% manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic,
589% RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as 629% RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as well as
590% 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
591% of the \arb[trans]{kasraT} above the consonant may be obtained by 631% the \arb[trans]{kasraT} above the consonant may be obtained by
592% selecting the |ss05| feature of the Amiri font, like 632% selecting the |ss05| feature of the Amiri font, like
593% so:---\footnote{See the documentation of \package{amiri}, 633% so:---\footnote{See the documentation of \package{amiri},
594% \textcite[6]{pkg:amiri}.}\\ 634% \textcite[6]{pkg:amiri}.}\\
595% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]} 635% \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]}
596% 636%
597% Other Arabic fonts may behave differently. 637% Other Arabic fonts may behave differently.
598% \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}
599% 643%
600% \subsection{Options} 644% \subsection{Options}
601% \label{sec:options} 645% \label{sec:options}
@@ -629,8 +673,8 @@
629% standards. At present, three standards are supported (see below 673% standards. At present, three standards are supported (see below
630% \vref{sec:transliteration} for more details): 674% \vref{sec:transliteration} for more details):
631% \begin{description} 675% \begin{description}
632% \item[dmg] \emph{Deutsche Morgenländische Gesellschaft}, which is 676% \item[dmg/dmg+] \emph{Deutsche Morgenländische Gesellschaft} |dmg|
633% selected by default; 677% is selected by default;
634% \item[loc] \emph{Library of Congress}; 678% \item[loc] \emph{Library of Congress};
635% \item[arabica] \emph{Arabica}. 679% \item[arabica] \emph{Arabica}.
636% \end{description} 680% \end{description}
@@ -797,11 +841,11 @@
797% \iffalse 841% \iffalse
798%<*example> 842%<*example>
799% \fi 843% \fi
800\begin{code} 844\begin{alcode}
801 \begin{arab} 845 \begin{arab}
802 [...] 846 [...]
803 \end{arab} 847 \end{arab}
804\end{code} 848\end{alcode}
805% \iffalse 849% \iffalse
806%</example> 850%</example>
807% \fi 851% \fi
@@ -858,14 +902,14 @@
858% all of the Arabic consonants. 902% all of the Arabic consonants.
859% 903%
860% \newcommand{\dmg}[1]{% 904% \newcommand{\dmg}[1]{%
861% \SetTranslitConvention{dmg}% 905% \SetTranslitConvention{dmg+}%
862% \arb[trans]{#1}} 906% \arb[trans]{#1}}
863% \newcommand{\loc}[1]{% 907% \newcommand{\loc}[1]{%
864% \SetTranslitConvention{loc}% 908% \SetTranslitConvention{loc}%
865% \arb[trans]{#1}\SetTranslitConvention{dmg}} 909% \arb[trans]{#1}\SetTranslitConvention{dmg+}}
866% \newcommand{\brill}[1]{% 910% \newcommand{\brill}[1]{%
867% \SetTranslitConvention{arabica}% 911% \SetTranslitConvention{arabica}%
868% \arb[trans]{#1}\SetTranslitConvention{dmg}} 912% \arb[trans]{#1}\SetTranslitConvention{dmg+}}
869% \begin{longtable}{lllll} 913% \begin{longtable}{lllll}
870% \bottomrule 914% \bottomrule
871% \caption[]{Standard Arab\TeX\ (consonants)} 915% \caption[]{Standard Arab\TeX\ (consonants)}
@@ -874,19 +918,19 @@
874% \captionlistentry{Standard Arab\TeX\ (consonants)} 918% \captionlistentry{Standard Arab\TeX\ (consonants)}
875% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 919% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
876% & Arab\TeX\ notation \\ 920% & Arab\TeX\ notation \\
877% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 921% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
878% \endfirsthead 922% \endfirsthead
879% \toprule 923% \toprule
880% Letter & \multicolumn{3}{l}{Transliteration} 924% Letter & \multicolumn{3}{l}{Transliteration}
881% & Arab\TeX\ notation \\ 925% & Arab\TeX\ notation \\
882% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 926% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
883% \endhead \footnotetext{See below \vref{sec:transliteration}.} 927% \endhead \footnotetext{See below \vref{sec:transliteration}.}
884% \label{tab:arabtex-consonants} 928% \label{tab:arabtex-consonants}
885% \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
886% \arb[trans]{'alif} as a consonant, see \textcite[i. 16 930% \arb[trans]{'alif} as a consonant, see \textcite[i. 16
887% D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>} 931% D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>}
888% 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
889% \vref{ref:hamza}.} & \dmg{'u, 'a, 'i} & 933% \vref{ref:hamza}.} & \dmg{|'u, |'a, |'i} &
890% \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| \\
891% \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\ 935% \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\
892% \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\ 936% \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\
@@ -917,14 +961,14 @@
917% \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\ 961% \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\
918% \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
919% the letter \arb[novoc]{.y} with no diacritical points below, see 963% the letter \arb[novoc]{.y} with no diacritical points below, see
920% \emph{Rem{.} b.} below.} \\ 964% \vref{ref:dotless-ya} below.} \\
921% \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\ 965% \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\
922% \end{longtable} 966% \end{longtable}
923% \begin{quoting} 967% \begin{remarks}
924% \textsc{Rem.}~\emph{a.} Please note that in all cases of elision, 968% \item Please note that in all cases of elision, the
925% 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
926% that accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} 970% accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} as in
927% as in |wa-inhazama| \arb[fullvoc]{wa-inhazama} 971% |wa-inhazama| \arb[fullvoc]{wa-inhazama}
928% \arb[trans]{wa-inhazama}. For more details on the definite article 972% \arb[trans]{wa-inhazama}. For more details on the definite article
929% and the \arb[trans]{'alifu 'l-wa.sli} see 973% and the \arb[trans]{'alifu 'l-wa.sli} see
930% \vref{ref:definite-article}. 974% \vref{ref:definite-article}.
@@ -938,10 +982,10 @@
938% 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},
939% |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}. 983% |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}.
940% 984%
941% \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
942% 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
943% written without diacritical points as \arb[novoc]{Y}. When it is 987% be written without diacritical points as \arb[novoc]{Y}. When it
944% 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
945% \arb[trans]{fat.haT} placed above the preceding letter in 989% \arb[trans]{fat.haT} placed above the preceding letter in
946% vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN} 990% vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN}
947% \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},
@@ -951,14 +995,15 @@
951% 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|
952% \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|
953% \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}. 997% \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}.
954% \end{quoting} 998% \end{remarks}
955% 999%
956% \subsection{Additional characters} 1000% \subsection{Additional characters}
957% \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
958% now available} 1002% now available}
959% \newfeature[v1.8.5]\Vref{tab:arabtex-additional-characters} gives 1003% \newfeature[v1.8.5]\Vref{tab:arabtex-additional-characters} gives
960% the Arab\TeX\ equivalents for some additional Persian characters. 1004% the Arab\TeX\ equivalents for some additional Persian characters.
961% 1005%
1006% \enlargethispage{2\baselineskip}
962% \begin{longtable}{lllll} 1007% \begin{longtable}{lllll}
963% \bottomrule 1008% \bottomrule
964% \caption[]{Standard Arab\TeX\ (additional characters)} 1009% \caption[]{Standard Arab\TeX\ (additional characters)}
@@ -967,13 +1012,13 @@
967% \captionlistentry{Standard Arab\TeX\ (additional characters)} 1012% \captionlistentry{Standard Arab\TeX\ (additional characters)}
968% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1013% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
969% & Arab\TeX\ notation \\ 1014% & Arab\TeX\ notation \\
970% & \texttt{dmg} & \texttt{loc} & \texttt{arabica}\footnotemark 1015% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica}\footnotemark
971% & \\ \midrule 1016% & \\ \midrule
972% \endfirsthead 1017% \endfirsthead
973% \toprule 1018% \toprule
974% Letter & \multicolumn{3}{l}{Transliteration} 1019% Letter & \multicolumn{3}{l}{Transliteration}
975% & Arab\TeX\ notation \\ 1020% & Arab\TeX\ notation \\
976% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1021% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
977% \endhead 1022% \endhead
978% \addtocounter{footnote}{-1} 1023% \addtocounter{footnote}{-1}
979% \footnotetext{See below \vref{sec:transliteration}.} 1024% \footnotetext{See below \vref{sec:transliteration}.}
@@ -993,11 +1038,11 @@
993% \arb[novoc]{^n}\footnote{See \vref{fn:not-in-dmg}.} & \dmg{^n} & 1038% \arb[novoc]{^n}\footnote{See \vref{fn:not-in-dmg}.} & \dmg{^n} &
994% \loc{^n} & \brill{^n} & \verb|^n| \\ 1039% \loc{^n} & \brill{^n} & \verb|^n| \\
995% \end{longtable} 1040% \end{longtable}
996% \begin{quoting} 1041% \begin{remarks}
997% \textsc{Rem.} The alveolar consonants \arb[novoc]{^c} and 1042% \item[\textsc{Rem.}] The alveolar consonants \arb[novoc]{^c} and
998% \arb[novoc]{^z} are processed as solar letters by 1043% \arb[novoc]{^z} are processed as solar letters by
999% \package{arabluatex}. 1044% \package{arabluatex}.
1000% \end{quoting} 1045% \end{remarks}
1001% 1046%
1002% \subsection{Vowels} 1047% \subsection{Vowels}
1003% \subsubsection{Long vowels} 1048% \subsubsection{Long vowels}
@@ -1012,12 +1057,12 @@
1012% \captionlistentry{Standard Arab\TeX\ (long vowels)} 1057% \captionlistentry{Standard Arab\TeX\ (long vowels)}
1013% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1058% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
1014% & Arab\TeX\ notation \\ 1059% & Arab\TeX\ notation \\
1015% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1060% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1016% \endfirsthead 1061% \endfirsthead
1017% \toprule 1062% \toprule
1018% Letter & \multicolumn{3}{l}{Transliteration} 1063% Letter & \multicolumn{3}{l}{Transliteration}
1019% & Arab\TeX\ notation \\ 1064% & Arab\TeX\ notation \\
1020% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1065% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1021% \endhead \footnotetext{See below \vref{sec:transliteration}.} 1066% \endhead \footnotetext{See below \vref{sec:transliteration}.}
1022% \label{tab:arabtex-long-vowels} 1067% \label{tab:arabtex-long-vowels}
1023% \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\ 1068% \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\
@@ -1032,10 +1077,10 @@
1032% \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| \\
1033% \end{longtable} 1078% \end{longtable}
1034% 1079%
1035% \begin{quoting} 1080% \begin{remarks}
1036% \textsc{Rem.}~\emph{a.} The long vowels \arb[trans]{A, U, I}, 1081% \item The long vowels \arb[trans]{A, U, I}, otherwise called
1037% otherwise called \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the 1082% \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the letters of
1038% letters of prolongation}, involve the placing of the short vowels 1083% prolongation}, involve the placing of the short vowels
1039% \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A}, 1084% \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A},
1040% \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex} 1085% \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex}
1041% does that automatically in case any from |voc|, |fullvoc| or 1086% does that automatically in case any from |voc|, |fullvoc| or
@@ -1043,23 +1088,23 @@
1043% \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu} 1088% \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu}
1044% \arb[trans]{yaqUlu}. 1089% \arb[trans]{yaqUlu}.
1045% 1090%
1046% \textsc{Rem.}~\emph{b.} Defective writings, such as 1091% \item Defective writings, such as \arb[novoc]{B_a},
1047% \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
1048% 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
1049% encoded |_a| |_u| and |_i| respectively, e.g. |_d_alika| 1094% |_i| respectively, e.g. |_d_alika| \arb[voc]{_d_alika},
1050% \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
1051% \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|
1052% |'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
1053% \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.
1054% 1099%
1055% \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
1056% 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
1057% 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
1058% used as a long vowel, it is encoded |iY|, where |i| recalls the 1103% vowel, it is encoded |iY|, where |i| recalls the
1059% \arb[trans]{kasraT} placed below the preceding letter in vocalized 1104% \arb[trans]{kasraT} placed below the preceding letter in vocalized
1060% Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY| 1105% Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY|
1061% \arb{yam^siY} \arb[trans]{yam^siY}. 1106% \arb{yam^siY} \arb[trans]{yam^siY}.
1062% \end{quoting} 1107% \end{remarks}
1063% 1108%
1064% \subsubsection{Short vowels} 1109% \subsubsection{Short vowels}
1065% \Vref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for 1110% \Vref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for
@@ -1073,12 +1118,12 @@
1073% \captionlistentry{Standard Arab\TeX\ (short vowels)} 1118% \captionlistentry{Standard Arab\TeX\ (short vowels)}
1074% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1119% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
1075% & Arab\TeX\ notation \\ 1120% & Arab\TeX\ notation \\
1076% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1121% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1077% \endfirsthead 1122% \endfirsthead
1078% \toprule 1123% \toprule
1079% Letter & \multicolumn{3}{l}{Transliteration} 1124% Letter & \multicolumn{3}{l}{Transliteration}
1080% & Arab\TeX\ notation \\ 1125% & Arab\TeX\ notation \\
1081% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1126% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1082% \endhead \footnotetext{See below \vref{sec:transliteration}.} 1127% \endhead \footnotetext{See below \vref{sec:transliteration}.}
1083% \label{tab:arabtex-short-vowels} 1128% \label{tab:arabtex-short-vowels}
1084% \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\ 1129% \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\
@@ -1912,11 +1957,11 @@
1912% \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}} 1957% \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}}
1913% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 1958% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
1914% & Arab\TeX\ notation \\ 1959% & Arab\TeX\ notation \\
1915% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1960% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1916% \endfirsthead 1961% \endfirsthead
1917% \toprule Letter & \multicolumn{3}{l}{Transliteration} 1962% \toprule Letter & \multicolumn{3}{l}{Transliteration}
1918% & Arab\TeX\ notation \\ 1963% & Arab\TeX\ notation \\
1919% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 1964% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
1920% \endhead 1965% \endhead
1921% \footnotetext{See below \vref{sec:transliteration}.} 1966% \footnotetext{See below \vref{sec:transliteration}.}
1922% \label{tab:quoted-hamza} 1967% \label{tab:quoted-hamza}
@@ -2071,6 +2116,34 @@
2071% |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024} 2116% |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024}
2072% \end{quote} 2117% \end{quote}
2073% 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%
2074% \subsubsection{The \emph{abjad}} 2147% \subsubsection{The \emph{abjad}}
2075% \label{sec:abjad} 2148% \label{sec:abjad}
2076% 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
@@ -2088,19 +2161,19 @@
2088% 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
2089% 'l-`AdAt-i}. 2162% 'l-`AdAt-i}.
2090% \end{quote} 2163% \end{quote}
2091% \begin{quoting} 2164% \begin{remarks}
2092% \textsc{Rem.}~\emph{a.} As can be seen in the above given example, 2165% \item As can be seen in the above given example,
2093% \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in 2166% \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in
2094% 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
2095% transliteration modes. 2168% transliteration modes.
2096% 2169%
2097% \textsc{Rem.}~\emph{b.} \cs{abjad} may also be found outside 2170% \item \cs{abjad} may also be found outside Arabic environments. In
2098% Arabic environments. In that case, \package{arabluatex} does not 2171% that case, \package{arabluatex} does not print the stroke as a
2099% 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
2100% not surrounded by other Arabic words. In case one nonetheless 2173% Arabic words. In case one nonetheless wishes to print the stroke,
2101% 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
2102% command that is described below in \vref{sec:underlining} or 2175% in \vref{sec:underlining} or insert the \arb[trans]{'ab^gad}
2103% insert the \arb[trans]{'ab^gad} number in |\arb[novoc]{}|:--- 2176% number in |\arb[novoc]{}|:---
2104% \begin{quote} 2177% \begin{quote}
2105% |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| 2178% |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is|
2106% |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is 2179% |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is
@@ -2114,7 +2187,7 @@
2114% |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for 2187% |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for
2115% 1874 is \arb[novoc]{\abjad{1874}}. 2188% 1874 is \arb[novoc]{\abjad{1874}}.
2116% \end{quote} 2189% \end{quote}
2117% \end{quoting} 2190% \end{remarks}
2118% 2191%
2119% \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
2120% counters into \arb[trans]{'ab^gad} numbers, like so:--- % 2193% counters into \arb[trans]{'ab^gad} numbers, like so:--- %
@@ -2154,12 +2227,12 @@
2154% \captionlistentry{Additional Arabic codings} 2227% \captionlistentry{Additional Arabic codings}
2155% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 2228% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
2156% & Arab\TeX\ notation \\ 2229% & Arab\TeX\ notation \\
2157% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 2230% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2158% \endfirsthead 2231% \endfirsthead
2159% \toprule 2232% \toprule
2160% Letter & \multicolumn{3}{l}{Transliteration} 2233% Letter & \multicolumn{3}{l}{Transliteration}
2161% & Arab\TeX\ notation \\ 2234% & Arab\TeX\ notation \\
2162% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} \\ \midrule 2235% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} \\ \midrule
2163% \endhead \footnotetext{See below \vref{sec:transliteration}.} 2236% \endhead \footnotetext{See below \vref{sec:transliteration}.}
2164% \label{tab:additional-arabic-codings} 2237% \label{tab:additional-arabic-codings}
2165% \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\ 2238% \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\
@@ -2168,6 +2241,15 @@
2168% \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\ 2241% \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\
2169% \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\ 2242% \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\
2170% \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}.} \\
2171% \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\ 2253% \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\
2172% \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\ 2254% \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\
2173% \end{longtable} 2255% \end{longtable}
@@ -2194,18 +2276,18 @@
2194% \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}}}.
2195% \end{quote} 2277% \end{quote}
2196% 2278%
2197% \begin{quoting} 2279% \begin{remarks}
2198% \textsc{Rem.}~\emph{a.} As the above example shows, 2280% \item As the above example shows, \package{arabluatex} places the
2199% \package{arabluatex} places the horizontal stroke \emph{under} the 2281% horizontal stroke \emph{under} the emphasized words in any of the
2200% emphasized words in any of the transliteration modes. 2282% transliteration modes.
2201% 2283%
2202% \textsc{Rem.}~\emph{b.} \newfeature[v1.9.2]\DescribeMacro{\aemph*} 2284% \item \newfeature[v1.9.2]\DescribeMacro{\aemph*} \cs{aemph*} is also
2203% \cs{aemph*} is also provided should one wish to always have the 2285% provided should one wish to always have the horizontal stroke
2204% horizontal stroke printed over the emphasized words, like so: 2286% printed over the emphasized words, like so: |\abjad{45}:|
2205% |\abjad{45}:| |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| 2287% |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| \arb[voc]{\abjad{45}:
2206% \arb[voc]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-`AdAt-i}} 2288% kitAbu-hu \aemph*{fI 'l-`AdAt-i}} \arb[trans]{\abjad{45}:
2207% \arb[trans]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}. 2289% kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}.
2208% \end{quoting} 2290% \end{remarks}
2209% 2291%
2210% \subsubsection{Underlining words or numbers} 2292% \subsubsection{Underlining words or numbers}
2211% \label{sec:underlining} 2293% \label{sec:underlining}
@@ -2235,11 +2317,11 @@
2235% \iffalse 2317% \iffalse
2236%<*example> 2318%<*example>
2237% \fi 2319% \fi
2238\begin{code} 2320\begin{alcode}
2239 \begin{arabverse}[key1=value1, key2=value2, ...] 2321 \begin{arabverse}[key1=value1, key2=value2, ...]
2240 <verses> 2322 <verses>
2241 \end{arabverse} 2323 \end{arabverse}
2242\end{code} 2324\end{alcode}
2243% \iffalse 2325% \iffalse
2244%</example> 2326%</example>
2245% \fi 2327% \fi
@@ -2308,8 +2390,9 @@
2308% 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
2309% functions that lines of poetry have already been processed. That 2391% functions that lines of poetry have already been processed. That
2310% 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}
2311% should be used.} Additionally, every \cs{bayt} command \emph{must} 2393% should be used.} Additionally, every \cs{bayt} command \emph{must}
2312% be followed with |\\| like so:---% 2394% be followed with |\\| like so:---
2395%
2313% \iffalse 2396% \iffalse
2314%<*example> 2397%<*example>
2315% \fi 2398% \fi
@@ -2444,6 +2527,16 @@
2444% 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
2445% loaded \emph{after} \package{arabluatex}.} 2528% loaded \emph{after} \package{arabluatex}.}
2446% 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%
2447% \paragraph{Line numbering} 2540% \paragraph{Line numbering}
2448% Inside the |arabverse| environment, the |linenumbers| environment of 2541% Inside the |arabverse| environment, the |linenumbers| environment of
2449% 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
@@ -2466,7 +2559,7 @@
2466% \iffalse 2559% \iffalse
2467%<*example> 2560%<*example>
2468% \fi 2561% \fi
2469\begin{code} 2562\begin{alcode}
2470 \begin{arab}[fullvoc] 2563 \begin{arab}[fullvoc]
2471 qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: 2564 qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi:
2472 \end{arab} 2565 \end{arab}
@@ -2475,7 +2568,7 @@
2475 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}] 2568 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}]
2476 \SetArbDflt* 2569 \SetArbDflt*
2477 \begin{linenumbers*} 2570 \begin{linenumbers*}
2478 \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
2479 '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}\\
2480 \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
2481 rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2574 rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2489,7 +2582,7 @@
2489 rasmiN dArisiN min mu`awwali}\\ 2582 rasmiN dArisiN min mu`awwali}\\
2490 \end{linenumbers*} 2583 \end{linenumbers*}
2491 \end{arabverse} 2584 \end{arabverse}
2492\end{code} 2585\end{alcode}
2493% \iffalse 2586% \iffalse
2494%</example> 2587%</example>
2495% \fi% 2588% \fi%
@@ -2504,7 +2597,7 @@
2504% '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]
2505% \SetArbDflt* 2598% \SetArbDflt*
2506% \begin{linenumbers*} 2599% \begin{linenumbers*}
2507% \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
2508% '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}\\
2509% \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
2510% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2603% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2529,7 +2622,7 @@
2529% '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]
2530% \SetArbDflt* 2623% \SetArbDflt*
2531% \begin{linenumbers*} 2624% \begin{linenumbers*}
2532% \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
2533% '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}\\
2534% \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
2535% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2628% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2558,7 +2651,7 @@
2558% '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]
2559% \SetArbDflt* 2652% \SetArbDflt*
2560% \begin{linenumbers*} 2653% \begin{linenumbers*}
2561% \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
2562% '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}\\
2563% \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
2564% 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}\\
@@ -2586,7 +2679,7 @@
2586% \SetArbDflt* 2679% \SetArbDflt*
2587% \scriptsize 2680% \scriptsize
2588% \begin{linenumbers*} 2681% \begin{linenumbers*}
2589% \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
2590% '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}\\
2591% \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
2592% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ 2685% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
@@ -2946,12 +3039,12 @@
2946% \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}} 3039% \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}}
2947% Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark} 3040% Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark}
2948% & Arab\TeX\ notation \\ 3041% & Arab\TeX\ notation \\
2949% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 3042% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2950% \endfirsthead 3043% \endfirsthead
2951% \toprule 3044% \toprule
2952% Diacritic & \multicolumn{3}{l}{Transliteration} 3045% Diacritic & \multicolumn{3}{l}{Transliteration}
2953% & Arab\TeX\ notation \\ 3046% & Arab\TeX\ notation \\
2954% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule 3047% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule
2955% \endhead \footnotetext{See below \vref{sec:transliteration}.} 3048% \endhead \footnotetext{See below \vref{sec:transliteration}.}
2956% \label{tab:arbcolor-diacritics} 3049% \label{tab:arbcolor-diacritics}
2957% \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\ 3050% \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\
@@ -3040,8 +3133,8 @@
3040% \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}} 3133% \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}
3041% \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}. 3134% \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}.
3042% \end{quote} 3135% \end{quote}
3043% \begin{quoting} 3136% \begin{remarks}
3044% \textsc{Rem.} Note that in the last example 3137% \item[\textsc{Rem.}] Note that in the last example
3045% (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the 3138% (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the
3046% \enquote*{pipe} character has been inserted before 3139% \enquote*{pipe} character has been inserted before
3047% \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration 3140% \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration
@@ -3050,7 +3143,7 @@
3050% \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe} 3143% \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe}
3051% \enquote{Discarding the \arb[trans]{'i`rAb}} for more 3144% \enquote{Discarding the \arb[trans]{'i`rAb}} for more
3052% information.} 3145% information.}
3053% \end{quoting} 3146% \end{remarks}
3054% 3147%
3055% The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even 3148% The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even
3056% more intricate business to the rendering with the utmost accuracy in 3149% more intricate business to the rendering with the utmost accuracy in
@@ -3107,10 +3200,10 @@
3107%</example> 3200%</example>
3108% \fi% 3201% \fi%
3109% 3202%
3110% \begin{quoting} 3203% \begin{remarks}
3111% \textsc{Rem.} In the preceding example, any consonant could have 3204% \item[\textsc{Rem.}] In the preceding example, any consonant could
3112% been passed as argument to the \cs{arbnull} command. 3205% have been passed as argument to the \cs{arbnull} command.
3113% \end{quoting} 3206% \end{remarks}
3114% 3207%
3115% \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}} 3208% \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}}
3116% In the following example, it is assumed that the 3209% In the following example, it is assumed that the
@@ -3197,6 +3290,9 @@
3197% adopted by the International Convention of Orientalist Scholars in 3290% adopted by the International Convention of Orientalist Scholars in
3198% Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration 3291% Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration
3199% 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}.
3200% \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
3201% large set of standards for romanization of non-roman scripts 3297% large set of standards for romanization of non-roman scripts
3202% adopted by the American Library Association and the Library of 3298% adopted by the American Library Association and the Library of
@@ -3219,16 +3315,16 @@
3219% transliteration mode, which is set to |dmg| by default, may be 3315% transliteration mode, which is set to |dmg| by default, may be
3220% changed at any point of the document by the 3316% changed at any point of the document by the
3221% \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode} 3317% \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode}
3222% may be either |dmg|, |loc| or |arabica|. This command is also 3318% may be either |dmg|, |dmg+|, |loc| or |arabica|. This command is also
3223% accepted in the preamble should one wish to set the transliteration 3319% accepted in the preamble should one wish to set the transliteration
3224% mode globally, e.g.:---% 3320% mode globally, e.g.:---%
3225% \iffalse 3321% \iffalse
3226%<*example> 3322%<*example>
3227% \fi 3323% \fi
3228\begin{code} 3324\begin{alcode}
3229 \usepackage{arabluatex} 3325 \usepackage{arabluatex}
3230 \SetTranslitConvention{loc} 3326 \SetTranslitConvention{loc}
3231\end{code} 3327\end{alcode}
3232% \iffalse 3328% \iffalse
3233%</example> 3329%</example>
3234% \fi 3330% \fi
@@ -3250,10 +3346,10 @@
3250% \iffalse 3346% \iffalse
3251%<*example> 3347%<*example>
3252% \fi 3348% \fi
3253\begin{code} 3349\begin{alcode}
3254 \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX] 3350 \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX]
3255 \SetTranslitFont{\translitfont} 3351 \SetTranslitFont{\translitfont}
3256\end{code} 3352\end{alcode}
3257% \iffalse 3353% \iffalse
3258%</example> 3354%</example>
3259% \fi 3355% \fi
@@ -3366,14 +3462,15 @@
3366%</example> 3462%</example>
3367% \fi 3463% \fi
3368% 3464%
3369% \begin{quoting}\label{ref:prname-star} 3465% \begin{remarks}
3370% \textsc{Rem.} \DescribeMacro{\prname*} \package{arabluatex} also 3466% \item[\textsc{Rem.}] \label{ref:prname-star}
3371% provides \cs{prname*} which only renders in upright roman style 3467% \DescribeMacro{\prname*} \package{arabluatex} also provides
3372% 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
3373% processing. It is mostly used internally and applied to proper 3470% processing. It is mostly used internally and applied to proper
3374% names exported in Unicode to an external selected 3471% names exported in Unicode to an external selected
3375% file.\footnote{See below \vref{sec:arabtex2utf} for more details.} 3472% file.\footnote{See below \vref{sec:arabtex2utf} for more details.}
3376% \end{quoting} 3473% \end{remarks}
3377% 3474%
3378% \subsection{Additional note on \texttt{dmg} convention} 3475% \subsection{Additional note on \texttt{dmg} convention}
3379% \label{sec:additional-note-dmg} 3476% \label{sec:additional-note-dmg}
@@ -3444,29 +3541,29 @@
3444% \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}. 3541% \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}.
3445% \end{quote} 3542% \end{quote}
3446% 3543%
3447% \begin{quoting} 3544% \begin{remarks}
3448% \textsc{Rem.}~\emph{a.} As the \arb[trans]{tanwIn} is passed over 3545% \item As the \arb[trans]{tanwIn} is passed over in pronunciation
3449% in pronunciation when it is followed by the letters 3546% when it is followed by the letters \arb[novoc]{r}, \arb[novoc]{l},
3450% \arb[novoc]{r}, \arb[novoc]{l}, \arb[novoc]{m}, \arb[novoc]{w}, 3547% \arb[novoc]{m}, \arb[novoc]{w}, \arb[novoc]{y} (see
3451% \arb[novoc]{y} (see \vref{ref:assimilation}), it may be desirable 3548% \vref{ref:assimilation}), it may be desirable to further
3452% 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
3453% do the same for \arb[trans]{.gayr mun.sarif} terminations. This 3550% same for \arb[trans]{.gayr mun.sarif} terminations. This can be
3454% can be achieved by simply omitting the hyphen before any 3551% achieved by simply omitting the hyphen before any
3455% \arb[trans]{.gayr mun.sarif} termination:---\\ 3552% \arb[trans]{.gayr mun.sarif} termination:---\\
3456% |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN| 3553% |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN|
3457% |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN 3554% |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN
3458% mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa 3555% mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa
3459% ^gubbaTaN mumazzaqaN 'aydu-hA}. 3556% ^gubbaTaN mumazzaqaN 'aydu-hA}.
3460% 3557%
3461% \textsc{Rem.}~\emph{b.} Although the hyphen before the 3558% \item Although the hyphen before the \arb[trans]{tanwIn} is optional
3462% \arb[trans]{tanwIn} is optional as \package{arabluatex} always 3559% as \package{arabluatex} always parses nouns with such termination,
3463% parses nouns with such termination, it may also be used to mark 3560% it may also be used to mark
3464% better the inflectional endings:---\\ 3561% better the inflectional endings:---\\
3465% |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|
3466% |'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
3467% 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
3468% '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}.
3469% \end{quoting} 3566% \end{remarks}
3470% 3567%
3471% \paragraph{\texorpdfstring{Discar\-ding the 3568% \paragraph{\texorpdfstring{Discar\-ding the
3472% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}} 3569% \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}}
@@ -3484,17 +3581,17 @@
3484% 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}},
3485% |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}.
3486% \end{enumerate} 3583% \end{enumerate}
3487% \begin{quoting} 3584% \begin{remarks}
3488% \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
3489% before the annexed word, that \package{arabluatex} be unable to 3586% article before the annexed word, that \package{arabluatex} be
3490% determine which of the above two cases the word ending with 3587% unable to determine which of the above two cases the word ending
3491% \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe} 3588% with \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe}
3492% 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
3493% indicate that what follows is in the construct state: 3590% indicate that what follows is in the construct state:
3494% |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub| 3591% |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub|
3495% |\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
3496% kutub \uc{^g}AlInUs}. 3593% \uc{^g}AlInUs}.
3497% \end{quoting} 3594% \end{remarks}
3498% 3595%
3499% 3596%
3500% \paragraph{Uncertain short vowels} 3597% \paragraph{Uncertain short vowels}
@@ -3511,9 +3608,9 @@
3511% \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
3512% wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:--- 3609% wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:---
3513% 3610%
3514% \SetTranslitConvention{dmg} 3611% \SetTranslitConvention{dmg+}
3515% \begin{arab}[trans] 3612% \begin{arab}[trans]
3516% \LR{\textbf{\emph{\enquote*{dmg}} standard:}} 'at_A .sadIquN 'il_A 3613% \LR{\textbf{\emph{\enquote*{dmg+}} standard:}} 'at_A .sadIquN 'il_A
3517% \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
3518% 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
3519% '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}:
@@ -3540,7 +3637,7 @@
3540% \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
3541% wa-tuka_d_diba-nI?} 3638% wa-tuka_d_diba-nI?}
3542% \end{arab} 3639% \end{arab}
3543% \SetTranslitConvention{dmg} 3640% \SetTranslitConvention{dmg+}
3544% 3641%
3545% \SetTranslitConvention{arabica} 3642% \SetTranslitConvention{arabica}
3546% \begin{arab}[trans] 3643% \begin{arab}[trans]
@@ -3556,7 +3653,7 @@
3556% \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
3557% 'l-.himAr-a wa-tuka_d_diba-nI?} 3654% 'l-.himAr-a wa-tuka_d_diba-nI?}
3558% \end{arab} 3655% \end{arab}
3559% \SetTranslitConvention{dmg} 3656% \SetTranslitConvention{dmg+}
3560% 3657%
3561% \section{Buckwalter input scheme} 3658% \section{Buckwalter input scheme}
3562% \label{sec:buckwalter-scheme} 3659% \label{sec:buckwalter-scheme}
@@ -3580,10 +3677,10 @@
3580% \iffalse 3677% \iffalse
3581%<*example> 3678%<*example>
3582% \fi 3679% \fi
3583\begin{code} 3680\begin{alcode}
3584 \usepackage{arabluatex} 3681 \usepackage{arabluatex}
3585 \SetInputScheme{buckwalter} 3682 \SetInputScheme{buckwalter}
3586\end{code} 3683\end{alcode}
3587% \iffalse 3684% \iffalse
3588%</example> 3685%</example>
3589% \fi 3686% \fi
@@ -3616,13 +3713,13 @@
3616% \captionlistentry{Buckwalter input scheme} 3713% \captionlistentry{Buckwalter input scheme}
3617% Letter & \multicolumn{3}{l}{Transliteration\footnotemark} 3714% Letter & \multicolumn{3}{l}{Transliteration\footnotemark}
3618% & \multicolumn{2}{l}{Buckwalter notation} \\ 3715% & \multicolumn{2}{l}{Buckwalter notation} \\
3619% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & 3716% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| &
3620% |safe| \\ \midrule 3717% |safe| \\ \midrule
3621% \endfirsthead 3718% \endfirsthead
3622% \toprule 3719% \toprule
3623% Letter & \multicolumn{3}{l}{Transliteration} 3720% Letter & \multicolumn{3}{l}{Transliteration}
3624% & \multicolumn{2}{l}{Buckwalter notation} \\ 3721% & \multicolumn{2}{l}{Buckwalter notation} \\
3625% & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & 3722% & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| &
3626% |safe| \\ \midrule 3723% |safe| \\ \midrule
3627% \endhead \footnotetext{See \vref{sec:transliteration}.} 3724% \endhead \footnotetext{See \vref{sec:transliteration}.}
3628% \label{tab:buckwalter-scheme} 3725% \label{tab:buckwalter-scheme}
@@ -3736,11 +3833,11 @@
3736% \iffalse 3833% \iffalse
3737%<*example> 3834%<*example>
3738% \fi 3835% \fi
3739\begin{code} 3836\begin{alcode}
3740 \begin{txarab} 3837 \begin{txarab}
3741 <Unicode Arabic text> 3838 <Unicode Arabic text>
3742 \end{txarab} 3839 \end{txarab}
3743\end{code} 3840\end{alcode}
3744% \iffalse 3841% \iffalse
3745%</example> 3842%</example>
3746% \fi 3843% \fi
@@ -3839,6 +3936,7 @@
3839% 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
3840% the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\ 3937% the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\
3841% \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}} 3938% \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}}
3939%
3842% \DescribeMacro{\FixArbFtnmk} Another solution is to put in the 3940% \DescribeMacro{\FixArbFtnmk} Another solution is to put in the
3843% preamble, below the line that loads \package{arabluatex}, the 3941% preamble, below the line that loads \package{arabluatex}, the
3844% \cs{FixArbFtnmk} command. However, for more control over the layout 3942% \cs{FixArbFtnmk} command. However, for more control over the layout
@@ -3973,13 +4071,13 @@
3973% \iffalse 4071% \iffalse
3974%<*example> 4072%<*example>
3975% \fi 4073% \fi
3976\begin{code} 4074\begin{alcode}
3977 \begin{arab} 4075 \begin{arab}
3978 \begin{<environment>}[<options>] 4076 \begin{<environment>}[<options>]
3979 <Arabic text> 4077 <Arabic text>
3980 \end{<environment>} 4078 \end{<environment>}
3981 \end{arab} 4079 \end{arab}
3982\end{code} 4080\end{alcode}
3983% \iffalse 4081% \iffalse
3984%</example> 4082%</example>
3985% \fi 4083% \fi
@@ -4076,13 +4174,13 @@
4076% \iffalse 4174% \iffalse
4077%<*example> 4175%<*example>
4078% \fi 4176% \fi
4079\begin{code} 4177\begin{alcode}
4080 % preamble:--- 4178 % preamble:---
4081 \usepackage{enumitem} 4179 \usepackage{enumitem}
4082 \newlist{enumabjad}{enumerate}{10} 4180 \newlist{enumabjad}{enumerate}{10}
4083 \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}} 4181 \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}}
4084 \usepackage{multicol} 4182 \usepackage{multicol}
4085\end{code} 4183\end{alcode}
4086\begin{example} 4184\begin{example}
4087 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
4088 triliteral verb are usually reckoned fifteen in number, but the 4186 triliteral verb are usually reckoned fifteen in number, but the
@@ -4125,10 +4223,10 @@
4125% \iffalse 4223% \iffalse
4126%<*example> 4224%<*example>
4127% \fi 4225% \fi
4128\begin{code} 4226\begin{alcode}
4129 \usepackage[french]{babel} 4227 \usepackage[french]{babel}
4130 \frenchsetup{StandardLists=true} 4228 \frenchsetup{StandardLists=true}
4131\end{code} 4229\end{alcode}
4132% \iffalse 4230% \iffalse
4133%</example> 4231%</example>
4134% \fi% 4232% \fi%
@@ -4146,12 +4244,12 @@
4146% \iffalse 4244% \iffalse
4147%<*example> 4245%<*example>
4148% \fi 4246% \fi
4149\begin{code} 4247\begin{alcode}
4150 \usepackage{csquotes} 4248 \usepackage{csquotes}
4151 \DeclareQuoteStyle{arabic} 4249 \DeclareQuoteStyle{arabic}
4152 {\textquotedblright}{\textquotedblleft} 4250 {\textquotedblright}{\textquotedblleft}
4153 {\textquoteright}{\textquoteleft} 4251 {\textquoteright}{\textquoteleft}
4154\end{code} 4252\end{alcode}
4155% \iffalse 4253% \iffalse
4156%</example> 4254%</example>
4157% \fi 4255% \fi
@@ -4170,11 +4268,11 @@
4170% \iffalse 4268% \iffalse
4171%</example> 4269%</example>
4172% \fi 4270% \fi
4173% \begin{quoting} 4271% \begin{remarks}
4174% \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
4175% initial state once the Arabic environment is closed. See the last 4273% its initial state once the Arabic environment is closed. See the
4176% line in the code above. 4274% last line in the code above.
4177% \end{quoting} 4275% \end{remarks}
4178% 4276%
4179% \subsection{Two-argument special commands} 4277% \subsection{Two-argument special commands}
4180% \label{sec:two-arg-cmds} 4278% \label{sec:two-arg-cmds}
@@ -4223,7 +4321,7 @@
4223% \iffalse 4321% \iffalse
4224%<*example> 4322%<*example>
4225% \fi 4323% \fi
4226\begin{code} 4324\begin{alcode}
4227 \beginnumbering 4325 \beginnumbering
4228 \pstart 4326 \pstart
4229 \begin{arab} 4327 \begin{arab}
@@ -4232,7 +4330,7 @@
4232 \end{arab} 4330 \end{arab}
4233 \pend 4331 \pend
4234 \endnumbering 4332 \endnumbering
4235\end{code} 4333\end{alcode}
4236% \iffalse 4334% \iffalse
4237%</example> 4335%</example>
4238% \fi 4336% \fi
@@ -4257,10 +4355,10 @@
4257% \iffalse 4355% \iffalse
4258%<*example> 4356%<*example>
4259% \fi 4357% \fi
4260\begin{code} 4358\begin{alcode}
4261 \usepackage{arabluatex} 4359 \usepackage{arabluatex}
4262 \usepackage[nopar]{quran} 4360 \usepackage[nopar]{quran}
4263\end{code} 4361\end{alcode}
4264% \iffalse 4362% \iffalse
4265%</example> 4363%</example>
4266% \fi 4364% \fi
@@ -4299,12 +4397,12 @@
4299% \iffalse 4397% \iffalse
4300%<*example> 4398%<*example>
4301% \fi 4399% \fi
4302\begin{code} 4400\begin{alcode}
4303 % preamble 4401 % preamble
4304 \usepackage[export]{arabluatex} 4402 \usepackage[export]{arabluatex}
4305 % or: 4403 % or:
4306 \usepackage[export=true]{arabluatex} 4404 \usepackage[export=true]{arabluatex}
4307\end{code} 4405\end{alcode}
4308% \iffalse 4406% \iffalse
4309%</example> 4407%</example>
4310% \fi 4408% \fi
@@ -4324,11 +4422,11 @@
4324% \iffalse 4422% \iffalse
4325%<*example> 4423%<*example>
4326% \fi 4424% \fi
4327\begin{code} 4425\begin{alcode}
4328 \begin{arabexport} 4426 \begin{arabexport}
4329 <Running paragraphs of either Arabic or non-Arabic text> 4427 <Running paragraphs of either Arabic or non-Arabic text>
4330 \end{arabexport} 4428 \end{arabexport}
4331\end{code} 4429\end{alcode}
4332% \iffalse 4430% \iffalse
4333%</example> 4431%</example>
4334% \fi 4432% \fi
@@ -4386,11 +4484,11 @@
4386% \iffalse 4484% \iffalse
4387%<*example> 4485%<*example>
4388% \fi 4486% \fi
4389\begin{code} 4487\begin{alcode}
4390 Package arabluatex Warning: There are still 'arabtex' strings 4488 Package arabluatex Warning: There are still 'arabtex' strings
4391 to be converted. Please open <jobname><suffix>.tex and compile 4489 to be converted. Please open <jobname><suffix>.tex and compile
4392 it one more time. 4490 it one more time.
4393\end{code} 4491\end{alcode}
4394% \iffalse 4492% \iffalse
4395%</example> 4493%</example>
4396% \fi 4494% \fi
@@ -4408,9 +4506,9 @@
4408% \iffalse 4506% \iffalse
4409%<*example> 4507%<*example>
4410% \fi 4508% \fi
4411\begin{code} 4509\begin{alcode}
4412 pandoc file_out.tex -s -o file_out.odt 4510 pandoc file_out.tex -s -o file_out.odt
4413\end{code} 4511\end{alcode}
4414% \iffalse 4512% \iffalse
4415%</example> 4513%</example>
4416% \fi 4514% \fi
@@ -4422,7 +4520,7 @@
4422% \iffalse 4520% \iffalse
4423%<*example> 4521%<*example>
4424% \fi 4522% \fi
4425\begin{code} 4523\begin{alcode}
4426 % preamble: 4524 % preamble:
4427 \usepackage{arabluatex} % note that 'export' has been removed 4525 \usepackage{arabluatex} % note that 'export' has been removed
4428 \renewcommand{\txarb}[1]{#1} 4526 \renewcommand{\txarb}[1]{#1}
@@ -4432,7 +4530,7 @@
4432 % be safe to say: 4530 % be safe to say:
4433 \renewcommand{\prname}[2]{#2} 4531 \renewcommand{\prname}[2]{#2}
4434 % &c 4532 % &c
4435\end{code} 4533\end{alcode}
4436% \iffalse 4534% \iffalse
4437%</example> 4535%</example>
4438% \fi 4536% \fi
@@ -4461,546 +4559,6 @@
4461% \end{enumerate} 4559% \end{enumerate}
4462% \end{enumerate} 4560% \end{enumerate}
4463% 4561%
4464% \section{GNU Free Documentation License}
4465% \label{sec:fdl}
4466% \textbf{Version 1.3, 3 November 2008}
4467%
4468% \begin{center}
4469% Version 1.3, 3 November 2008
4470%
4471% Copyright \copyright{} 2000, 2001, 2002, 2007, 2008 Free
4472% Software Foundation, Inc.
4473%
4474% \bigskip
4475%
4476% \url{https://fsf.org/}
4477%
4478% \bigskip
4479%
4480% Everyone is permitted to copy and distribute verbatim copies
4481% of this license document, but changing it is not allowed.
4482% \end{center}
4483%
4484% \needspace{3\baselineskip}
4485% \begin{center}
4486% {\bf\large Preamble}
4487% \end{center}
4488%
4489% The purpose of this License is to make a manual, textbook, or other
4490% functional and useful document \enquote{free} in the sense of
4491% freedom: to assure everyone the effective freedom to copy and
4492% redistribute it, with or without modifying it, either commercially
4493% or noncommercially. Secondarily, this License preserves for the
4494% author and publisher a way to get credit for their work, while not
4495% being considered responsible for modifications made by others.
4496%
4497% This License is a kind of \enquote{copyleft}, which means that
4498% derivative works of the document must themselves be free in the same
4499% sense. It complements the GNU General Public License, which is a
4500% copyleft license designed for free software.
4501%
4502% We have designed this License in order to use it for manuals for
4503% free software, because free software needs free documentation: a
4504% free program should come with manuals providing the same freedoms
4505% that the software does. But this License is not limited to software
4506% manuals; it can be used for any textual work, regardless of subject
4507% matter or whether it is published as a printed book. We recommend
4508% this License principally for works whose purpose is instruction or
4509% reference.
4510%
4511% \needspace{3\baselineskip}
4512% \begin{center}
4513% {\large\bf 1. APPLICABILITY AND DEFINITIONS\par}
4514% \end{center}
4515%
4516% This License applies to any manual or other work, in any medium,
4517% that contains a notice placed by the copyright holder saying it can
4518% be distributed under the terms of this License. Such a notice
4519% grants a world-wide, royalty-free license, unlimited in duration, to
4520% use that work under the conditions stated herein. The
4521% \enquote{\textbf{Document}}, below, refers to any such manual or
4522% work. Any member of the public is a licensee, and is addressed as
4523% \enquote{\textbf{you}}. You accept the license if you copy, modify
4524% or distribute the work in a way requiring permission under copyright
4525% law.
4526%
4527% A \enquote{\textbf{Modified Version}} of the Document means any work
4528% containing the Document or a portion of it, either copied verbatim,
4529% or with modifications and/or translated into another language.
4530%
4531% A \enquote{\textbf{Secondary Section}} is a named appendix or a
4532% front-matter section of the Document that deals exclusively with the
4533% relationship of the publishers or authors of the Document to the
4534% Document's overall subject (or to related matters) and contains
4535% nothing that could fall directly within that overall subject.
4536% (Thus, if the Document is in part a textbook of mathematics, a
4537% Secondary Section may not explain any mathematics.) The
4538% relationship could be a matter of historical connection with the
4539% subject or with related matters, or of legal, commercial,
4540% philosophical, ethical or political position regarding them.
4541%
4542% The \enquote{\textbf{Invariant Sections}} are certain Secondary
4543% Sections whose titles are designated, as being those of Invariant
4544% Sections, in the notice that says that the Document is released
4545% under this License. If a section does not fit the above definition
4546% of Secondary then it is not allowed to be designated as Invariant.
4547% The Document may contain zero Invariant Sections. If the Document
4548% does not identify any Invariant Sections then there are none.
4549%
4550% The \enquote{\textbf{Cover Texts}} are certain short passages of
4551% text that are listed, as Front-Cover Texts or Back-Cover Texts, in
4552% the notice that says that the Document is released under this
4553% License. A Front-Cover Text may be at most 5 words, and a
4554% Back-Cover Text may be at most 25 words.
4555%
4556% A \enquote{\textbf{Transparent}} copy of the Document means a
4557% machine-readable copy, represented in a format whose specification
4558% is available to the general public, that is suitable for revising
4559% the document straightforwardly with generic text editors or (for
4560% images composed of pixels) generic paint programs or (for drawings)
4561% some widely available drawing editor, and that is suitable for input
4562% to text formatters or for automatic translation to a variety of
4563% formats suitable for input to text formatters. A copy made in an
4564% otherwise Transparent file format whose markup, or absence of
4565% markup, has been arranged to thwart or discourage subsequent
4566% modification by readers is not Transparent. An image format is not
4567% Transparent if used for any substantial amount of text. A copy that
4568% is not \enquote{Transparent} is called \enquote{\textbf{Opaque}}.
4569%
4570% Examples of suitable formats for Transparent copies include plain
4571% ASCII without markup, Texinfo input format, LaTeX input format, SGML
4572% or XML using a publicly available DTD, and standard-conforming
4573% simple HTML, PostScript or PDF designed for human modification.
4574% Examples of transparent image formats include PNG, XCF and JPG.
4575% Opaque formats include proprietary formats that can be read and
4576% edited only by proprietary word processors, SGML or XML for which
4577% the DTD and/or processing tools are not generally available, and the
4578% machine-generated HTML, PostScript or PDF produced by some word
4579% processors for output purposes only.
4580%
4581% The \enquote{\textbf{Title Page}} means, for a printed book, the
4582% title page itself, plus such following pages as are needed to hold,
4583% legibly, the material this License requires to appear in the title
4584% page. For works in formats which do not have any title page as
4585% such, \enquote{Title Page} means the text near the most prominent
4586% appearance of the work's title, preceding the beginning of the body
4587% of the text.
4588%
4589% The \enquote{\textbf{publisher}} means any person or entity that
4590% distributes copies of the Document to the public.
4591%
4592% A section \enquote{\textbf{Entitled XYZ}} means a named subunit of
4593% the Document whose title either is precisely XYZ or contains XYZ in
4594% parentheses following text that translates XYZ in another language.
4595% (Here XYZ stands for a specific section name mentioned below, such
4596% as \enquote{\textbf{Acknowledgements}},
4597% \enquote{\textbf{Dedications}}, \enquote{\textbf{Endorsements}}, or
4598% \enquote{\textbf{History}}.) To \enquote{\textbf{Preserve the
4599% Title}} of such a section when you modify the Document means that it
4600% remains a section \enquote{Entitled XYZ} according to this
4601% definition.
4602%
4603% The Document may include Warranty Disclaimers next to the notice
4604% which states that this License applies to the Document. These
4605% Warranty Disclaimers are considered to be included by reference in
4606% this License, but only as regards disclaiming warranties: any other
4607% implication that these Warranty Disclaimers may have is void and has
4608% no effect on the meaning of this License.
4609%
4610% \needspace{3\baselineskip}
4611% \begin{center}
4612% {\large\bf 2. VERBATIM COPYING\par}
4613% \end{center}
4614%
4615% You may copy and distribute the Document in any medium, either
4616% commercially or noncommercially, provided that this License, the
4617% copyright notices, and the license notice saying this License
4618% applies to the Document are reproduced in all copies, and that you
4619% add no other conditions whatsoever to those of this License. You
4620% may not use technical measures to obstruct or control the reading or
4621% further copying of the copies you make or distribute. However, you
4622% may accept compensation in exchange for copies. If you distribute a
4623% large enough number of copies you must also follow the conditions in
4624% section~3.
4625%
4626% You may also lend copies, under the same conditions stated above,
4627% and you may publicly display copies.
4628%
4629% \needspace{3\baselineskip}
4630% \begin{center}
4631% {\large\bf 3. COPYING IN QUANTITY\par}
4632% \end{center}
4633%
4634% If you publish printed copies (or copies in media that commonly have
4635% printed covers) of the Document, numbering more than 100, and the
4636% Document's license notice requires Cover Texts, you must enclose the
4637% copies in covers that carry, clearly and legibly, all these Cover
4638% Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
4639% the back cover. Both covers must also clearly and legibly identify
4640% you as the publisher of these copies. The front cover must present
4641% the full title with all words of the title equally prominent and
4642% visible. You may add other material on the covers in addition.
4643% Copying with changes limited to the covers, as long as they preserve
4644% the title of the Document and satisfy these conditions, can be
4645% treated as verbatim copying in other respects.
4646%
4647% If the required texts for either cover are too voluminous to fit
4648% legibly, you should put the first ones listed (as many as fit
4649% reasonably) on the actual cover, and continue the rest onto adjacent
4650% pages.
4651%
4652% If you publish or distribute Opaque copies of the Document numbering
4653% more than 100, you must either include a machine-readable
4654% Transparent copy along with each Opaque copy, or state in or with
4655% each Opaque copy a computer-network location from which the general
4656% network-using public has access to download using public-standard
4657% network protocols a complete Transparent copy of the Document, free
4658% of added material. If you use the latter option, you must take
4659% reasonably prudent steps, when you begin distribution of Opaque
4660% copies in quantity, to ensure that this Transparent copy will remain
4661% thus accessible at the stated location until at least one year after
4662% the last time you distribute an Opaque copy (directly or through
4663% your agents or retailers) of that edition to the public.
4664%
4665% It is requested, but not required, that you contact the authors of
4666% the Document well before redistributing any large number of copies,
4667% to give them a chance to provide you with an updated version of the
4668% Document.
4669%
4670% \needspace{3\baselineskip}
4671% \begin{center}
4672% {\large\bf 4. MODIFICATIONS\par}
4673% \end{center}
4674%
4675% You may copy and distribute a Modified Version of the Document under
4676% the conditions of sections 2 and 3 above, provided that you release
4677% the Modified Version under precisely this License, with the Modified
4678% Version filling the role of the Document, thus licensing
4679% distribution and modification of the Modified Version to whoever
4680% possesses a copy of it. In addition, you must do these things in
4681% the Modified Version:
4682%
4683% \begin{itemize}
4684% \item[A.] Use in the Title Page (and on the covers, if any) a title
4685% distinct from that of the Document, and from those of previous
4686% versions (which should, if there were any, be listed in the
4687% History section of the Document). You may use the same title as a
4688% previous version if the original publisher of that version gives
4689% permission.
4690%
4691% \item[B.] List on the Title Page, as authors, one or more persons
4692% or entities responsible for authorship of the modifications in
4693% the Modified Version, together with at least five of the
4694% principal authors of the Document (all of its principal authors,
4695% if it has fewer than five), unless they release you from this
4696% requirement.
4697%
4698% \item[C.] State on the Title page the name of the publisher of the
4699% Modified Version, as the publisher.
4700%
4701% \item[D.] Preserve all the copyright notices of the Document.
4702%
4703% \item[E.] Add an appropriate copyright notice for your
4704% modifications adjacent to the other copyright notices.
4705%
4706% \item[F.] Include, immediately after the copyright notices, a
4707% license notice giving the public permission to use the Modified
4708% Version under the terms of this License, in the form shown in the
4709% Addendum below.
4710%
4711% \item[G.] Preserve in that license notice the full lists of
4712% Invariant Sections and required Cover Texts given in the
4713% Document's license notice.
4714%
4715% \item[H.] Include an unaltered copy of this License.
4716%
4717% \item[I.] Preserve the section Entitled \enquote{History},
4718% Preserve its Title, and add to it an item stating at least the
4719% title, year, new authors, and publisher of the Modified Version
4720% as given on the Title Page. If there is no section Entitled
4721% \enquote{History} in the Document, create one stating the title,
4722% year, authors, and publisher of the Document as given on its
4723% Title Page, then add an item describing the Modified Version as
4724% stated in the previous sentence.
4725%
4726% \item[J.] Preserve the network location, if any, given in the
4727% Document for public access to a Transparent copy of the Document,
4728% and likewise the network locations given in the Document for
4729% previous versions it was based on. These may be placed in the
4730% \enquote{History} section. You may omit a network location for a
4731% work that was published at least four years before the Document
4732% itself, or if the original publisher of the version it refers to
4733% gives permission.
4734%
4735% \item[K.] For any section Entitled \enquote{Acknowledgements} or
4736% \enquote{Dedications}, Preserve the Title of the section, and
4737% preserve in the section all the substance and tone of each of the
4738% contributor acknowledgements and/or dedications given therein.
4739%
4740% \item[L.] Preserve all the Invariant Sections of the Document,
4741% unaltered in their text and in their titles. Section numbers or
4742% the equivalent are not considered part of the section titles.
4743%
4744% \item[M.] Delete any section Entitled \enquote{Endorsements}.
4745% Such a section may not be included in the Modified Version.
4746%
4747% \item[N.] Do not retitle any existing section to be Entitled
4748% \enquote{Endorsements} or to conflict in title with any Invariant
4749% Section.
4750%
4751% \item[O.] Preserve any Warranty Disclaimers.
4752% \end{itemize}
4753%
4754% If the Modified Version includes new front-matter sections or
4755% appendices that qualify as Secondary Sections and contain no
4756% material copied from the Document, you may at your option designate
4757% some or all of these sections as invariant. To do this, add their
4758% titles to the list of Invariant Sections in the Modified Version's
4759% license notice. These titles must be distinct from any other
4760% section titles.
4761%
4762% You may add a section Entitled \enquote{Endorsements}, provided it
4763% contains nothing but endorsements of your Modified Version by
4764% various parties---for example, statements of peer review or that the
4765% text has been approved by an organization as the authoritative
4766% definition of a standard.
4767%
4768% You may add a passage of up to five words as a Front-Cover Text, and
4769% a passage of up to 25 words as a Back-Cover Text, to the end of the
4770% list of Cover Texts in the Modified Version. Only one passage of
4771% Front-Cover Text and one of Back-Cover Text may be added by (or
4772% through arrangements made by) any one entity. If the Document
4773% already includes a cover text for the same cover, previously added
4774% by you or by arrangement made by the same entity you are acting on
4775% behalf of, you may not add another; but you may replace the old one,
4776% on explicit permission from the previous publisher that added the
4777% old one.
4778%
4779% The author(s) and publisher(s) of the Document do not by this
4780% License give permission to use their names for publicity for or to
4781% assert or imply endorsement of any Modified Version.
4782%
4783% \needspace{3\baselineskip}
4784% \begin{center}
4785% {\large\bf 5. COMBINING DOCUMENTS\par}
4786% \end{center}
4787%
4788% You may combine the Document with other documents released under
4789% this License, under the terms defined in section~4 above for
4790% modified versions, provided that you include in the combination all
4791% of the Invariant Sections of all of the original documents,
4792% unmodified, and list them all as Invariant Sections of your combined
4793% work in its license notice, and that you preserve all their Warranty
4794% Disclaimers.
4795%
4796% The combined work need only contain one copy of this License, and
4797% multiple identical Invariant Sections may be replaced with a single
4798% copy. If there are multiple Invariant Sections with the same name
4799% but different contents, make the title of each such section unique
4800% by adding at the end of it, in parentheses, the name of the original
4801% author or publisher of that section if known, or else a unique
4802% number. Make the same adjustment to the section titles in the list
4803% of Invariant Sections in the license notice of the combined work.
4804%
4805% In the combination, you must combine any sections Entitled
4806% \enquote{History} in the various original documents, forming one
4807% section Entitled \enquote{History}; likewise combine any sections
4808% Entitled \enquote{Acknowledgements}, and any sections Entitled
4809% \enquote{Dedications}. You must delete all sections Entitled
4810% \enquote{Endorsements}.
4811%
4812% \needspace{3\baselineskip}
4813% \begin{center}
4814% {\large\bf 6. COLLECTIONS OF DOCUMENTS\par}
4815% \end{center}
4816%
4817% You may make a collection consisting of the Document and other
4818% documents released under this License, and replace the individual
4819% copies of this License in the various documents with a single copy
4820% that is included in the collection, provided that you follow the
4821% rules of this License for verbatim copying of each of the documents
4822% in all other respects.
4823%
4824% You may extract a single document from such a collection, and
4825% distribute it individually under this License, provided you insert a
4826% copy of this License into the extracted document, and follow this
4827% License in all other respects regarding verbatim copying of that
4828% document.
4829%
4830% \needspace{3\baselineskip}
4831% \begin{center}
4832% {\large\bf 7. AGGREGATION WITH INDEPENDENT WORKS\par}
4833% \end{center}
4834%
4835% A compilation of the Document or its derivatives with other separate
4836% and independent documents or works, in or on a volume of a storage
4837% or distribution medium, is called an \enquote{aggregate} if the
4838% copyright resulting from the compilation is not used to limit the
4839% legal rights of the compilation's users beyond what the individual
4840% works permit. When the Document is included in an aggregate, this
4841% License does not apply to the other works in the aggregate which are
4842% not themselves derivative works of the Document.
4843%
4844% If the Cover Text requirement of section~3 is applicable to these
4845% copies of the Document, then if the Document is less than one half
4846% of the entire aggregate, the Document's Cover Texts may be placed on
4847% covers that bracket the Document within the aggregate, or the
4848% electronic equivalent of covers if the Document is in electronic
4849% form. Otherwise they must appear on printed covers that bracket the
4850% whole aggregate.
4851%
4852% \needspace{3\baselineskip}
4853% \begin{center}
4854% {\large\bf 8. TRANSLATION\par}
4855% \end{center}
4856%
4857% Translation is considered a kind of modification, so you may
4858% distribute translations of the Document under the terms of
4859% section~4. Replacing Invariant Sections with translations requires
4860% special permission from their copyright holders, but you may include
4861% translations of some or all Invariant Sections in addition to the
4862% original versions of these Invariant Sections. You may include a
4863% translation of this License, and all the license notices in the
4864% Document, and any Warranty Disclaimers, provided that you also
4865% include the original English version of this License and the
4866% original versions of those notices and disclaimers. In case of a
4867% disagreement between the translation and the original version of
4868% this License or a notice or disclaimer, the original version will
4869% prevail.
4870%
4871% If a section in the Document is Entitled \enquote{Acknowledgements},
4872% \enquote{Dedications}, or \enquote{History}, the requirement
4873% (section~4) to Preserve its Title (section~1) will typically require
4874% changing the actual title.
4875%
4876% \needspace{3\baselineskip}
4877% \begin{center}
4878% {\large\bf 9. TERMINATION\par}
4879% \end{center}
4880%
4881% You may not copy, modify, sublicense, or distribute the Document
4882% except as expressly provided under this License. Any attempt
4883% otherwise to copy, modify, sublicense, or distribute it is void, and
4884% will automatically terminate your rights under this License.
4885%
4886% However, if you cease all violation of this License, then your
4887% license from a particular copyright holder is reinstated (a)
4888% provisionally, unless and until the copyright holder explicitly and
4889% finally terminates your license, and (b) permanently, if the
4890% copyright holder fails to notify you of the violation by some
4891% reasonable means prior to 60 days after the cessation.
4892%
4893% Moreover, your license from a particular copyright holder is
4894% reinstated permanently if the copyright holder notifies you of the
4895% violation by some reasonable means, this is the first time you have
4896% received notice of violation of this License (for any work) from
4897% that copyright holder, and you cure the violation prior to 30 days
4898% after your receipt of the notice.
4899%
4900% Termination of your rights under this section does not terminate the
4901% licenses of parties who have received copies or rights from you
4902% under this License. If your rights have been terminated and not
4903% permanently reinstated, receipt of a copy of some or all of the same
4904% material does not give you any rights to use it.
4905%
4906% \needspace{3\baselineskip}
4907% \begin{center}
4908% {\large\bf 10. FUTURE REVISIONS OF THIS LICENSE\par}
4909% \end{center}
4910%
4911% The Free Software Foundation may publish new, revised versions of
4912% the GNU Free Documentation License from time to time. Such new
4913% versions will be similar in spirit to the present version, but may
4914% differ in detail to address new problems or concerns. See
4915% \url{https://www.gnu.org/licenses/}.
4916%
4917% Each version of the License is given a distinguishing version
4918% number. If the Document specifies that a particular numbered
4919% version of this License \enquote{or any later version} applies to
4920% it, you have the option of following the terms and conditions either
4921% of that specified version or of any later version that has been
4922% published (not as a draft) by the Free Software Foundation. If the
4923% Document does not specify a version number of this License, you may
4924% choose any version ever published (not as a draft) by the Free
4925% Software Foundation. If the Document specifies that a proxy can
4926% decide which future versions of this License can be used, that
4927% proxy's public statement of acceptance of a version permanently
4928% authorizes you to choose that version for the Document.
4929%
4930% \needspace{3\baselineskip}
4931% \begin{center}
4932% {\large\bf 11. RELICENSING\par}
4933% \end{center}
4934%
4935% \enquote{Massive Multiauthor Collaboration Site} (or \enquote{MMC
4936% Site}) means any World Wide Web server that publishes copyrightable
4937% works and also provides prominent facilities for anybody to edit
4938% those works. A public wiki that anybody can edit is an example of
4939% such a server. A \enquote{Massive Multiauthor Collaboration} (or
4940% \enquote{MMC}) contained in the site means any set of copyrightable
4941% works thus published on the MMC site.
4942%
4943% \enquote{CC-BY-SA} means the Creative Commons Attribution-Share
4944% Alike 3.0 license published by Creative Commons Corporation, a
4945% not-for-profit corporation with a principal place of business in San
4946% Francisco, California, as well as future copyleft versions of that
4947% license published by that same organization.
4948%
4949% \enquote{Incorporate} means to publish or republish a Document, in
4950% whole or in part, as part of another Document.
4951%
4952% An MMC is \enquote{eligible for relicensing} if it is licensed under
4953% this License, and if all works that were first published under this
4954% License somewhere other than this MMC, and subsequently incorporated
4955% in whole or in part into the MMC, (1) had no cover texts or
4956% invariant sections, and (2) were thus incorporated prior to November
4957% 1, 2008.
4958%
4959% The operator of an MMC Site may republish an MMC contained in the
4960% site under CC-BY-SA on the same site at any time before August 1,
4961% 2009, provided the MMC is eligible for relicensing.
4962%
4963% \needspace{3\baselineskip}
4964% \begin{center}
4965% {\large\bf ADDENDUM: How to use this License for your documents\par}
4966% \end{center}
4967%
4968% To use this License in a document you have written, include a copy
4969% of the License in the document and put the following copyright and
4970% license notices just after the title page:
4971%
4972% \bigskip
4973% \begin{quote}
4974% Copyright \copyright{} YEAR YOUR NAME. Permission is granted to
4975% copy, distribute and/or modify this document under the terms of
4976% the GNU Free Documentation License, Version 1.3 or any later
4977% version published by the Free Software Foundation; with no
4978% Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
4979% A copy of the license is included in the section entitled
4980% \enquote{GNU Free Documentation License}.
4981% \end{quote}
4982% \bigskip
4983%
4984% If you have Invariant Sections, Front-Cover Texts and Back-Cover
4985% Texts, replace the \enquote{with \dots\ Texts.}\ line with this:
4986%
4987% \bigskip
4988% \begin{quote}
4989% with the Invariant Sections being LIST THEIR TITLES, with the
4990% Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
4991% \end{quote}
4992% \bigskip
4993%
4994% If you have Invariant Sections without Cover Texts, or some other
4995% combination of the three, merge those two alternatives to suit the
4996% situation.
4997%
4998% If your document contains nontrivial examples of program code, we
4999% recommend releasing these examples in parallel under your choice of
5000% free software license, such as the GNU General Public License,
5001% to permit their use in free software.
5002%
5003%
5004% \StopEventually{} 4562% \StopEventually{}
5005% 4563%
5006% \section{Implementation} 4564% \section{Implementation}
@@ -5089,8 +4647,16 @@
5089% it to suit our purpose: 4647% it to suit our purpose:
5090% \begin{macrocode} 4648% \begin{macrocode}
5091\AtBeginDocument{\ifdef{\LR}% 4649\AtBeginDocument{\ifdef{\LR}%
5092 {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}} 4650 {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\reset@font#1\egroup}}
5093 {\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}
5094% \end{macrocode} 4660% \end{macrocode}
5095% \end{macro} 4661% \end{macro}
5096% \begin{macro}{\RL} This one typesets its argument from right to 4662% \begin{macro}{\RL} This one typesets its argument from right to
@@ -5249,7 +4815,7 @@
5249% \end{macrocode} 4815% \end{macrocode}
5250% \end{macro} 4816% \end{macro}
5251% \begin{macro}{\altrfont} 4817% \begin{macro}{\altrfont}
5252% \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
5253% font and shape information (trans mode)} Finally \cs{altrfont} 4819% font and shape information (trans mode)} Finally \cs{altrfont}
5254% is used internally by \package{arabluatex} to store family and 4820% is used internally by \package{arabluatex} to store family and
5255% shape information about the font to be used for transliterated 4821% shape information about the font to be used for transliterated
@@ -5486,55 +5052,63 @@
5486% \begin{macrocode} 5052% \begin{macrocode}
5487\newlength{\al@bayt@width} 5053\newlength{\al@bayt@width}
5488\newlength{\al@gutter@width} 5054\newlength{\al@gutter@width}
5055\newlength{\al@verse@twidth}
5489\setlength{\al@bayt@width}{.3\textwidth} 5056\setlength{\al@bayt@width}{.3\textwidth}
5490\setlength{\al@gutter@width}{.15\al@bayt@width} 5057\setlength{\al@gutter@width}{.15\al@bayt@width}
5491\define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}} 5058\define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}}
5492\define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}} 5059\define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}}
5493\define@key[al]{verse}{metre}{\arb{#1}} 5060\define@key[al]{verse}{metre}{\def\al@verse@metre@value{\arb{#1}}}
5494\define@key[al]{verse}{color}[]{\color{#1}} 5061\define@key[al]{verse}{color}[]{\color{#1}}
5495\define@boolkey[al]{verse}{utf}[true]{} 5062\define@boolkey[al]{verse}{utf}[true]{}
5496\define@boolkey[al]{verse}{delim}[true]{} 5063\define@boolkey[al]{verse}{delim}[true]{}
5497\define@boolkey[al]{verse}{export}[true]{} 5064\define@boolkey[al]{verse}{export}[true]{}
5498\define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, 5065\define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc,
5499 trans}{\def\al@mode{#1}} 5066 trans}{\def\al@mode{#1}}
5500\presetkeys[al]{verse}{metre={}, utf=false, 5067\presetkeys[al]{verse}{utf=false, delim=false}{}
5501 delim=false}{}
5502% \end{macrocode} 5068% \end{macrocode}
5503% Then follows the environment itself: 5069% Then follows the environment itself:
5504% \begin{macrocode} 5070% \begin{macrocode}
5505\NewDocumentEnvironment{arabverse}{!O{}}% 5071\NewDocumentEnvironment{arabverse}{!O{}}%
5506{\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, 5072{\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim,
5507 metre]{#1}% 5073 metre]{#1}%
5508 \if@pkg@export\ifal@verse@export% 5074 \if@pkg@export
5509 \ArbOutFile{\begin{arabverse}}% 5075 \ifal@verse@export
5510 % \ifx\al@mode\al@mode@trans% 5076 \ArbOutFile{\begin{arabverse}}%
5511 % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}% 5077 % \ifx\al@mode\al@mode@trans%
5512 % \else% 5078 % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}%
5513 \IfSubStr[1]{#1}{utf}% 5079 % \else%
5080 \IfSubStr[1]{#1}{utf}%
5514 {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}% 5081 {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}%
5515 {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}% 5082 {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}%
5516 % \fi 5083 % \fi
5517 \else\fi\else\fi\egroup% 5084 \else
5518 \par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% 5085 \fi
5519 % \ifx\al@mode\al@mode@trans% 5086 \else
5520 % \ifal@verse@utf\setRL\else\setLR\fi% 5087 \fi
5521 % \else\setRL\fi% 5088 \egroup
5522 \ifal@verse@utf% 5089 \centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}%
5523 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% 5090 % \ifx\al@mode\al@mode@trans%
5524 \else% 5091 % \ifal@verse@utf\setRL\else\setLR\fi%
5525 \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% 5092 % \else\setRL\fi%
5526 \fi% 5093 \ifal@verse@utf
5527 \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]
5528 }% 5101 }%
5529 {\endarab@v@export 5102 {\endarab@v@export
5530 \hfill\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5103 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
5531 export]{#1}% 5104 export]{#1}%
5532 \egroup\par% 5105 \ifdefined\al@verse@metre@value\hfill\al@verse@metre@value\fi
5106 \egroup
5533 \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5107 \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
5534 metre]{#1}% 5108 metre]{#1}%
5535 \if@pkg@export\ifal@verse@export% 5109 \if@pkg@export\ifal@verse@export
5536 \ArbOutFile{\end{arabverse}} 5110 \ArbOutFile{\end{arabverse}}%
5537 \else\fi\else\fi\egroup} 5111 \else\fi\else\fi\egroup}
5538% \end{macrocode} 5112% \end{macrocode}
5539% \begin{macro}{\bayt} 5113% \begin{macro}{\bayt}
5540% \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
@@ -5583,22 +5157,33 @@
5583\def\al@hemistich@delim{*} 5157\def\al@hemistich@delim{*}
5584\NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}} 5158\NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}}
5585\def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt} 5159\def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt}
5586\NewDocumentCommand{\bayt}{s m o m}{% 5160\providebool{ekd@state}
5587 \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}%
5588 \ifdefined\savenotes\savenotes\else\fi% 5173 \ifdefined\savenotes\savenotes\else\fi%
5589 \edef\al@tatweel{--}% 5174 \edef\al@tatweel{--}%
5590 \ifal@warp@bayt% 5175 \ifal@warp@bayt%
5591 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% 5176 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#3}}%
5592 \else% 5177 \else%
5593 \makebox[\al@bayt@width][s]{\arb@utf{#2}}% 5178 \makebox[\al@bayt@width][s]{\arb@utf{#3}}%
5594 \fi% 5179 \fi%
5595 \IfNoValueTF{#3}{% 5180 \IfNoValueTF{#4}{%
5596 \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% 5181 \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}%
5597 \else% 5182 \else%
5598 \hspace{\al@gutter@width}% 5183 \hspace{\al@gutter@width}%
5599 \fi 5184 \fi
5600 }{% 5185 }{%
5601 \edef\@tempa{#3}% 5186 \edef\@tempa{#4}%
5602 \ifx\@tempa\al@tatweel% 5187 \ifx\@tempa\al@tatweel%
5603 \ifx\al@mode\al@mode@trans% 5188 \ifx\al@mode\al@mode@trans%
5604 \hspace{\al@gutter@width}% 5189 \hspace{\al@gutter@width}%
@@ -5608,17 +5193,17 @@
5608 \else% 5193 \else%
5609 \ifx\al@mode\al@mode@trans% 5194 \ifx\al@mode\al@mode@trans%
5610 \ifal@warp@bayt% 5195 \ifal@warp@bayt%
5611 \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% 5196 \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#4}}%
5612 \else% 5197 \else%
5613 \makebox[\al@gutter@width][s]{\arb@utf{#3}}% 5198 \makebox[\al@gutter@width][s]{\arb@utf{#4}}%
5614 \fi% 5199 \fi%
5615 \else% 5200 \else%
5616 \makebox[\al@gutter@width][s]{\arb@utf{#3}}% 5201 \makebox[\al@gutter@width][s]{\arb@utf{#4}}%
5617 \fi\fi}% 5202 \fi\fi}%
5618 \ifal@warp@bayt% 5203 \ifal@warp@bayt%
5619 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% 5204 \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#5}}%
5620 \else% 5205 \else%
5621 \makebox[\al@bayt@width][s]{\arb@utf{#4}}% 5206 \makebox[\al@bayt@width][s]{\arb@utf{#5}}%
5622 \fi% 5207 \fi%
5623 \ifdefined\spewnotes\spewnotes\else\fi% 5208 \ifdefined\spewnotes\spewnotes\else\fi%
5624} 5209}
@@ -5855,14 +5440,37 @@
5855\NewDocumentEnvironment{arab@v@export}{O{} +b}{% 5440\NewDocumentEnvironment{arab@v@export}{O{} +b}{%
5856 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, 5441 \setkeys[al]{verse}[width, gutter, color, utf, delim, mode,
5857 metre]{#1} 5442 metre]{#1}
5858 \if@pkg@export\ifal@verse@export% 5443 \if@pkg@export
5859 \par 5444 \ifal@verse@export
5860 #2 5445 \ifekd@state
5861 \luadirect{arabluatex.doexport("arabverse")} 5446 \begin{ekdverse}[width=\al@verse@twidth]
5862 \luadirect{tex.sprint(arabluatex.arbtoutf(\luastringN{#2}))} 5447 #2
5863 \luadirect{arabluatex.doexport("no")} 5448 \end{ekdverse}
5864 \else\par#2\fi\else\par#2\fi 5449 \else
5865}{\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}{}
5866% \end{macrocode} 5474% \end{macrocode}
5867% \end{environment} 5475% \end{environment}
5868% \begin{macro}{\arbpardir} 5476% \begin{macro}{\arbpardir}
diff --git a/arabluatex.el b/arabluatex.el
index 063fa61..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")
@@ -124,7 +125,9 @@
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"
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 72b1e38..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
@@ -590,11 +625,19 @@ local function novoceasy(str)
590 return str 625 return str
591end 626end
592 627
593local function transdmg(str, rules) 628local function transdmg(str, mode, rules)
594 str = string.gsub(str, "\\arb(%b{})", function(inside) 629 str = string.gsub(str, "\\arb(%b{})", function(inside)
595 inside = string.sub(inside, 2, -2) 630 inside = string.sub(inside, 2, -2)
596 for i = 1,#hamzatrdmg do 631 if mode == "dmg"
597 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
598 end 641 end
599 for i = 1,#tanwintrdmg do 642 for i = 1,#tanwintrdmg do
600 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) 643 inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b)
@@ -797,16 +840,16 @@ local function processarbtoutf(str)
797 end) 840 end)
798 return string.format("%s{%s}", tag, body) 841 return string.format("%s{%s}", tag, body)
799 end) 842 end)
800 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)
801 argi = string.sub(argi, 2, -2) 844 argi = string.sub(argi, 2, -2)
802 argii = string.sub(argii, 2, -2) 845 argii = string.sub(argii, 2, -2)
803 argiii = string.sub(argiii, 2, -2) 846 argiii = string.sub(argiii, 2, -2)
804 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)
805 end) 848 end)
806 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)
807 argi = string.sub(argi, 2, -2) 850 argi = string.sub(argi, 2, -2)
808 argii = string.sub(argii, 2, -2) 851 argii = string.sub(argii, 2, -2)
809 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)
810 end) 853 end)
811 str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body) 854 str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body)
812 body = string.sub(body, 2, -2) 855 body = string.sub(body, 2, -2)
@@ -1062,8 +1105,8 @@ function arabluatex.processtrans(str, mode, rules, scheme)
1062 if scheme == "buckwalter" then 1105 if scheme == "buckwalter" then
1063 str = processbuckw(str) 1106 str = processbuckw(str)
1064 end 1107 end
1065 if mode == "dmg" then 1108 if mode == "dmg" or mode == "dmg+" then
1066 str = transdmg(str, rules) 1109 str = transdmg(str, mode, rules)
1067 elseif mode == "loc" then 1110 elseif mode == "loc" then
1068 str = transloc(str) 1111 str = transloc(str)
1069 elseif mode == "arabica" then 1112 elseif mode == "arabica" then
@@ -1264,7 +1307,9 @@ end
1264function arabluatex.ayah(str) 1307function arabluatex.ayah(str)
1265 if tonumber(str) ~= nil and str.len(str) < 4 then 1308 if tonumber(str) ~= nil and str.len(str) < 4 then
1266 if tex.textdir == "TRT" then 1309 if tex.textdir == "TRT" then
1267 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").."}"
1268 elseif tex.textdir == "TLT" then 1313 elseif tex.textdir == "TLT" then
1269 str = "\\arb[trans]{("..str..")}" 1314 str = "\\arb[trans]{("..str..")}"
1270 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 7301540..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="گ"},
diff --git a/makefile b/makefile
index d6a1e7d..d88512f 100644
--- a/makefile
+++ b/makefile
@@ -1,5 +1,6 @@
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
@@ -28,16 +29,39 @@ local: clean sty
28 mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \ 29 mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \
29 fi 30 fi
30 cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex 31 cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex
31 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ 32 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \
32 mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ 33 mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \
33 fi 34 fi
34 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
35 51
36auctex: clean 52auctex: clean
37 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ 53 if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \
38 mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ 54 mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \
39 fi 55 fi
40 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 *
41 65
42package: clean all 66package: clean all
43 mkdir -p arabluatex/samples/ 67 mkdir -p arabluatex/samples/
@@ -51,21 +75,21 @@ package: clean all
51 mkdir -p source/lualatex/arabluatex/ 75 mkdir -p source/lualatex/arabluatex/
52 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
53 zip -r arabluatex.tds.zip tex doc source 77 zip -r arabluatex.tds.zip tex doc source
54 tar czf arabluatex-$(ver).tar.gz arabluatex.tds.zip arabluatex/ 78 tar czf arabluatex-$(VERS).tar.gz arabluatex.tds.zip arabluatex/
55 79
56clean: 80clean:
57 rm -rf $(TEXMFDIR)/tex/lualatex/arabluatex/ 81 rm -rf $(TEXMFDIR)/{tex,doc}/lualatex/arabluatex/
58 rm -rf $(HOMEDIR)/.emacs.d/auctex/auto/arabluatex*.{el,elc} 82 rm -rf $(HOMEDIR)/.emacs.d/auctex/style/arabluatex*.{el,elc}
59 rm -rf tex/ doc/ source/ auto/ 83 rm -rf tex/ doc/ source/ auto/
60 rm -rf arabluatex/ 84 rm -rf arabluatex/
61 rm -rf saved/ TMP/ _minted-arabluatex/ 85 rm -rf saved/ TMP/ _minted-arabluatex/
62 find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf 86 find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf
63 mkdir saved 87 mkdir saved
64 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
65 rm *.* 89 rm *.*
66 cp saved/* . 90 cp saved/* .
67 rm -rf saved/ 91 rm -rf saved/
68 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
69 pandoc -s README.tex -o about.html 93 pandoc README.tex -o about.html
70 94
71.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}