diff options
-rw-r--r-- | AUTHORS.md | 8 | ||||
-rw-r--r-- | LICENSE | 17 | ||||
-rw-r--r-- | README.md | 130 | ||||
-rw-r--r-- | README.tex | 81 | ||||
-rw-r--r-- | about.html | 128 | ||||
-rw-r--r-- | arabluatex.dtx | 1389 | ||||
-rw-r--r-- | arabluatex.el | 145 | ||||
-rw-r--r-- | arabluatex.ins | 66 | ||||
-rw-r--r-- | arabluatex.lua | 240 | ||||
-rw-r--r-- | arabluatex_fullvoc.lua | 167 | ||||
-rw-r--r-- | arabluatex_novoc.lua | 45 | ||||
-rw-r--r-- | arabluatex_trans.lua | 203 | ||||
-rw-r--r-- | arabluatex_voc.lua | 84 | ||||
-rw-r--r-- | makefile | 70 | ||||
-rw-r--r-- | samples/al-Jahiz.tex | 5 | ||||
-rw-r--r-- | samples/exporting.tex | 2 |
16 files changed, 1768 insertions, 1012 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 @@ | |||
1 | Author of the `arabluatex` package | ||
2 | ================================== | ||
3 | |||
4 | Robert 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> | ||
@@ -0,0 +1,17 @@ | |||
1 | arabluatex -- ArabTeX for LuaLaTeX | ||
2 | ---------------------------------- | ||
3 | |||
4 | Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | ||
5 | Robert Alessi <alessi@robertalessi.net> | ||
6 | |||
7 | Permission to use, copy, modify, and distribute this software for any | ||
8 | purpose with or without fee is hereby granted, provided that the above | ||
9 | copyright notice and this permission notice appear in all copies. | ||
10 | |||
11 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
12 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
13 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
14 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
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. | ||
@@ -1,55 +1,47 @@ | |||
1 | --- | 1 | # Overview |
2 | author: | 2 | |
3 | - Robert Alessi | 3 | This package provides for [LuaLaTeX](https://luatex.org) an |
4 | title: 'The arabluatex package – README file' | 4 | [ArabTeX](https://ctan.org/pkg/arabtex)-like interface to generate |
5 | --- | 5 | Arabic writing from an [ascii]{.smallcaps} transliteration. It is |
6 | 6 | particularly well-suited for complex documents such as technical | |
7 | Overview | 7 | documents or critical editions where a lot of left-to-right commands |
8 | ======== | 8 | intertwine with Arabic writing. arabluatex is able to process any |
9 | 9 | ArabTeX input notation. Its output can be set in the same modes of | |
10 | This package provides for [LuaLaTeX](http://luatex.org) an | 10 | vocalization as ArabTeX, or in different roman transliterations. It |
11 | [ArabTeX](http://ctan.org/pkg/arabtex)-like interface to generate Arabic | 11 | further allows many typographical refinements. It can also operate with |
12 | writing from an <span style="font-variant:small-caps;">ascii</span> | 12 | the [ekdosis](https://ctan.org/pkg/ekdosis) package to produce from |
13 | transliteration. It is particularly well-suited for complex documents | 13 | `.tex` source files, in addition to printed books, `TEI xml` compliant |
14 | such as technical documents or critical editions where a lot of | 14 | critical editions and/or lexicons that can be searched, analyzed and |
15 | left-to-right commands intertwine with Arabic writing. arabluatex is | 15 | correlated in various ways. |
16 | able to process any ArabTeX input notation. Its output can be set in the | 16 | |
17 | same modes of vocalization as ArabTeX, or in different roman | 17 | # License and disclamer |
18 | transliterations. It further allows many typographical refinements. It | 18 | |
19 | will eventually interact with some other packages yet to come to produce | 19 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX |
20 | from `.tex` source files, in addition to printed books, `TEI xml` | 20 | |
21 | compliant critical editions and/or lexicons that can be searched, | 21 | Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert Alessi |
22 | analyzed and correlated in various ways. | 22 | \<`alessi@robertalessi.net`\> |
23 | 23 | ||
24 | License and disclamer | 24 | Permission to use, copy, modify, and distribute this software for any |
25 | ===================== | 25 | purpose with or without fee is hereby granted, provided that the above |
26 | 26 | copyright notice and this permission notice appear in all copies. | |
27 | ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX | 27 | |
28 | 28 | THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL | |
29 | Copyright ⓒ 2016–2019 Robert Alessi | 29 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES |
30 | OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE | ||
31 | FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY | ||
32 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | ||
33 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING | ||
34 | OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
30 | 35 | ||
31 | Please send error reports and suggestions for improvements to Robert | 36 | Please send error reports and suggestions for improvements to Robert |
32 | Alessi: | 37 | Alessi: |
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 | |||
41 | This program is free software: you can redistribute it and/or modify it | ||
42 | under the terms of the GNU General Public License as published by the | ||
43 | Free Software Foundation, either version 3 of the License, or (at your | ||
44 | option) any later version. | ||
45 | |||
46 | This program is distributed in the hope that it will be useful, but | ||
47 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
48 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | ||
49 | Public License for more details. | ||
50 | |||
51 | You should have received a copy of the GNU General Public License along | ||
52 | with this program. If not, see <http://www.gnu.org/licenses/>. | ||
53 | 45 | ||
54 | This release of arabluatex consists of the following source files: | 46 | This release of arabluatex consists of the following source files: |
55 | 47 | ||
@@ -67,19 +59,7 @@ This release of arabluatex consists of the following source files: | |||
67 | 59 | ||
68 | - `arabluatex_trans.lua` | 60 | - `arabluatex_trans.lua` |
69 | 61 | ||
70 | License applicable to the documentation | 62 | # Installation |
71 | --------------------------------------- | ||
72 | |||
73 | Copyright ⓒ 2016–2019 Robert Alessi | ||
74 | |||
75 | The documentation file `arabluatex.pdf` that is generated from the | ||
76 | `arabluatex.dtx` source is licensed under the Creative Commons | ||
77 | Attribution-ShareAlike 4.0 International License. To view a copy of this | ||
78 | license, visit <http://creativecommons.org/licenses/by-sa/4.0/> or send | ||
79 | a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. | ||
80 | |||
81 | Installation | ||
82 | ============ | ||
83 | 63 | ||
84 | 1. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty` | 64 | 1. Run `'lualatex arabluatex.ins'` to produce the `arabluatex.sty` |
85 | file; | 65 | file; |
@@ -104,43 +84,41 @@ Installation | |||
104 | 84 | ||
105 | 3. Additionally, those who use emacs with AUCTeX may copy | 85 | 3. Additionally, those who use emacs with AUCTeX may copy |
106 | `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory. | 86 | `arabluatex.el` to their `~/.emacs.d/auctex/auto` local directory. |
107 | This will enable the appropriate hooks for ArabLuaTeX in AUCTeX. | 87 | This will enable the appropriate hooks for ArabLuaTeX in AUCTeX. |
108 | 88 | ||
109 | Development, Git Repository | 89 | # Development, Git Repository |
110 | =========================== | ||
111 | 90 | ||
112 | Browse the code | 91 | ## Browse the code |
113 | --------------- | ||
114 | 92 | ||
115 | You can browse ArabLuaTeX repository on the web: | 93 | You can browse ArabLuaTeX repository on the web: |
116 | <http://git.robertalessi.net/arabluatex> | 94 | <http://git.robertalessi.net/arabluatex>\ |
95 | or\ | ||
96 | <https://sr.ht/~ralessi/arabluatex> | ||
117 | 97 | ||
118 | From this page, you can download all the releases of ArabLuaTeX. For | 98 | From this page, you can download all the releases of ArabLuaTeX. For |
119 | instructions on how to install ArabLuaTeX, please see above. | 99 | instructions on how to install ArabLuaTeX, please see above. |
120 | 100 | ||
121 | Comments, Feature requests, Bug Reports | 101 | ## Comments, Feature requests, Bug Reports |
122 | --------------------------------------- | ||
123 | 102 | ||
124 | <https://gitlab.com/ralessi/arabluatex/issues> | 103 | <https://todo.sr.ht/~ralessi/arabluatex> |
125 | 104 | ||
126 | Download the repository | 105 | ## Download the repository |
127 | ----------------------- | ||
128 | 106 | ||
129 | ArabLuaTeX development is facilitated by git, a distributed version | 107 | ArabLuaTeX development is facilitated by git, a distributed version |
130 | control system. You will need to install git (most GNU/Linux | 108 | control system. You will need to install git (most Unix/Linux |
131 | distributions package it in their repositories). | 109 | distributions package it in their repositories). |
132 | 110 | ||
133 | Use this command to download the repository | 111 | Use this command to download the repository |
134 | 112 | ||
135 | git clone http://git.robertalessi.net/arabluatex | 113 | git clone https://git.sr.ht/~ralessi/arabluatex |
136 | 114 | ||
137 | A new directory named arabluatex will have been created, containing | 115 | A new directory named arabluatex will have been created, containing |
138 | ArabLuaTeX. | 116 | ArabLuaTeX. |
139 | 117 | ||
140 | Git hosting | 118 | ## Git hosting |
141 | ----------- | ||
142 | 119 | ||
143 | Make an account on <https://gitlab.com> and navigate (while logged in) | 120 | Make an account on <https://sr.ht> and navigate (while logged in) to |
144 | to <https://gitlab.com/ralessi/arabluatex>. Click *Fork* and you will | 121 | <https://git.sr.ht/~ralessi/arabluatex>. Click *Clone repo to your |
145 | have in your account your own repository of `arabluatex` where you will | 122 | account* and you will have in your account your own repository of |
146 | be able to make whatever changes you like to. | 123 | `arabluatex` where you will be able to make whatever changes you like |
124 | to. | ||
@@ -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} |
19 | This package provides for \href{http://luatex.org}{Lua\LaTeX} an | 19 | This package provides for \href{https://luatex.org}{Lua\LaTeX} |
20 | \href{http://ctan.org/pkg/arabtex}{Arab\TeX}-like interface to | 20 | an \href{https://ctan.org/pkg/arabtex}{Arab\TeX}-like interface to |
21 | generate Arabic writing from an \textsc{ascii} transliteration. It is | 21 | generate Arabic writing from an \textsc{ascii} transliteration. It is |
22 | particularly well-suited for complex documents such as technical | 22 | particularly well-suited for complex documents such as technical |
23 | documents or critical editions where a lot of left-to-right commands | 23 | documents or critical editions where a lot of left-to-right commands |
24 | intertwine with Arabic writing. arabluatex is able to process any | 24 | intertwine with Arabic writing. arabluatex is able to process any |
25 | Arab\TeX\ input notation. Its output can be set in the same modes of | 25 | Arab\TeX\ input notation. Its output can be set in the same modes of |
26 | vocalization as Arab\TeX, or in different roman transliterations. It | 26 | vocalization as Arab\TeX, or in different roman transliterations. It |
27 | further allows many typographical refinements. It will eventually | 27 | further allows many typographical refinements. It can also operate |
28 | interact with some other packages yet to come to produce from | 28 | with the \href{https://ctan.org/pkg/ekdosis}{ekdosis} package to |
29 | \verb|.tex| source files, in addition to printed books, \texttt{TEI | 29 | produce 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 |
31 | searched, analyzed and correlated in various ways. | 31 | be searched, analyzed and correlated in various ways. |
32 | 32 | ||
33 | \section*{License and disclamer} | 33 | \section*{License and disclamer} |
34 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX | 34 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX |
35 | 35 | ||
36 | Copyright ⓒ 2016--2019 Robert Alessi | 36 | Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
37 | Robert Alessi <\verb|alessi@robertalessi.net|> | ||
38 | |||
39 | Permission to use, copy, modify, and distribute this software for any | ||
40 | purpose with or without fee is hereby granted, provided that the above | ||
41 | copyright notice and this permission notice appear in all copies. | ||
42 | |||
43 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
44 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
45 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
46 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
47 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
48 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
49 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
37 | 50 | ||
38 | Please send error reports and suggestions for improvements to Robert | 51 | Please send error reports and suggestions for improvements to Robert |
39 | Alessi: | 52 | Alessi: |
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 | ||
47 | This program is free software: you can redistribute it and/or modify | ||
48 | it under the terms of the GNU General Public License as published by | ||
49 | the Free Software Foundation, either version 3 of the License, or | ||
50 | (at your option) any later version. | ||
51 | |||
52 | This program is distributed in the hope that it will be useful, but | ||
53 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
54 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
55 | General Public License for more details. | ||
56 | |||
57 | You should have received a copy of the GNU General Public License | ||
58 | along with this program. If not, see | ||
59 | <http://www.gnu.org/licenses/>. | ||
60 | |||
61 | This release of arabluatex consists of the following | 60 | This release of arabluatex consists of the following |
62 | source files: | 61 | source 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} | ||
75 | Copyright ⓒ 2016--2019 Robert Alessi | ||
76 | |||
77 | The documentation file \verb|arabluatex.pdf| that is generated from | ||
78 | the \verb|arabluatex.dtx| source is licensed under the Creative | ||
79 | Commons Attribution-ShareAlike 4.0 International License. To view a | ||
80 | copy of this license, visit | ||
81 | \url{http://creativecommons.org/licenses/by-sa/4.0/} or send a letter | ||
82 | to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. | ||
83 | |||
84 | \section*{Installation} | 72 | \section*{Installation} |
85 | \label{sec:installation} | 73 | \label{sec:installation} |
86 | \begin{enumerate} | 74 | \begin{enumerate} |
@@ -111,36 +99,37 @@ to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. | |||
111 | \label{sec:browse-code} | 99 | \label{sec:browse-code} |
112 | 100 | ||
113 | You can browse ArabLua\TeX\ repository on the web: | 101 | You can browse ArabLua\TeX\ repository on the web: |
114 | \url{http://git.robertalessi.net/arabluatex} | 102 | \url{http://git.robertalessi.net/arabluatex}\\ |
103 | or\\ | ||
104 | \url{https://sr.ht/~ralessi/arabluatex} | ||
115 | 105 | ||
116 | From this page, you can download all the releases of ArabLua\TeX. For | 106 | From this page, you can download all the releases of ArabLua\TeX. For |
117 | instructions on how to install ArabLua\TeX, please see above. | 107 | instructions 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} |
125 | ArabLua\TeX\ development is facilitated by git, a distributed version | 115 | ArabLua\TeX\ development is facilitated by git, a distributed version |
126 | control system. You will need to install git (most GNU/Linux | 116 | control system. You will need to install git (most Unix/Linux |
127 | distributions package it in their repositories). | 117 | distributions package it in their repositories). |
128 | 118 | ||
129 | Use this command to download the repository | 119 | Use this command to download the repository |
130 | \begin{verbatim} | 120 | \begin{verbatim} |
131 | git clone http://git.robertalessi.net/arabluatex | 121 | git clone https://git.sr.ht/~ralessi/arabluatex |
132 | \end{verbatim} | 122 | \end{verbatim} |
133 | 123 | ||
134 | |||
135 | A new directory named arabluatex will have been created, containing | 124 | A new directory named arabluatex will have been created, containing |
136 | ArabLuaTeX. | 125 | ArabLuaTeX. |
137 | 126 | ||
138 | \subsection*{Git hosting} | 127 | \subsection*{Git hosting} |
139 | \label{sec:git-hosting} | 128 | \label{sec:git-hosting} |
140 | Make an account on \url{https://gitlab.com} and navigate (while | 129 | Make an account on \url{https://sr.ht} and navigate (while logged in) |
141 | logged in) to \url{https://gitlab.com/ralessi/arabluatex}. Click | 130 | to \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 | 132 | repository of \verb|arabluatex| where you will be able to make |
144 | like to. | 133 | whatever changes you like to. |
145 | 134 | ||
146 | \end{document} \ No newline at end of file | 135 | \end{document} \ No newline at end of file |
@@ -1,33 +1,47 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 1 | <h1 class="unnumbered" id="sec:overview">Overview</h1> |
2 | <html xmlns="http://www.w3.org/1999/xhtml"> | 2 | <p>This package provides for <a href="https://luatex.org">LuaLaTeX</a> |
3 | <head> | 3 | an <a href="https://ctan.org/pkg/arabtex">ArabTeX</a>-like interface to |
4 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 4 | generate Arabic writing from an <span class="smallcaps">ascii</span> |
5 | <meta http-equiv="Content-Style-Type" content="text/css" /> | 5 | transliteration. It is particularly well-suited for complex documents |
6 | <meta name="generator" content="pandoc" /> | 6 | such as technical documents or critical editions where a lot of |
7 | <meta name="author" content="Robert Alessi" /> | 7 | left-to-right commands intertwine with Arabic writing. arabluatex is |
8 | <title>The arabluatex package – README file</title> | 8 | able to process any ArabTeX input notation. Its output can be set in the |
9 | <style type="text/css">code{white-space: pre;}</style> | 9 | same modes of vocalization as ArabTeX, or in different roman |
10 | </head> | 10 | transliterations. It further allows many typographical refinements. It |
11 | <body> | 11 | can also operate with the <a |
12 | <div id="header"> | 12 | href="https://ctan.org/pkg/ekdosis">ekdosis</a> package to produce from |
13 | <h1 class="title">The arabluatex package – README file</h1> | 13 | <code>.tex</code> source files, in addition to printed books, |
14 | <h2 class="author">Robert Alessi</h2> | 14 | <code>TEI xml</code> compliant critical editions and/or lexicons that |
15 | </div> | 15 | can be searched, analyzed and correlated in various ways.</p> |
16 | <h1 id="sec:overview" class="unnumbered">Overview</h1> | 16 | <h1 class="unnumbered" id="license-and-disclamer">License and |
17 | <p>This package provides for <a href="http://luatex.org">LuaLaTeX</a> an <a href="http://ctan.org/pkg/arabtex">ArabTeX</a>-like interface to generate Arabic writing from an <span style="font-variant: small-caps;">ascii</span> transliteration. It is particularly well-suited for complex documents such as technical documents or critical editions where a lot of left-to-right commands intertwine with Arabic writing. arabluatex is able to process any ArabTeX input notation. Its output can be set in the same modes of vocalization as ArabTeX, or in different roman transliterations. It further allows many typographical refinements. It will eventually interact with some other packages yet to come to produce from <code>.tex</code> source files, in addition to printed books, <code>TEI xml</code> compliant critical editions and/or lexicons that can be searched, analyzed and correlated in various ways.</p> | 17 | disclamer</h1> |
18 | <h1 id="license-and-disclamer" class="unnumbered">License and disclamer</h1> | ||
19 | <p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p> | 18 | <p>ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX</p> |
20 | <p>Copyright ⓒ 2016–2019 Robert Alessi</p> | 19 | <p>Copyright ⓒ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Robert |
21 | <p>Please send error reports and suggestions for improvements to Robert Alessi:</p> | 20 | Alessi <<code>alessi@robertalessi.net</code>></p> |
21 | <p>Permission to use, copy, modify, and distribute this software for any | ||
22 | purpose with or without fee is hereby granted, provided that the above | ||
23 | copyright notice and this permission notice appear in all copies.</p> | ||
24 | <p>THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL | ||
25 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES | ||
26 | OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE | ||
27 | FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY | ||
28 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | ||
29 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING | ||
30 | OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | ||
31 | SOFTWARE.</p> | ||
32 | <p>Please send error reports and suggestions for improvements to Robert | ||
33 | Alessi:</p> | ||
22 | <ul> | 34 | <ul> |
23 | <li><p>email: <a href="mailto:alessi@robertalessi.net">alessi@robertalessi.net</a></p></li> | 35 | <li><p>email: <a |
24 | <li><p>website: <a href="http://www.robertalessi.net/arabluatex" class="uri">http://www.robertalessi.net/arabluatex</a></p></li> | 36 | href="mailto:alessi@robertalessi.net">alessi@robertalessi.net</a></p></li> |
25 | <li><p>comments, feature requests, bug reports: <a href="https://gitlab.com/ralessi/arabluatex/issues" class="uri">https://gitlab.com/ralessi/arabluatex/issues</a></p></li> | 37 | <li><p>website: <a href="https://sr.ht/~ralessi/arabluatex" |
38 | class="uri">https://sr.ht/~ralessi/arabluatex</a></p></li> | ||
39 | <li><p>comments, feature requests, bug reports: <a | ||
40 | href="https://todo.sr.ht/~ralessi/arabluatex" | ||
41 | class="uri">https://todo.sr.ht/~ralessi/arabluatex</a></p></li> | ||
26 | </ul> | 42 | </ul> |
27 | <p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> | 43 | <p>This release of arabluatex consists of the following source |
28 | <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> | 44 | files:</p> |
29 | <p>You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.</p> | ||
30 | <p>This release of arabluatex consists of the following source files:</p> | ||
31 | <ul> | 45 | <ul> |
32 | <li><p><code>arabluatex.ins</code></p></li> | 46 | <li><p><code>arabluatex.ins</code></p></li> |
33 | <li><p><code>arabluatex.dtx</code></p></li> | 47 | <li><p><code>arabluatex.dtx</code></p></li> |
@@ -37,13 +51,14 @@ | |||
37 | <li><p><code>arabluatex_novoc.lua</code></p></li> | 51 | <li><p><code>arabluatex_novoc.lua</code></p></li> |
38 | <li><p><code>arabluatex_trans.lua</code></p></li> | 52 | <li><p><code>arabluatex_trans.lua</code></p></li> |
39 | </ul> | 53 | </ul> |
40 | <h2 id="sec:documentation-license" class="unnumbered">License applicable to the documentation</h2> | 54 | <h1 class="unnumbered" id="sec:installation">Installation</h1> |
41 | <p>Copyright ⓒ 2016–2019 Robert Alessi</p> | ||
42 | <p>The documentation file <code>arabluatex.pdf</code> that is generated from the <code>arabluatex.dtx</code> source is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit <a href="http://creativecommons.org/licenses/by-sa/4.0/" class="uri">http://creativecommons.org/licenses/by-sa/4.0/</a> or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</p> | ||
43 | <h1 id="sec:installation" class="unnumbered">Installation</h1> | ||
44 | <ol> | 55 | <ol> |
45 | <li><p>Run <code>'lualatex arabluatex.ins'</code> to produce the <code>arabluatex.sty</code> file;</p></li> | 56 | <li><p>Run <code>'lualatex arabluatex.ins'</code> to produce the |
46 | <li><p>To finish the installation you have to move the following files into a directory where LaTeX can find them. See the FAQ on <code>texfaq.org</code> at <a href="https://texfaq.org/FAQ-inst-wlcf" class="uri">https://texfaq.org/FAQ-inst-wlcf</a> for more on this:</p> | 57 | <code>arabluatex.sty</code> file;</p></li> |
58 | <li><p>To finish the installation you have to move the following files | ||
59 | into 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" | ||
61 | class="uri">https://texfaq.org/FAQ-inst-wlcf</a> for more on this:</p> | ||
47 | <ul> | 62 | <ul> |
48 | <li><p><code>arabluatex.sty</code></p></li> | 63 | <li><p><code>arabluatex.sty</code></p></li> |
49 | <li><p><code>arabluatex-patch.sty</code></p></li> | 64 | <li><p><code>arabluatex-patch.sty</code></p></li> |
@@ -53,20 +68,39 @@ | |||
53 | <li><p><code>arabluatex_novoc.lua</code></p></li> | 68 | <li><p><code>arabluatex_novoc.lua</code></p></li> |
54 | <li><p><code>arabluatex_trans.lua</code></p></li> | 69 | <li><p><code>arabluatex_trans.lua</code></p></li> |
55 | </ul></li> | 70 | </ul></li> |
56 | <li><p>Additionally, those who use emacs with AUCTeX may copy <code>arabluatex.el</code> to their <code>~/.emacs.d/auctex/auto</code> local directory. This will enable the appropriate hooks for ArabLuaTeX in AUCTeX.</p></li> | 71 | <li><p>Additionally, those who use emacs with AUCTeX may copy |
72 | <code>arabluatex.el</code> to their <code>~/.emacs.d/auctex/auto</code> | ||
73 | local directory. This will enable the appropriate hooks for | ||
74 | ArabLuaTeX in AUCTeX.</p></li> | ||
57 | </ol> | 75 | </ol> |
58 | <h1 id="sec:devel-git-repos">Development, Git Repository</h1> | 76 | <h1 id="sec:devel-git-repos">Development, Git Repository</h1> |
59 | <h2 id="sec:browse-code" class="unnumbered">Browse the code</h2> | 77 | <h2 class="unnumbered" id="sec:browse-code">Browse the code</h2> |
60 | <p>You can browse ArabLuaTeX repository on the web: <a href="http://git.robertalessi.net/arabluatex" class="uri">http://git.robertalessi.net/arabluatex</a></p> | 78 | <p>You can browse ArabLuaTeX repository on the web: <a |
61 | <p>From this page, you can download all the releases of ArabLuaTeX. For instructions on how to install ArabLuaTeX, please see above.</p> | 79 | href="http://git.robertalessi.net/arabluatex" |
62 | <h2 id="sec:comm-feat-requ" class="unnumbered">Comments, Feature requests, Bug Reports</h2> | 80 | class="uri">http://git.robertalessi.net/arabluatex</a><br /> |
63 | <p><a href="https://gitlab.com/ralessi/arabluatex/issues" class="uri">https://gitlab.com/ralessi/arabluatex/issues</a></p> | 81 | or<br /> |
64 | <h2 id="sec:download-repository" class="unnumbered">Download the repository</h2> | 82 | <a href="https://sr.ht/~ralessi/arabluatex" |
65 | <p>ArabLuaTeX development is facilitated by git, a distributed version control system. You will need to install git (most GNU/Linux distributions package it in their repositories).</p> | 83 | class="uri">https://sr.ht/~ralessi/arabluatex</a></p> |
84 | <p>From this page, you can download all the releases of ArabLuaTeX. For | ||
85 | instructions on how to install ArabLuaTeX, please see above.</p> | ||
86 | <h2 class="unnumbered" id="sec:comm-feat-requ">Comments, Feature | ||
87 | requests, Bug Reports</h2> | ||
88 | <p><a href="https://todo.sr.ht/~ralessi/arabluatex" | ||
89 | class="uri">https://todo.sr.ht/~ralessi/arabluatex</a></p> | ||
90 | <h2 class="unnumbered" id="sec:download-repository">Download the | ||
91 | repository</h2> | ||
92 | <p>ArabLuaTeX development is facilitated by git, a distributed version | ||
93 | control system. You will need to install git (most Unix/Linux | ||
94 | distributions package it in their repositories).</p> | ||
66 | <p>Use this command to download the repository</p> | 95 | <p>Use this command to download the repository</p> |
67 | <pre><code>git clone http://git.robertalessi.net/arabluatex</code></pre> | 96 | <pre><code>git clone https://git.sr.ht/~ralessi/arabluatex</code></pre> |
68 | <p>A new directory named arabluatex will have been created, containing ArabLuaTeX.</p> | 97 | <p>A new directory named arabluatex will have been created, containing |
69 | <h2 id="sec:git-hosting" class="unnumbered">Git hosting</h2> | 98 | ArabLuaTeX.</p> |
70 | <p>Make an account on <a href="https://gitlab.com" class="uri">https://gitlab.com</a> and navigate (while logged in) to <a href="https://gitlab.com/ralessi/arabluatex" class="uri">https://gitlab.com/ralessi/arabluatex</a>. Click <em>Fork</em> and you will have in your account your own repository of <code>arabluatex</code> where you will be able to make whatever changes you like to.</p> | 99 | <h2 class="unnumbered" id="sec:git-hosting">Git hosting</h2> |
71 | </body> | 100 | <p>Make an account on <a href="https://sr.ht" |
72 | </html> | 101 | class="uri">https://sr.ht</a> and navigate (while logged in) to <a |
102 | href="https://git.sr.ht/~ralessi/arabluatex" | ||
103 | class="uri">https://git.sr.ht/~ralessi/arabluatex</a>. Click <em>Clone | ||
104 | repo to your account</em> and you will have in your account your own | ||
105 | repository of <code>arabluatex</code> where you will be able to make | ||
106 | whatever changes you like to.</p> | ||
diff --git a/arabluatex.dtx b/arabluatex.dtx index 71dfd1d..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--2019 Robert Alesssi | 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 | [2019/03/24 v1.17 An ArabTeX-like interface 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--2019 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}, |
@@ -88,6 +96,16 @@ | |||
88 | location = {Toronto} | 96 | location = {Toronto} |
89 | } | 97 | } |
90 | 98 | ||
99 | @software{pkg:lua-ul, | ||
100 | title = {The Lua-ul package}, | ||
101 | subtitle = {Underlining for LuaLaTeX}, | ||
102 | author = {Krüger, Marcel}, | ||
103 | maintainer = {Krüger, Marcel}, | ||
104 | url = {http://www.ctan.org/pkg/lua-ul}, | ||
105 | date = {2020-03-12}, | ||
106 | version = {0.0.1} | ||
107 | } | ||
108 | |||
91 | @MVBook{Wright, | 109 | @MVBook{Wright, |
92 | author = {Wright, W. LL.D}, | 110 | author = {Wright, W. LL.D}, |
93 | title = {A Grammar of the Arabic Language}, | 111 | title = {A Grammar of the Arabic Language}, |
@@ -147,40 +165,105 @@ | |||
147 | location = {London -- Edinburgh} | 165 | location = {London -- Edinburgh} |
148 | } | 166 | } |
149 | \end{filecontents} | 167 | \end{filecontents} |
150 | \usepackage[english]{babel} | 168 | \usepackage[letterpaper,margin=1.25in,left=50mm,nohead]{geometry} |
151 | \usepackage{dox} | ||
152 | \doxitem{Option}{option}{options} | ||
153 | \usepackage{fontspec} | 169 | \usepackage{fontspec} |
170 | \defaultfontfeatures{Renderer=Harfbuzz} | ||
171 | \usepackage[english]{babel} | ||
172 | %^^A dox does not work with the latest latex-dev: | ||
173 | \ifdefined\SpecialMacroIndex | ||
174 | \NewDocElement{Option}{option} | ||
175 | \else | ||
176 | \usepackage{dox} | ||
177 | \doxitem{Option}{option}{options} | ||
178 | \fi | ||
154 | \usepackage{microtype} | 179 | \usepackage{microtype} |
155 | \babelfont{rm}{Old Standard} | 180 | \babelfont{rm}[RawFeature=onum]{Old Standard} |
181 | \babelfont{sf}{NewComputerModernSans10} | ||
182 | \babelfont{tt}{NewComputerModernMono10} | ||
183 | \usepackage{manfnt} | ||
184 | \usepackage{lettrine} | ||
185 | \newcommand\danger{\lettrine[loversize=-.5]{\textdbend}{\hskip6pt}} | ||
156 | \usepackage{metalogox} | 186 | \usepackage{metalogox} |
157 | \usepackage{arabluatex}[2019/03/24] | 187 | \usepackage{arabluatex}[2023/05/21] |
188 | \SetTranslitConvention{dmg+} | ||
158 | \SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this | 189 | \SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this |
159 | \usepackage[nopar]{quran} | 190 | \usepackage[nopar]{quran} |
160 | \usepackage[noindex]{nameauth} | 191 | \usepackage[noindex]{nameauth} |
161 | \usepackage{varioref} | 192 | \usepackage{varioref} |
162 | \usepackage{hyperxmp} | 193 | \usepackage{latexcolors} |
163 | \PassOptionsToPackage{pdfa}{hyperref} | 194 | \PassOptionsToPackage{bookmarks=true}{hyperref} |
164 | \usepackage{hypdoc} | 195 | \usepackage[numbered]{hypdoc} |
165 | \usepackage{uri} | 196 | \newcommand{\phts}{\phantomsection} |
197 | \usepackage[loadlang=en]{metastr} | ||
198 | \hypersetup{ | ||
199 | colorlinks, | ||
200 | allcolors=cinnamon, | ||
201 | linktocpage=true, | ||
202 | pdftype={Text} | ||
203 | } | ||
204 | \labelformat{section}{sect.~#1} | ||
205 | \labelformat{subsection}{sect.~#1} | ||
206 | \labelformat{subsubsection}{sect.~#1} | ||
207 | \labelformat{figure}{fig.~#1} | ||
208 | \labelformat{table}{table~#1} | ||
209 | \metaset{titletext}{% | ||
210 | \metapick[#1]{title}% | ||
211 | \metacompose[#1]{subtitle}{\metaget[sep]{subtitle}}{}{}} | ||
212 | \metaset[print]{titletext}{% | ||
213 | \metatitleline[print]{title}% | ||
214 | \metatitleline[print]{subtitle}% | ||
215 | \metatitleline[print]{author}% | ||
216 | \metatitleline[print]{contactemail}% | ||
217 | \metatitlelinetwo[print]{date}[print]{draft}} | ||
218 | \metaset[skip]{subtitle}{\vspace{1ex}} | ||
219 | \metaset[skip]{author}{\vspace{2ex}} | ||
220 | \metaset[skip]{date}{\vspace{1ex}} | ||
221 | \metaset[style]{title}{\LARGE} | ||
222 | \metaset[style]{author}{\large} | ||
223 | \metaset[sep]{draft}{ -- } | ||
224 | \metasetlang{en-US} | ||
225 | \metaset{title}{arabluatex} | ||
226 | \metaset[print]{title}{\textsf{arabluatex}} | ||
227 | \metaset{date}{\filedate} | ||
228 | \metaset{draft}{\fileversion} | ||
229 | \metaset{subject}{ArabTeX} | ||
230 | \metaset{subtitle}{ArabTeX for LuaLaTeX} | ||
231 | \metaset[print]{subtitle}{Arab\TeX\ for Lua\LaTeX} | ||
232 | \metaset{author}{Robert Alessi} | ||
233 | \metaset{keywords}{Arabic language, Arabic, | ||
234 | arabtex, luatex} | ||
235 | \metaset{contactemail}{alessi@roberalessi.net} | ||
236 | \metaset[print]{contactemail}{\mailto[arabluatex]{alessi@robertalessi.net}} | ||
237 | \metaset{contacturl}{http://www.roberalessi.net} | ||
238 | \metaset{partof}{The arabluatex Package} | ||
239 | \metaset[print]{partof}{The \textsf{arabluatex} Package} | ||
240 | \metaset{copyrightowner}{\metapick[#1]{author}} | ||
241 | \metaset{copyrightdate}{2016, 2017, 2018, 2019, 2020, 2021, 2022, | ||
242 | 2023} | ||
243 | \metaset{licensemessage}{Permission to use, copy, modify, and | ||
244 | distribute this software for any purpose with or without fee is | ||
245 | hereby granted, provided that the above copyright notice and this | ||
246 | permission notice appear in all copies. | ||
247 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL | ||
248 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED | ||
249 | WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE | ||
250 | AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | ||
251 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA | ||
252 | OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER | ||
253 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
254 | PERFORMANCE OF THIS SOFTWARE.} | ||
255 | \metaset{licenseurl}{% | ||
256 | https://cvsweb.openbsd.org/src/share/misc/license.template?rev=HEAD} | ||
257 | \metaset[print]{licenseurl}{% | ||
258 | \url{https://cvsweb.openbsd.org/src/share/misc/license.template?rev=HEAD}} | ||
259 | \metawritepdfinfo | ||
260 | \metawritepdfaux | ||
261 | \metawritepdfpreamble | ||
262 | \metawritepdfcontact | ||
263 | \metawritepdfrights | ||
166 | \usepackage{bookmark} | 264 | \usepackage{bookmark} |
167 | \usepackage{authblk} | 265 | \usepackage{authblk} |
168 | \usepackage{latexcolors} | ||
169 | \hypersetup{unicode=true, colorlinks, allcolors=cinnamon, | ||
170 | linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The | ||
171 | arabluatex package}, pdfcontactemail={alessi@robertalessi.net}, | ||
172 | pdfcontacturl={http://www.robertalessi.net/arabluatex}, | ||
173 | pdfcopyright={Copyright (C) 2016--2019 Robert Alessi | ||
174 | <alessi@robertalessi.net>. This document is licensed under the | ||
175 | Creative Commons Attribution-ShareAlike 4.0 International | ||
176 | License. To view a copy of this license, visit | ||
177 | http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to | ||
178 | Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.}, | ||
179 | pdflicenseurl={https://creativecommons.org/licenses/by-sa/4.0/legalcode}, | ||
180 | pdfmetalang={en-US}, pdftype={Text}, pdfkeywords={Arabic language, | ||
181 | arabtex, luatex}} | ||
182 | \usepackage[scale=1.5]{ccicons} | 266 | \usepackage[scale=1.5]{ccicons} |
183 | \usepackage[lot]{multitoc} | ||
184 | \usepackage{enumitem} | 267 | \usepackage{enumitem} |
185 | \setlist{nosep} | 268 | \setlist{nosep} |
186 | \setlist[itemize]{label=\textendash} | 269 | \setlist[itemize]{label=\textendash} |
@@ -188,9 +271,11 @@ | |||
188 | \setlist[enumerate,2]{label=\roman*.} | 271 | \setlist[enumerate,2]{label=\roman*.} |
189 | \newlist{enumabjad}{enumerate}{10} | 272 | \newlist{enumabjad}{enumerate}{10} |
190 | \setlist[enumabjad]{label={\abjad{\arabic*}}} | 273 | \setlist[enumabjad]{label={\abjad{\arabic*}}} |
191 | \usepackage{multicol} | 274 | \newlist{remarks}{enumerate}{10} |
192 | \usepackage{cleveref} | 275 | \setlist[remarks]{ |
193 | \crefname{footnote}{note}{notes} | 276 | label*=\textsc{Rem.} \emph{\alph*}, |
277 | left=0.25in, | ||
278 | before=\smaller} | ||
194 | \usepackage{quoting} | 279 | \usepackage{quoting} |
195 | \quotingsetup{noorphans, rightmargin=0pt} | 280 | \quotingsetup{noorphans, rightmargin=0pt} |
196 | \renewcommand*{\quotingfont}{\footnotesize} | 281 | \renewcommand*{\quotingfont}{\footnotesize} |
@@ -210,49 +295,66 @@ | |||
210 | bottom=0mm} | 295 | bottom=0mm} |
211 | \newtcblisting{example}{minted options={linenos, numbersep=0mm, | 296 | \newtcblisting{example}{minted options={linenos, numbersep=0mm, |
212 | fontsize=\smaller}} | 297 | fontsize=\smaller}} |
213 | \newtcblisting{code}{minted options={linenos, numbersep=0mm, | 298 | \newtcblisting{alcode}{minted options={linenos, numbersep=0mm, |
214 | fontsize=\smaller}, listing only} | 299 | fontsize=\smaller}, listing only} |
300 | \VerbatimFootnotes | ||
215 | \newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} | 301 | \newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} |
216 | \usepackage[contents]{colordoc} | 302 | \usepackage[contents]{colordoc} |
217 | \usepackage{csquotes} | 303 | \usepackage{csquotes} |
218 | \DeclareQuoteStyle{arabic} | 304 | \DeclareQuoteStyle{arabic} |
219 | {\rmfamily\textquotedblright}{\rmfamily\textquotedblleft} | 305 | {\rmfamily\textquotedblright}{\rmfamily\textquotedblleft} |
220 | {\rmfamily\textquoteright}{\rmfamily\textquoteleft} | 306 | {\rmfamily\textquoteright}{\rmfamily\textquoteleft} |
221 | \usepackage[style=authoryear, indexing=cite]{biblatex} | 307 | \usepackage[style=oxnotes-inote,indexing=cite]{biblatex} |
222 | \DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}} | 308 | \DeclareIndexFieldFormat{indextitle}{\index{#1=\emph{#1}}} |
223 | \addbibresource{arabluatex.bib} | 309 | \addbibresource{arabluatex.bib} |
310 | \NewDocumentCommand{\newfeature}{o}{% | ||
311 | \leavevmode | ||
312 | \IfNoValueTF{#1} | ||
313 | {\marginpar{\hfill\emph{New feature}}} | ||
314 | {\marginpar{\hfill\emph{New feature} #1}}% | ||
315 | \ignorespaces | ||
316 | } | ||
317 | \usepackage{uri} | ||
318 | \usepackage[obeyspaces]{xurl} | ||
319 | \usepackage{multicol} | ||
320 | \usepackage{tocloft} | ||
321 | \renewcommand\cftlotprehook{\begin{multicols}{2}} | ||
322 | \renewcommand\cftlotposthook{\end{multicols}} | ||
323 | \renewcommand\cftlottitlefont{\Large\bfseries} | ||
224 | \usepackage{etoc} | 324 | \usepackage{etoc} |
225 | \etocsettocdepth{paragraph} | 325 | \etocsettocdepth{paragraph} |
326 | \makeatletter | ||
226 | \newcommand{\altableofcontents}{% | 327 | \newcommand{\altableofcontents}{% |
227 | \begingroup | 328 | \begingroup |
228 | \etocsetstyle{section}{}{} | 329 | \etocsetstyle{section}{}{} |
229 | {\etocsavedsectiontocline{% | 330 | {\l@section{% |
230 | \numberline{\etocnumber}\etocname}{\etocpage}}{} | 331 | \numberline{\etocnumber}\etocname}{\etocpage}}{} |
231 | \etocsetstyle{subsection}{}{} | 332 | \etocsetstyle{subsection}{}{} |
232 | {\etocsavedsubsectiontocline{% | 333 | {\l@subsection{% |
233 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% | 334 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% |
234 | \etocsetstyle{subsubsection}{}{} | 335 | \etocsetstyle{subsubsection}{}{} |
235 | {\etocsavedsubsubsectiontocline{% | 336 | {\l@subsubsection{% |
236 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% | 337 | \numberline{\etocnumber}\etocname}{\etocpage}}{}% |
237 | \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip | 338 | \etocsetstyle{paragraph}{}{\leftskip2cm\rightskip 2.2em \parfillskip |
238 | 0pt plus 1fil\relax \nobreak} | 339 | 0pt plus 1fil\relax \nobreak} |
239 | {\noindent\etocname{} \etocpage{} }{\par}% | 340 | {\noindent\etocname{} \etocpage{} }{\par}% |
240 | \etocmulticolstyle[2]{\section*{Contents}} | 341 | \etocmulticolstyle[2]{\section*{Contents}} |
241 | \pdfbookmark[1]{Contents}{toc} | 342 | \pdfbookmark[1]{Contents}{toc} |
242 | \tableofcontents | 343 | \etoctoclines |
344 | \localtableofcontents | ||
243 | \endgroup} | 345 | \endgroup} |
346 | \makeatother | ||
347 | \setlength\IndexMin{100pt} | ||
244 | \EnableCrossrefs | 348 | \EnableCrossrefs |
245 | \RecordChanges | 349 | \RecordChanges |
246 | \CodelineIndex | 350 | \CodelineIndex |
247 | \begin{document} | 351 | \begin{document} |
248 | \DocInput{arabluatex.dtx} | 352 | \DocInput{arabluatex.dtx} |
249 | \printbibliography[heading=bibintoc] | 353 | \printbibliography[heading=bibnumbered] |
250 | \phantomsection | 354 | \phantomsection |
251 | \addcontentsline{toc}{section}{Change History} | ||
252 | \PrintChanges | 355 | \PrintChanges |
253 | \phantomsection | 356 | \phantomsection |
254 | \addcontentsline{toc}{section}{Index} | 357 | \PrintIndex |
255 | \PrintIndex | ||
256 | \end{document} | 358 | \end{document} |
257 | %</driver> | 359 | %</driver> |
258 | % \fi | 360 | % \fi |
@@ -304,28 +406,26 @@ | |||
304 | % \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb,\let} | 406 | % \DoNotIndex{\relax,\RenewDocumentCommand,\string,\verb,\let} |
305 | % \DoNotIndex{\enskip} | 407 | % \DoNotIndex{\enskip} |
306 | % | 408 | % |
307 | % \providecommand*{\url}{\texttt} | ||
308 | % \GetFileInfo{arabluatex.dtx} | 409 | % \GetFileInfo{arabluatex.dtx} |
309 | % | 410 | % |
310 | % \newcommand*{\NEWfeature}[1]{% | 411 | % \pdfbookmark[1]{\metaterm{title}}{title} |
311 | % \hskip 1sp \marginpar{\small\sffamily\raggedright | 412 | % \begin{tcolorbox}[ |
312 | % New feature\\#1}} | 413 | % colframe=black, |
313 | % | 414 | % enhanced, |
314 | % \title{\tcbox[colframe=black, enhanced, tikznode, drop lifted | 415 | % drop lifted shadow, |
315 | % shadow, colback=white, boxrule=.25mm]% | 416 | % colback=white, |
316 | % {The \textsf{arabluatex} package\\ | 417 | % boxrule=.25mm, |
317 | % \fileversion\ -- \filedate}} | 418 | % halign=center, |
318 | % | 419 | % center |
319 | % \author{Robert Alessi \\ | 420 | % ] |
320 | % \href{mailto:alessi@robertalessi.net?Subject=arabluatex package}% | 421 | % \metapick[print]{titletext} |
321 | % {\texttt{alessi@robertalessi.net}}} | 422 | % \end{tcolorbox} |
322 | % \date{} | ||
323 | % | 423 | % |
324 | % \maketitle | ||
325 | % \footnotesize | 424 | % \footnotesize |
326 | % \altableofcontents | 425 | % \altableofcontents |
327 | % \listoftables | 426 | % \listoftables |
328 | % \normalsize | 427 | % \normalsize |
428 | % \VerbatimFootnotes | ||
329 | % | 429 | % |
330 | % \begin{abstract} | 430 | % \begin{abstract} |
331 | % This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface | 431 | % This package provides for {\LuaLaTeX} an Arab{\TeX}-like interface |
@@ -337,46 +437,59 @@ | |||
337 | % 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 |
338 | % vocalization as Arab\TeX, or in different roman | 438 | % vocalization as Arab\TeX, or in different roman |
339 | % transliterations. It further allows many typographical | 439 | % transliterations. It further allows many typographical |
340 | % refinements. It will eventually interact with some other packages | 440 | % refinements. Furthermore, it can interact with the \pkg{ekdosis} |
341 | % yet to come to produce from \verb|.tex| source files, in addition | 441 | % package to produce from \verb|.tex| source files, in addition to |
342 | % to printed books, \texttt{TEI xml} compliant critical editions | 442 | % printed books, \texttt{TEI xml} compliant critical editions and/or |
343 | % and/or lexicons that can be searched, analyzed and correlated in | 443 | % lexicons that can be searched, analyzed and correlated in various |
344 | % various ways. | 444 | % ways. |
345 | % \end{abstract} | 445 | % \end{abstract} |
346 | % | 446 | % |
347 | % \section*{License and disclamer} | 447 | % \section*{License and Disclaimer} |
348 | % \addcontentsline{toc}{section}{License and disclamer} | 448 | % \addcontentsline{toc}{section}{License and disclamer} |
349 | % \subsection*{License applicable to the software} | 449 | % \leavevmode\marginpar{\hfill\texttt{OpenBSD}} \pkg{arabluatex} is |
350 | % \label{sec:license-software} | 450 | % licensed under the terms of the so-called OpenBSD license, as it is |
451 | % modelled after the ISC copyright, which is functionally equivalent | ||
452 | % to a two-term BSD copyright with language removed that is made | ||
453 | % unnecessary by the Berne convention.\footnote{More information about | ||
454 | % the OpenBSD policy to which \pkg{arabluatex} adheres: | ||
455 | % \url{https://www.openbsd.org/policy.html}.} | ||
351 | % | 456 | % |
352 | % \package{arabluatex} --- Processing Arab\TeX\ notation under Lua\LaTeX.\\ | 457 | % \iffalse |
353 | % Copyright \textcopyright\ 2016--2019 Robert Alessi | 458 | %<*example> |
459 | % \fi | ||
460 | \begin{minted}[linenos=false]{text} | ||
461 | arabluatex -- ArabTeX for LuaLaTeX | ||
462 | ---------------------------------------------------------- | ||
463 | |||
464 | Copyright (c) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 | ||
465 | Robert Alessi <alessi@robertalessi.net> | ||
466 | |||
467 | Permission to use, copy, modify, and distribute this software for any | ||
468 | purpose with or without fee is hereby granted, provided that the above | ||
469 | copyright notice and this permission notice appear in all copies. | ||
470 | |||
471 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
472 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
473 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
474 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
475 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
476 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
477 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
478 | \end{minted} | ||
479 | % \iffalse | ||
480 | %</example> | ||
481 | % \fi | ||
354 | % | 482 | % |
355 | % Please send error reports and suggestions for improvements to Robert | 483 | % Please send error reports and suggestions for improvements to Robert |
356 | % Alessi: | 484 | % Alessi: |
357 | % \begin{itemize} | 485 | % \begin{itemize} |
358 | % \item email: \mailto[arabluatex package]{alessi@roberalessi.net} | 486 | % \item email: \mailto[arabluatex package]{alessi@roberalessi.net} |
359 | % \item website: \url{http://www.robertalessi.net/arabluatex} | 487 | % \item website: \url{https://sr.ht/~ralessi/arabluatex/} |
360 | % \item development: \url{http://git.robertalessi.net/arabluatex} | 488 | % \item development: \url{http://git.robertalessi.net/arabluatex} |
361 | % \item comments, feature requests, bug reports: | 489 | % \item comments, feature requests, bug reports: |
362 | % \url{https://gitlab.com/ralessi/arabluatex/issues} | 490 | % \url{https://todo.sr.ht/~ralessi/arabluatex} |
363 | % \end{itemize} | 491 | % \end{itemize} |
364 | % | 492 | % |
365 | % \marginpar{\texttt{gpl3+}} | ||
366 | % This program is free software: you can redistribute it and/or modify | ||
367 | % it under the terms of the GNU General Public License as published by | ||
368 | % the Free Software Foundation, either version 3 of the License, or | ||
369 | % (at your option) any later version. | ||
370 | % | ||
371 | % This program is distributed in the hope that it will be useful, but | ||
372 | % WITHOUT ANY WARRANTY; without even the implied warranty of | ||
373 | % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
374 | % General Public License for more details. | ||
375 | % | ||
376 | % You should have received a copy of the GNU General Public License | ||
377 | % along with this program. If not, see | ||
378 | % <http://www.gnu.org/licenses/>. | ||
379 | % | ||
380 | % This release of \package{arabluatex} consists of the following | 493 | % This release of \package{arabluatex} consists of the following |
381 | % source files: | 494 | % source files: |
382 | % \begin{itemize} | 495 | % \begin{itemize} |
@@ -389,21 +502,9 @@ | |||
389 | % \item |arabluatex_trans.lua| | 502 | % \item |arabluatex_trans.lua| |
390 | % \item |arabluatex.el| | 503 | % \item |arabluatex.el| |
391 | % \end{itemize} | 504 | % \end{itemize} |
392 | % | ||
393 | % \subsection*{License applicable to this document} | ||
394 | % \label{sec:documentation-license} | ||
395 | % Copyright \textcopyright\ 2016--2019 Robert Alessi | ||
396 | % | ||
397 | % \ccbysa\marginpar{\texttt{CC BY-SA 4.0}} | ||
398 | % This document is licensed under the Creative Commons | ||
399 | % Attribution-ShareAlike 4.0 International License. To view a copy of | ||
400 | % this license, visit | ||
401 | % \url{http://creativecommons.org/licenses/by-sa/4.0/} or send a | ||
402 | % letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, | ||
403 | % USA. | ||
404 | % | 505 | % |
405 | % \section{Introduction} | 506 | % \section{Introduction} |
406 | % In comparison to Prof. Lagally's outstanding Arab\TeX,\footnote{See | 507 | % In comparison to Prof.\ Lagally's outstanding Arab\TeX,\footnote{See |
407 | % \url{http://ctan.org/pkg/arabtex}} Arab{\LuaTeX} is at present | 508 | % \url{http://ctan.org/pkg/arabtex}} Arab{\LuaTeX} is at present |
408 | % nothing more than a modest piece of software. Hopefully---if I may | 509 | % nothing more than a modest piece of software. Hopefully---if I may |
409 | % say so---it will eventually provide all of its valuable qualities to | 510 | % say so---it will eventually provide all of its valuable qualities to |
@@ -520,21 +621,25 @@ | |||
520 | % issue a warning message and attempt to load the Amiri | 621 | % issue a warning message and attempt to load the Amiri |
521 | % font\footnote{\textcite{pkg:amiri}.} like so:---\\ | 622 | % font\footnote{\textcite{pkg:amiri}.} like so:---\\ |
522 | % \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]} | 623 | % \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic]} |
523 | % \begin{quoting} | 624 | % \begin{remarks} |
524 | % \textsc{Rem.} By default Amiri places the \arb[trans]{kasraT} in | 625 | % \item By default Amiri places the \arb[trans]{kasraT} in combination |
525 | % combination with the \arb[trans]{ta^sdId} below the consonant, | 626 | % with the \arb[trans]{ta^sdId} below the consonant, like so: |
526 | % 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 |
527 | % manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic, | 628 | % manuscripts {\renewfontfamily\arabicfont{Amiri}[Script=Arabic, |
528 | % RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as | 629 | % RawFeature={+ss05}]\arb{BBi}} may stand for \arb{BBa} as well as |
529 | % 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 |
530 | % of the \arb[trans]{kasraT} above the consonant may be obtained by | 631 | % the \arb[trans]{kasraT} above the consonant may be obtained by |
531 | % selecting the |ss05| feature of the Amiri font, like | 632 | % selecting the |ss05| feature of the Amiri font, like |
532 | % so:---\footnote{See the documentation of \package{amiri}, | 633 | % so:---\footnote{See the documentation of \package{amiri}, |
533 | % \textcite[6]{pkg:amiri}.}\\ | 634 | % \textcite[6]{pkg:amiri}.}\\ |
534 | % \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]} | 635 | % \tcboxverb{\newfontfamily\arabicfont{Amiri}[Script=Arabic,RawFeature={+ss05}]} |
535 | % | 636 | % |
536 | % Other Arabic fonts may behave differently. | 637 | % Other Arabic fonts may behave differently. |
537 | % \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} | ||
538 | % | 643 | % |
539 | % \subsection{Options} | 644 | % \subsection{Options} |
540 | % \label{sec:options} | 645 | % \label{sec:options} |
@@ -568,8 +673,8 @@ | |||
568 | % standards. At present, three standards are supported (see below | 673 | % standards. At present, three standards are supported (see below |
569 | % \vref{sec:transliteration} for more details): | 674 | % \vref{sec:transliteration} for more details): |
570 | % \begin{description} | 675 | % \begin{description} |
571 | % \item[dmg] \emph{Deutsche Morgenländische Gesellschaft}, which is | 676 | % \item[dmg/dmg+] \emph{Deutsche Morgenländische Gesellschaft} |dmg| |
572 | % selected by default; | 677 | % is selected by default; |
573 | % \item[loc] \emph{Library of Congress}; | 678 | % \item[loc] \emph{Library of Congress}; |
574 | % \item[arabica] \emph{Arabica}. | 679 | % \item[arabica] \emph{Arabica}. |
575 | % \end{description} | 680 | % \end{description} |
@@ -579,7 +684,7 @@ | |||
579 | % \label{ref:export-global-opt} | 684 | % \label{ref:export-global-opt} |
580 | % \DescribeOption{export} |export|$=$|true|\verb+|+|false| | 685 | % \DescribeOption{export} |export|$=$|true|\verb+|+|false| |
581 | % \hfill\tcboxverb{Default: false}\\ \label{export-mode} | 686 | % \hfill\tcboxverb{Default: false}\\ \label{export-mode} |
582 | % \NEWfeature{v.1.13} This option acts as a named argument and does | 687 | % \newfeature[v.1.13] This option acts as a named argument and does |
583 | % not need a value as it defaults to |true| if it is used. It enables | 688 | % not need a value as it defaults to |true| if it is used. It enables |
584 | % \package{arabluatex} to produce a duplicate of the original |.tex| | 689 | % \package{arabluatex} to produce a duplicate of the original |.tex| |
585 | % source file in which all \textsc{ascii} strings are replaced with | 690 | % source file in which all \textsc{ascii} strings are replaced with |
@@ -588,7 +693,7 @@ | |||
588 | % | 693 | % |
589 | % \subsubsection{Classic contrasted with modern typesetting of Arabic} | 694 | % \subsubsection{Classic contrasted with modern typesetting of Arabic} |
590 | % \label{sec:classic-modern-typesetting} | 695 | % \label{sec:classic-modern-typesetting} |
591 | % \NEWfeature{v.1.2} By default, \package{arabluatex} typesets Arabic | 696 | % \newfeature[v.1.2] By default, \package{arabluatex} typesets Arabic |
592 | % in a classic, traditional style the most prominent features of which | 697 | % in a classic, traditional style the most prominent features of which |
593 | % are the following: | 698 | % are the following: |
594 | % \begin{itemize} | 699 | % \begin{itemize} |
@@ -627,7 +732,7 @@ | |||
627 | % \fi | 732 | % \fi |
628 | % \end{itemize} | 733 | % \end{itemize} |
629 | % | 734 | % |
630 | % \DescribeMacro{\SetArbEasy} \NEWfeature{v1.4.4} Such refinements as | 735 | % \DescribeMacro{\SetArbEasy} \newfeature[v1.4.4] Such refinements as |
631 | % \enquote*{classic} \arb[trans]{maddaT} may be discarded by the | 736 | % \enquote*{classic} \arb[trans]{maddaT} may be discarded by the |
632 | % \cs{SetArbEasy} command, either globally in the preamble or locally | 737 | % \cs{SetArbEasy} command, either globally in the preamble or locally |
633 | % at any point of the document. The difference between \cs{SetArbEasy} | 738 | % at any point of the document. The difference between \cs{SetArbEasy} |
@@ -637,7 +742,7 @@ | |||
637 | % mode, while the latter further takes it away. Default | 742 | % mode, while the latter further takes it away. Default |
638 | % \enquote*{classic} rules may be set back at any point of the | 743 | % \enquote*{classic} rules may be set back at any point of the |
639 | % document with the \DescribeMacro{\SetArbDflt}\cs{SetArbDflt} | 744 | % document with the \DescribeMacro{\SetArbDflt}\cs{SetArbDflt} |
640 | % command. \NEWfeature{v1.6} \DescribeMacro{\SetArbDflt*}Assimilation | 745 | % command. \newfeature[v1.6] \DescribeMacro{\SetArbDflt*}Assimilation |
641 | % rules laid on \vref{ref:assimilation} may also be applied by the | 746 | % rules laid on \vref{ref:assimilation} may also be applied by the |
642 | % \enquote*{starred} version of this command \cs{SetArbDflt*} either | 747 | % \enquote*{starred} version of this command \cs{SetArbDflt*} either |
643 | % in the preamble or at any point of the document.\footnote{For an | 748 | % in the preamble or at any point of the document.\footnote{For an |
@@ -712,25 +817,16 @@ | |||
712 | %</example> | 817 | %</example> |
713 | % \fi | 818 | % \fi |
714 | % | 819 | % |
715 | % \paragraph{Caveat} | 820 | % The following example comes from \textcite[i. 213 |
716 | % For some reason, left-to-right paragraphs that start with Arabic | ||
717 | % words lose their indentation. For the time being, this can be | ||
718 | % circumvented by appending the \cs{indent} command at the | ||
719 | % commencement of such paragraphs. | ||
720 | % | ||
721 | % \label{ref:ltr-lists}% | ||
722 | % The same remark applies to left-to-right list environments: when | ||
723 | % items start with Arabic words, the \cs{arb} command must be prefixed | ||
724 | % with \cs{indent}. The following example comes from \textcite[i. 213 | ||
725 | % C]{Wright}:--- % | 821 | % C]{Wright}:--- % |
726 | % \iffalse | 822 | % \iffalse |
727 | %<*example> | 823 | %<*example> |
728 | % \fi | 824 | % \fi |
729 | \begin{example} | 825 | \begin{example} |
730 | \begin{enumerate}[label=\Roman*., start=16] | 826 | \begin{enumerate}[label=\Roman*., start=16] |
731 | \item \indent\arb{fawA`ilu}*. | 827 | \item \arb{fawA`ilu}*. |
732 | \begin{enumerate}[label=\arabic*.] | 828 | \begin{enumerate}[label=\arabic*.] |
733 | \item \indent\arb{fA`aluN}; as \arb{_hAtamuN} \emph{a | 829 | \item \arb{fA`aluN}; as \arb{_hAtamuN} \emph{a |
734 | signet-ring}, ... | 830 | signet-ring}, ... |
735 | \end{enumerate} | 831 | \end{enumerate} |
736 | \end{enumerate} | 832 | \end{enumerate} |
@@ -745,11 +841,11 @@ | |||
745 | % \iffalse | 841 | % \iffalse |
746 | %<*example> | 842 | %<*example> |
747 | % \fi | 843 | % \fi |
748 | \begin{code} | 844 | \begin{alcode} |
749 | \begin{arab} | 845 | \begin{arab} |
750 | [...] | 846 | [...] |
751 | \end{arab} | 847 | \end{arab} |
752 | \end{code} | 848 | \end{alcode} |
753 | % \iffalse | 849 | % \iffalse |
754 | %</example> | 850 | %</example> |
755 | % \fi | 851 | % \fi |
@@ -800,43 +896,41 @@ | |||
800 | % where \meta{mode} may be any of |voc|, |fullvoc|, |novoc| or | 896 | % where \meta{mode} may be any of |voc|, |fullvoc|, |novoc| or |
801 | % |trans|. | 897 | % |trans|. |
802 | % | 898 | % |
803 | %\section{Standard Arab\TeX\ input} | 899 | % \section{Standard Arab\TeX\ input} |
804 | %\subsection{Consonants} | 900 | % \subsection{Consonants} |
805 | % \Cref{tab:arabtex-consonants} gives the Arab\TeX\ equivalents for | 901 | % \Vref{tab:arabtex-consonants} gives the Arab\TeX\ equivalents for |
806 | % all of the Arabic consonants. | 902 | % all of the Arabic consonants. |
807 | % | 903 | % |
808 | % \addlines[2] | ||
809 | % \newcommand{\dmg}[1]{% | 904 | % \newcommand{\dmg}[1]{% |
810 | % \SetTranslitConvention{dmg}% | 905 | % \SetTranslitConvention{dmg+}% |
811 | % \arb[trans]{#1}} | 906 | % \arb[trans]{#1}} |
812 | % \newcommand{\loc}[1]{% | 907 | % \newcommand{\loc}[1]{% |
813 | % \SetTranslitConvention{loc}% | 908 | % \SetTranslitConvention{loc}% |
814 | % \arb[trans]{#1}\SetTranslitConvention{dmg}} | 909 | % \arb[trans]{#1}\SetTranslitConvention{dmg+}} |
815 | % \newcommand{\brill}[1]{% | 910 | % \newcommand{\brill}[1]{% |
816 | % \SetTranslitConvention{arabica}% | 911 | % \SetTranslitConvention{arabica}% |
817 | % \arb[trans]{#1}\SetTranslitConvention{dmg}} | 912 | % \arb[trans]{#1}\SetTranslitConvention{dmg+}} |
818 | % \begin{longtable}{lllll} | 913 | % \begin{longtable}{lllll} |
819 | % \bottomrule | 914 | % \bottomrule |
820 | % \caption*{\Cref*{tab:arabtex-consonants}: Standard Arab\TeX\ | 915 | % \caption[]{Standard Arab\TeX\ (consonants)} |
821 | % (consonants)} | ||
822 | % \endfoot | 916 | % \endfoot |
823 | % \captionlistentry{Arab\TeX\ consonants}\\[-1em] | ||
824 | % \toprule | 917 | % \toprule |
918 | % \captionlistentry{Standard Arab\TeX\ (consonants)} | ||
825 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 919 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
826 | % & Arab\TeX\ notation \\ | 920 | % & Arab\TeX\ notation \\ |
827 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 921 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
828 | % \endfirsthead | 922 | % \endfirsthead |
829 | % \toprule | 923 | % \toprule |
830 | % Letter & \multicolumn{3}{l}{Transliteration} | 924 | % Letter & \multicolumn{3}{l}{Transliteration} |
831 | % & Arab\TeX\ notation \\ | 925 | % & Arab\TeX\ notation \\ |
832 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 926 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
833 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} | 927 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} |
834 | % \label{tab:arabtex-consonants} | 928 | % \label{tab:arabtex-consonants} |
835 | % \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 |
836 | % \arb[trans]{'alif} as a consonant, see \textcite[i. 16 | 930 | % \arb[trans]{'alif} as a consonant, see \textcite[i. 16 |
837 | % D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>} | 931 | % D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>} |
838 | % 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 |
839 | % \vref{ref:hamza}.} & \dmg{'u 'a 'i} & | 933 | % \vref{ref:hamza}.} & \dmg{|'u, |'a, |'i} & |
840 | % \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| \\ |
841 | % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\ | 935 | % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\ |
842 | % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\ | 936 | % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\ |
@@ -849,6 +943,7 @@ | |||
849 | % \arb[novoc]{r} & \dmg{r} & \loc{r} & \brill{r} & |r| \\ | 943 | % \arb[novoc]{r} & \dmg{r} & \loc{r} & \brill{r} & |r| \\ |
850 | % \arb[novoc]{z} & \dmg{z} & \loc{z} & \brill{z} & |z| \\ | 944 | % \arb[novoc]{z} & \dmg{z} & \loc{z} & \brill{z} & |z| \\ |
851 | % \arb[novoc]{s} & \dmg{s} & \loc{s} & \brill{s} & |s| \\ | 945 | % \arb[novoc]{s} & \dmg{s} & \loc{s} & \brill{s} & |s| \\ |
946 | % \pagebreak[1] | ||
852 | % \arb[novoc]{^s} & \dmg{^s} & \loc{^s} & \brill{^s} & |^s| \\ | 947 | % \arb[novoc]{^s} & \dmg{^s} & \loc{^s} & \brill{^s} & |^s| \\ |
853 | % \arb[novoc]{.s} & \dmg{.s} & \loc{.s} & \brill{.s} & |.s| \\ | 948 | % \arb[novoc]{.s} & \dmg{.s} & \loc{.s} & \brill{.s} & |.s| \\ |
854 | % \arb[novoc]{.d} & \dmg{.d} & \loc{.d} & \brill{.d} & |.d| \\ | 949 | % \arb[novoc]{.d} & \dmg{.d} & \loc{.d} & \brill{.d} & |.d| \\ |
@@ -866,14 +961,14 @@ | |||
866 | % \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\ | 961 | % \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\ |
867 | % \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 |
868 | % the letter \arb[novoc]{.y} with no diacritical points below, see | 963 | % the letter \arb[novoc]{.y} with no diacritical points below, see |
869 | % \emph{Rem{.} b.} below.} \\ | 964 | % \vref{ref:dotless-ya} below.} \\ |
870 | % \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\ | 965 | % \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\ |
871 | % \end{longtable} | 966 | % \end{longtable} |
872 | % \begin{quoting} | 967 | % \begin{remarks} |
873 | % \textsc{Rem.}~\emph{a.} Please note that in all cases of elision, | 968 | % \item Please note that in all cases of elision, the |
874 | % 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 |
875 | % that accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} | 970 | % accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i} as in |
876 | % as in |wa-inhazama| \arb[fullvoc]{wa-inhazama} | 971 | % |wa-inhazama| \arb[fullvoc]{wa-inhazama} |
877 | % \arb[trans]{wa-inhazama}. For more details on the definite article | 972 | % \arb[trans]{wa-inhazama}. For more details on the definite article |
878 | % and the \arb[trans]{'alifu 'l-wa.sli} see | 973 | % and the \arb[trans]{'alifu 'l-wa.sli} see |
879 | % \vref{ref:definite-article}. | 974 | % \vref{ref:definite-article}. |
@@ -887,10 +982,10 @@ | |||
887 | % 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}, |
888 | % |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}. | 983 | % |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}. |
889 | % | 984 | % |
890 | % \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 |
891 | % 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 |
892 | % written without diacritical points as \arb[novoc]{Y}. When it is | 987 | % be written without diacritical points as \arb[novoc]{Y}. When it |
893 | % 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 |
894 | % \arb[trans]{fat.haT} placed above the preceding letter in | 989 | % \arb[trans]{fat.haT} placed above the preceding letter in |
895 | % vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN} | 990 | % vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN} |
896 | % \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}, |
@@ -900,30 +995,30 @@ | |||
900 | % 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| |
901 | % \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| |
902 | % \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}. | 997 | % \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}. |
903 | % \end{quoting} | 998 | % \end{remarks} |
904 | % | 999 | % |
905 | % \subsection{Additional characters} | 1000 | % \subsection{Additional characters} |
906 | % \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 |
907 | % now available} | 1002 | % now available} |
908 | % \NEWfeature{v1.8.5}\Cref{tab:arabtex-additional-characters} gives | 1003 | % \newfeature[v1.8.5]\Vref{tab:arabtex-additional-characters} gives |
909 | % the Arab\TeX\ equivalents for some additional Persian characters. | 1004 | % the Arab\TeX\ equivalents for some additional Persian characters. |
910 | % | 1005 | % |
1006 | % \enlargethispage{2\baselineskip} | ||
911 | % \begin{longtable}{lllll} | 1007 | % \begin{longtable}{lllll} |
912 | % \bottomrule | 1008 | % \bottomrule |
913 | % \caption*{\Cref*{tab:arabtex-additional-characters}: Standard | 1009 | % \caption[]{Standard Arab\TeX\ (additional characters)} |
914 | % Arab\TeX\ (additional characters)} | ||
915 | % \endfoot | 1010 | % \endfoot |
916 | % \captionlistentry{Arab\TeX\ additional characters}\\[-1em] | ||
917 | % \toprule | 1011 | % \toprule |
1012 | % \captionlistentry{Standard Arab\TeX\ (additional characters)} | ||
918 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 1013 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
919 | % & Arab\TeX\ notation \\ | 1014 | % & Arab\TeX\ notation \\ |
920 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica}\footnotemark | 1015 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica}\footnotemark |
921 | % & \\ \midrule | 1016 | % & \\ \midrule |
922 | % \endfirsthead | 1017 | % \endfirsthead |
923 | % \toprule | 1018 | % \toprule |
924 | % Letter & \multicolumn{3}{l}{Transliteration} | 1019 | % Letter & \multicolumn{3}{l}{Transliteration} |
925 | % & Arab\TeX\ notation \\ | 1020 | % & Arab\TeX\ notation \\ |
926 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1021 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
927 | % \endhead | 1022 | % \endhead |
928 | % \addtocounter{footnote}{-1} | 1023 | % \addtocounter{footnote}{-1} |
929 | % \footnotetext{See below \vref{sec:transliteration}.} | 1024 | % \footnotetext{See below \vref{sec:transliteration}.} |
@@ -934,40 +1029,40 @@ | |||
934 | % \label{tab:arabtex-additional-characters} | 1029 | % \label{tab:arabtex-additional-characters} |
935 | % \hskip-1em\arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\ | 1030 | % \hskip-1em\arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\ |
936 | % \arb[novoc]{^c} & \dmg{^c} & \loc{^c} & \brill{^c} & \verb|^c| \\ | 1031 | % \arb[novoc]{^c} & \dmg{^c} & \loc{^c} & \brill{^c} & \verb|^c| \\ |
1032 | % \pagebreak[1] | ||
937 | % \arb[novoc]{^z} & \dmg{^z} & \loc{^z} & \brill{^z} & \verb|^z| \\ | 1033 | % \arb[novoc]{^z} & \dmg{^z} & \loc{^z} & \brill{^z} & \verb|^z| \\ |
938 | % \arb[novoc]{v}\footnote{\label{fn:not-in-dmg}This character is not found in | 1034 | % \arb[novoc]{v}\footnote{\label{fn:not-in-dmg}This character is not found in |
939 | % \textcite[2]{dmg}. It is taken from the \textcite{din31635} standard.} & | 1035 | % \textcite[2]{dmg}. It is taken from the \textcite{din31635} standard.} & |
940 | % \dmg{v} & \loc{v} & \brill{v} & \verb|v| \\ | 1036 | % \dmg{v} & \loc{v} & \brill{v} & \verb|v| \\ |
941 | % \arb[novoc]{g} & \dmg{g} & \loc{g} & \brill{g} & \verb|g| \\ | 1037 | % \arb[novoc]{g} & \dmg{g} & \loc{g} & \brill{g} & \verb|g| \\ |
942 | % \arb[novoc]{^n}\footnote{See \cref{fn:not-in-dmg}.} & \dmg{^n} & | 1038 | % \arb[novoc]{^n}\footnote{See \vref{fn:not-in-dmg}.} & \dmg{^n} & |
943 | % \loc{^n} & \brill{^n} & \verb|^n| \\ | 1039 | % \loc{^n} & \brill{^n} & \verb|^n| \\ |
944 | % \end{longtable} | 1040 | % \end{longtable} |
945 | % \begin{quoting} | 1041 | % \begin{remarks} |
946 | % \textsc{Rem.} The alveolar consonants \arb[novoc]{^c} and | 1042 | % \item[\textsc{Rem.}] The alveolar consonants \arb[novoc]{^c} and |
947 | % \arb[novoc]{^z} are processed as solar letters by | 1043 | % \arb[novoc]{^z} are processed as solar letters by |
948 | % \package{arabluatex}. | 1044 | % \package{arabluatex}. |
949 | % \end{quoting} | 1045 | % \end{remarks} |
950 | % | 1046 | % |
951 | % \subsection{Vowels} | 1047 | % \subsection{Vowels} |
952 | % \subsubsection{Long vowels} | 1048 | % \subsubsection{Long vowels} |
953 | % \Cref{tab:arabtex-long-vowels} gives the Arab\TeX\ equivalents for | 1049 | % \Vref{tab:arabtex-long-vowels} gives the Arab\TeX\ equivalents for |
954 | % the Arabic long vowels. | 1050 | % the Arabic long vowels. |
955 | % | 1051 | % |
956 | % \begin{longtable}{lllll} | 1052 | % \begin{longtable}{lllll} |
957 | % \bottomrule | 1053 | % \bottomrule |
958 | % \caption*{\Cref*{tab:arabtex-long-vowels}: Standard Arab\TeX\ (long | 1054 | % \caption[]{Standard Arab\TeX\ (long vowels)} |
959 | % vowels)} | ||
960 | % \endfoot | 1055 | % \endfoot |
961 | % \captionlistentry{Arab\TeX\ long vowels}\\[-1em] | ||
962 | % \toprule | 1056 | % \toprule |
1057 | % \captionlistentry{Standard Arab\TeX\ (long vowels)} | ||
963 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 1058 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
964 | % & Arab\TeX\ notation \\ | 1059 | % & Arab\TeX\ notation \\ |
965 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1060 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
966 | % \endfirsthead | 1061 | % \endfirsthead |
967 | % \toprule | 1062 | % \toprule |
968 | % Letter & \multicolumn{3}{l}{Transliteration} | 1063 | % Letter & \multicolumn{3}{l}{Transliteration} |
969 | % & Arab\TeX\ notation \\ | 1064 | % & Arab\TeX\ notation \\ |
970 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1065 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
971 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} | 1066 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} |
972 | % \label{tab:arabtex-long-vowels} | 1067 | % \label{tab:arabtex-long-vowels} |
973 | % \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\ | 1068 | % \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\ |
@@ -982,10 +1077,10 @@ | |||
982 | % \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| \\ |
983 | % \end{longtable} | 1078 | % \end{longtable} |
984 | % | 1079 | % |
985 | % \begin{quoting} | 1080 | % \begin{remarks} |
986 | % \textsc{Rem.}~\emph{a.} The long vowels \arb[trans]{A, U, I}, | 1081 | % \item The long vowels \arb[trans]{A, U, I}, otherwise called |
987 | % otherwise called \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the | 1082 | % \arb[trans]{.hurUf-u 'l-madd-i}, \emph{the letters of |
988 | % letters of prolongation}, involve the placing of the short vowels | 1083 | % prolongation}, involve the placing of the short vowels |
989 | % \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A}, | 1084 | % \arb[trans]{Ba, Bu, Bi} before the letters \arb[novoc]{A}, |
990 | % \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex} | 1085 | % \arb[novoc]{U}, \arb[novoc]{I} respectively. \package{arabluatex} |
991 | % does that automatically in case any from |voc|, |fullvoc| or | 1086 | % does that automatically in case any from |voc|, |fullvoc| or |
@@ -993,43 +1088,42 @@ | |||
993 | % \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu} | 1088 | % \arb[voc]{qIla} \arb[trans]{qIla}, \arb[voc]{yaqUlu} |
994 | % \arb[trans]{yaqUlu}. | 1089 | % \arb[trans]{yaqUlu}. |
995 | % | 1090 | % |
996 | % \textsc{Rem.}~\emph{b.} Defective writings, such as | 1091 | % \item Defective writings, such as \arb[novoc]{B_a}, |
997 | % \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 |
998 | % 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 |
999 | % encoded |_a| |_u| and |_i| respectively, e.g. |_d_alika| | 1094 | % |_i| respectively, e.g. |_d_alika| \arb[voc]{_d_alika}, |
1000 | % \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 |
1001 | % \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| |
1002 | % |'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 |
1003 | % \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. |
1004 | % | 1099 | % |
1005 | % \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 |
1006 | % 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 |
1007 | % 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 |
1008 | % used as a long vowel, it is encoded |iY|, where |i| recalls the | 1103 | % vowel, it is encoded |iY|, where |i| recalls the |
1009 | % \arb[trans]{kasraT} placed below the preceding letter in vocalized | 1104 | % \arb[trans]{kasraT} placed below the preceding letter in vocalized |
1010 | % Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY| | 1105 | % Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY| |
1011 | % \arb{yam^siY} \arb[trans]{yam^siY}. | 1106 | % \arb{yam^siY} \arb[trans]{yam^siY}. |
1012 | % \end{quoting} | 1107 | % \end{remarks} |
1013 | % | 1108 | % |
1014 | % \subsubsection{Short vowels} | 1109 | % \subsubsection{Short vowels} |
1015 | % \Cref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for | 1110 | % \Vref{tab:arabtex-short-vowels} gives the Arab\TeX\ equivalents for |
1016 | % the Arabic short vowels. | 1111 | % the Arabic short vowels. |
1017 | % | 1112 | % |
1018 | % \begin{longtable}{lllll} | 1113 | % \begin{longtable}{lllll} |
1019 | % \bottomrule | 1114 | % \bottomrule |
1020 | % \caption*{\Cref*{tab:arabtex-short-vowels}: Standard Arab\TeX\ | 1115 | % \caption[]{Standard Arab\TeX\ (short vowels)} |
1021 | % (short vowels)} | ||
1022 | % \endfoot | 1116 | % \endfoot |
1023 | % \captionlistentry{Arab\TeX\ short vowels}\\[-1em] | ||
1024 | % \toprule | 1117 | % \toprule |
1118 | % \captionlistentry{Standard Arab\TeX\ (short vowels)} | ||
1025 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 1119 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
1026 | % & Arab\TeX\ notation \\ | 1120 | % & Arab\TeX\ notation \\ |
1027 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1121 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
1028 | % \endfirsthead | 1122 | % \endfirsthead |
1029 | % \toprule | 1123 | % \toprule |
1030 | % Letter & \multicolumn{3}{l}{Transliteration} | 1124 | % Letter & \multicolumn{3}{l}{Transliteration} |
1031 | % & Arab\TeX\ notation \\ | 1125 | % & Arab\TeX\ notation \\ |
1032 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1126 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
1033 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} | 1127 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} |
1034 | % \label{tab:arabtex-short-vowels} | 1128 | % \label{tab:arabtex-short-vowels} |
1035 | % \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\ | 1129 | % \arb[voc]{Ba} & \dmg{Ba} & \loc{Ba} & \brill{Ba} & \verb|a| \\ |
@@ -1478,7 +1572,7 @@ | |||
1478 | % |al-.hamd-u| |li-l-l_ah-i| \arb[fullvoc]{al-.hamd-u li-l-l_ah-i} | 1572 | % |al-.hamd-u| |li-l-l_ah-i| \arb[fullvoc]{al-.hamd-u li-l-l_ah-i} |
1479 | % \arb[trans]{al-.hamd-u li-l-l_ah-i}. | 1573 | % \arb[trans]{al-.hamd-u li-l-l_ah-i}. |
1480 | % \end{quote} | 1574 | % \end{quote} |
1481 | % As said above on \cpageref{fullvoc-mode}, |fullvoc| is the mode | 1575 | % As said above on \vpageref{fullvoc-mode}, |fullvoc| is the mode |
1482 | % in which \package{arabluatex} expresses the \arb[trans]{sukUn} and | 1576 | % in which \package{arabluatex} expresses the \arb[trans]{sukUn} and |
1483 | % the \arb[trans]{wa.slaT}. \package{arabluatex} will take care of | 1577 | % the \arb[trans]{wa.slaT}. \package{arabluatex} will take care of |
1484 | % doing that automatically provided that the vowel which is to be | 1578 | % doing that automatically provided that the vowel which is to be |
@@ -1660,7 +1754,7 @@ | |||
1660 | % \enquote{pipe} and \vref{sec:transliteration} on |dmg| mode.} | 1754 | % \enquote{pipe} and \vref{sec:transliteration} on |dmg| mode.} |
1661 | % |al-l_ah-u| \arb[fullvoc]{yA| al-l_ah-u} \arb[trans]{yA| | 1755 | % |al-l_ah-u| \arb[fullvoc]{yA| al-l_ah-u} \arb[trans]{yA| |
1662 | % al-l_ah-u}, \verb+'a-fa|+\footnote{\label{fn:pipe-allah-02}See | 1756 | % al-l_ah-u}, \verb+'a-fa|+\footnote{\label{fn:pipe-allah-02}See |
1663 | % \cref{fn:pipe-allah-01}.}|-al-|\allowbreak|l_ah-i| | 1757 | % \vref{fn:pipe-allah-01}.}|-al-|\allowbreak|l_ah-i| |
1664 | % |la-ta.g`alanna| \arb[fullvoc]{'a-fa|-al-l_ah-i la-ta.g`alanna} | 1758 | % |la-ta.g`alanna| \arb[fullvoc]{'a-fa|-al-l_ah-i la-ta.g`alanna} |
1665 | % \arb[trans]{'a-fa|-al-l_ah-i la-ta.g`alanna}, | 1759 | % \arb[trans]{'a-fa|-al-l_ah-i la-ta.g`alanna}, |
1666 | % |bi-'l-|\allowbreak|l_ah-i| \arb[fullvoc]{bi-'l-l_ah-i} | 1760 | % |bi-'l-|\allowbreak|l_ah-i| \arb[fullvoc]{bi-'l-l_ah-i} |
@@ -1852,27 +1946,26 @@ | |||
1852 | % analysis. \enquote{Quoting} that straight single quote character | 1946 | % analysis. \enquote{Quoting} that straight single quote character |
1853 | % like so: \meta{\texttt{"'}} allows to determine the carrier of the | 1947 | % like so: \meta{\texttt{"'}} allows to determine the carrier of the |
1854 | % \arb[trans]{hamzaT} freely, without any consideration for the | 1948 | % \arb[trans]{hamzaT} freely, without any consideration for the |
1855 | % context. \Cref{tab:quoted-hamza} gives the equivalents for all the | 1949 | % context. \Vref{tab:quoted-hamza} gives the equivalents for all the |
1856 | % possible carriers the \arb[trans]{hamzaT} may take. | 1950 | % possible carriers the \arb[trans]{hamzaT} may take. |
1857 | % | 1951 | % |
1858 | % \begin{longtable}{lllll} | 1952 | % \begin{longtable}{lllll} |
1859 | % \bottomrule | 1953 | % \bottomrule |
1860 | % \caption*{\Cref*{tab:quoted-hamza}: \enquote{Quoted} | 1954 | % \caption[]{\enquote{Quoted} \arb[trans]{hamzaT}} |
1861 | % \arb[trans]{hamzaT}} | ||
1862 | % \endfoot | 1955 | % \endfoot |
1863 | % \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}}\\[-1em] | 1956 | % \toprule |
1864 | % \toprule Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 1957 | % \captionlistentry{\enquote{Quoted} \arb[trans]{hamzaT}} |
1958 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | ||
1865 | % & Arab\TeX\ notation \\ | 1959 | % & Arab\TeX\ notation \\ |
1866 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1960 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
1867 | % \endfirsthead | 1961 | % \endfirsthead |
1868 | % \toprule Letter & \multicolumn{3}{l}{Transliteration} | 1962 | % \toprule Letter & \multicolumn{3}{l}{Transliteration} |
1869 | % & Arab\TeX\ notation \\ | 1963 | % & Arab\TeX\ notation \\ |
1870 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 1964 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
1871 | % \endhead | 1965 | % \endhead |
1872 | % \footnotetext{See below \vref{sec:transliteration}.} | 1966 | % \footnotetext{See below \vref{sec:transliteration}.} |
1873 | % \label{tab:quoted-hamza} | 1967 | % \label{tab:quoted-hamza} |
1874 | % \arb[novoc]{|"'} & \dmg{|"'} & \loc{|"'} & \brill{|"'} & \verb+|"'+ \\ | 1968 | % \arb[novoc]{|"'} & \dmg{|"'} & \loc{|"'} & \brill{|"'} & \verb+|"'+ \\ |
1875 | % \pagebreak[1] | ||
1876 | % \arb[novoc]{A"'} & \dmg{A"'} & \loc{A"'} & \brill{A"'} & \verb|A"'| \\ | 1969 | % \arb[novoc]{A"'} & \dmg{A"'} & \loc{A"'} & \brill{A"'} & \verb|A"'| \\ |
1877 | % \arb[novoc]{a"'} & \dmg{a"'} & \loc{a"'} & \brill{a"'} & \verb|a"'| \\ | 1970 | % \arb[novoc]{a"'} & \dmg{a"'} & \loc{a"'} & \brill{a"'} & \verb|a"'| \\ |
1878 | % \arb[novoc]{u"'} & \dmg{u"'} & \loc{u"'} & \brill{u"'} & \verb|u"'| \\ | 1971 | % \arb[novoc]{u"'} & \dmg{u"'} & \loc{u"'} & \brill{u"'} & \verb|u"'| \\ |
@@ -1900,7 +1993,7 @@ | |||
1900 | % \arb[fullvoc]{'a`daA"'|"'ikum} \arb[trans]{'a`dA|"'ikum}. | 1993 | % \arb[fullvoc]{'a`daA"'|"'ikum} \arb[trans]{'a`dA|"'ikum}. |
1901 | % \end{quote} | 1994 | % \end{quote} |
1902 | % | 1995 | % |
1903 | % \subsection{\texorpdfstring{The \enquote{pipe} character | 1996 | % \subsection{\texorpdfstring{The \enquote*{pipe} character |
1904 | % (\textbar)}{The ‘pipe’ character (\textbar)}} | 1997 | % (\textbar)}{The ‘pipe’ character (\textbar)}} |
1905 | % \label{sec:pipe} | 1998 | % \label{sec:pipe} |
1906 | % In the terminology of Arab\TeX, the \enquote{pipe} character | 1999 | % In the terminology of Arab\TeX, the \enquote{pipe} character |
@@ -1923,11 +2016,11 @@ | |||
1923 | % \end{quote} | 2016 | % \end{quote} |
1924 | % As one can see, the \enquote{pipe} character between the two | 2017 | % As one can see, the \enquote{pipe} character between the two |
1925 | % \meta{n} prevents the necessary \arb[trans]{ta^sdId} rule | 2018 | % \meta{n} prevents the necessary \arb[trans]{ta^sdId} rule |
1926 | % (\cpageref{ref:necessary-tashdid}) from being applied. | 2019 | % (\vpageref{ref:necessary-tashdid}) from being applied. |
1927 | % | 2020 | % |
1928 | % \subsection{Putting back on broken contextual analysis rules} | 2021 | % \subsection{Putting back on broken contextual analysis rules} |
1929 | % \label{sec:arbnull} | 2022 | % \label{sec:arbnull} |
1930 | % \NEWfeature{v1.7} In complex documents such as critical editions | 2023 | % \newfeature[v1.7] In complex documents such as critical editions |
1931 | % where footnotes and other kind of annotations can be particularly | 2024 | % where footnotes and other kind of annotations can be particularly |
1932 | % abundant, the contextual analysis rules that are described above may | 2025 | % abundant, the contextual analysis rules that are described above may |
1933 | % be broken by \LaTeX\ commands. To take an example, consider the | 2026 | % be broken by \LaTeX\ commands. To take an example, consider the |
@@ -2023,6 +2116,34 @@ | |||
2023 | % |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024} | 2116 | % |sanaT-i| |1024| \arb[voc]{fI sanaT-i 1024} |
2024 | % \end{quote} | 2117 | % \end{quote} |
2025 | % | 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 | % | ||
2026 | % \subsubsection{The \emph{abjad}} | 2147 | % \subsubsection{The \emph{abjad}} |
2027 | % \label{sec:abjad} | 2148 | % \label{sec:abjad} |
2028 | % 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 |
@@ -2031,7 +2152,7 @@ | |||
2031 | % \arb[trans]{'abjad} numbers are usually distinguished from the | 2152 | % \arb[trans]{'abjad} numbers are usually distinguished from the |
2032 | % surrounding words by a stroke placed over them. | 2153 | % surrounding words by a stroke placed over them. |
2033 | % | 2154 | % |
2034 | % \DescribeMacro{\abjad} \NEWfeature{v.1.1} \arb[trans]{'abjad} | 2155 | % \DescribeMacro{\abjad} \newfeature[v.1.1] \arb[trans]{'abjad} |
2035 | % numbers are inserted with the \cs{abjad}\marg{number} command in any | 2156 | % numbers are inserted with the \cs{abjad}\marg{number} command in any |
2036 | % of the |voc|, |fullvoc| and |novoc| modes, where \meta{number} may | 2157 | % of the |voc|, |fullvoc| and |novoc| modes, where \meta{number} may |
2037 | % be any number between 1 and 1999, like so:--- | 2158 | % be any number between 1 and 1999, like so:--- |
@@ -2040,35 +2161,35 @@ | |||
2040 | % 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 |
2041 | % 'l-`AdAt-i}. | 2162 | % 'l-`AdAt-i}. |
2042 | % \end{quote} | 2163 | % \end{quote} |
2043 | % \begin{quoting} | 2164 | % \begin{remarks} |
2044 | % \textsc{Rem.}~\emph{a.} As can be seen in the above given example, | 2165 | % \item As can be seen in the above given example, |
2045 | % \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in | 2166 | % \package{arabluatex} expresses the \arb[trans]{'abjad} numbers in |
2046 | % 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 |
2047 | % transliteration modes. | 2168 | % transliteration modes. |
2048 | % | 2169 | % |
2049 | % \textsc{Rem.}~\emph{b.} \cs{abjad} may also be found outside | 2170 | % \item \cs{abjad} may also be found outside Arabic environments. In |
2050 | % Arabic environments. In that case, \package{arabluatex} does not | 2171 | % that case, \package{arabluatex} does not print the stroke as a |
2051 | % 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 |
2052 | % not surrounded by other Arabic words. In case one nonetheless | 2173 | % Arabic words. In case one nonetheless wishes to print the stroke, |
2053 | % wishes to print the stroke, he can either use the \cs{aemph} | 2174 | % he can either use the \cs{aoline*} command that is described below |
2054 | % command that is described below in \vref{sec:emphasis} or insert | 2175 | % in \vref{sec:underlining} or insert the \arb[trans]{'ab^gad} |
2055 | % the \arb[trans]{'ab^gad} number in |\arb[novoc]{}|:--- | 2176 | % number in |\arb[novoc]{}|:--- |
2056 | % \begin{quote} | 2177 | % \begin{quote} |
2057 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| | 2178 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| |
2058 | % |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is | 2179 | % |\abjad{1874}| The \arb[trans]{'abjad} number for 1874 is |
2059 | % \abjad{1874}. | 2180 | % \abjad{1874}. |
2060 | % | 2181 | % |
2061 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| | 2182 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| |
2062 | % |\aemph*{\abjad{1874}}| The \arb[trans]{'abjad} number for 1874 | 2183 | % |\aoline*{\abjad{1874}}| The \arb[trans]{'abjad} number for 1874 |
2063 | % is \aemph*{\abjad{1874}}. | 2184 | % is \aoline*{\abjad{1874}}. |
2064 | % | 2185 | % |
2065 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| | 2186 | % |The| |\arb[trans]{'abjad}| |number| |for| |1874| |is| |
2066 | % |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for | 2187 | % |\arb[novoc]{\abjad{1874}}| The \arb[trans]{'abjad} number for |
2067 | % 1874 is \arb[novoc]{\abjad{1874}}. | 2188 | % 1874 is \arb[novoc]{\abjad{1874}}. |
2068 | % \end{quote} | 2189 | % \end{quote} |
2069 | % \end{quoting} | 2190 | % \end{remarks} |
2070 | % | 2191 | % |
2071 | % \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 |
2072 | % counters into \arb[trans]{'ab^gad} numbers, like so:--- % | 2193 | % counters into \arb[trans]{'ab^gad} numbers, like so:--- % |
2073 | % \changes{v1.12}{2018/06/24}{\cs{abjad} can now process \LaTeX\ | 2194 | % \changes{v1.12}{2018/06/24}{\cs{abjad} can now process \LaTeX\ |
2074 | % counters}% | 2195 | % counters}% |
@@ -2100,19 +2221,18 @@ | |||
2100 | % For the time being, the following is included:--- | 2221 | % For the time being, the following is included:--- |
2101 | % \begin{longtable}{lllll} | 2222 | % \begin{longtable}{lllll} |
2102 | % \bottomrule | 2223 | % \bottomrule |
2103 | % \caption*{\Cref*{tab:additional-arabic-codings}: Additional Arabic | 2224 | % \caption[]{Additional Arabic codings} |
2104 | % codings} | ||
2105 | % \endfoot | 2225 | % \endfoot |
2106 | % \captionlistentry{Additional Arabic codings}\\[-1em] | ||
2107 | % \toprule | 2226 | % \toprule |
2227 | % \captionlistentry{Additional Arabic codings} | ||
2108 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 2228 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
2109 | % & Arab\TeX\ notation \\ | 2229 | % & Arab\TeX\ notation \\ |
2110 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 2230 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
2111 | % \endfirsthead | 2231 | % \endfirsthead |
2112 | % \toprule | 2232 | % \toprule |
2113 | % Letter & \multicolumn{3}{l}{Transliteration} | 2233 | % Letter & \multicolumn{3}{l}{Transliteration} |
2114 | % & Arab\TeX\ notation \\ | 2234 | % & Arab\TeX\ notation \\ |
2115 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} \\ \midrule | 2235 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} \\ \midrule |
2116 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} | 2236 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} |
2117 | % \label{tab:additional-arabic-codings} | 2237 | % \label{tab:additional-arabic-codings} |
2118 | % \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\ | 2238 | % \arb[novoc]{.b} & \dmg{.b} & \loc{.b} & \brill{.b} & |.b| \\ |
@@ -2120,8 +2240,16 @@ | |||
2120 | % \arb[novoc]{.f} & \dmg{.f} & \loc{.f} & \brill{.f} & |.f| \\ | 2240 | % \arb[novoc]{.f} & \dmg{.f} & \loc{.f} & \brill{.f} & |.f| \\ |
2121 | % \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\ | 2241 | % \arb[novoc]{.q} & \dmg{.q} & \loc{.q} & \brill{.q} & |.q| \\ |
2122 | % \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\ | 2242 | % \arb[novoc]{.k} & \dmg{.k} & \loc{.k} & \brill{.k} & |.k| \\ |
2123 | % \pagebreak[1] | ||
2124 | % \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}.} \\ | ||
2125 | % \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\ | 2253 | % \arb[novoc]{((} & \dmg{((} & \loc{((} & \brill{((} & |((| \\ |
2126 | % \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\ | 2254 | % \arb[novoc]{))} & \dmg{))} & \loc{))} & \brill{))} & |))| \\ |
2127 | % \end{longtable} | 2255 | % \end{longtable} |
@@ -2148,36 +2276,52 @@ | |||
2148 | % \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}}}. |
2149 | % \end{quote} | 2277 | % \end{quote} |
2150 | % | 2278 | % |
2151 | % \begin{quoting} | 2279 | % \begin{remarks} |
2152 | % \textsc{Rem.}~\emph{a.} As the above example shows, | 2280 | % \item As the above example shows, \package{arabluatex} places the |
2153 | % \package{arabluatex} places the horizontal stroke \emph{under} the | 2281 | % horizontal stroke \emph{under} the emphasized words in any of the |
2154 | % emphasized words in any of the transliteration modes. | 2282 | % transliteration modes. |
2155 | % | 2283 | % |
2156 | % \textsc{Rem.}~\emph{b.} \NEWfeature{v1.9.2}\DescribeMacro{\aemph*} | 2284 | % \item \newfeature[v1.9.2]\DescribeMacro{\aemph*} \cs{aemph*} is also |
2157 | % \cs{aemph*} is also provided should one wish to always have the | 2285 | % provided should one wish to always have the horizontal stroke |
2158 | % horizontal stroke printed over the emphasized words, like so: | 2286 | % printed over the emphasized words, like so: |\abjad{45}:| |
2159 | % |\abjad{45}:| |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| | 2287 | % |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| \arb[voc]{\abjad{45}: |
2160 | % \arb[voc]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-`AdAt-i}} | 2288 | % kitAbu-hu \aemph*{fI 'l-`AdAt-i}} \arb[trans]{\abjad{45}: |
2161 | % \arb[trans]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}. | 2289 | % kitAbu-hu \aemph*{fI 'l-\uc{`AdAt-i}}}. |
2162 | % \end{quoting} | 2290 | % \end{remarks} |
2163 | % | 2291 | % |
2292 | % \subsubsection{Underlining words or numbers} | ||
2293 | % \label{sec:underlining} | ||
2294 | % \DescribeMacro{\aoline}% | ||
2295 | % \DescribeMacro{\aoline*}% | ||
2296 | % \DescribeMacro{\auline}% | ||
2297 | % \newfeature[v1.19]Three additional, non context-sensitive commands | ||
2298 | % are provided to distinguish words or numbers:--- | ||
2299 | % \begin{enumerate} | ||
2300 | % \item \cs{aoline}, which is equivalent to \cs{aemph*} described | ||
2301 | % above. | ||
2302 | % \item \cs{aoline*}, which is the same as \cs{aoline}, but better | ||
2303 | % suited for \arb[trans]{'ab^gad} numbers.\footnote{See the example | ||
2304 | % provided above \vref{sec:abjad}.} | ||
2305 | % \item \cs{auline}, which can be used to underline Arabic words. | ||
2306 | % \end{enumerate} | ||
2307 | % | ||
2164 | % \section{Arabic poetry} | 2308 | % \section{Arabic poetry} |
2165 | % \label{sec:poetry} | 2309 | % \label{sec:poetry} |
2166 | % \NEWfeature{v1.6} \package{arabluatex} provides a special | 2310 | % \newfeature[v1.6] \package{arabluatex} provides a special |
2167 | % environment for typesetting Arabic poetry. Every line in this | 2311 | % environment for typesetting Arabic poetry. Every line in this |
2168 | % environment must end with |\\|. | 2312 | % environment must end with |\\|. |
2169 | % | 2313 | % |
2170 | % \DescribeEnv{arabverse} The |arabverse| environment may take up to | 2314 | % \DescribeEnv{arabverse} The |arabverse| environment may take up to |
2171 | % six optional \enquote*{named arguments} each of which is set using | 2315 | % eight optional \enquote*{named arguments} each of which is set using |
2172 | % the syntax \meta{key}$=$\meta{value}, like so:---% | 2316 | % the syntax \meta{key}$=$\meta{value}, like so:---% |
2173 | % \iffalse | 2317 | % \iffalse |
2174 | %<*example> | 2318 | %<*example> |
2175 | % \fi | 2319 | % \fi |
2176 | \begin{code} | 2320 | \begin{alcode} |
2177 | \begin{arabverse}[key1=value1, key2=value2, ...] | 2321 | \begin{arabverse}[key1=value1, key2=value2, ...] |
2178 | <verses> | 2322 | <verses> |
2179 | \end{arabverse} | 2323 | \end{arabverse} |
2180 | \end{code} | 2324 | \end{alcode} |
2181 | % \iffalse | 2325 | % \iffalse |
2182 | %</example> | 2326 | %</example> |
2183 | % \fi | 2327 | % \fi |
@@ -2226,13 +2370,13 @@ | |||
2226 | % | 2370 | % |
2227 | % \DescribeOption{color} |color|$=$\meta{color name} | 2371 | % \DescribeOption{color} |color|$=$\meta{color name} |
2228 | % \hfill\tcboxverb{Default: not set}\\ | 2372 | % \hfill\tcboxverb{Default: not set}\\ |
2229 | % \NEWfeature{v1.13} The color in which lines of poetry are to be | 2373 | % \newfeature[v1.13] The color in which lines of poetry are to be |
2230 | % rendered. | 2374 | % rendered. |
2231 | % | 2375 | % |
2232 | % \label{ref:poetry-export} | 2376 | % \label{ref:poetry-export} |
2233 | % \DescribeOption{export} |export|$=$|true|\verb+|+|false| | 2377 | % \DescribeOption{export} |export|$=$|true|\verb+|+|false| |
2234 | % \hfill\tcboxverb{Default: false}\\ | 2378 | % \hfill\tcboxverb{Default: false}\\ |
2235 | % \NEWfeature{v.1.13} This named argument does not need a value as it | 2379 | % \newfeature[v.1.13] This named argument does not need a value as it |
2236 | % defaults to |true| if it is used. If |export| is set as a global | 2380 | % defaults to |true| if it is used. If |export| is set as a global |
2237 | % option as well (see above \vpageref{export-mode}), all the lines | 2381 | % option as well (see above \vpageref{export-mode}), all the lines |
2238 | % will be converted to Unicode and exported to the external selected | 2382 | % will be converted to Unicode and exported to the external selected |
@@ -2246,8 +2390,9 @@ | |||
2246 | % 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 |
2247 | % functions that lines of poetry have already been processed. That | 2391 | % functions that lines of poetry have already been processed. That |
2248 | % 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} |
2249 | % should be used.} Additionally, every \cs{bayt} command \emph{must} | 2393 | % should be used.} Additionally, every \cs{bayt} command \emph{must} |
2250 | % be followed with |\\| like so:---% | 2394 | % be followed with |\\| like so:--- |
2395 | % | ||
2251 | % \iffalse | 2396 | % \iffalse |
2252 | %<*example> | 2397 | %<*example> |
2253 | % \fi | 2398 | % \fi |
@@ -2350,6 +2495,20 @@ | |||
2350 | % warping may be even more perceptible in Roman than in Arabic | 2495 | % warping may be even more perceptible in Roman than in Arabic |
2351 | % characters. | 2496 | % characters. |
2352 | % | 2497 | % |
2498 | % \DescribeMacro{\StretchBayt} \cs{StretchBayt}\verb+[true|false]+ | ||
2499 | % \hfill\tcboxverb{Default: true}\\ | ||
2500 | % \newfeature[v1.20] \cs{StretchBayt} takes one optional argument, | ||
2501 | % either |true| or |false| and can be used to remove the stretching | ||
2502 | % form lines of Arabic poetry. As a side effect, there will be more | ||
2503 | % space between words, but this can be compensated by inserting double | ||
2504 | % hyphens between letters (on this technique, see | ||
2505 | % \vref{sec:tatwil}). Should it be desired to extend further the | ||
2506 | % strokes, four hyphens may be inserted (|----|), viz. a multiple of | ||
2507 | % two. \cs{StretchBayt} may be used at any point of the document, even | ||
2508 | % between two subsequent lines of poetry. Note that | ||
2509 | % \cs{StretchBayt}|[false]| may require to carefully adjust the width | ||
2510 | % of the hemistichs to avoid overlapping. | ||
2511 | % | ||
2353 | % \paragraph{Footnotes} | 2512 | % \paragraph{Footnotes} |
2354 | % Footnotes are not set by default inside the \cs{bayt} command, but | 2513 | % Footnotes are not set by default inside the \cs{bayt} command, but |
2355 | % there are two easy ways to have them printed. | 2514 | % there are two easy ways to have them printed. |
@@ -2368,6 +2527,16 @@ | |||
2368 | % 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 |
2369 | % loaded \emph{after} \package{arabluatex}.} | 2528 | % loaded \emph{after} \package{arabluatex}.} |
2370 | % | 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 | % | ||
2371 | % \paragraph{Line numbering} | 2540 | % \paragraph{Line numbering} |
2372 | % Inside the |arabverse| environment, the |linenumbers| environment of | 2541 | % Inside the |arabverse| environment, the |linenumbers| environment of |
2373 | % 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 |
@@ -2390,7 +2559,7 @@ | |||
2390 | % \iffalse | 2559 | % \iffalse |
2391 | %<*example> | 2560 | %<*example> |
2392 | % \fi | 2561 | % \fi |
2393 | \begin{code} | 2562 | \begin{alcode} |
2394 | \begin{arab}[fullvoc] | 2563 | \begin{arab}[fullvoc] |
2395 | qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: | 2564 | qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: |
2396 | \end{arab} | 2565 | \end{arab} |
@@ -2399,7 +2568,7 @@ | |||
2399 | 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}] | 2568 | 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}] |
2400 | \SetArbDflt* | 2569 | \SetArbDflt* |
2401 | \begin{linenumbers*} | 2570 | \begin{linenumbers*} |
2402 | \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 |
2403 | '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}\\ |
2404 | \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 |
2405 | rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ | 2574 | rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ |
@@ -2410,13 +2579,16 @@ | |||
2410 | \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna | 2579 | \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna |
2411 | lA tahlik 'asaN_A wa-ta^gammali}\\ | 2580 | lA tahlik 'asaN_A wa-ta^gammali}\\ |
2412 | \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda | 2581 | \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda |
2413 | rasmiN dAsiriN min mu`awwali}\\ | 2582 | rasmiN dArisiN min mu`awwali}\\ |
2414 | \end{linenumbers*} | 2583 | \end{linenumbers*} |
2415 | \end{arabverse} | 2584 | \end{arabverse} |
2416 | \end{code} | 2585 | \end{alcode} |
2417 | % \iffalse | 2586 | % \iffalse |
2418 | %</example> | 2587 | %</example> |
2419 | % \fi% | 2588 | % \fi% |
2589 | % | ||
2590 | % \medskip | ||
2591 | % \noindent\textbf{\cs{StretchBayt}|[true]| (Default)}:--- | ||
2420 | % \begin{arab}[fullvoc] | 2592 | % \begin{arab}[fullvoc] |
2421 | % qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: | 2593 | % qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: |
2422 | % \end{arab} | 2594 | % \end{arab} |
@@ -2425,19 +2597,18 @@ | |||
2425 | % '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] |
2426 | % \SetArbDflt* | 2598 | % \SetArbDflt* |
2427 | % \begin{linenumbers*} | 2599 | % \begin{linenumbers*} |
2428 | % \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 |
2429 | % '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}\\ |
2430 | % \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 |
2431 | % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ | 2603 | % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ |
2432 | % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA | 2604 | % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA |
2433 | % ka-'anna-hu .habbu fulfuli}\\ | 2605 | % ka-'anna-hu .habbu fulfuli}\\ |
2434 | % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A | 2606 | % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A |
2435 | % samurAti | 2607 | % samurAti 'l-.hayyi nAqifu .han.zali}\\ |
2436 | % 'l-.hayyi nAqifu .han.zali}\\ | ||
2437 | % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA | 2608 | % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA |
2438 | % tahlik 'asaN_A wa-ta^gammali}\\ | 2609 | % tahlik 'asaN_A wa-ta^gammali}\\ |
2439 | % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN | 2610 | % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN |
2440 | % dAsiriN min mu`awwali}\\ | 2611 | % dArisiN min mu`awwali}\\ |
2441 | % \end{linenumbers*} | 2612 | % \end{linenumbers*} |
2442 | % \end{arabverse} | 2613 | % \end{arabverse} |
2443 | % | 2614 | % |
@@ -2451,22 +2622,79 @@ | |||
2451 | % '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] |
2452 | % \SetArbDflt* | 2623 | % \SetArbDflt* |
2453 | % \begin{linenumbers*} | 2624 | % \begin{linenumbers*} |
2454 | % \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 |
2455 | % '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}\\ |
2456 | % \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 |
2457 | % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ | 2628 | % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ |
2458 | % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA | 2629 | % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA |
2459 | % ka-'anna-hu .habbu fulfuli}\\ | 2630 | % ka-'anna-hu .habbu fulfuli}\\ |
2460 | % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A | 2631 | % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A |
2461 | % samurAti | 2632 | % samurAti 'l-.hayyi nAqifu .han.zali}\\ |
2462 | % 'l-.hayyi nAqifu .han.zali}\\ | ||
2463 | % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA | 2633 | % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA |
2464 | % tahlik 'asaN_A wa-ta^gammali}\\ | 2634 | % tahlik 'asaN_A wa-ta^gammali}\\ |
2465 | % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN | 2635 | % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN |
2466 | % dAsiriN min mu`awwali}\\ | 2636 | % dArisiN min mu`awwali}\\ |
2467 | % \end{linenumbers*} | 2637 | % \end{linenumbers*} |
2468 | % \end{arabverse} | 2638 | % \end{arabverse} |
2469 | % | 2639 | % |
2640 | % \medskip | ||
2641 | % \noindent\textbf{\cs{StretchBayt}|[false]|}:--- | ||
2642 | % \StretchBayt[false]\\ | ||
2643 | % In what follows, |width| has been set to |0.3\linewidth| and double | ||
2644 | % hyphens have been inserted between some letters to prolong their | ||
2645 | % horizontal strokes. | ||
2646 | % \begin{arab}[fullvoc] | ||
2647 | % qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: | ||
2648 | % \end{arab} | ||
2649 | % | ||
2650 | % \begin{arabverse}[mode=fullvoc, metre={(al-.darbu 'l-_tAnI mina | ||
2651 | % 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.3\linewidth] | ||
2652 | % \SetArbDflt* | ||
2653 | % \begin{linenumbers*} | ||
2654 | % \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti | ||
2655 | % 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ | ||
2656 | % \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`--fu | ||
2657 | % rasmu---hA}{limA nasa^gat-hA mi--n ^gan----UbiN wa-^sam'ali}\\ | ||
2658 | % \bayt{ta--r_A ba--`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI--`Ani-hA | ||
2659 | % ka-'anna---hu .ha----bbu fu--{l}--fu----li}\\ | ||
2660 | % \bayt{ka-'annI .ga--dATa 'l-bay--ni ya--wma ta.hammalUA}{lad_A | ||
2661 | % samurAti 'l-.hayyi nAqifu .han.zali}\\ | ||
2662 | % \bayt{wuq--UfaN bi-hA .sa.hbI `a--layya ma--.tiyya---hu--m} | ||
2663 | % {ya--q--Ul--Una lA tahli--k 'asaN_A wa-ta^gamma----li}\\ | ||
2664 | % \bayt{wa-'inna ^si----f----A'I `a--{b}----raTuN muharAqa----TuN} | ||
2665 | % {fa---ha--l `inda rasmiN dArisiN min mu`awwali}\\ | ||
2666 | % \end{linenumbers*} | ||
2667 | % \end{arabverse} | ||
2668 | % | ||
2669 | % \medskip | ||
2670 | % | ||
2671 | % In what follows, |width| has been set to |0.375\linewidth| and | ||
2672 | % |\scriptsize| has been used so as to avoid overlapping. | ||
2673 | % \begin{arab}[trans] | ||
2674 | % qAla imru'u 'l-\uc{q}aysi fI mu`allaqati-hi: | ||
2675 | % \end{arab} | ||
2676 | % | ||
2677 | % \begin{arabverse}[mode=trans, metre={(al-.darbu 'l-_tAnI mina | ||
2678 | % 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.375\linewidth] | ||
2679 | % \SetArbDflt* | ||
2680 | % \scriptsize | ||
2681 | % \begin{linenumbers*} | ||
2682 | % \bayt{qifA nabki min _dikr_A .habIbiN wa-manzili}{bi-siq.ti | ||
2683 | % 'l-liw_A bayna \uc{'l-d}a_hUli fa-\uc{.h}awmali}\\ | ||
2684 | % \bayt{fa-\uc{t}U.di.ha fa-'l-\uc{m}iqrATi lam ya`fu | ||
2685 | % rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\ | ||
2686 | % \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA | ||
2687 | % ka-'anna-hu .habbu fulfuli}\\ | ||
2688 | % \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{lad_A | ||
2689 | % samurAti 'l-.hayyi nAqifu .han.zali}\\ | ||
2690 | % \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA | ||
2691 | % tahlik 'asaN_A wa-ta^gammali}\\ | ||
2692 | % \bayt{wa-'inna ^sifA'I `abraTuN muharAqaTuN}{fa-hal `inda rasmiN | ||
2693 | % dArisiN min mu`awwali}\\ | ||
2694 | % \end{linenumbers*} | ||
2695 | % \end{arabverse} | ||
2696 | % \StretchBayt[true] | ||
2697 | % | ||
2470 | % \section{Special applications} | 2698 | % \section{Special applications} |
2471 | % \label{sec:special-applications} | 2699 | % \label{sec:special-applications} |
2472 | % \phantomsection | 2700 | % \phantomsection |
@@ -2484,7 +2712,7 @@ | |||
2484 | % | 2712 | % |
2485 | % \paragraph{Brackets} | 2713 | % \paragraph{Brackets} |
2486 | % \phantomsection | 2714 | % \phantomsection |
2487 | % \NEWfeature{v1.4.3} The various bracket symbols are useful in | 2715 | % \newfeature[v1.4.3] The various bracket symbols are useful in |
2488 | % technical documents such as critical editions for indicating that | 2716 | % technical documents such as critical editions for indicating that |
2489 | % some words or some letters must be added or | 2717 | % some words or some letters must be added or |
2490 | % removed. \package{arabluatex} will automatically fit those symbols | 2718 | % removed. \package{arabluatex} will automatically fit those symbols |
@@ -2522,18 +2750,18 @@ | |||
2522 | % \arb[trans]{\uc{qur'An}} or in classical poetry. | 2750 | % \arb[trans]{\uc{qur'An}} or in classical poetry. |
2523 | % | 2751 | % |
2524 | % \DescribeMacro{\arbmark} | 2752 | % \DescribeMacro{\arbmark} |
2525 | % \NEWfeature{v1.11}\cs{arbmark}\oarg{rl\textbar{}lr}\marg{shorthand} | 2753 | % \newfeature[v1.11]\cs{arbmark}\oarg{rl\textbar{}lr}\marg{shorthand} |
2526 | % can be used to insert such characters either in Unicode or in | 2754 | % can be used to insert such characters either in Unicode or in |
2527 | % romanized Arabic environments. It takes as argument a shorthand | 2755 | % romanized Arabic environments. It takes as argument a shorthand |
2528 | % defined beforehand in a default list which consists of the following | 2756 | % defined beforehand in a default list which consists of the following |
2529 | % at the time of writing:---\\ | 2757 | % at the time of writing:--- |
2758 | % | ||
2530 | % \begin{longtable}{llp{.3\linewidth}p{.3\linewidth}} | 2759 | % \begin{longtable}{llp{.3\linewidth}p{.3\linewidth}} |
2531 | % \bottomrule | 2760 | % \bottomrule |
2532 | % \caption*{\Cref*{tab:arabtex-additional-marks}: Additional Arabic | 2761 | % \caption[]{Additional Arabic marks} |
2533 | % marks} | ||
2534 | % \endfoot | 2762 | % \endfoot |
2535 | % \captionlistentry{Additional Arabic marks}\\[-1em] | ||
2536 | % \toprule | 2763 | % \toprule |
2764 | % \captionlistentry{Additional Arabic marks} | ||
2537 | % Codepoint & Shorthand & Glyph & Transliteration \\ \midrule | 2765 | % Codepoint & Shorthand & Glyph & Transliteration \\ \midrule |
2538 | % \endfirsthead | 2766 | % \endfirsthead |
2539 | % \toprule | 2767 | % \toprule |
@@ -2546,12 +2774,12 @@ | |||
2546 | % |FDFB| & |jalla| & \arb{\arbmark{jalla}} & \arbmark{jalla} \\ | 2774 | % |FDFB| & |jalla| & \arb{\arbmark{jalla}} & \arbmark{jalla} \\ |
2547 | % \end{longtable} | 2775 | % \end{longtable} |
2548 | % | 2776 | % |
2549 | % \NEWfeature{v1.13} | 2777 | % \newfeature[v1.13] |
2550 | % The mark to be inserted is determined by contextual analysis, or by | 2778 | % The mark to be inserted is determined by contextual analysis, or by |
2551 | % an optional argument, either |rl| to have the Arabic glyph printed, | 2779 | % an optional argument, either |rl| to have the Arabic glyph printed, |
2552 | % or |lr| to print the tranliterated equivalent. | 2780 | % or |lr| to print the tranliterated equivalent. |
2553 | % | 2781 | % |
2554 | % \DescribeMacro{\newarbmark} \NEWfeature{v1.11} \cs{newarbmark} is | 2782 | % \DescribeMacro{\newarbmark} \newfeature[v1.11] \cs{newarbmark} is |
2555 | % also provided should one wish to define new marks in addition to the | 2783 | % also provided should one wish to define new marks in addition to the |
2556 | % marks defined above. This command takes three arguments, like so:--- | 2784 | % marks defined above. This command takes three arguments, like so:--- |
2557 | % \arabluabox{\cs{newarbmark}\marg{shorthand}\marg{RTL | 2785 | % \arabluabox{\cs{newarbmark}\marg{shorthand}\marg{RTL |
@@ -2615,6 +2843,44 @@ | |||
2615 | %</example> | 2843 | %</example> |
2616 | % \fi | 2844 | % \fi |
2617 | % | 2845 | % |
2846 | % \paragraph{\texorpdfstring{The \enquote*{Zero width joiner} | ||
2847 | % character (\texttt{U+200D})}% | ||
2848 | % {The ‘Zero width joiner’ character (\texttt{U+200D})}} | ||
2849 | % \phantomsection% | ||
2850 | % \newfeature[v1.18]% | ||
2851 | % The \enquote*{Zero width joiner} character (|U+200D|) belongs to the | ||
2852 | % \enquote*{General Punctuation} block (range |2000|--|206F|) of the | ||
2853 | % Unicode standard. It is a non-printing character which, when it is | ||
2854 | % placed between two characters that would for some reason not be | ||
2855 | % connected, causes them to be printed in their connected forms. | ||
2856 | % | ||
2857 | % It is encoded |&| in Arab\TeX\ scheme. | ||
2858 | % | ||
2859 | % In elegantly printed books where many of the letters are interwoven | ||
2860 | % with one another so as to form ligatures, it may be convenient to | ||
2861 | % bring the letters into line in some instances. In the following | ||
2862 | % example, the \enquote*{zero width joiner} is used to prevent two | ||
2863 | % adjacent letters, viz.\ \arb[novoc]{s} and \arb[novoc]{.h}, from | ||
2864 | % standing one above the other in the name of \prname{'is.h_aq} | ||
2865 | % (\arb[fullvoc]{'is.h_aq"}):\footnote{\cs{underLine} and | ||
2866 | % \cs{highLight} are taken from the \package{lua-ul} package which is | ||
2867 | % loaded by \package{arabluatex}. See \textcite{pkg:lua-ul}.}--- | ||
2868 | % \iffalse | ||
2869 | %<*example> | ||
2870 | % \fi | ||
2871 | \begin{example} | ||
2872 | \begin{arab}[fullvoc] | ||
2873 | huwa 'abU zaydiN .hunaynu bnu 'is&\underLine{&.h_a}qa | ||
2874 | 'l-`a\underLine{bA}diyyu bi-fat.hi 'l-`ayni wa-ta_hfIfi 'l-bA'i. | ||
2875 | |||
2876 | huwa 'abU zaydiN .hunaynu bnu 'is&\highLight{&.h_a}qa | ||
2877 | 'l-`a\highLight{bA}diyyu bi-fat.hi 'l-`ayni wa-ta_hfIfi 'l-bA'i. | ||
2878 | \end{arab} | ||
2879 | \end{example} | ||
2880 | % \iffalse | ||
2881 | %</example> | ||
2882 | % \fi | ||
2883 | % | ||
2618 | % \subsection{\texorpdfstring{The \prname{qur'An}}{The Qurʾān}} | 2884 | % \subsection{\texorpdfstring{The \prname{qur'An}}{The Qurʾān}} |
2619 | % \label{sec:the-quran} | 2885 | % \label{sec:the-quran} |
2620 | % This sub-part is destined to become a part of its own, as fine | 2886 | % This sub-part is destined to become a part of its own, as fine |
@@ -2623,7 +2889,7 @@ | |||
2623 | % new Arabic modes will be available as \package{arabluatex} will | 2889 | % new Arabic modes will be available as \package{arabluatex} will |
2624 | % mature. | 2890 | % mature. |
2625 | % | 2891 | % |
2626 | % \DescribeMacro{\ayah}\NEWfeature{v1.15}For the time being, | 2892 | % \DescribeMacro{\ayah}\newfeature[v1.15]For the time being, |
2627 | % \cs{ayah}\marg{3-digit number} is provided so as to typeset the | 2893 | % \cs{ayah}\marg{3-digit number} is provided so as to typeset the |
2628 | % number of the \arb[trans]{'AyaT} that it is referred to inside the | 2894 | % number of the \arb[trans]{'AyaT} that it is referred to inside the |
2629 | % dedicated mark---Unicode |U+06DD|: \txarb{^^^^06dd}---in Arabic | 2895 | % dedicated mark---Unicode |U+06DD|: \txarb{^^^^06dd}---in Arabic |
@@ -2679,7 +2945,7 @@ | |||
2679 | % | 2945 | % |
2680 | % \section{Color} | 2946 | % \section{Color} |
2681 | % \label{sec:color} | 2947 | % \label{sec:color} |
2682 | % \NEWfeature{v1.12}\package{arabluatex} is able to render in color | 2948 | % \newfeature[v1.12]\package{arabluatex} is able to render in color |
2683 | % either words, parts of words or diacritics. As the techniques | 2949 | % either words, parts of words or diacritics. As the techniques |
2684 | % implemented in this section may lead to some complexity, the reader | 2950 | % implemented in this section may lead to some complexity, the reader |
2685 | % should first become well acquainted with the following | 2951 | % should first become well acquainted with the following |
@@ -2730,6 +2996,7 @@ | |||
2730 | % shape of the letters while coloring them:--- | 2996 | % shape of the letters while coloring them:--- |
2731 | % \begin{quote}\textbf{\enquote*{voc} mode}:\\ | 2997 | % \begin{quote}\textbf{\enquote*{voc} mode}:\\ |
2732 | % |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| | 2998 | % |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| |
2999 | % \\ | ||
2733 | % |'a`\arbcolor[blue]{^ga}ba-ka| | 3000 | % |'a`\arbcolor[blue]{^ga}ba-ka| |
2734 | % \arb{i^stara\arbcolor[brown]{y}tu-hu bi-_tama\arbcolor[red]{niN} | 3001 | % \arb{i^stara\arbcolor[brown]{y}tu-hu bi-_tama\arbcolor[red]{niN} |
2735 | % 'a`\arbcolor[blue]{^ga}ba-ka} | 3002 | % 'a`\arbcolor[blue]{^ga}ba-ka} |
@@ -2738,6 +3005,7 @@ | |||
2738 | % \end{quote} | 3005 | % \end{quote} |
2739 | % \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ | 3006 | % \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ |
2740 | % |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| | 3007 | % |i^stara\arbcolor[brown]{y}tu-hu| |bi-_tama\arbcolor[red]{niN}| |
3008 | % \\ | ||
2741 | % |'a`\arbcolor[blue]{^ga}ba-ka| | 3009 | % |'a`\arbcolor[blue]{^ga}ba-ka| |
2742 | % \arb[fullvoc]{i^stara\arbcolor[brown]{y}tu-hu | 3010 | % \arb[fullvoc]{i^stara\arbcolor[brown]{y}tu-hu |
2743 | % bi-_tama\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka} | 3011 | % bi-_tama\arbcolor[red]{niN} 'a`\arbcolor[blue]{^ga}ba-ka} |
@@ -2760,29 +3028,26 @@ | |||
2760 | % applying colors to bare diacritics requires them to have specific | 3028 | % applying colors to bare diacritics requires them to have specific |
2761 | % encodings. | 3029 | % encodings. |
2762 | % | 3030 | % |
2763 | % \Cref{tab:arbcolor-diacritics} gives the Arab\TeX\ equivalents for | 3031 | % \Vref{tab:arbcolor-diacritics} gives the Arab\TeX\ equivalents for |
2764 | % the diacritics to be printed inside or just after \cs{arbcolor}. | 3032 | % the diacritics to be printed inside or just after \cs{arbcolor}. |
2765 | % | 3033 | % |
2766 | % \needspace{7\baselineskip} | ||
2767 | % \begin{longtable}{lllll} | 3034 | % \begin{longtable}{lllll} |
2768 | % \bottomrule | 3035 | % \bottomrule |
2769 | % \caption*{\Cref*{tab:arbcolor-diacritics}: Arab\TeX\ diacritics | 3036 | % \caption[]{Arab\TeX\ diacritics for \cs{arbcolor}} |
2770 | % for \cs{arbcolor}} | ||
2771 | % \endfoot | 3037 | % \endfoot |
2772 | % \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}}\\[-1em] | ||
2773 | % \toprule | 3038 | % \toprule |
3039 | % \captionlistentry{Arab\TeX\ diacritics for \cs{arbcolor}} | ||
2774 | % Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark} | 3040 | % Diacritic & \multicolumn{3}{l}{Transliteration\footnotemark} |
2775 | % & Arab\TeX\ notation \\ | 3041 | % & Arab\TeX\ notation \\ |
2776 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 3042 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
2777 | % \endfirsthead | 3043 | % \endfirsthead |
2778 | % \toprule | 3044 | % \toprule |
2779 | % Diacritic & \multicolumn{3}{l}{Transliteration} | 3045 | % Diacritic & \multicolumn{3}{l}{Transliteration} |
2780 | % & Arab\TeX\ notation \\ | 3046 | % & Arab\TeX\ notation \\ |
2781 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule | 3047 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & \\ \midrule |
2782 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} | 3048 | % \endhead \footnotetext{See below \vref{sec:transliteration}.} |
2783 | % \label{tab:arbcolor-diacritics} | 3049 | % \label{tab:arbcolor-diacritics} |
2784 | % \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\ | 3050 | % \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\ |
2785 | % \pagebreak[1] | ||
2786 | % \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\ | 3051 | % \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\ |
2787 | % \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule | 3052 | % \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule |
2788 | % \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\ | 3053 | % \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\ |
@@ -2807,7 +3072,7 @@ | |||
2807 | % 'a`\arbcolor[red]{^g}.aba-ka}. | 3072 | % 'a`\arbcolor[red]{^g}.aba-ka}. |
2808 | % | 3073 | % |
2809 | % |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}| | 3074 | % |i^staraytu-hu| |bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN}| |
2810 | % \allowbreak | 3075 | % \\ |
2811 | % |'a`\arbcolor[red]|\allowbreak|{^g}\arbcolor[blue]{.a}ba-ka| | 3076 | % |'a`\arbcolor[red]|\allowbreak|{^g}\arbcolor[blue]{.a}ba-ka| |
2812 | % \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN} | 3077 | % \arb{i^staraytu-hu bi-_tama\arbcolor[red]{n}\arbcolor[blue]{iN} |
2813 | % 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka} \linebreak | 3078 | % 'a`\arbcolor[red]{^g}\arbcolor[blue]{.a}ba-ka} \linebreak |
@@ -2818,14 +3083,15 @@ | |||
2818 | % | 3083 | % |
2819 | % \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ | 3084 | % \begin{quote}\textbf{\enquote*{fullvoc} mode}:\\ |
2820 | % |i^staray"\arbcolor[red]{o}tu-hu| |bi-_taman"\arbcolor[red]{iN}| | 3085 | % |i^staray"\arbcolor[red]{o}tu-hu| |bi-_taman"\arbcolor[red]{iN}| |
3086 | % \\ | ||
2821 | % |'a`^g"\arbcolor[red]{.a}ba-ka| | 3087 | % |'a`^g"\arbcolor[red]{.a}ba-ka| |
2822 | % \arb[fullvoc]{i^staray"\arbcolor[red]{o}tu-hu | 3088 | % \arb[fullvoc]{i^staray"\arbcolor[red]{o}tu-hu |
2823 | % bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka} | 3089 | % bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka} |
2824 | % \arb[trans]{i^staray"\arbcolor[red]{o}tu-hu | 3090 | % \arb[trans]{i^staray"\arbcolor[red]{o}tu-hu |
2825 | % bi-_taman"\arbcolor[red]{iN} | 3091 | % bi-_taman"\arbcolor[red]{iN} 'a`^g"\arbcolor[red]{.a}ba-ka}. |
2826 | % \linebreak 'a`^g"\arbcolor[red]{.a}ba-ka}. | ||
2827 | % | 3092 | % |
2828 | % |i^stara\arbcolor[red]{y"}otu-hu| |bi-_tama\arbcolor[red]{n"}iN| | 3093 | % |i^stara\arbcolor[red]{y"}otu-hu| |bi-_tama\arbcolor[red]{n"}iN| |
3094 | % \\ | ||
2829 | % |'a`\arbcolor[red]|\allowbreak|{^g"}.aba-ka| | 3095 | % |'a`\arbcolor[red]|\allowbreak|{^g"}.aba-ka| |
2830 | % \arb[fullvoc]{i^stara\arbcolor[red]{y"}otu-hu | 3096 | % \arb[fullvoc]{i^stara\arbcolor[red]{y"}otu-hu |
2831 | % bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka} | 3097 | % bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka} |
@@ -2833,8 +3099,9 @@ | |||
2833 | % bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}. | 3099 | % bi-_tama\arbcolor[red]{n"}iN 'a`\arbcolor[red]{^g"}.aba-ka}. |
2834 | % | 3100 | % |
2835 | % |i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu| | 3101 | % |i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu| |
3102 | % \\ | ||
2836 | % |bi-_tama\arb|\allowbreak|color[red]{n"}\arbcolor[blue]{iN}| | 3103 | % |bi-_tama\arb|\allowbreak|color[red]{n"}\arbcolor[blue]{iN}| |
2837 | % |'a`\arbcolor[red]|\allowbreak|{^g"}\arb|\allowbreak% | 3104 | % |'a`\arbcolor[red]|\\|{^g"}\arb| |
2838 | % |color[blue]{.a}ba-ka| | 3105 | % |color[blue]{.a}ba-ka| |
2839 | % \arb[fullvoc]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu | 3106 | % \arb[fullvoc]{i^stara\arbcolor[red]{y"}\arbcolor[blue]{o}tu-hu |
2840 | % bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN} | 3107 | % bi-_tama\arbcolor[red]{n"}\arbcolor[blue]{iN} |
@@ -2866,8 +3133,8 @@ | |||
2866 | % \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}} | 3133 | % \arb{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}} |
2867 | % \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}. | 3134 | % \arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}. |
2868 | % \end{quote} | 3135 | % \end{quote} |
2869 | % \begin{quoting} | 3136 | % \begin{remarks} |
2870 | % \textsc{Rem.} Note that in the last example | 3137 | % \item[\textsc{Rem.}] Note that in the last example |
2871 | % (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the | 3138 | % (\arb[trans]{^gAmi`aT|\arbcolor[red]{\arbnull{T}aN}}), the |
2872 | % \enquote*{pipe} character has been inserted before | 3139 | % \enquote*{pipe} character has been inserted before |
2873 | % \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration | 3140 | % \cs{arbcolor}. Otherwise, the |dmg| mode of the transliteration |
@@ -2876,7 +3143,7 @@ | |||
2876 | % \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe} | 3143 | % \txtrans{t}).\footnote{See also \vpageref{ref:ta-marbutah-pipe} |
2877 | % \enquote{Discarding the \arb[trans]{'i`rAb}} for more | 3144 | % \enquote{Discarding the \arb[trans]{'i`rAb}} for more |
2878 | % information.} | 3145 | % information.} |
2879 | % \end{quoting} | 3146 | % \end{remarks} |
2880 | % | 3147 | % |
2881 | % The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even | 3148 | % The \arb[trans]{tanwIn} preceding a \arb[novoc]{_A} conveys even |
2882 | % more intricate business to the rendering with the utmost accuracy in | 3149 | % more intricate business to the rendering with the utmost accuracy in |
@@ -2906,9 +3173,8 @@ | |||
2906 | % the knowledge of the writer, the \arb[trans]{wa.slaT} alone is not | 3173 | % the knowledge of the writer, the \arb[trans]{wa.slaT} alone is not |
2907 | % part of the Arabic Unicode block.}. | 3174 | % part of the Arabic Unicode block.}. |
2908 | % | 3175 | % |
2909 | % |fI| |"al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i| | 3176 | % |fI| |"al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i|\\ |
2910 | % \arb[fullvoc]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i} | 3177 | % \arb[fullvoc]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i} |
2911 | % \linebreak | ||
2912 | % \arb[trans]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i}. | 3178 | % \arb[trans]{fI "al".i-\arbcolor[red]{\arbnull{'l-}i}btidA'i}. |
2913 | % | 3179 | % |
2914 | % |\arbcolor[red]{'a'\arbnull{k}}kulu| | 3180 | % |\arbcolor[red]{'a'\arbnull{k}}kulu| |
@@ -2934,10 +3200,10 @@ | |||
2934 | %</example> | 3200 | %</example> |
2935 | % \fi% | 3201 | % \fi% |
2936 | % | 3202 | % |
2937 | % \begin{quoting} | 3203 | % \begin{remarks} |
2938 | % \textsc{Rem.} In the preceding example, any consonant could have | 3204 | % \item[\textsc{Rem.}] In the preceding example, any consonant could |
2939 | % been passed as argument to the \cs{arbnull} command. | 3205 | % have been passed as argument to the \cs{arbnull} command. |
2940 | % \end{quoting} | 3206 | % \end{remarks} |
2941 | % | 3207 | % |
2942 | % \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}} | 3208 | % \paragraph{\texorpdfstring{\arb[trans]{^sad\-daT}}{šaddah}} |
2943 | % In the following example, it is assumed that the | 3209 | % In the following example, it is assumed that the |
@@ -2991,18 +3257,19 @@ | |||
2991 | % \paragraph{\texorpdfstring{\arb[trans]{hamzaT}}{hamzah}} | 3257 | % \paragraph{\texorpdfstring{\arb[trans]{hamzaT}}{hamzah}} |
2992 | % The \enquote*{quoting} technique provides an easy way to determine | 3258 | % The \enquote*{quoting} technique provides an easy way to determine |
2993 | % the carrier of the \arb[trans]{hamzaT}, as shown in | 3259 | % the carrier of the \arb[trans]{hamzaT}, as shown in |
2994 | % \vref{tab:quoted-hamza}---: | 3260 | % \vref{tab:quoted-hamza}:--- |
2995 | % \begin{quote} | 3261 | % \begin{quote} |
2996 | % \verb+yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna+ | 3262 | % \verb+yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna+ |
2997 | % \arb{yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna} | 3263 | % \arb{yatasA\arbnull{'a}\arbcolor[red]{|"'}.alUna} |
2998 | % \arb[trans]{yatasA\arbnull{'a}\-\arbcolor[red]{|"'}.a\-lUna}, | 3264 | % \arb[trans]{yatasA\arbnull{'a}\-\arbcolor[red]{|"'}.a\-lUna}, |
3265 | % \\ | ||
2999 | % \verb+^say\arbcolor[red]{|"'}\arbnull{'}aN+ | 3266 | % \verb+^say\arbcolor[red]{|"'}\arbnull{'}aN+ |
3000 | % \arb{^say\arbcolor[red]{|"'}\arbnull{'}aN} | 3267 | % \arb{^say\arbcolor[red]{|"'}\arbnull{'}aN} |
3001 | % \arb[trans]{^say\arbcolor[red]{|"'}\arbnull{'}aN}, | 3268 | % \arb[trans]{^say\arbcolor[red]{|"'}\arbnull{'}aN}, |
3002 | % \verb+^say\ar+\allowbreak\verb+bcolor[red]{|"'}iN+ | 3269 | % \verb+^say\arbcolor[red]+\\\verb+{|"'}iN+ |
3003 | % \arb{^say\arbcolor[red]{|"'}iN} | 3270 | % \arb{^say\arbcolor[red]{|"'}iN} |
3004 | % \arb[trans]{^say\arbcolor[red]{|"'}iN}, | 3271 | % \arb[trans]{^say\arbcolor[red]{|"'}iN}, |
3005 | % |\arbcolor[red]{a"'}.as\arbcolor|\allowbreak|[red]{y"'}.ilaTuN| | 3272 | % |\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN| |
3006 | % \arb{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN} | 3273 | % \arb{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN} |
3007 | % \arb[trans]{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}. | 3274 | % \arb[trans]{\arbcolor[red]{a"'}.as\arbcolor[red]{y"'}.ilaTuN}. |
3008 | % \end{quote} | 3275 | % \end{quote} |
@@ -3012,7 +3279,7 @@ | |||
3012 | % \label{sec:transliteration} | 3279 | % \label{sec:transliteration} |
3013 | % It may be more appropriate to speak of \enquote{romanization} than | 3280 | % It may be more appropriate to speak of \enquote{romanization} than |
3014 | % \enquote{transliteration} of Arabic. As seen above in | 3281 | % \enquote{transliteration} of Arabic. As seen above in |
3015 | % \cref{sec:options} \vpagerefrange{sec:options}{sec:local-options}, | 3282 | % \vref{sec:options} \vpagerefrange{sec:options}{sec:local-options}, |
3016 | % the \enquote{transliteration mode} may be selected globally or locally. | 3283 | % the \enquote{transliteration mode} may be selected globally or locally. |
3017 | % | 3284 | % |
3018 | % This mode transliterates the Arab\TeX\ input into one of the | 3285 | % This mode transliterates the Arab\TeX\ input into one of the |
@@ -3023,6 +3290,9 @@ | |||
3023 | % adopted by the International Convention of Orientalist Scholars in | 3290 | % adopted by the International Convention of Orientalist Scholars in |
3024 | % Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration | 3291 | % Rome in 1935.\footnote{See \textcite{dmg}.} |dmg| transliteration |
3025 | % 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}. | ||
3026 | % \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 |
3027 | % large set of standards for romanization of non-roman scripts | 3297 | % large set of standards for romanization of non-roman scripts |
3028 | % adopted by the American Library Association and the Library of | 3298 | % adopted by the American Library Association and the Library of |
@@ -3030,7 +3300,7 @@ | |||
3030 | % \url{http://www.loc.gov/catdir/cpso/roman.html} for the | 3300 | % \url{http://www.loc.gov/catdir/cpso/roman.html} for the |
3031 | % \href{http://www.loc.gov/catdir/cpso/romanization/arabic.pdf}{source | 3301 | % \href{http://www.loc.gov/catdir/cpso/romanization/arabic.pdf}{source |
3032 | % document concerning Arabic language}.} | 3302 | % document concerning Arabic language}.} |
3033 | % \item[arabica] \NEWfeature{v1.8} | 3303 | % \item[arabica] \newfeature[v1.8] |
3034 | % \changes{v1.8}{2017/03/30}{\texttt{arabica} transliteration | 3304 | % \changes{v1.8}{2017/03/30}{\texttt{arabica} transliteration |
3035 | % standard is now supported} \emph{Journal of Arabic and Islamic | 3305 | % standard is now supported} \emph{Journal of Arabic and Islamic |
3036 | % Studies}/\emph{Revue d'études arabes et islamiques}: this standard | 3306 | % Studies}/\emph{Revue d'études arabes et islamiques}: this standard |
@@ -3045,16 +3315,16 @@ | |||
3045 | % transliteration mode, which is set to |dmg| by default, may be | 3315 | % transliteration mode, which is set to |dmg| by default, may be |
3046 | % changed at any point of the document by the | 3316 | % changed at any point of the document by the |
3047 | % \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode} | 3317 | % \cs{SetTranslitConvention}\marg{mode} command , where \meta{mode} |
3048 | % may be either |dmg|, |loc| or |arabica|. This command is also | 3318 | % may be either |dmg|, |dmg+|, |loc| or |arabica|. This command is also |
3049 | % accepted in the preamble should one wish to set the transliteration | 3319 | % accepted in the preamble should one wish to set the transliteration |
3050 | % mode globally, e.g.:---% | 3320 | % mode globally, e.g.:---% |
3051 | % \iffalse | 3321 | % \iffalse |
3052 | %<*example> | 3322 | %<*example> |
3053 | % \fi | 3323 | % \fi |
3054 | \begin{code} | 3324 | \begin{alcode} |
3055 | \usepackage{arabluatex} | 3325 | \usepackage{arabluatex} |
3056 | \SetTranslitConvention{loc} | 3326 | \SetTranslitConvention{loc} |
3057 | \end{code} | 3327 | \end{alcode} |
3058 | % \iffalse | 3328 | % \iffalse |
3059 | %</example> | 3329 | %</example> |
3060 | % \fi | 3330 | % \fi |
@@ -3066,7 +3336,7 @@ | |||
3066 | % command, where \meta{style} may be any font shape selection | 3336 | % command, where \meta{style} may be any font shape selection |
3067 | % command, e.g. \cs{upshape}, \cs{itshape}, \cs{slshape}, and so forth. | 3337 | % command, e.g. \cs{upshape}, \cs{itshape}, \cs{slshape}, and so forth. |
3068 | % | 3338 | % |
3069 | % \paragraph{Font} \NEWfeature{v1.4} \DescribeMacro{\SetTranslitFont} | 3339 | % \paragraph{Font} \newfeature[v1.4] \DescribeMacro{\SetTranslitFont} |
3070 | % \cs{SetTranslitFont}\marg{font selection command} allows any | 3340 | % \cs{SetTranslitFont}\marg{font selection command} allows any |
3071 | % specific font to be selected for rendering transliterated text with | 3341 | % specific font to be selected for rendering transliterated text with |
3072 | % the font-selecting commands of the \package{fontspec} or | 3342 | % the font-selecting commands of the \package{fontspec} or |
@@ -3076,10 +3346,10 @@ | |||
3076 | % \iffalse | 3346 | % \iffalse |
3077 | %<*example> | 3347 | %<*example> |
3078 | % \fi | 3348 | % \fi |
3079 | \begin{code} | 3349 | \begin{alcode} |
3080 | \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX] | 3350 | \newfontfamily\translitfont{Gentium Plus}[Ligatures=TeX] |
3081 | \SetTranslitFont{\translitfont} | 3351 | \SetTranslitFont{\translitfont} |
3082 | \end{code} | 3352 | \end{alcode} |
3083 | % \iffalse | 3353 | % \iffalse |
3084 | %</example> | 3354 | %</example> |
3085 | % \fi | 3355 | % \fi |
@@ -3138,7 +3408,7 @@ | |||
3138 | % | 3408 | % |
3139 | % \paragraph{\texorpdfstring{\enquote*{Long} pro\-per | 3409 | % \paragraph{\texorpdfstring{\enquote*{Long} pro\-per |
3140 | % names}{‘Long’ proper names}} | 3410 | % names}{‘Long’ proper names}} |
3141 | % \NEWfeature{v1.10} \cs{uc} is also able to process proper names | 3411 | % \newfeature[v1.10] \cs{uc} is also able to process proper names |
3142 | % consisting of several subsequent words:--- | 3412 | % consisting of several subsequent words:--- |
3143 | % \begin{quote} | 3413 | % \begin{quote} |
3144 | % |\arb[trans]{\uc{'abU| |zaydiN| |.hunaynu| |bnu| |'is.h_aqa| | 3414 | % |\arb[trans]{\uc{'abU| |zaydiN| |.hunaynu| |bnu| |'is.h_aqa| |
@@ -3148,7 +3418,7 @@ | |||
3148 | % | 3418 | % |
3149 | % \paragraph{Proper names outside Arabic environments} | 3419 | % \paragraph{Proper names outside Arabic environments} |
3150 | % \changes{v1.10}{2018/01/03}{\cs{uc} supersedes \cs{cap}} | 3420 | % \changes{v1.10}{2018/01/03}{\cs{uc} supersedes \cs{cap}} |
3151 | % \DescribeMacro{\prname}\NEWfeature{v1.10} Transliterated proper | 3421 | % \DescribeMacro{\prname}\newfeature[v1.10] Transliterated proper |
3152 | % names inserted in paragraphs of English text should be printed in | 3422 | % names inserted in paragraphs of English text should be printed in |
3153 | % the same typeface as the surrounding text. \cs{prname}\marg{Arabic | 3423 | % the same typeface as the surrounding text. \cs{prname}\marg{Arabic |
3154 | % proper name} is provided to that effect:\footnote{Just as \cs{uc}, | 3424 | % proper name} is provided to that effect:\footnote{Just as \cs{uc}, |
@@ -3192,18 +3462,19 @@ | |||
3192 | %</example> | 3462 | %</example> |
3193 | % \fi | 3463 | % \fi |
3194 | % | 3464 | % |
3195 | % \begin{quoting}\label{ref:prname-star} | 3465 | % \begin{remarks} |
3196 | % \textsc{Rem.} \DescribeMacro{\prname*} \package{arabluatex} also | 3466 | % \item[\textsc{Rem.}] \label{ref:prname-star} |
3197 | % provides \cs{prname*} which only renders in upright roman style | 3467 | % \DescribeMacro{\prname*} \package{arabluatex} also provides |
3198 | % 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 | ||
3199 | % processing. It is mostly used internally and applied to proper | 3470 | % processing. It is mostly used internally and applied to proper |
3200 | % names exported in Unicode to an external selected | 3471 | % names exported in Unicode to an external selected |
3201 | % file.\footnote{See below \vref{sec:arabtex2utf} for more details.} | 3472 | % file.\footnote{See below \vref{sec:arabtex2utf} for more details.} |
3202 | % \end{quoting} | 3473 | % \end{remarks} |
3203 | % | 3474 | % |
3204 | % \subsection{Additional note on \texttt{dmg} convention} | 3475 | % \subsection{Additional note on \texttt{dmg} convention} |
3205 | % \label{sec:additional-note-dmg} | 3476 | % \label{sec:additional-note-dmg} |
3206 | % \NEWfeature{v1.3} According to \textcite[6]{dmg}, Arabic | 3477 | % \newfeature[v1.3] According to \textcite[6]{dmg}, Arabic |
3207 | % \arb[trans]{'i`rAb} may be rendered into |dmg| in three different | 3478 | % \arb[trans]{'i`rAb} may be rendered into |dmg| in three different |
3208 | % ways: | 3479 | % ways: |
3209 | % \begin{enumerate} | 3480 | % \begin{enumerate} |
@@ -3270,29 +3541,29 @@ | |||
3270 | % \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}. | 3541 | % \arb[voc]{al-.zulm-Atu} \arb[trans]{al-.zulm-Atu}. |
3271 | % \end{quote} | 3542 | % \end{quote} |
3272 | % | 3543 | % |
3273 | % \begin{quoting} | 3544 | % \begin{remarks} |
3274 | % \textsc{Rem.}~\emph{a.} As the \arb[trans]{tanwIn} is passed over | 3545 | % \item As the \arb[trans]{tanwIn} is passed over in pronunciation |
3275 | % in pronunciation when it is followed by the letters | 3546 | % when it is followed by the letters \arb[novoc]{r}, \arb[novoc]{l}, |
3276 | % \arb[novoc]{r}, \arb[novoc]{l}, \arb[novoc]{m}, \arb[novoc]{w}, | 3547 | % \arb[novoc]{m}, \arb[novoc]{w}, \arb[novoc]{y} (see |
3277 | % \arb[novoc]{y} (see \vref{ref:assimilation}), it may be desirable | 3548 | % \vref{ref:assimilation}), it may be desirable to further |
3278 | % 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 |
3279 | % do the same for \arb[trans]{.gayr mun.sarif} terminations. This | 3550 | % same for \arb[trans]{.gayr mun.sarif} terminations. This can be |
3280 | % can be achieved by simply omitting the hyphen before any | 3551 | % achieved by simply omitting the hyphen before any |
3281 | % \arb[trans]{.gayr mun.sarif} termination:---\\ | 3552 | % \arb[trans]{.gayr mun.sarif} termination:---\\ |
3282 | % |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN| | 3553 | % |kAna| |.ganiyyaN| |l_akinna-hu| |labisa| |^gubbaTaN| |mumazzaqaN| |
3283 | % |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN | 3554 | % |'aydu-hA| \arb[voc]{kAna .ganiyyaN l_akinna-hu labisa ^gubbaTaN |
3284 | % mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa | 3555 | % mumazzaqaN 'aydu-hA} \arb[trans]{kAna .ganiyyaN l_akinna-hu labisa |
3285 | % ^gubbaTaN mumazzaqaN 'aydu-hA}. | 3556 | % ^gubbaTaN mumazzaqaN 'aydu-hA}. |
3286 | % | 3557 | % |
3287 | % \textsc{Rem.}~\emph{b.} Although the hyphen before the | 3558 | % \item Although the hyphen before the \arb[trans]{tanwIn} is optional |
3288 | % \arb[trans]{tanwIn} is optional as \package{arabluatex} always | 3559 | % as \package{arabluatex} always parses nouns with such termination, |
3289 | % parses nouns with such termination, it may also be used to mark | 3560 | % it may also be used to mark |
3290 | % better the inflectional endings:---\\ | 3561 | % better the inflectional endings:---\\ |
3291 | % |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| |
3292 | % |'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 |
3293 | % 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 |
3294 | % '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}. |
3295 | % \end{quoting} | 3566 | % \end{remarks} |
3296 | % | 3567 | % |
3297 | % \paragraph{\texorpdfstring{Discar\-ding the | 3568 | % \paragraph{\texorpdfstring{Discar\-ding the |
3298 | % \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}} | 3569 | % \arb[trans]{'i`rAb}}{Discarding the ʾiʿrāb}} |
@@ -3310,17 +3581,17 @@ | |||
3310 | % 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}}, |
3311 | % |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}. |
3312 | % \end{enumerate} | 3583 | % \end{enumerate} |
3313 | % \begin{quoting} | 3584 | % \begin{remarks} |
3314 | % \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 |
3315 | % before the annexed word, that \package{arabluatex} be unable to | 3586 | % article before the annexed word, that \package{arabluatex} be |
3316 | % determine which of the above two cases the word ending with | 3587 | % unable to determine which of the above two cases the word ending |
3317 | % \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe} | 3588 | % with \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe} |
3318 | % 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 |
3319 | % indicate that what follows is in the construct state: | 3590 | % indicate that what follows is in the construct state: |
3320 | % |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub| | 3591 | % |\uc{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub| |
3321 | % |\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 |
3322 | % kutub \uc{^g}AlInUs}. | 3593 | % \uc{^g}AlInUs}. |
3323 | % \end{quoting} | 3594 | % \end{remarks} |
3324 | % | 3595 | % |
3325 | % | 3596 | % |
3326 | % \paragraph{Uncertain short vowels} | 3597 | % \paragraph{Uncertain short vowels} |
@@ -3337,9 +3608,9 @@ | |||
3337 | % \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 |
3338 | % wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:--- | 3609 | % wa-.himAru-hu}}). See the code \vpageref{ref:juha-code}:--- |
3339 | % | 3610 | % |
3340 | % \SetTranslitConvention{dmg} | 3611 | % \SetTranslitConvention{dmg+} |
3341 | % \begin{arab}[trans] | 3612 | % \begin{arab}[trans] |
3342 | % \LR{\textbf{\emph{\enquote*{dmg}} standard:}} 'at_A .sadIquN 'il_A | 3613 | % \LR{\textbf{\emph{\enquote*{dmg+}} standard:}} 'at_A .sadIquN 'il_A |
3343 | % \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 |
3344 | % 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 |
3345 | % '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}: |
@@ -3366,7 +3637,7 @@ | |||
3366 | % \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 |
3367 | % wa-tuka_d_diba-nI?} | 3638 | % wa-tuka_d_diba-nI?} |
3368 | % \end{arab} | 3639 | % \end{arab} |
3369 | % \SetTranslitConvention{dmg} | 3640 | % \SetTranslitConvention{dmg+} |
3370 | % | 3641 | % |
3371 | % \SetTranslitConvention{arabica} | 3642 | % \SetTranslitConvention{arabica} |
3372 | % \begin{arab}[trans] | 3643 | % \begin{arab}[trans] |
@@ -3382,11 +3653,11 @@ | |||
3382 | % \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 |
3383 | % 'l-.himAr-a wa-tuka_d_diba-nI?} | 3654 | % 'l-.himAr-a wa-tuka_d_diba-nI?} |
3384 | % \end{arab} | 3655 | % \end{arab} |
3385 | % \SetTranslitConvention{dmg} | 3656 | % \SetTranslitConvention{dmg+} |
3386 | % | 3657 | % |
3387 | % \section{Buckwalter input scheme} | 3658 | % \section{Buckwalter input scheme} |
3388 | % \label{sec:buckwalter-scheme} | 3659 | % \label{sec:buckwalter-scheme} |
3389 | % \NEWfeature{v1.4} Even though \package{arabluatex} is primarily | 3660 | % \newfeature[v1.4] Even though \package{arabluatex} is primarily |
3390 | % designed to process the Arab\TeX\ notation, it can also process the | 3661 | % designed to process the Arab\TeX\ notation, it can also process the |
3391 | % Buckwalter input scheme to a large extent.\footnote{See | 3662 | % Buckwalter input scheme to a large extent.\footnote{See |
3392 | % \url{http://www.qamus.org/transliteration.htm}} The Buckwalter | 3663 | % \url{http://www.qamus.org/transliteration.htm}} The Buckwalter |
@@ -3406,10 +3677,10 @@ | |||
3406 | % \iffalse | 3677 | % \iffalse |
3407 | %<*example> | 3678 | %<*example> |
3408 | % \fi | 3679 | % \fi |
3409 | \begin{code} | 3680 | \begin{alcode} |
3410 | \usepackage{arabluatex} | 3681 | \usepackage{arabluatex} |
3411 | \SetInputScheme{buckwalter} | 3682 | \SetInputScheme{buckwalter} |
3412 | \end{code} | 3683 | \end{alcode} |
3413 | % \iffalse | 3684 | % \iffalse |
3414 | %</example> | 3685 | %</example> |
3415 | % \fi | 3686 | % \fi |
@@ -3429,32 +3700,30 @@ | |||
3429 | % It is therefore recommended to use the Buckwalter \enquote*{safe} | 3700 | % It is therefore recommended to use the Buckwalter \enquote*{safe} |
3430 | % scheme. | 3701 | % scheme. |
3431 | % | 3702 | % |
3432 | % \Cref{tab:buckwalter-scheme} gives the Buckwalter equivalents that | 3703 | % \Vref{tab:buckwalter-scheme} gives the Buckwalter equivalents that |
3433 | % are currently used by \package{arabluatex}. The additional | 3704 | % are currently used by \package{arabluatex}. The additional |
3434 | % characters that are defined in \vref{tab:additional-arabic-codings} | 3705 | % characters that are defined in \vref{tab:additional-arabic-codings} |
3435 | % are also available. | 3706 | % are also available. |
3436 | % | 3707 | % |
3437 | % \enlargethispage{\baselineskip} | ||
3438 | % \begin{longtable}{llllll} | 3708 | % \begin{longtable}{llllll} |
3439 | % \bottomrule | 3709 | % \bottomrule |
3440 | % \caption*{\Cref*{tab:buckwalter-scheme}: Buckwalter scheme} | 3710 | % \caption[]{Buckwalter input scheme} |
3441 | % \endfoot | 3711 | % \endfoot |
3442 | % \captionlistentry{Buckwalter scheme}\\[-1em] | ||
3443 | % \toprule | 3712 | % \toprule |
3713 | % \captionlistentry{Buckwalter input scheme} | ||
3444 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} | 3714 | % Letter & \multicolumn{3}{l}{Transliteration\footnotemark} |
3445 | % & \multicolumn{2}{l}{Buckwalter notation} \\ | 3715 | % & \multicolumn{2}{l}{Buckwalter notation} \\ |
3446 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & | 3716 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| & |
3447 | % |safe| \\ \midrule | 3717 | % |safe| \\ \midrule |
3448 | % \endfirsthead | 3718 | % \endfirsthead |
3449 | % \toprule | 3719 | % \toprule |
3450 | % Letter & \multicolumn{3}{l}{Transliteration} | 3720 | % Letter & \multicolumn{3}{l}{Transliteration} |
3451 | % & \multicolumn{2}{l}{Buckwalter notation} \\ | 3721 | % & \multicolumn{2}{l}{Buckwalter notation} \\ |
3452 | % & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & |base/xml| & | 3722 | % & \texttt{dmg+} & \texttt{loc} & \texttt{arabica} & |base/xml| & |
3453 | % |safe| \\ \midrule | 3723 | % |safe| \\ \midrule |
3454 | % \endhead \footnotetext{See \vref{sec:transliteration}.} | 3724 | % \endhead \footnotetext{See \vref{sec:transliteration}.} |
3455 | % \label{tab:buckwalter-scheme} | 3725 | % \label{tab:buckwalter-scheme} |
3456 | % \arb[novoc]{a} & \dmg{a} & \loc{a} & \brill{a} & |A| & |A| \\ | 3726 | % \arb[novoc]{a} & \dmg{a} & \loc{a} & \brill{a} & |A| & |A| \\ |
3457 | % \pagebreak[1] | ||
3458 | % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| & |b| \\ | 3727 | % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| & |b| \\ |
3459 | % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| & |t| \\ | 3728 | % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| & |t| \\ |
3460 | % \arb[novoc]{_t} & \dmg{_t} & \loc{_t} & \brill{_t} & |v| & |v| \\ | 3729 | % \arb[novoc]{_t} & \dmg{_t} & \loc{_t} & \brill{_t} & |v| & |v| \\ |
@@ -3546,7 +3815,7 @@ | |||
3546 | % | 3815 | % |
3547 | % \section{Unicode Arabic input} | 3816 | % \section{Unicode Arabic input} |
3548 | % \label{sec:unicode-input} | 3817 | % \label{sec:unicode-input} |
3549 | % \NEWfeature{v1.5} As said above in \vref{sec:buckwalter-scheme} | 3818 | % \newfeature[v1.5] As said above in \vref{sec:buckwalter-scheme} |
3550 | % about the Buckwalter input scheme, even though \package{arabluatex} | 3819 | % about the Buckwalter input scheme, even though \package{arabluatex} |
3551 | % is primarily designed to process the Arab\TeX\ notation, it also | 3820 | % is primarily designed to process the Arab\TeX\ notation, it also |
3552 | % accepts Unicode Arabic input. It should be noted that | 3821 | % accepts Unicode Arabic input. It should be noted that |
@@ -3564,17 +3833,16 @@ | |||
3564 | % \iffalse | 3833 | % \iffalse |
3565 | %<*example> | 3834 | %<*example> |
3566 | % \fi | 3835 | % \fi |
3567 | \begin{code} | 3836 | \begin{alcode} |
3568 | \begin{txarab} | 3837 | \begin{txarab} |
3569 | <Unicode Arabic text> | 3838 | <Unicode Arabic text> |
3570 | \end{txarab} | 3839 | \end{txarab} |
3571 | \end{code} | 3840 | \end{alcode} |
3572 | % \iffalse | 3841 | % \iffalse |
3573 | %</example> | 3842 | %</example> |
3574 | % \fi | 3843 | % \fi |
3575 | % \end{enumerate} | 3844 | % \end{enumerate} |
3576 | % | 3845 | % |
3577 | % \needspace{4\baselineskip} | ||
3578 | % \section{\LaTeX\ Commands in Arabic environments} | 3846 | % \section{\LaTeX\ Commands in Arabic environments} |
3579 | % \label{sec:commands-in-arb} | 3847 | % \label{sec:commands-in-arb} |
3580 | % \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\ | 3848 | % \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\ |
@@ -3668,6 +3936,7 @@ | |||
3668 | % 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 |
3669 | % the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\ | 3937 | % the preamble the \LaTeX\ macro \cs{thefootnote} like so:---\\ |
3670 | % \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}} | 3938 | % \tcboxverb{\renewcommand*{\thefootnote}{\textsuperscript{\LR{\arabic{footnote}}}}} |
3939 | % | ||
3671 | % \DescribeMacro{\FixArbFtnmk} Another solution is to put in the | 3940 | % \DescribeMacro{\FixArbFtnmk} Another solution is to put in the |
3672 | % preamble, below the line that loads \package{arabluatex}, the | 3941 | % preamble, below the line that loads \package{arabluatex}, the |
3673 | % \cs{FixArbFtnmk} command. However, for more control over the layout | 3942 | % \cs{FixArbFtnmk} command. However, for more control over the layout |
@@ -3706,7 +3975,7 @@ | |||
3706 | % | 3975 | % |
3707 | % \subsection{New commands} | 3976 | % \subsection{New commands} |
3708 | % \label{sec:declare-new-commands} | 3977 | % \label{sec:declare-new-commands} |
3709 | % \NEWfeature{v1.9}% | 3978 | % \newfeature[v1.9]% |
3710 | % In some particular cases, it may be useful to define new commands to | 3979 | % In some particular cases, it may be useful to define new commands to |
3711 | % be inserted in Arabic environments. From the general principle laid | 3980 | % be inserted in Arabic environments. From the general principle laid |
3712 | % \vpageref{ref:cmd-inside-arabic}, it follows that any command that | 3981 | % \vpageref{ref:cmd-inside-arabic}, it follows that any command that |
@@ -3752,7 +4021,7 @@ | |||
3752 | % of commands declared with \cs{MkArbBreak} are not to be processed by | 4021 | % of commands declared with \cs{MkArbBreak} are not to be processed by |
3753 | % \package{arabluatex}. Therefore, as in the previous example, any of | 4022 | % \package{arabluatex}. Therefore, as in the previous example, any of |
3754 | % their argument to be rendered in Arabic must be inserted again in | 4023 | % their argument to be rendered in Arabic must be inserted again in |
3755 | % \cs{arb}. \NEWfeature{v1.12}These commands themselves may have up to | 4024 | % \cs{arb}. \newfeature[v1.12]These commands themselves may have up to |
3756 | % two optional and/or mandatory arguments followed by one optional | 4025 | % two optional and/or mandatory arguments followed by one optional |
3757 | % argument, like so:--- | 4026 | % argument, like so:--- |
3758 | % \begin{enumerate} | 4027 | % \begin{enumerate} |
@@ -3768,7 +4037,7 @@ | |||
3768 | % (uppermost combination) | 4037 | % (uppermost combination) |
3769 | % \end{enumerate} | 4038 | % \end{enumerate} |
3770 | % | 4039 | % |
3771 | % \DescribeMacro{\MkArbBreak*}\NEWfeature{v1.12} As said above, | 4040 | % \DescribeMacro{\MkArbBreak*}\newfeature[v1.12] As said above, |
3772 | % \cs{MkArbBreak} prevents \package{arabluatex} from processing the | 4041 | % \cs{MkArbBreak} prevents \package{arabluatex} from processing the |
3773 | % arguments of \enquote*{declared} commands as Arabic text. This | 4042 | % arguments of \enquote*{declared} commands as Arabic text. This |
3774 | % technique proves sufficient in most cases. However, a | 4043 | % technique proves sufficient in most cases. However, a |
@@ -3795,20 +4064,20 @@ | |||
3795 | % \label{sec:environments} | 4064 | % \label{sec:environments} |
3796 | % \changes{v1.5}{2016/11/14}{Environments may be nested inside the | 4065 | % \changes{v1.5}{2016/11/14}{Environments may be nested inside the |
3797 | % \texttt{arab} environment} | 4066 | % \texttt{arab} environment} |
3798 | % \NEWfeature{v1.5} Environments such as | 4067 | % \newfeature[v1.5] Environments such as |
3799 | % \tcboxverb{\begin{quote} ... \end{quote}} may be nested inside the | 4068 | % \tcboxverb{\begin{quote} ... \end{quote}} may be nested inside the |
3800 | % |arab| environment. Up to one optional argument may be passed to | 4069 | % |arab| environment. Up to one optional argument may be passed to |
3801 | % each nested environment, like so:--- | 4070 | % each nested environment, like so:--- |
3802 | % \iffalse | 4071 | % \iffalse |
3803 | %<*example> | 4072 | %<*example> |
3804 | % \fi | 4073 | % \fi |
3805 | \begin{code} | 4074 | \begin{alcode} |
3806 | \begin{arab} | 4075 | \begin{arab} |
3807 | \begin{<environment>}[<options>] | 4076 | \begin{<environment>}[<options>] |
3808 | <Arabic text> | 4077 | <Arabic text> |
3809 | \end{<environment>} | 4078 | \end{<environment>} |
3810 | \end{arab} | 4079 | \end{arab} |
3811 | \end{code} | 4080 | \end{alcode} |
3812 | % \iffalse | 4081 | % \iffalse |
3813 | %</example> | 4082 | %</example> |
3814 | % \fi | 4083 | % \fi |
@@ -3905,13 +4174,13 @@ | |||
3905 | % \iffalse | 4174 | % \iffalse |
3906 | %<*example> | 4175 | %<*example> |
3907 | % \fi | 4176 | % \fi |
3908 | \begin{code} | 4177 | \begin{alcode} |
3909 | % preamble:--- | 4178 | % preamble:--- |
3910 | \usepackage{enumitem} | 4179 | \usepackage{enumitem} |
3911 | \newlist{enumabjad}{enumerate}{10} | 4180 | \newlist{enumabjad}{enumerate}{10} |
3912 | \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}} | 4181 | \setlist[enumabjad]{nosep, label={\abjad{\arabic*}}} |
3913 | \usepackage{multicol} | 4182 | \usepackage{multicol} |
3914 | \end{code} | 4183 | \end{alcode} |
3915 | \begin{example} | 4184 | \begin{example} |
3916 | 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 |
3917 | triliteral verb are usually reckoned fifteen in number, but the | 4186 | triliteral verb are usually reckoned fifteen in number, but the |
@@ -3954,10 +4223,10 @@ | |||
3954 | % \iffalse | 4223 | % \iffalse |
3955 | %<*example> | 4224 | %<*example> |
3956 | % \fi | 4225 | % \fi |
3957 | \begin{code} | 4226 | \begin{alcode} |
3958 | \usepackage[french]{babel} | 4227 | \usepackage[french]{babel} |
3959 | \frenchsetup{StandardLists=true} | 4228 | \frenchsetup{StandardLists=true} |
3960 | \end{code} | 4229 | \end{alcode} |
3961 | % \iffalse | 4230 | % \iffalse |
3962 | %</example> | 4231 | %</example> |
3963 | % \fi% | 4232 | % \fi% |
@@ -3975,12 +4244,12 @@ | |||
3975 | % \iffalse | 4244 | % \iffalse |
3976 | %<*example> | 4245 | %<*example> |
3977 | % \fi | 4246 | % \fi |
3978 | \begin{code} | 4247 | \begin{alcode} |
3979 | \usepackage{csquotes} | 4248 | \usepackage{csquotes} |
3980 | \DeclareQuoteStyle{arabic} | 4249 | \DeclareQuoteStyle{arabic} |
3981 | {\textquotedblright}{\textquotedblleft} | 4250 | {\textquotedblright}{\textquotedblleft} |
3982 | {\textquoteright}{\textquoteleft} | 4251 | {\textquoteright}{\textquoteleft} |
3983 | \end{code} | 4252 | \end{alcode} |
3984 | % \iffalse | 4253 | % \iffalse |
3985 | %</example> | 4254 | %</example> |
3986 | % \fi | 4255 | % \fi |
@@ -3999,11 +4268,11 @@ | |||
3999 | % \iffalse | 4268 | % \iffalse |
4000 | %</example> | 4269 | %</example> |
4001 | % \fi | 4270 | % \fi |
4002 | % \begin{quoting} | 4271 | % \begin{remarks} |
4003 | % \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 |
4004 | % initial state once the Arabic environment is closed. See the last | 4273 | % its initial state once the Arabic environment is closed. See the |
4005 | % line in the code above. | 4274 | % last line in the code above. |
4006 | % \end{quoting} | 4275 | % \end{remarks} |
4007 | % | 4276 | % |
4008 | % \subsection{Two-argument special commands} | 4277 | % \subsection{Two-argument special commands} |
4009 | % \label{sec:two-arg-cmds} | 4278 | % \label{sec:two-arg-cmds} |
@@ -4052,7 +4321,7 @@ | |||
4052 | % \iffalse | 4321 | % \iffalse |
4053 | %<*example> | 4322 | %<*example> |
4054 | % \fi | 4323 | % \fi |
4055 | \begin{code} | 4324 | \begin{alcode} |
4056 | \beginnumbering | 4325 | \beginnumbering |
4057 | \pstart | 4326 | \pstart |
4058 | \begin{arab} | 4327 | \begin{arab} |
@@ -4061,7 +4330,7 @@ | |||
4061 | \end{arab} | 4330 | \end{arab} |
4062 | \pend | 4331 | \pend |
4063 | \endnumbering | 4332 | \endnumbering |
4064 | \end{code} | 4333 | \end{alcode} |
4065 | % \iffalse | 4334 | % \iffalse |
4066 | %</example> | 4335 | %</example> |
4067 | % \fi | 4336 | % \fi |
@@ -4086,10 +4355,10 @@ | |||
4086 | % \iffalse | 4355 | % \iffalse |
4087 | %<*example> | 4356 | %<*example> |
4088 | % \fi | 4357 | % \fi |
4089 | \begin{code} | 4358 | \begin{alcode} |
4090 | \usepackage{arabluatex} | 4359 | \usepackage{arabluatex} |
4091 | \usepackage[nopar]{quran} | 4360 | \usepackage[nopar]{quran} |
4092 | \end{code} | 4361 | \end{alcode} |
4093 | % \iffalse | 4362 | % \iffalse |
4094 | %</example> | 4363 | %</example> |
4095 | % \fi | 4364 | % \fi |
@@ -4110,7 +4379,7 @@ | |||
4110 | % | 4379 | % |
4111 | % \section{Exporting Unicode Arabic to an external file} | 4380 | % \section{Exporting Unicode Arabic to an external file} |
4112 | % \label{sec:arabtex2utf} | 4381 | % \label{sec:arabtex2utf} |
4113 | % \NEWfeature{v.1.13}\package{arabluatex} is able to produce a | 4382 | % \newfeature[v.1.13]\package{arabluatex} is able to produce a |
4114 | % duplicate of the original |.tex| source file in which all |arabtex| | 4383 | % duplicate of the original |.tex| source file in which all |arabtex| |
4115 | % or |buckwalter| strings will have been replaced with Unicode | 4384 | % or |buckwalter| strings will have been replaced with Unicode |
4116 | % equivalents, either in Arabic script or in any accepted standard of | 4385 | % equivalents, either in Arabic script or in any accepted standard of |
@@ -4128,12 +4397,12 @@ | |||
4128 | % \iffalse | 4397 | % \iffalse |
4129 | %<*example> | 4398 | %<*example> |
4130 | % \fi | 4399 | % \fi |
4131 | \begin{code} | 4400 | \begin{alcode} |
4132 | % preamble | 4401 | % preamble |
4133 | \usepackage[export]{arabluatex} | 4402 | \usepackage[export]{arabluatex} |
4134 | % or: | 4403 | % or: |
4135 | \usepackage[export=true]{arabluatex} | 4404 | \usepackage[export=true]{arabluatex} |
4136 | \end{code} | 4405 | \end{alcode} |
4137 | % \iffalse | 4406 | % \iffalse |
4138 | %</example> | 4407 | %</example> |
4139 | % \fi | 4408 | % \fi |
@@ -4153,11 +4422,11 @@ | |||
4153 | % \iffalse | 4422 | % \iffalse |
4154 | %<*example> | 4423 | %<*example> |
4155 | % \fi | 4424 | % \fi |
4156 | \begin{code} | 4425 | \begin{alcode} |
4157 | \begin{arabexport} | 4426 | \begin{arabexport} |
4158 | <Running paragraphs of either Arabic or non-Arabic text> | 4427 | <Running paragraphs of either Arabic or non-Arabic text> |
4159 | \end{arabexport} | 4428 | \end{arabexport} |
4160 | \end{code} | 4429 | \end{alcode} |
4161 | % \iffalse | 4430 | % \iffalse |
4162 | %</example> | 4431 | %</example> |
4163 | % \fi | 4432 | % \fi |
@@ -4215,11 +4484,11 @@ | |||
4215 | % \iffalse | 4484 | % \iffalse |
4216 | %<*example> | 4485 | %<*example> |
4217 | % \fi | 4486 | % \fi |
4218 | \begin{code} | 4487 | \begin{alcode} |
4219 | Package arabluatex Warning: There are still 'arabtex' strings | 4488 | Package arabluatex Warning: There are still 'arabtex' strings |
4220 | to be converted. Please open <jobname><suffix>.tex and compile | 4489 | to be converted. Please open <jobname><suffix>.tex and compile |
4221 | it one more time. | 4490 | it one more time. |
4222 | \end{code} | 4491 | \end{alcode} |
4223 | % \iffalse | 4492 | % \iffalse |
4224 | %</example> | 4493 | %</example> |
4225 | % \fi | 4494 | % \fi |
@@ -4237,9 +4506,9 @@ | |||
4237 | % \iffalse | 4506 | % \iffalse |
4238 | %<*example> | 4507 | %<*example> |
4239 | % \fi | 4508 | % \fi |
4240 | \begin{code} | 4509 | \begin{alcode} |
4241 | pandoc file_out.tex -s -o file_out.odt | 4510 | pandoc file_out.tex -s -o file_out.odt |
4242 | \end{code} | 4511 | \end{alcode} |
4243 | % \iffalse | 4512 | % \iffalse |
4244 | %</example> | 4513 | %</example> |
4245 | % \fi | 4514 | % \fi |
@@ -4251,7 +4520,7 @@ | |||
4251 | % \iffalse | 4520 | % \iffalse |
4252 | %<*example> | 4521 | %<*example> |
4253 | % \fi | 4522 | % \fi |
4254 | \begin{code} | 4523 | \begin{alcode} |
4255 | % preamble: | 4524 | % preamble: |
4256 | \usepackage{arabluatex} % note that 'export' has been removed | 4525 | \usepackage{arabluatex} % note that 'export' has been removed |
4257 | \renewcommand{\txarb}[1]{#1} | 4526 | \renewcommand{\txarb}[1]{#1} |
@@ -4261,7 +4530,7 @@ | |||
4261 | % be safe to say: | 4530 | % be safe to say: |
4262 | \renewcommand{\prname}[2]{#2} | 4531 | \renewcommand{\prname}[2]{#2} |
4263 | % &c | 4532 | % &c |
4264 | \end{code} | 4533 | \end{alcode} |
4265 | % \iffalse | 4534 | % \iffalse |
4266 | %</example> | 4535 | %</example> |
4267 | % \fi | 4536 | % \fi |
@@ -4302,18 +4571,12 @@ | |||
4302 | % functions and tables. Read the |.lua| files that accompany | 4571 | % functions and tables. Read the |.lua| files that accompany |
4303 | % \package{arabluatex} for more information. | 4572 | % \package{arabluatex} for more information. |
4304 | % \begin{macrocode} | 4573 | % \begin{macrocode} |
4305 | \RequirePackage{ifluatex} | 4574 | \RequirePackage{iftex} |
4306 | % \end{macrocode} | 4575 | % \end{macrocode} |
4307 | % \package{arabluatex} requires {\LuaLaTeX} of course. Issue a warning | 4576 | % \package{arabluatex} requires {\LuaLaTeX} of course. Issue a warning |
4308 | % if the document is processed with another engine. | 4577 | % if the document is processed with another engine. |
4309 | % \begin{macrocode} | 4578 | % \begin{macrocode} |
4310 | \ifluatex\else | 4579 | \RequireLuaTeX |
4311 | \PackageError{arabluatex}{lualatex needed}{% | ||
4312 | Package `arabluatex' needs LuaTeX.\MessageBreak | ||
4313 | So you should use `lualatex' to process your document.\MessageBreak | ||
4314 | See documentation of `arabluatex' for further information.}% | ||
4315 | \expandafter\expandafter\expandafter\csname endinput\endcsname | ||
4316 | \fi | ||
4317 | % \end{macrocode} | 4580 | % \end{macrocode} |
4318 | % Declare the global options, and define them: | 4581 | % Declare the global options, and define them: |
4319 | % \begin{macrocode} | 4582 | % \begin{macrocode} |
@@ -4346,8 +4609,7 @@ | |||
4346 | \RequirePackage{xparse} | 4609 | \RequirePackage{xparse} |
4347 | \RequirePackage{adjustbox} | 4610 | \RequirePackage{adjustbox} |
4348 | \RequirePackage{xstring} | 4611 | \RequirePackage{xstring} |
4349 | \PassOptionsToPackage{normalem}{ulem} | 4612 | \RequirePackage{lua-ul} |
4350 | \RequirePackage{ulem} | ||
4351 | % \end{macrocode} | 4613 | % \end{macrocode} |
4352 | % The following boolean will be set to |true| in |RL| mode: | 4614 | % The following boolean will be set to |true| in |RL| mode: |
4353 | % \begin{macrocode} | 4615 | % \begin{macrocode} |
@@ -4361,9 +4623,10 @@ | |||
4361 | % and attempt to load the Amiri font which is included in \TeX{}live: | 4623 | % and attempt to load the Amiri font which is included in \TeX{}live: |
4362 | % \begin{macrocode} | 4624 | % \begin{macrocode} |
4363 | \AtBeginDocument{\ifdefined\arabicfont\relax\else | 4625 | \AtBeginDocument{\ifdefined\arabicfont\relax\else |
4364 | \PackageWarning{arabluatex}{\string\arabicfont\ is not defined.^^J | 4626 | \PackageInfo{arabluatex}{% |
4365 | I will try to load Amiri}% | 4627 | \string\arabicfont\ is not defined.\MessageBreak |
4366 | \newfontfamily\arabicfont[Script=Arabic]{Amiri}\fi}% | 4628 | arabluatex will try to load Amiri}% |
4629 | \newfontfamily\arabicfont{Amiri}[Script=Arabic]\fi}% | ||
4367 | % \end{macrocode} | 4630 | % \end{macrocode} |
4368 | % \begin{macro}{\setRL} | 4631 | % \begin{macro}{\setRL} |
4369 | % This neutralizes what may be defined by other packages: | 4632 | % This neutralizes what may be defined by other packages: |
@@ -4384,8 +4647,16 @@ | |||
4384 | % it to suit our purpose: | 4647 | % it to suit our purpose: |
4385 | % \begin{macrocode} | 4648 | % \begin{macrocode} |
4386 | \AtBeginDocument{\ifdef{\LR}% | 4649 | \AtBeginDocument{\ifdef{\LR}% |
4387 | {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}} | 4650 | {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\reset@font#1\egroup}} |
4388 | {\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 | } | ||
4389 | % \end{macrocode} | 4660 | % \end{macrocode} |
4390 | % \end{macro} | 4661 | % \end{macro} |
4391 | % \begin{macro}{\RL} This one typesets its argument from right to | 4662 | % \begin{macro}{\RL} This one typesets its argument from right to |
@@ -4422,16 +4693,28 @@ | |||
4422 | % \begin{macro}{\aemph} Arabic emphasis. Needs to be redefined as | 4693 | % \begin{macro}{\aemph} Arabic emphasis. Needs to be redefined as |
4423 | % well. The function is actually coded in Lua. | 4694 | % well. The function is actually coded in Lua. |
4424 | % \changes{v1.16}{2018/11/06}{Now uses \textsf{ulem}} | 4695 | % \changes{v1.16}{2018/11/06}{Now uses \textsf{ulem}} |
4696 | % \changes{v1.19}{2020/03/15}{Now uses \textsf{lua-ul}} | ||
4425 | % \begin{macro}{\aemph*} The \enquote*{starred} version of this | 4697 | % \begin{macro}{\aemph*} The \enquote*{starred} version of this |
4426 | % command alway puts the stroke over its argument. | 4698 | % command alway puts the stroke over its argument. |
4427 | % \changes{v1.9.2}{2017/10/24}{Starred version which always puts the | 4699 | % \changes{v1.9.2}{2017/10/24}{Starred version which always puts the |
4428 | % stroke over its argument}As of v1.16 \package{arabluatex} uses | 4700 | % stroke over its argument}As of v1.19, \package{arabluatex} uses |
4429 | % \package{ulem} to render the strokes, thus allowing line breaks | 4701 | % \package{lua-ul} to render the strokes, thus allowing line breaks |
4430 | % and manual hyphenation for transliterated Arabic. | 4702 | % and manual hyphenation for transliterated Arabic. |
4703 | % \begin{macro}{\aoline} | ||
4704 | % \begin{macro}{\aoline*} | ||
4705 | % \begin{macro}{\auline} | ||
4706 | % \changes{v1.19}{2020/03/15}{Non context-sensitive command to | ||
4707 | % underline Arabic words is provided}\cs{aoline} and \cs{auline} | ||
4708 | % derive from \cs{newunderlinetype} provided by the \package{lua-ul} | ||
4709 | % package whereas \cs{aoline*}, which uses \cs{overline} in math-mode, | ||
4710 | % is better suited for so-called \arb[trans]{'ab^gad} numbers. | ||
4431 | % \begin{macrocode} | 4711 | % \begin{macrocode} |
4432 | \def\oline{\@ifstar\@oline\@@oline} | 4712 | \newunderlinetype\@aoverLine{\leaders\vrule height 3ex depth -2.9ex} |
4433 | \def\@oline#1{\ensuremath{\overline{\mbox{#1}}}} | 4713 | \def\aoline{\@ifstar\@aoline\@@aoline} |
4434 | \def\@@oline{\bgroup \ULdepth=-3ex \ULset} | 4714 | \def\@aoline#1{\ensuremath{\overline{\mbox{#1}}}} |
4715 | \def\@@aoline#1{{\@aoverLine#1}} | ||
4716 | \newunderlinetype\@aunderLine{\leaders\vrule height -.65ex depth .75ex} | ||
4717 | \def\auline#1{{\@aunderLine#1}} | ||
4435 | \AtBeginDocument{\ifdef{\aemph}% | 4718 | \AtBeginDocument{\ifdef{\aemph}% |
4436 | {\RenewDocumentCommand{\aemph}{s m}{% | 4719 | {\RenewDocumentCommand{\aemph}{s m}{% |
4437 | \IfBooleanTF{#1}{% | 4720 | \IfBooleanTF{#1}{% |
@@ -4448,6 +4731,9 @@ | |||
4448 | % \end{macrocode} | 4731 | % \end{macrocode} |
4449 | % \end{macro} | 4732 | % \end{macro} |
4450 | % \end{macro} | 4733 | % \end{macro} |
4734 | % \end{macro} | ||
4735 | % \end{macro} | ||
4736 | % \end{macro} | ||
4451 | % \begin{macro}{\arbcolor}\changes{v1.12}{2018/06/24}{Standard color | 4737 | % \begin{macro}{\arbcolor}\changes{v1.12}{2018/06/24}{Standard color |
4452 | % command for Arabic environments} | 4738 | % command for Arabic environments} |
4453 | % \cs{arbcolor}\oarg{color}\marg{Arabic text} takes the Arabic text to | 4739 | % \cs{arbcolor}\oarg{color}\marg{Arabic text} takes the Arabic text to |
@@ -4528,6 +4814,16 @@ | |||
4528 | \NewDocumentCommand{\SetTranslitStyle}{m}{\def\al@trans@style{#1}} | 4814 | \NewDocumentCommand{\SetTranslitStyle}{m}{\def\al@trans@style{#1}} |
4529 | % \end{macrocode} | 4815 | % \end{macrocode} |
4530 | % \end{macro} | 4816 | % \end{macro} |
4817 | % \begin{macro}{\altrfont} | ||
4818 | % \changes{v1.21}{2023/05/21}{new command \cs{altrfont} to store | ||
4819 | % font and shape information (trans mode)} Finally \cs{altrfont} | ||
4820 | % is used internally by \package{arabluatex} to store family and | ||
4821 | % shape information about the font to be used for transliterated | ||
4822 | % Arabic. | ||
4823 | % \begin{macrocode} | ||
4824 | \def\altrfont{\al@trans@font\al@trans@style} | ||
4825 | % \end{macrocode} | ||
4826 | % \end{macro} | ||
4531 | % \begin{macro}{\SetTranslitConvention} | 4827 | % \begin{macro}{\SetTranslitConvention} |
4532 | % \cs{SetTranslitConvention}\marg{convention} can be used to change | 4828 | % \cs{SetTranslitConvention}\marg{convention} can be used to change |
4533 | % the transliteration convention, which is |dmg| by default: | 4829 | % the transliteration convention, which is |dmg| by default: |
@@ -4618,7 +4914,7 @@ | |||
4618 | \ifvmode\leavevmode\fi% | 4914 | \ifvmode\leavevmode\fi% |
4619 | \bgroup\textdir TRT\arabicfont#1\egroup} | 4915 | \bgroup\textdir TRT\arabicfont#1\egroup} |
4620 | \NewDocumentCommand{\txtrans}{+m}{% | 4916 | \NewDocumentCommand{\txtrans}{+m}{% |
4621 | \bgroup\textdir TLT\al@trans@font\al@trans@style#1\egroup} | 4917 | \bgroup\textdir TLT\altrfont#1\egroup} |
4622 | % \end{macrocode} | 4918 | % \end{macrocode} |
4623 | % \end{macro} | 4919 | % \end{macro} |
4624 | % \end{macro} | 4920 | % \end{macro} |
@@ -4642,7 +4938,7 @@ | |||
4642 | \NewDocumentEnvironment{txarabtr}{}{% | 4938 | \NewDocumentEnvironment{txarabtr}{}{% |
4643 | \par% | 4939 | \par% |
4644 | \pardir TLT\textdir TLT% | 4940 | \pardir TLT\textdir TLT% |
4645 | \al@trans@font\al@trans@style}{\par} | 4941 | \altrfont}{\par} |
4646 | % \end{macrocode} | 4942 | % \end{macrocode} |
4647 | % \end{environment} | 4943 | % \end{environment} |
4648 | % \begin{macro}{\arb} | 4944 | % \begin{macro}{\arb} |
@@ -4671,7 +4967,7 @@ | |||
4671 | \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% | 4967 | \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% |
4672 | \else% | 4968 | \else% |
4673 | \ifx\@tempa\al@mode@trans% | 4969 | \ifx\@tempa\al@mode@trans% |
4674 | \bgroup\textdir TLT\al@trans@font\al@trans@style% | 4970 | \bgroup\textdir TLT% |
4675 | \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, | 4971 | \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, |
4676 | \luastringO{\al@trans@convention}, | 4972 | \luastringO{\al@trans@convention}, |
4677 | \luastringO{\al@arb@rules}, | 4973 | \luastringO{\al@arb@rules}, |
@@ -4715,7 +5011,7 @@ | |||
4715 | % The |arab| environment does for paragraphs the same as \cs{arb} does | 5011 | % The |arab| environment does for paragraphs the same as \cs{arb} does |
4716 | % for short insertions of Arabic text. | 5012 | % for short insertions of Arabic text. |
4717 | % \begin{macrocode} | 5013 | % \begin{macrocode} |
4718 | \NewDocumentEnvironment{arab}{O{\al@mode} +b}% | 5014 | \NewDocumentEnvironment{arab}{!O{\al@mode} +b}% |
4719 | {\par\edef\@tempa{#1}% | 5015 | {\par\edef\@tempa{#1}% |
4720 | \ifx\@tempa\al@mode@voc% | 5016 | \ifx\@tempa\al@mode@voc% |
4721 | \booltrue{al@rlmode}% | 5017 | \booltrue{al@rlmode}% |
@@ -4736,7 +5032,7 @@ | |||
4736 | \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% | 5032 | \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% |
4737 | \else% | 5033 | \else% |
4738 | \ifx\@tempa\al@mode@trans% | 5034 | \ifx\@tempa\al@mode@trans% |
4739 | \bgroup\pardir TLT\textdir TLT\al@trans@font\al@trans@style% | 5035 | \bgroup\pardir TLT\textdir TLT% |
4740 | \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, | 5036 | \luadirect{tex.sprint(arabluatex.processtrans(\luastringN{#2}, |
4741 | \luastringO{\al@trans@convention}, | 5037 | \luastringO{\al@trans@convention}, |
4742 | \luastringO{\al@arb@rules}, | 5038 | \luastringO{\al@arb@rules}, |
@@ -4756,55 +5052,63 @@ | |||
4756 | % \begin{macrocode} | 5052 | % \begin{macrocode} |
4757 | \newlength{\al@bayt@width} | 5053 | \newlength{\al@bayt@width} |
4758 | \newlength{\al@gutter@width} | 5054 | \newlength{\al@gutter@width} |
5055 | \newlength{\al@verse@twidth} | ||
4759 | \setlength{\al@bayt@width}{.3\textwidth} | 5056 | \setlength{\al@bayt@width}{.3\textwidth} |
4760 | \setlength{\al@gutter@width}{.15\al@bayt@width} | 5057 | \setlength{\al@gutter@width}{.15\al@bayt@width} |
4761 | \define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}} | 5058 | \define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}} |
4762 | \define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}} | 5059 | \define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}} |
4763 | \define@key[al]{verse}{metre}{\arb{#1}} | 5060 | \define@key[al]{verse}{metre}{\def\al@verse@metre@value{\arb{#1}}} |
4764 | \define@key[al]{verse}{color}[]{\color{#1}} | 5061 | \define@key[al]{verse}{color}[]{\color{#1}} |
4765 | \define@boolkey[al]{verse}{utf}[true]{} | 5062 | \define@boolkey[al]{verse}{utf}[true]{} |
4766 | \define@boolkey[al]{verse}{delim}[true]{} | 5063 | \define@boolkey[al]{verse}{delim}[true]{} |
4767 | \define@boolkey[al]{verse}{export}[true]{} | 5064 | \define@boolkey[al]{verse}{export}[true]{} |
4768 | \define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, | 5065 | \define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, |
4769 | trans}{\def\al@mode{#1}} | 5066 | trans}{\def\al@mode{#1}} |
4770 | \presetkeys[al]{verse}{metre={}, utf=false, | 5067 | \presetkeys[al]{verse}{utf=false, delim=false}{} |
4771 | delim=false}{} | ||
4772 | % \end{macrocode} | 5068 | % \end{macrocode} |
4773 | % Then follows the environment itself: | 5069 | % Then follows the environment itself: |
4774 | % \begin{macrocode} | 5070 | % \begin{macrocode} |
4775 | \NewDocumentEnvironment{arabverse}{O{}}% | 5071 | \NewDocumentEnvironment{arabverse}{!O{}}% |
4776 | {\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, | 5072 | {\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, |
4777 | metre]{#1}% | 5073 | metre]{#1}% |
4778 | \if@pkg@export\ifal@verse@export% | 5074 | \if@pkg@export |
4779 | \ArbOutFile{\begin{arabverse}}% | 5075 | \ifal@verse@export |
4780 | % \ifx\al@mode\al@mode@trans% | 5076 | \ArbOutFile{\begin{arabverse}}% |
4781 | % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}% | 5077 | % \ifx\al@mode\al@mode@trans% |
4782 | % \else% | 5078 | % \luadirect{arabluatex.tooutfile(\luastringN{[#1]})}% |
4783 | \IfSubStr[1]{#1}{utf}% | 5079 | % \else% |
5080 | \IfSubStr[1]{#1}{utf}% | ||
4784 | {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}% | 5081 | {\luadirect{arabluatex.tooutfile(\luastringN{[#1]})}}% |
4785 | {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}% | 5082 | {\luadirect{arabluatex.tooutfile(\luastringN{[#1, utf]})}}% |
4786 | % \fi | 5083 | % \fi |
4787 | \else\fi\else\fi\egroup% | 5084 | \else |
4788 | \par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% | 5085 | \fi |
4789 | % \ifx\al@mode\al@mode@trans% | 5086 | \else |
4790 | % \ifal@verse@utf\setRL\else\setLR\fi% | 5087 | \fi |
4791 | % \else\setRL\fi% | 5088 | \egroup |
4792 | \ifal@verse@utf% | 5089 | \centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% |
4793 | \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% | 5090 | % \ifx\al@mode\al@mode@trans% |
4794 | \else% | 5091 | % \ifal@verse@utf\setRL\else\setLR\fi% |
4795 | \ifx\al@mode\al@mode@trans\setLR\else\setRL\fi% | 5092 | % \else\setRL\fi% |
4796 | \fi% | 5093 | \ifal@verse@utf |
4797 | \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] | ||
4798 | }% | 5101 | }% |
4799 | {\endarab@v@export | 5102 | {\endarab@v@export |
4800 | \hfill\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, | 5103 | \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, |
4801 | export]{#1}% | 5104 | export]{#1}% |
4802 | \egroup\par% | 5105 | \ifdefined\al@verse@metre@value\hfill\al@verse@metre@value\fi |
5106 | \egroup | ||
4803 | \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, | 5107 | \bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, mode, |
4804 | metre]{#1}% | 5108 | metre]{#1}% |
4805 | \if@pkg@export\ifal@verse@export% | 5109 | \if@pkg@export\ifal@verse@export |
4806 | \ArbOutFile{\end{arabverse}} | 5110 | \ArbOutFile{\end{arabverse}}% |
4807 | \else\fi\else\fi\egroup} | 5111 | \else\fi\else\fi\egroup} |
4808 | % \end{macrocode} | 5112 | % \end{macrocode} |
4809 | % \begin{macro}{\bayt} | 5113 | % \begin{macro}{\bayt} |
4810 | % \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 |
@@ -4816,6 +5120,14 @@ | |||
4816 | % \arb[trans]{tadwIr}. In some of these cases, the hemistichs may be | 5120 | % \arb[trans]{tadwIr}. In some of these cases, the hemistichs may be |
4817 | % connected by a prominent horizontal flexible stroke which is drawn | 5121 | % connected by a prominent horizontal flexible stroke which is drawn |
4818 | % by the \cs{al@verse@stroke} command. | 5122 | % by the \cs{al@verse@stroke} command. |
5123 | % \begin{macro}{\StretchBayt} | ||
5124 | % \changes{v1.20}{2020/03/23}{Optionally removes stretching from lines | ||
5125 | % of poetry} \cs{StretchBayt}\oarg{true\textbar false} Allows to | ||
5126 | % remove stretching and undesirable warping effect from Arabic lines of | ||
5127 | % poetry. This command accepts one fixed optional argument, either | ||
5128 | % |true| or |false|, and may be used either in the preamble or at any | ||
5129 | % point of the document. By default, it is set to |true|. | ||
5130 | % \end{macro} | ||
4819 | % \begin{macro}{\SetHemistichDelim} | 5131 | % \begin{macro}{\SetHemistichDelim} |
4820 | % \changes{v1.6}{2016/12/17}{New \cs{SetHemistichDelim} command for | 5132 | % \changes{v1.6}{2016/12/17}{New \cs{SetHemistichDelim} command for |
4821 | % changing the default delimiter between hemistichs} A hemistich | 5133 | % changing the default delimiter between hemistichs} A hemistich |
@@ -4825,23 +5137,53 @@ | |||
4825 | % point of the document to change this default setting. | 5137 | % point of the document to change this default setting. |
4826 | % \end{macro} | 5138 | % \end{macro} |
4827 | % \begin{macrocode} | 5139 | % \begin{macrocode} |
5140 | \newif\ifal@warp@bayt | ||
5141 | \al@warp@bayttrue | ||
5142 | \NewDocumentCommand{\StretchBayt}{O{true}}{ | ||
5143 | \edef\oarg@true{true} | ||
5144 | \edef\oarg@false{false} | ||
5145 | \edef\@tempa{#1} | ||
5146 | \ifx\@tempa\oarg@true\al@warp@bayttrue | ||
5147 | \else | ||
5148 | \ifx\@tempa\oarg@false\al@warp@baytfalse | ||
5149 | \else | ||
5150 | \PackageError{arabluatex}{\string\StretchBayt\space must be | ||
5151 | either 'true' or 'false'}{} | ||
5152 | \fi | ||
5153 | \fi | ||
5154 | } | ||
4828 | \NewDocumentCommand{\arb@utf}{m}{% | 5155 | \NewDocumentCommand{\arb@utf}{m}{% |
4829 | \ifal@verse@utf\txarb{#1}\else\arb{#1}\fi} | 5156 | \ifal@verse@utf\txarb{#1}\else\arb{#1}\fi} |
4830 | \def\al@hemistich@delim{*} | 5157 | \def\al@hemistich@delim{*} |
4831 | \NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}} | 5158 | \NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}} |
4832 | \def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt} | 5159 | \def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt} |
4833 | \NewDocumentCommand{\bayt}{s m o m}{% | 5160 | \providebool{ekd@state} |
4834 | \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}% | ||
4835 | \ifdefined\savenotes\savenotes\else\fi% | 5173 | \ifdefined\savenotes\savenotes\else\fi% |
4836 | \edef\al@tatweel{--}% | 5174 | \edef\al@tatweel{--}% |
4837 | \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}% | 5175 | \ifal@warp@bayt% |
4838 | \IfNoValueTF{#3}{% | 5176 | \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#3}}% |
5177 | \else% | ||
5178 | \makebox[\al@bayt@width][s]{\arb@utf{#3}}% | ||
5179 | \fi% | ||
5180 | \IfNoValueTF{#4}{% | ||
4839 | \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% | 5181 | \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}% |
4840 | \else% | 5182 | \else% |
4841 | \hspace{\al@gutter@width}% | 5183 | \hspace{\al@gutter@width}% |
4842 | \fi | 5184 | \fi |
4843 | }{% | 5185 | }{% |
4844 | \edef\@tempa{#3}% | 5186 | \edef\@tempa{#4}% |
4845 | \ifx\@tempa\al@tatweel% | 5187 | \ifx\@tempa\al@tatweel% |
4846 | \ifx\al@mode\al@mode@trans% | 5188 | \ifx\al@mode\al@mode@trans% |
4847 | \hspace{\al@gutter@width}% | 5189 | \hspace{\al@gutter@width}% |
@@ -4850,16 +5192,98 @@ | |||
4850 | \fi% | 5192 | \fi% |
4851 | \else% | 5193 | \else% |
4852 | \ifx\al@mode\al@mode@trans% | 5194 | \ifx\al@mode\al@mode@trans% |
4853 | \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}% | 5195 | \ifal@warp@bayt% |
5196 | \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#4}}% | ||
4854 | \else% | 5197 | \else% |
4855 | \makebox[\al@gutter@width][s]{\arb@utf{#3}}% | 5198 | \makebox[\al@gutter@width][s]{\arb@utf{#4}}% |
5199 | \fi% | ||
5200 | \else% | ||
5201 | \makebox[\al@gutter@width][s]{\arb@utf{#4}}% | ||
4856 | \fi\fi}% | 5202 | \fi\fi}% |
4857 | \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}% | 5203 | \ifal@warp@bayt% |
5204 | \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#5}}% | ||
5205 | \else% | ||
5206 | \makebox[\al@bayt@width][s]{\arb@utf{#5}}% | ||
5207 | \fi% | ||
4858 | \ifdefined\spewnotes\spewnotes\else\fi% | 5208 | \ifdefined\spewnotes\spewnotes\else\fi% |
4859 | } | 5209 | } |
4860 | % \end{macrocode} | 5210 | % \end{macrocode} |
4861 | % \end{macro} | 5211 | % \end{macro} |
4862 | % \end{environment} | 5212 | % \end{environment} |
5213 | % \begin{macro}{\arind} | ||
5214 | % \changes{v1.18}{2020/02/29}{New command \cs{arind} for building | ||
5215 | % indexes} | ||
5216 | % \cs{arind}\marg{root} is a command specialized in the contruction of | ||
5217 | % indexes. As a mandadory argument, it takes the Arabic root under | ||
5218 | % which a given word is to be indexed. Additionally, it may receive | ||
5219 | % three optional \enquote*{named} arguments: |index|, |root| and | ||
5220 | % |form|. | ||
5221 | % \begin{macrocode} | ||
5222 | \NewDocumentCommand{\SetDefaultIndex}{m}{ | ||
5223 | \edef\@tempa{#1} | ||
5224 | \ifx\@tempa\empty | ||
5225 | \def\al@default@index{\jobname} | ||
5226 | \else | ||
5227 | \def\al@default@index{#1} | ||
5228 | \fi | ||
5229 | } | ||
5230 | % \end{macrocode} | ||
5231 | % \begin{macrocode} | ||
5232 | \def\al@index@mode{\al@mode} | ||
5233 | \NewDocumentCommand{\SetIndexMode}{m}{ | ||
5234 | \def\al@index@mode{#1} | ||
5235 | } | ||
5236 | % \end{macrocode} | ||
5237 | % \begin{macrocode} | ||
5238 | \define@cmdkeys[al]{index}[alind@]{index,root,form,pipe} | ||
5239 | \NewDocumentCommand{\arind}{o m}{% | ||
5240 | \IfNoValueTF{#1}{% | ||
5241 | \ifdefined\al@default@index% | ||
5242 | \csname index\endcsname[\al@default@index]{#2}% | ||
5243 | \else% | ||
5244 | \csname index\endcsname{#2}% | ||
5245 | \fi% | ||
5246 | }{% | ||
5247 | \bgroup | ||
5248 | \setkeys[al]{index}{#1}% | ||
5249 | \def\al@one{% | ||
5250 | \ifdefined\alind@root | ||
5251 | \ifnum\alind@root < 10% | ||
5252 | !\LR{0\alind@root}% | ||
5253 | \else | ||
5254 | !\LR{\alind@root}% | ||
5255 | \fi | ||
5256 | \else | ||
5257 | !\LR{01}% | ||
5258 | \fi}% | ||
5259 | \def\al@two{% | ||
5260 | \ifdefined\alind@form @\arb[\al@index@mode]{\alind@form}\else\fi}% | ||
5261 | \ifdefined\alind@index% | ||
5262 | \ifdefined\alind@pipe | ||
5263 | \csname index\endcsname[\alind@index]{#2\al@one\al@two|\alind@pipe}% | ||
5264 | \else | ||
5265 | \csname index\endcsname[\alind@index]{#2\al@one\al@two}% | ||
5266 | \fi | ||
5267 | \else% | ||
5268 | \ifdefined\al@default@index% | ||
5269 | \ifdefined\alind@pipe | ||
5270 | \csname index\endcsname[\al@default@index]{% | ||
5271 | #2\al@one\al@two|\alind@pipe}% | ||
5272 | \else | ||
5273 | \csname index\endcsname[\al@default@index]{% | ||
5274 | #2\al@one\al@two}% | ||
5275 | \fi | ||
5276 | \else% | ||
5277 | \ifdefined\alind@pipe | ||
5278 | \csname index\endcsname{#2\al@one\al@two|\alind@pipe}% | ||
5279 | \else | ||
5280 | \csname index\endcsname{#2\al@one\al@two}% | ||
5281 | \fi | ||
5282 | \fi% | ||
5283 | \fi% | ||
5284 | \egroup}} | ||
5285 | % \end{macrocode} | ||
5286 | % \end{macro} | ||
4863 | % \begin{macro}{\abjad} \cs{abjad}\marg{number} expresses its argument | 5287 | % \begin{macro}{\abjad} \cs{abjad}\marg{number} expresses its argument |
4864 | % in Arabic letters in accordance with the \arb[trans]{'abjad} | 5288 | % in Arabic letters in accordance with the \arb[trans]{'abjad} |
4865 | % arrangement of the alphabet. \meta{number} must be between 1 and | 5289 | % arrangement of the alphabet. \meta{number} must be between 1 and |
@@ -4872,13 +5296,13 @@ | |||
4872 | \ifdefined\abjad% | 5296 | \ifdefined\abjad% |
4873 | \RenewDocumentCommand{\abjad}{m}% | 5297 | \RenewDocumentCommand{\abjad}{m}% |
4874 | {\ifbool{al@rlmode}% | 5298 | {\ifbool{al@rlmode}% |
4875 | {\oline*{% | 5299 | {\aoline*{% |
4876 | \luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} | 5300 | \luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} |
4877 | {\luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} | 5301 | {\luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} |
4878 | \else% | 5302 | \else% |
4879 | \NewDocumentCommand{\abjad}{m}% | 5303 | \NewDocumentCommand{\abjad}{m}% |
4880 | {\ifbool{al@rlmode}% | 5304 | {\ifbool{al@rlmode}% |
4881 | {\oline*{% | 5305 | {\aoline*{% |
4882 | \luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} | 5306 | \luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} |
4883 | {\luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} | 5307 | {\luadirect{tex.sprint(arabluatex.abjadify(\luastring{#1}))}}} |
4884 | \fi} | 5308 | \fi} |
@@ -5016,14 +5440,37 @@ | |||
5016 | \NewDocumentEnvironment{arab@v@export}{O{} +b}{% | 5440 | \NewDocumentEnvironment{arab@v@export}{O{} +b}{% |
5017 | \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, | 5441 | \setkeys[al]{verse}[width, gutter, color, utf, delim, mode, |
5018 | metre]{#1} | 5442 | metre]{#1} |
5019 | \if@pkg@export\ifal@verse@export% | 5443 | \if@pkg@export |
5020 | \par | 5444 | \ifal@verse@export |
5021 | #2 | 5445 | \ifekd@state |
5022 | \luadirect{arabluatex.doexport("arabverse")} | 5446 | \begin{ekdverse}[width=\al@verse@twidth] |
5023 | \luadirect{tex.sprint(arabluatex.arbtoutf(\luastringN{#2}))} | 5447 | #2 |
5024 | \luadirect{arabluatex.doexport("no")} | 5448 | \end{ekdverse} |
5025 | \else\par#2\fi\else\par#2\fi | 5449 | \else |
5026 | }{\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 | }{} | ||
5027 | % \end{macrocode} | 5474 | % \end{macrocode} |
5028 | % \end{environment} | 5475 | % \end{environment} |
5029 | % \begin{macro}{\arbpardir} | 5476 | % \begin{macro}{\arbpardir} |
diff --git a/arabluatex.el b/arabluatex.el index 73bfcd6..5007675 100644 --- a/arabluatex.el +++ b/arabluatex.el | |||
@@ -1,29 +1,33 @@ | |||
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--2019 Robert Alessi | 5 | ;; Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | ;; Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | ;; Please send error reports and suggestions for improvements to Robert | 8 | ;; Permission to use, copy, modify, and distribute this software for |
8 | ;; Alessi <alessi@robertalessi.net> | 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. | ||
9 | 12 | ||
10 | ;; This program is free software: you can redistribute it and/or modify | 13 | ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
11 | ;; it under the terms of the GNU General Public License as published by | 14 | ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
12 | ;; the Free Software Foundation, either version 3 of the License, or | 15 | ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
13 | ;; (at your option) any later version. | 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. | ||
14 | 21 | ||
15 | ;; This program is distributed in the hope that it will be useful, but | 22 | ;; The author would like to express his grateful thanks to Arash |
16 | ;; WITHOUT ANY WARRANTY; without even the implied warranty of | 23 | ;; Esbati <arash@gnu.org> whose comments helped to improve this file |
17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 24 | ;; immensely. |
18 | ;; General Public License for more details. | ||
19 | 25 | ||
20 | ;; You should have received a copy of the GNU General Public License | 26 | ;; Please send error reports and suggestions for improvements to Robert |
21 | ;; along with this program. If not, see | 27 | ;; Alessi <alessi@robertalessi.net> |
22 | ;; <http://www.gnu.org/licenses/>. | ||
23 | 28 | ||
24 | (defvar LaTeX-arabluatex-preamble-options | 29 | (defvar LaTeX-arabluatex-preamble-options |
25 | '(;; | 30 | '(("voc") |
26 | ("voc") | ||
27 | ("fullvoc") | 31 | ("fullvoc") |
28 | ("novoc") | 32 | ("novoc") |
29 | ("trans") | 33 | ("trans") |
@@ -32,21 +36,17 @@ | |||
32 | 36 | ||
33 | (defun LaTeX-arabluatex-package-options () | 37 | (defun LaTeX-arabluatex-package-options () |
34 | "Prompt for package options for arabluatex package." | 38 | "Prompt for package options for arabluatex package." |
35 | (TeX-read-key-val t | 39 | (TeX-read-key-val t LaTeX-arabluatex-preamble-options)) |
36 | (append LaTeX-arabluatex-preamble-options))) | ||
37 | 40 | ||
38 | (defvar LaTeX-arabluatex-mode-options | 41 | (defvar LaTeX-arabluatex-mode-options |
39 | '(;; | 42 | '(("voc") |
40 | ("voc") | ||
41 | ("fullvoc") | 43 | ("fullvoc") |
42 | ("novoc") | 44 | ("novoc") |
43 | ("trans") | 45 | ("trans")) |
44 | ) | 46 | "List of local options for arabluatex macros.") |
45 | "Local options.") | ||
46 | 47 | ||
47 | (defvar LaTeX-arabluatex-key-val-options | 48 | (defvar LaTeX-arabluatex-key-val-options |
48 | '(;; | 49 | '(("mode" ("voc" "fullvoc" "novoc" "trans")) |
49 | ("mode" ("voc" "fullvoc" "novoc" "trans")) | ||
50 | ("width") | 50 | ("width") |
51 | ("gutter") | 51 | ("gutter") |
52 | ("metre") | 52 | ("metre") |
@@ -56,23 +56,31 @@ | |||
56 | ("export" ("true" "false"))) | 56 | ("export" ("true" "false"))) |
57 | "Key=value options for arabverse environment.") | 57 | "Key=value options for arabverse environment.") |
58 | 58 | ||
59 | (defvar LaTeX-arabluatex-color-options | ||
60 | '(())) | ||
61 | |||
62 | (defvar LaTeX-arabluatex-outfile-options | 59 | (defvar LaTeX-arabluatex-outfile-options |
63 | '(;; | 60 | '(("newline")) |
64 | ("newline")) | 61 | "List of options for outfile command.") |
65 | "Option for outfile command.") | ||
66 | 62 | ||
67 | (defvar LaTeX-arabluatex-arbmark-options | 63 | (defvar LaTeX-arabluatex-arbmark-options |
68 | '(;; | 64 | '(("rl") |
69 | ("rl") | ||
70 | ("lr")) | 65 | ("lr")) |
71 | "Option for arbmark command.") | 66 | "List of options for arbmark command.") |
67 | |||
68 | (defvar LaTeX-arabluatex-arind-options | ||
69 | '(("index") | ||
70 | ("root" | ||
71 | ("1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15")) | ||
72 | ("form") | ||
73 | ("pipe")) | ||
74 | "Option for arind command.") | ||
72 | 75 | ||
73 | (TeX-add-style-hook | 76 | (TeX-add-style-hook |
74 | "arabluatex" | 77 | "arabluatex" |
75 | (lambda () | 78 | (lambda () |
79 | ;; Run the style hook for loaded packages: | ||
80 | (TeX-run-style-hooks "xcolor") | ||
81 | ;; Folding features: | ||
82 | (add-to-list (make-local-variable 'LaTeX-fold-macro-spec-list) | ||
83 | '("[i]" ("arind")) t) | ||
76 | ;; This package relies on lualatex, so check for it: | 84 | ;; This package relies on lualatex, so check for it: |
77 | (TeX-check-engine-add-engines 'luatex) | 85 | (TeX-check-engine-add-engines 'luatex) |
78 | (TeX-add-symbols | 86 | (TeX-add-symbols |
@@ -93,45 +101,78 @@ | |||
93 | "uc" | 101 | "uc" |
94 | "prname" | 102 | "prname" |
95 | "txarb" | 103 | "txarb" |
96 | '("arb" [ (TeX-arg-eval completing-read "Mode: " | 104 | '("arb" [ TeX-arg-eval completing-read |
97 | LaTeX-arabluatex-mode-options) ] | 105 | (TeX-argument-prompt nil nil "Mode") |
106 | LaTeX-arabluatex-mode-options ] | ||
98 | t) | 107 | t) |
99 | '("arbcolor" [ (TeX-arg-eval completing-read "Color: " | 108 | '("arbcolor" [ TeX-arg-eval completing-read |
100 | LaTeX-arabluatex-color-options) ] | 109 | (TeX-argument-prompt nil nil "Color") |
110 | (LaTeX-xcolor-definecolor-list) ] | ||
101 | t) | 111 | t) |
102 | '("arbmark" [ (TeX-arg-eval completing-read "Option: " | 112 | '("arbmark" [ TeX-arg-eval completing-read |
103 | LaTeX-arabluatex-arbmark-options) ] | 113 | (TeX-argument-prompt nil nil "Option") |
114 | LaTeX-arabluatex-arbmark-options ] | ||
104 | t) | 115 | t) |
105 | '("ArbOutFile" [ (TeX-arg-eval completing-read "Color: " | 116 | '("ArbOutFile" [ TeX-arg-eval completing-read |
106 | LaTeX-arabluatex-outfile-options) ] | 117 | (TeX-argument-prompt nil nil "Option") |
118 | LaTeX-arabluatex-outfile-options ] | ||
107 | t) | 119 | t) |
108 | '("ArbOutFile*" [ (TeX-arg-eval completing-read "Option: " | 120 | '("ArbOutFile*" [ TeX-arg-eval completing-read |
109 | LaTeX-arabluatex-outfile-options) ] | 121 | (TeX-argument-prompt nil nil "Option") |
122 | LaTeX-arabluatex-outfile-options ] | ||
110 | t) | 123 | t) |
124 | '("arind" [ TeX-arg-key-val LaTeX-arabluatex-arind-options ] | ||
125 | TeX-arg-index) | ||
111 | "SetHemistichDelim" | 126 | "SetHemistichDelim" |
112 | '("bayt" 2) | 127 | '("bayt" 2) |
128 | '("bayt+" 2) | ||
113 | "abjad" | 129 | "abjad" |
130 | '("SetArbNumbers" "Indian or Arabic") | ||
114 | "arbnull" | 131 | "arbnull" |
115 | "abraces" | 132 | "abraces" |
116 | "LR" | 133 | "LR" |
117 | "RL" | 134 | "RL" |
118 | "LRmarginpar" | 135 | '("LRmarginpar" [ "Left margin text" ] "Text") |
119 | "LRfootnote" | 136 | '("LRfootnote" |
120 | "RLfootnote" | 137 | (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) |
138 | t) | ||
139 | '("RLfootnote" | ||
140 | (TeX-arg-conditional TeX-arg-footnote-number-p ([ "Number" ]) nil) | ||
141 | t) | ||
121 | "FixArbFtnmk" | 142 | "FixArbFtnmk" |
122 | "MkArbBreak" | 143 | "MkArbBreak" |
123 | '("newarbmark" 3) | 144 | '("newarbmark" 3) |
124 | '("setRL" 0) | 145 | '("setRL" 0) |
125 | '("setLR" 0)) | 146 | '("setLR" 0)) |
147 | |||
126 | (LaTeX-add-environments | 148 | (LaTeX-add-environments |
127 | '("arab" LaTeX-env-args | 149 | '("arab" LaTeX-env-args |
128 | [ (TeX-arg-eval completing-read "Mode: " | 150 | [ TeX-arg-eval completing-read |
129 | LaTeX-arabluatex-mode-options) ] | 151 | (TeX-argument-prompt nil nil "Mode") |
130 | 0) | 152 | LaTeX-arabluatex-mode-options ] |
153 | ) | ||
131 | "txarab" | 154 | "txarab" |
132 | "arabexport" | 155 | "arabexport" |
133 | '("arabverse" LaTeX-env-args | 156 | '("arabverse" LaTeX-env-args |
134 | [ TeX-arg-key-val LaTeX-arabluatex-key-val-options ] 0)) | 157 | [ TeX-arg-key-val LaTeX-arabluatex-key-val-options ] )) |
158 | |||
159 | ;; Fontification | ||
160 | (when (and (featurep 'font-latex) | ||
161 | (eq TeX-install-font-lock 'font-latex-setup)) | ||
162 | (font-latex-add-keywords '(("aemph" "{")) | ||
163 | 'italic-command) | ||
164 | (font-latex-add-keywords '(("LRmarginpar" "[{") | ||
165 | ("LRfootnote" "[{") | ||
166 | ("RLfootnote" "[{") | ||
167 | ("arind" "[{")) | ||
168 | 'reference) | ||
169 | (font-latex-add-keywords '(("SetTranslitFont" "{") | ||
170 | ("SetTranslitStyle" "{") | ||
171 | ("SetTranslitConvention" "{")) | ||
172 | 'function)) | ||
173 | ;; RefTeX support | ||
174 | (when (fboundp 'reftex-add-index-macros) | ||
175 | (reftex-add-index-macros '(("\\arind[]{*}" "" ?a "" nil t)))) | ||
135 | ) | 176 | ) |
136 | LaTeX-dialect) | 177 | LaTeX-dialect) |
137 | 178 | ||
diff --git a/arabluatex.ins b/arabluatex.ins index ea5a73e..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--2019 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. | |||
43 | This file is part of the `arabluatex' package | 40 | This file is part of the `arabluatex' package |
44 | 41 | ||
45 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX | 42 | ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX |
46 | Copyright (C) 2016--2019 Robert Alessi | 43 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
47 | 44 | Robert Alessi <alessi@robertalessi.net> | |
48 | Please send error reports and suggestions for improvements to Robert | 45 | |
49 | Alessi <alessi@robertalessi.net> | 46 | Permission to use, copy, modify, and distribute this software for any |
50 | 47 | purpose with or without fee is hereby granted, provided that the above | |
51 | This program is free software: you can redistribute it and/or modify | 48 | copyright notice and this permission notice appear in all copies. |
52 | it under the terms of the GNU General Public License as published by | 49 | |
53 | the Free Software Foundation, either version 3 of the License, or | 50 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
54 | (at your option) any later version. | 51 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
55 | 52 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
56 | This program is distributed in the hope that it will be useful, but | 53 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
57 | WITHOUT ANY WARRANTY; without even the implied warranty of | 54 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
58 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 55 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
59 | General Public License for more details. | 56 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
60 | 57 | ||
61 | You should have received a copy of the GNU General Public License | 58 | Please send error reports and suggestions for improvements to |
62 | along with this program. If not, see | 59 | Robert Alessi <alessi@robertalessi.net> |
63 | <http://www.gnu.org/licenses/>. | ||
64 | 60 | ||
65 | This release of 'arabluatex' consists of the following source files: | 61 | This release of 'arabluatex' consists of the following source files: |
66 | - arabluatex.ins | 62 | - arabluatex.ins |
diff --git a/arabluatex.lua b/arabluatex.lua index a91e211..114a569 100644 --- a/arabluatex.lua +++ b/arabluatex.lua | |||
@@ -2,24 +2,23 @@ | |||
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 -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2019 Robert Alessi | 5 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | Please send error reports and suggestions for improvements to Robert | 8 | Permission to use, copy, modify, and distribute this software for any |
8 | Alessi <alessi@robertalessi.net> | 9 | purpose with or without fee is hereby granted, provided that the above |
10 | copyright notice and this permission notice appear in all copies. | ||
9 | 11 | ||
10 | This program is free software: you can redistribute it and/or modify | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
11 | it under the terms of the GNU General Public License as published by | 13 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
12 | the Free Software Foundation, either version 3 of the License, or | 14 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
13 | (at your option) any later version. | 15 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
14 | 19 | ||
15 | This program is distributed in the hope that it will be useful, but | 20 | Please send error reports and suggestions for improvements to Robert |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of | 21 | Alessi <alessi@robertalessi.net> |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
18 | General Public License for more details. | ||
19 | |||
20 | You should have received a copy of the GNU General Public License | ||
21 | along with this program. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | --]] | 22 | --]] |
24 | 23 | ||
25 | arabluatex = {} | 24 | arabluatex = {} |
@@ -54,11 +53,26 @@ local cmd = lpeg.Cs(dblbkslash * ascii^1 * cmdstar^-1) | |||
54 | local rawcmd = lpeg.Cs(dblbkslash * ascii^1) | 53 | local rawcmd = lpeg.Cs(dblbkslash * ascii^1) |
55 | local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash) | 54 | local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash) |
56 | local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) | 55 | local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) |
56 | local cmdargsnobs = lpeg.Cs(spce^-1 * bcbracesii) | ||
57 | local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces) | 57 | local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces) |
58 | local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces) | 58 | local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces) |
59 | local arind = lpeg.Cs(dblbkslash * lpeg.P("arind") * spce^-1 * bsqbracketsii) | 59 | local arind = lpeg.Cs(dblbkslash * lpeg.P("arind") * spce^-1 * bsqbracketsii) |
60 | 60 | ||
61 | local function protectarb(str) | 61 | local 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 = { | |||
90 | local albrkcmds = { | 104 | local 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 | } |
99 | local brkcmds = {} | 113 | local brkcmds = {} |
100 | 114 | ||
@@ -120,13 +134,15 @@ function arabluatex.mkarbbreak(str, opt) | |||
120 | end | 134 | end |
121 | 135 | ||
122 | local function breakcmd(str) | 136 | local 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 |
171 | end | 187 | end |
172 | 188 | ||
173 | local function arbnum(str) | 189 | local indorarbnum = "Indian" |
190 | |||
191 | function arabluatex.setnums(opt) | ||
192 | if opt == "Indian" | ||
193 | then | ||
194 | indorarbnum = "Indian" | ||
195 | else | ||
196 | indorarbnum = "Arabic" | ||
197 | end | ||
198 | end | ||
199 | |||
200 | local 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 |
178 | end | 205 | end |
179 | 206 | ||
180 | local function indnum(str) | 207 | local 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 |
188 | end | 223 | end |
@@ -269,13 +304,23 @@ local function takeoutarb(str) | |||
269 | end | 304 | end |
270 | str = string.gsub(str, "(\\arb%s?)(%b{})", function(tag, body) | 305 | str = string.gsub(str, "(\\arb%s?)(%b{})", function(tag, body) |
271 | body = string.sub(body, 2, -2) | 306 | body = string.sub(body, 2, -2) |
272 | return string.format("%s", body) | 307 | return string.format("\\al@brk{%s{%s}}", tag, body) |
273 | end) | 308 | end) |
274 | str = string.gsub(str, "\\@rb", "\\arb") | 309 | str = string.gsub(str, "\\@rb", "\\arb") |
275 | str = "\\arb{"..str.."}" | 310 | str = "\\arb{"..str.."}" |
276 | return str | 311 | return str |
277 | end | 312 | end |
278 | 313 | ||
314 | -- I owe this function to M. Krüger and U. Fischer. Thank to them both. | ||
315 | local function getrenderer() | ||
316 | local a = nil | ||
317 | if font.getfont(font.current()).specification | ||
318 | then | ||
319 | a=font.getfont(font.current()).specification.features.normal.mode | ||
320 | end | ||
321 | return a | ||
322 | end | ||
323 | |||
279 | local function voc(str, rules) | 324 | local function voc(str, rules) |
280 | str = string.gsub(str, "\\arb(%b{})", function(inside) | 325 | str = string.gsub(str, "\\arb(%b{})", function(inside) |
281 | inside = string.sub(inside, 2, -2) | 326 | inside = string.sub(inside, 2, -2) |
@@ -311,8 +356,16 @@ local function voc(str, rules) | |||
311 | for i = 1,#shortv do | 356 | for i = 1,#shortv do |
312 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) | 357 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) |
313 | end | 358 | end |
314 | for i = 1,#punctuation do | 359 | if getrenderer() == "harf" |
315 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 360 | then |
361 | for i = 1,#punctuationhb do | ||
362 | inside = string.gsub(inside, punctuationhb[i].a, | ||
363 | punctuationhb[i].b) | ||
364 | end | ||
365 | else | ||
366 | for i = 1,#punctuation do | ||
367 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
368 | end | ||
316 | end | 369 | end |
317 | for i = 1,#null do | 370 | for i = 1,#null do |
318 | inside = string.gsub(inside, null[i].a, null[i].b) | 371 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -347,8 +400,16 @@ local function voceasy(str) | |||
347 | for i = 1,#shortv do | 400 | for i = 1,#shortv do |
348 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) | 401 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) |
349 | end | 402 | end |
350 | for i = 1,#punctuation do | 403 | if getrenderer() == "harf" |
351 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 404 | then |
405 | for i = 1,#punctuationhb do | ||
406 | inside = string.gsub(inside, punctuationhb[i].a, | ||
407 | punctuationhb[i].b) | ||
408 | end | ||
409 | else | ||
410 | for i = 1,#punctuation do | ||
411 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
412 | end | ||
352 | end | 413 | end |
353 | for i = 1,#null do | 414 | for i = 1,#null do |
354 | inside = string.gsub(inside, null[i].a, null[i].b) | 415 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -400,8 +461,16 @@ local function fullvoc(str, rules) | |||
400 | for i = 1,#shortv do | 461 | for i = 1,#shortv do |
401 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) | 462 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) |
402 | end | 463 | end |
403 | for i = 1,#punctuation do | 464 | if getrenderer() == "harf" |
404 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 465 | then |
466 | for i = 1,#punctuationhb do | ||
467 | inside = string.gsub(inside, punctuationhb[i].a, | ||
468 | punctuationhb[i].b) | ||
469 | end | ||
470 | else | ||
471 | for i = 1,#punctuation do | ||
472 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
473 | end | ||
405 | end | 474 | end |
406 | for i = 1,#null do | 475 | for i = 1,#null do |
407 | inside = string.gsub(inside, null[i].a, null[i].b) | 476 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -448,8 +517,16 @@ local function fullvoceasy(str, rules) | |||
448 | for i = 1,#shortv do | 517 | for i = 1,#shortv do |
449 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) | 518 | inside = string.gsub(inside, shortv[i].a, shortv[i].b) |
450 | end | 519 | end |
451 | for i = 1,#punctuation do | 520 | if getrenderer() == "harf" |
452 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 521 | then |
522 | for i = 1,#punctuationhb do | ||
523 | inside = string.gsub(inside, punctuationhb[i].a, | ||
524 | punctuationhb[i].b) | ||
525 | end | ||
526 | else | ||
527 | for i = 1,#punctuation do | ||
528 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
529 | end | ||
453 | end | 530 | end |
454 | for i = 1,#null do | 531 | for i = 1,#null do |
455 | inside = string.gsub(inside, null[i].a, null[i].b) | 532 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -484,8 +561,16 @@ local function novoc(str) | |||
484 | for i = 1,#shortvnv do | 561 | for i = 1,#shortvnv do |
485 | inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) | 562 | inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) |
486 | end | 563 | end |
487 | for i = 1,#punctuation do | 564 | if getrenderer() == "harf" |
488 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 565 | then |
566 | for i = 1,#punctuationhb do | ||
567 | inside = string.gsub(inside, punctuationhb[i].a, | ||
568 | punctuationhb[i].b) | ||
569 | end | ||
570 | else | ||
571 | for i = 1,#punctuation do | ||
572 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
573 | end | ||
489 | end | 574 | end |
490 | for i = 1,#null do | 575 | for i = 1,#null do |
491 | inside = string.gsub(inside, null[i].a, null[i].b) | 576 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -520,8 +605,16 @@ local function novoceasy(str) | |||
520 | for i = 1,#shortvnv do | 605 | for i = 1,#shortvnv do |
521 | inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) | 606 | inside = string.gsub(inside, shortvnv[i].a, shortvnv[i].b) |
522 | end | 607 | end |
523 | for i = 1,#punctuation do | 608 | if getrenderer() == "harf" |
524 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | 609 | then |
610 | for i = 1,#punctuationhb do | ||
611 | inside = string.gsub(inside, punctuationhb[i].a, | ||
612 | punctuationhb[i].b) | ||
613 | end | ||
614 | else | ||
615 | for i = 1,#punctuation do | ||
616 | inside = string.gsub(inside, punctuation[i].a, punctuation[i].b) | ||
617 | end | ||
525 | end | 618 | end |
526 | for i = 1,#null do | 619 | for i = 1,#null do |
527 | inside = string.gsub(inside, null[i].a, null[i].b) | 620 | inside = string.gsub(inside, null[i].a, null[i].b) |
@@ -532,11 +625,19 @@ local function novoceasy(str) | |||
532 | return str | 625 | return str |
533 | end | 626 | end |
534 | 627 | ||
535 | local function transdmg(str, rules) | 628 | local function transdmg(str, mode, rules) |
536 | str = string.gsub(str, "\\arb(%b{})", function(inside) | 629 | str = string.gsub(str, "\\arb(%b{})", function(inside) |
537 | inside = string.sub(inside, 2, -2) | 630 | inside = string.sub(inside, 2, -2) |
538 | for i = 1,#hamzatrdmg do | 631 | if mode == "dmg" |
539 | 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 | ||
540 | end | 641 | end |
541 | for i = 1,#tanwintrdmg do | 642 | for i = 1,#tanwintrdmg do |
542 | inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) | 643 | inside = string.gsub(inside, tanwintrdmg[i].a, tanwintrdmg[i].b) |
@@ -567,7 +668,7 @@ local function transdmg(str, rules) | |||
567 | for i = 1,#nulltr do | 668 | for i = 1,#nulltr do |
568 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) | 669 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) |
569 | end | 670 | end |
570 | return string.format("%s", inside) | 671 | return string.format("\\altrfont{}%s", inside) |
571 | end) | 672 | end) |
572 | return str | 673 | return str |
573 | end | 674 | end |
@@ -605,7 +706,7 @@ local function transloc(str) | |||
605 | for i = 1,#nulltr do | 706 | for i = 1,#nulltr do |
606 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) | 707 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) |
607 | end | 708 | end |
608 | return string.format("%s", inside) | 709 | return string.format("\\altrfont{}%s", inside) |
609 | end) | 710 | end) |
610 | return str | 711 | return str |
611 | end | 712 | end |
@@ -640,7 +741,7 @@ local function transarabica(str) | |||
640 | for i = 1,#nulltr do | 741 | for i = 1,#nulltr do |
641 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) | 742 | inside = string.gsub(inside, nulltr[i].a, nulltr[i].b) |
642 | end | 743 | end |
643 | return string.format("%s", inside) | 744 | return string.format("\\altrfont{}%s", inside) |
644 | end) | 745 | end) |
645 | return str | 746 | return str |
646 | end | 747 | end |
@@ -660,11 +761,11 @@ local function processarind(str, mode) | |||
660 | str = gsub(str, arind * bcbraces, function(tag, arg) | 761 | str = gsub(str, arind * bcbraces, function(tag, arg) |
661 | arg = string.sub(arg, 2, -2) | 762 | arg = string.sub(arg, 2, -2) |
662 | if mode == "trans" then | 763 | if mode == "trans" then |
663 | return string.format("%s{\\txtrans{%s}}", tag, arg) | 764 | return string.format("%s{%s@\\txtrans{%s}}", tag, arg, arg) |
664 | else | 765 | else |
665 | arg = novoc(arg) | 766 | arg = novoc(arg) |
666 | arg = string.gsub(arg, "\\arabicfont%s?{}", "") | 767 | arg = string.gsub(arg, "\\arabicfont%s?{}", "") |
667 | return string.format("%s{\\txarb{%s}}", tag, arg) | 768 | return string.format("%s{%s@\\txarb{%s}}", tag, arg, arg) |
668 | end | 769 | end |
669 | end) | 770 | end) |
670 | return str | 771 | return str |
@@ -724,7 +825,7 @@ local function processarbtoutf(str) | |||
724 | bbody = string.sub(bbody, 2, -2) | 825 | bbody = string.sub(bbody, 2, -2) |
725 | if tonumber(bbody) ~= nil then | 826 | if tonumber(bbody) ~= nil then |
726 | bbody = arabluatex.abjadify(bbody) | 827 | bbody = arabluatex.abjadify(bbody) |
727 | return string.format("\\oline*{\\arb[novoc]{%s}}", bbody) | 828 | return string.format("\\aoline*{\\arb[novoc]{%s}}", bbody) |
728 | else | 829 | else |
729 | return string.format("%s{%s}", btag, bbody) | 830 | return string.format("%s{%s}", btag, bbody) |
730 | end | 831 | end |
@@ -739,16 +840,16 @@ local function processarbtoutf(str) | |||
739 | end) | 840 | end) |
740 | return string.format("%s{%s}", tag, body) | 841 | return string.format("%s{%s}", tag, body) |
741 | end) | 842 | end) |
742 | 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) |
743 | argi = string.sub(argi, 2, -2) | 844 | argi = string.sub(argi, 2, -2) |
744 | argii = string.sub(argii, 2, -2) | 845 | argii = string.sub(argii, 2, -2) |
745 | argiii = string.sub(argiii, 2, -2) | 846 | argiii = string.sub(argiii, 2, -2) |
746 | 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) |
747 | end) | 848 | end) |
748 | 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) |
749 | argi = string.sub(argi, 2, -2) | 850 | argi = string.sub(argi, 2, -2) |
750 | argii = string.sub(argii, 2, -2) | 851 | argii = string.sub(argii, 2, -2) |
751 | 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) |
752 | end) | 853 | end) |
753 | str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body) | 854 | str = string.gsub(str, "(\\prname)%s?(%b{})", function(tag, body) |
754 | body = string.sub(body, 2, -2) | 855 | body = string.sub(body, 2, -2) |
@@ -841,6 +942,7 @@ function arabluatex.closestream() | |||
841 | local o = io.open(tex.jobname..utffilesuffix..".tex", "w") | 942 | local o = io.open(tex.jobname..utffilesuffix..".tex", "w") |
842 | local t = f:read("*a") | 943 | local t = f:read("*a") |
843 | t = string.gsub(t, "\\arabicfont{}", "") | 944 | t = string.gsub(t, "\\arabicfont{}", "") |
945 | t = string.gsub(t, "\\altrfont{}", "") | ||
844 | t = string.gsub(t, "\\par ", "\n\n") | 946 | t = string.gsub(t, "\\par ", "\n\n") |
845 | t = string.gsub(t, "(\\@al@ob)", "{") | 947 | t = string.gsub(t, "(\\@al@ob)", "{") |
846 | t = string.gsub(t, "(\\@al@cb@sp)", "} ") | 948 | t = string.gsub(t, "(\\@al@cb@sp)", "} ") |
@@ -1003,8 +1105,8 @@ function arabluatex.processtrans(str, mode, rules, scheme) | |||
1003 | if scheme == "buckwalter" then | 1105 | if scheme == "buckwalter" then |
1004 | str = processbuckw(str) | 1106 | str = processbuckw(str) |
1005 | end | 1107 | end |
1006 | if mode == "dmg" then | 1108 | if mode == "dmg" or mode == "dmg+" then |
1007 | str = transdmg(str, rules) | 1109 | str = transdmg(str, mode, rules) |
1008 | elseif mode == "loc" then | 1110 | elseif mode == "loc" then |
1009 | str = transloc(str) | 1111 | str = transloc(str) |
1010 | elseif mode == "arabica" then | 1112 | elseif mode == "arabica" then |
@@ -1080,6 +1182,7 @@ function arabluatex.uc(str) | |||
1080 | body = string.sub(body, 2, -2) | 1182 | body = string.sub(body, 2, -2) |
1081 | return string.format("%s", body) | 1183 | return string.format("%s", body) |
1082 | end) | 1184 | end) |
1185 | str = string.gsub(str, "\\altrfont%s?{}", "") | ||
1083 | str = string.gsub(str, "{", "\\@al@ob") | 1186 | str = string.gsub(str, "{", "\\@al@ob") |
1084 | str = string.gsub(str, "} ", "\\@al@cb@sp ") | 1187 | str = string.gsub(str, "} ", "\\@al@cb@sp ") |
1085 | str = string.gsub(str, "}", "\\@al@cb") | 1188 | str = string.gsub(str, "}", "\\@al@cb") |
@@ -1134,6 +1237,7 @@ function arabluatex.uc(str) | |||
1134 | str = string.gsub(str, "\\@al@ob", "{") | 1237 | str = string.gsub(str, "\\@al@ob", "{") |
1135 | str = string.gsub(str, "\\@al@cb@sp ", "} ") | 1238 | str = string.gsub(str, "\\@al@cb@sp ", "} ") |
1136 | str = string.gsub(str, "\\@al@cb", "}") | 1239 | str = string.gsub(str, "\\@al@cb", "}") |
1240 | str = "\\altrfont{}"..str | ||
1137 | if export_utf == "yes" then | 1241 | if export_utf == "yes" then |
1138 | tofile = str | 1242 | tofile = str |
1139 | arabluatex.tooutfile(tofile) | 1243 | arabluatex.tooutfile(tofile) |
@@ -1173,8 +1277,14 @@ function arabluatex.abjadify(n) | |||
1173 | end | 1277 | end |
1174 | 1278 | ||
1175 | function arabluatex.abraces(str) | 1279 | function arabluatex.abraces(str) |
1176 | if tex.textdir == "TRT" then | 1280 | if tex.textdir == "TRT" |
1177 | str = "\\}"..str.."\\{" | 1281 | then |
1282 | if getrenderer() == "harf" | ||
1283 | then | ||
1284 | str = "\\{"..str.."\\}" | ||
1285 | else | ||
1286 | str = "\\}"..str.."\\{" | ||
1287 | end | ||
1178 | elseif tex.textdir == "TLT" then | 1288 | elseif tex.textdir == "TLT" then |
1179 | str = "\\{"..str.."\\}" | 1289 | str = "\\{"..str.."\\}" |
1180 | end | 1290 | end |
@@ -1183,12 +1293,12 @@ end | |||
1183 | 1293 | ||
1184 | function arabluatex.aemph(str, opt) | 1294 | function arabluatex.aemph(str, opt) |
1185 | if tex.textdir == "TRT" then | 1295 | if tex.textdir == "TRT" then |
1186 | str = "\\oline{\\textdir TRT{}"..str.."}" | 1296 | str = "\\aoline{\\textdir TRT{}"..str.."}" |
1187 | elseif tex.textdir == "TLT" then | 1297 | elseif tex.textdir == "TLT" then |
1188 | if opt == "over" then | 1298 | if opt == "over" then |
1189 | str = "\\oline{"..str.."}" | 1299 | str = "\\aoline{"..str.."}" |
1190 | else | 1300 | else |
1191 | str = "\\uline{"..str.."}" | 1301 | str = "\\auline{"..str.."}" |
1192 | end | 1302 | end |
1193 | end | 1303 | end |
1194 | return str | 1304 | return str |
@@ -1197,7 +1307,9 @@ end | |||
1197 | function arabluatex.ayah(str) | 1307 | function arabluatex.ayah(str) |
1198 | if tonumber(str) ~= nil and str.len(str) < 4 then | 1308 | if tonumber(str) ~= nil and str.len(str) < 4 then |
1199 | if tex.textdir == "TRT" then | 1309 | if tex.textdir == "TRT" then |
1200 | 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").."}" | ||
1201 | elseif tex.textdir == "TLT" then | 1313 | elseif tex.textdir == "TLT" then |
1202 | str = "\\arb[trans]{("..str..")}" | 1314 | str = "\\arb[trans]{("..str..")}" |
1203 | end | 1315 | end |
diff --git a/arabluatex_fullvoc.lua b/arabluatex_fullvoc.lua index d5ca11a..7483734 100644 --- a/arabluatex_fullvoc.lua +++ b/arabluatex_fullvoc.lua | |||
@@ -2,24 +2,23 @@ | |||
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 -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2019 Robert Alessi | 5 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | Please send error reports and suggestions for improvements to Robert | 8 | Permission to use, copy, modify, and distribute this software for any |
8 | Alessi <alessi@robertalessi.net> | 9 | purpose with or without fee is hereby granted, provided that the above |
10 | copyright notice and this permission notice appear in all copies. | ||
9 | 11 | ||
10 | This program is free software: you can redistribute it and/or modify | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
11 | it under the terms of the GNU General Public License as published by | 13 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
12 | the Free Software Foundation, either version 3 of the License, or | 14 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
13 | (at your option) any later version. | 15 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
14 | 19 | ||
15 | This program is distributed in the hope that it will be useful, but | 20 | Please send error reports and suggestions for improvements to Robert |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of | 21 | Alessi <alessi@robertalessi.net> |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
18 | General Public License for more details. | ||
19 | |||
20 | You should have received a copy of the GNU General Public License | ||
21 | along with this program. If not, see | ||
22 | <http://www.gnu.org/licenses/>. | ||
23 | --]] | 22 | --]] |
24 | 23 | ||
25 | hamzafv = { | 24 | hamzafv = { |
@@ -39,18 +38,18 @@ hamzafv = { | |||
39 | {a="i\"'", b="إ"}, | 38 | {a="i\"'", b="إ"}, |
40 | {a="y\"'", b="ئ"}, | 39 | {a="y\"'", b="ئ"}, |
41 | -- moved below (end of 'final' section) | 40 | -- moved below (end of 'final' section) |
42 | -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, | 41 | {a="ؤ([^uaiUAI])", b="ؤْ%1"}, |
43 | -- {a="ؤ(%p*)$", b="ؤْ%1"}, | 42 | {a="ؤ(%p*)$", b="ؤْ%1"}, |
44 | -- {a="ؤ(%p*%s)", b="ؤْ%1"}, | 43 | {a="ؤ(%p*%s)", b="ؤْ%1"}, |
45 | -- {a="أ([^uaiUAI])", b="أْ%1"}, | 44 | {a="أ([^uaiUAI])", b="أْ%1"}, |
46 | -- {a="أ(%p*)$", b="أْ%1"}, | 45 | {a="أ(%p*)$", b="أْ%1"}, |
47 | -- {a="أ(%p*%s)", b="أْ%1"}, | 46 | {a="أ(%p*%s)", b="أْ%1"}, |
48 | -- {a="ئ([^uaiUAI])", b="ئْ%1"}, | 47 | {a="ئ([^uaiUAI])", b="ئْ%1"}, |
49 | -- {a="ئ(%p*)$", b="ئْ%1"}, | 48 | {a="ئ(%p*)$", b="ئْ%1"}, |
50 | -- {a="ئ(%p*%s)", b="ئْ%1"}, | 49 | {a="ئ(%p*%s)", b="ئْ%1"}, |
51 | -- {a="ء([^uaiUAI])", b="ءْ%1"}, | 50 | {a="ء([^uaiUAI])", b="ءْ%1"}, |
52 | -- {a="ء(%p*)$", b="ءْ%1"}, | 51 | {a="ء(%p*)$", b="ءْ%1"}, |
53 | -- {a="ء(%p*%s)", b="ءْ%1"}, | 52 | {a="ء(%p*%s)", b="ءْ%1"}, |
54 | -- hamza takes tašdīd too | 53 | -- hamza takes tašdīd too |
55 | {a="''([Uu])", b="ؤؤ%1"}, | 54 | {a="''([Uu])", b="ؤؤ%1"}, |
56 | {a="''([Aa])", b="أأ%1"}, | 55 | {a="''([Aa])", b="أأ%1"}, |
@@ -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 |
@@ -133,19 +132,21 @@ hamzafv = { | |||
133 | {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, | 132 | {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, |
134 | {a="(i)(')(%p*)$", b="%1ئْ%3"}, | 133 | {a="(i)(')(%p*)$", b="%1ئْ%3"}, |
135 | {a="(i)(')(%p*%s)", b="%1ئْ%3"}, | 134 | {a="(i)(')(%p*%s)", b="%1ئْ%3"}, |
135 | -- the following was wrong for it broke the taḫfīfu 'l-hamzati | ||
136 | -- (look into this later): | ||
136 | -- moved here from above: | 137 | -- moved here from above: |
137 | {a="ؤ([^uaiUAI])", b="ؤْ%1"}, | 138 | -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, |
138 | {a="ؤ(%p*)$", b="ؤْ%1"}, | 139 | -- {a="ؤ(%p*)$", b="ؤْ%1"}, |
139 | {a="ؤ(%p*%s)", b="ؤْ%1"}, | 140 | -- {a="ؤ(%p*%s)", b="ؤْ%1"}, |
140 | {a="أ([^uaiUAI])", b="أْ%1"}, | 141 | -- {a="أ([^uaiUAI])", b="أْ%1"}, |
141 | {a="أ(%p*)$", b="أْ%1"}, | 142 | -- {a="أ(%p*)$", b="أْ%1"}, |
142 | {a="أ(%p*%s)", b="أْ%1"}, | 143 | -- {a="أ(%p*%s)", b="أْ%1"}, |
143 | {a="ئ([^uaiUAI])", b="ئْ%1"}, | 144 | -- {a="ئ([^uaiUAI])", b="ئْ%1"}, |
144 | {a="ئ(%p*)$", b="ئْ%1"}, | 145 | -- {a="ئ(%p*)$", b="ئْ%1"}, |
145 | {a="ئ(%p*%s)", b="ئْ%1"}, | 146 | -- {a="ئ(%p*%s)", b="ئْ%1"}, |
146 | {a="ء([^uaiUAI])", b="ءْ%1"}, | 147 | -- {a="ء([^uaiUAI])", b="ءْ%1"}, |
147 | {a="ء(%p*)$", b="ءْ%1"}, | 148 | -- {a="ء(%p*)$", b="ءْ%1"}, |
148 | {a="ء(%p*%s)", b="ءْ%1"}, | 149 | -- {a="ء(%p*%s)", b="ءْ%1"}, |
149 | -- middle | 150 | -- middle |
150 | {a="([UIwy])(')", b="%1ء"}, --new | 151 | {a="([UIwy])(')", b="%1ء"}, --new |
151 | -- {a="([Iy])(')", b="%1ئ"}, --included in the above line | 152 | -- {a="([Iy])(')", b="%1ئ"}, --included in the above line |
@@ -187,18 +188,18 @@ hamzafveasy = { -- differences marked below with 'easy' | |||
187 | {a="i\"'", b="إ"}, | 188 | {a="i\"'", b="إ"}, |
188 | {a="y\"'", b="ئ"}, | 189 | {a="y\"'", b="ئ"}, |
189 | -- moved below (end of 'final' section) | 190 | -- moved below (end of 'final' section) |
190 | -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, | 191 | {a="ؤ([^uaiUAI])", b="ؤْ%1"}, |
191 | -- {a="ؤ(%p*)$", b="ؤْ%1"}, | 192 | {a="ؤ(%p*)$", b="ؤْ%1"}, |
192 | -- {a="ؤ(%p*%s)", b="ؤْ%1"}, | 193 | {a="ؤ(%p*%s)", b="ؤْ%1"}, |
193 | -- {a="أ([^uaiUAI])", b="أْ%1"}, | 194 | {a="أ([^uaiUAI])", b="أْ%1"}, |
194 | -- {a="أ(%p*)$", b="أْ%1"}, | 195 | {a="أ(%p*)$", b="أْ%1"}, |
195 | -- {a="أ(%p*%s)", b="أْ%1"}, | 196 | {a="أ(%p*%s)", b="أْ%1"}, |
196 | -- {a="ئ([^uaiUAI])", b="ئْ%1"}, | 197 | {a="ئ([^uaiUAI])", b="ئْ%1"}, |
197 | -- {a="ئ(%p*)$", b="ئْ%1"}, | 198 | {a="ئ(%p*)$", b="ئْ%1"}, |
198 | -- {a="ئ(%p*%s)", b="ئْ%1"}, | 199 | {a="ئ(%p*%s)", b="ئْ%1"}, |
199 | -- {a="ء([^uaiUAI])", b="ءْ%1"}, | 200 | {a="ء([^uaiUAI])", b="ءْ%1"}, |
200 | -- {a="ء(%p*)$", b="ءْ%1"}, | 201 | {a="ء(%p*)$", b="ءْ%1"}, |
201 | -- {a="ء(%p*%s)", b="ءْ%1"}, | 202 | {a="ء(%p*%s)", b="ءْ%1"}, |
202 | -- hamza takes tašdīd too | 203 | -- hamza takes tašdīd too |
203 | {a="''([Uu])", b="ؤؤ%1"}, | 204 | {a="''([Uu])", b="ؤؤ%1"}, |
204 | {a="''([Aa])", b="أأ%1"}, | 205 | {a="''([Aa])", b="أأ%1"}, |
@@ -254,7 +255,7 @@ hamzafveasy = { -- differences marked below with 'easy' | |||
254 | -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) | 255 | -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) |
255 | -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new | 256 | -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new |
256 | -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new | 257 | -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new |
257 | {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, | 258 | {a="(mi)(%')(a[TtH])", b="%1ائ%3"}, |
258 | {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, | 259 | {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, |
259 | -- easy (begin) | 260 | -- easy (begin) |
260 | -- 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 |
@@ -293,19 +294,21 @@ hamzafveasy = { -- differences marked below with 'easy' | |||
293 | {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, | 294 | {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, |
294 | {a="(i)(')(%p*)$", b="%1ئْ%3"}, | 295 | {a="(i)(')(%p*)$", b="%1ئْ%3"}, |
295 | {a="(i)(')(%p*%s)", b="%1ئْ%3"}, | 296 | {a="(i)(')(%p*%s)", b="%1ئْ%3"}, |
297 | -- the following was wrong for it broke the taḫfīfu 'l-hamzati | ||
298 | -- (look into this later): | ||
296 | -- moved here from above: | 299 | -- moved here from above: |
297 | {a="ؤ([^uaiUAI])", b="ؤْ%1"}, | 300 | -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, |
298 | {a="ؤ(%p*)$", b="ؤْ%1"}, | 301 | -- {a="ؤ(%p*)$", b="ؤْ%1"}, |
299 | {a="ؤ(%p*%s)", b="ؤْ%1"}, | 302 | -- {a="ؤ(%p*%s)", b="ؤْ%1"}, |
300 | {a="أ([^uaiUAI])", b="أْ%1"}, | 303 | -- {a="أ([^uaiUAI])", b="أْ%1"}, |
301 | {a="أ(%p*)$", b="أْ%1"}, | 304 | -- {a="أ(%p*)$", b="أْ%1"}, |
302 | {a="أ(%p*%s)", b="أْ%1"}, | 305 | -- {a="أ(%p*%s)", b="أْ%1"}, |
303 | {a="ئ([^uaiUAI])", b="ئْ%1"}, | 306 | -- {a="ئ([^uaiUAI])", b="ئْ%1"}, |
304 | {a="ئ(%p*)$", b="ئْ%1"}, | 307 | -- {a="ئ(%p*)$", b="ئْ%1"}, |
305 | {a="ئ(%p*%s)", b="ئْ%1"}, | 308 | -- {a="ئ(%p*%s)", b="ئْ%1"}, |
306 | {a="ء([^uaiUAI])", b="ءْ%1"}, | 309 | -- {a="ء([^uaiUAI])", b="ءْ%1"}, |
307 | {a="ء(%p*)$", b="ءْ%1"}, | 310 | -- {a="ء(%p*)$", b="ءْ%1"}, |
308 | {a="ء(%p*%s)", b="ءْ%1"}, | 311 | -- {a="ء(%p*%s)", b="ءْ%1"}, |
309 | -- | 312 | -- |
310 | -- middle | 313 | -- middle |
311 | {a="([Uw])(')", b="%1ء"}, --new | 314 | {a="([Uw])(')", b="%1ء"}, --new |
@@ -347,9 +350,9 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) | |||
347 | {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, | 350 | {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, |
348 | {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 351 | {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
349 | {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 352 | {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
350 | {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, | 353 | {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, |
351 | -- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new | 354 | -- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new |
352 | {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, | 355 | {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, |
353 | {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, | 356 | {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, |
354 | -- assimilations (end) | 357 | -- assimilations (end) |
355 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, | 358 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, |
@@ -359,9 +362,9 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) | |||
359 | {a="(B)%-?(\"aN)", b="%1"}, | 362 | {a="(B)%-?(\"aN)", b="%1"}, |
360 | {a="%-?(\"aN)(_A)", b="ى"}, | 363 | {a="%-?(\"aN)(_A)", b="ى"}, |
361 | {a="%-?(\"aN)(Y)", b="ى"}, | 364 | {a="%-?(\"aN)(Y)", b="ى"}, |
362 | {a="(T)%-?(\"aN)", b="%1"}, | 365 | {a="([TH])%-?(\"aN)", b="%1"}, |
363 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new | 366 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new |
364 | {a="([^TA])%-?(\"aN)", b="%1ا"}, | 367 | {a="([^TAH])%-?(\"aN)", b="%1ا"}, |
365 | {a="%-?(\"iNI?)", b=""}, | 368 | {a="%-?(\"iNI?)", b=""}, |
366 | -- quoted tanwīn (end) | 369 | -- quoted tanwīn (end) |
367 | {a="%-?(uN)", b="ٌ"}, | 370 | {a="%-?(uN)", b="ٌ"}, |
@@ -369,15 +372,15 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) | |||
369 | -- needed by \arbcolor: | 372 | -- needed by \arbcolor: |
370 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, | 373 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, |
371 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, | 374 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, |
372 | {a="(O[%S]-TO)%-?(aN)", b="ً"}, | 375 | {a="(O[%S]-[TH]O)%-?(aN)", b="ً"}, |
373 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new | 376 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new |
374 | {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, | 377 | {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"}, |
375 | -- | 378 | -- |
376 | {a="%-?(aN)(_A)", b="ًى"}, | 379 | {a="%-?(aN)(_A)", b="ًى"}, |
377 | {a="%-?(aN)(Y)", b="ًى"}, | 380 | {a="%-?(aN)(Y)", b="ًى"}, |
378 | {a="(T)%-?(aN)", b="%1ً"}, | 381 | {a="([TH])%-?(aN)", b="%1ً"}, |
379 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new | 382 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new |
380 | {a="([^TA])%-?(aN)", b="%1ًا"}, | 383 | {a="([^TAH])%-?(aN)", b="%1ًا"}, |
381 | {a="%-?(iNI?)", b="ٍ"} | 384 | {a="%-?(iNI?)", b="ٍ"} |
382 | } | 385 | } |
383 | 386 | ||
@@ -401,9 +404,9 @@ tanwinfveasy = { -- no assimilations (see below) | |||
401 | --easy {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, | 404 | --easy {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, |
402 | --easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 405 | --easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
403 | --easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 406 | --easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
404 | --easy {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, | 407 | --easy {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, |
405 | --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 |
406 | --easy {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, | 409 | --easy {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, |
407 | --easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, | 410 | --easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, |
408 | -- assimilations (end) | 411 | -- assimilations (end) |
409 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, | 412 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="ٱ"}, |
@@ -413,9 +416,9 @@ tanwinfveasy = { -- no assimilations (see below) | |||
413 | {a="(B)%-?(\"aN)", b="%1"}, | 416 | {a="(B)%-?(\"aN)", b="%1"}, |
414 | {a="%-?(\"aN)(_A)", b="ى"}, | 417 | {a="%-?(\"aN)(_A)", b="ى"}, |
415 | {a="%-?(\"aN)(Y)", b="ى"}, | 418 | {a="%-?(\"aN)(Y)", b="ى"}, |
416 | {a="(T)%-?(\"aN)", b="%1"}, | 419 | {a="([TH])%-?(\"aN)", b="%1"}, |
417 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new | 420 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new |
418 | {a="([^TA])%-?(\"aN)", b="%1ا"}, | 421 | {a="([^TAH])%-?(\"aN)", b="%1ا"}, |
419 | {a="%-?(\"iNI?)", b=""}, | 422 | {a="%-?(\"iNI?)", b=""}, |
420 | -- quoted tanwīn (end) | 423 | -- quoted tanwīn (end) |
421 | {a="%-?(uN)", b="ٌ"}, | 424 | {a="%-?(uN)", b="ٌ"}, |
@@ -423,15 +426,15 @@ tanwinfveasy = { -- no assimilations (see below) | |||
423 | -- needed by \arbcolor: | 426 | -- needed by \arbcolor: |
424 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, | 427 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, |
425 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, | 428 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, |
426 | {a="(O[%S]-TO)%-?(aN)", b="ً"}, | 429 | {a="(O[%S]-[TH]O)%-?(aN)", b="ً"}, |
427 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new | 430 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new |
428 | {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, | 431 | {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"}, |
429 | -- | 432 | -- |
430 | {a="%-?(aN)(_A)", b="ًى"}, | 433 | {a="%-?(aN)(_A)", b="ًى"}, |
431 | {a="%-?(aN)(Y)", b="ًى"}, | 434 | {a="%-?(aN)(Y)", b="ًى"}, |
432 | {a="(T)%-?(aN)", b="%1ً"}, | 435 | {a="([TH])%-?(aN)", b="%1ً"}, |
433 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new | 436 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new |
434 | {a="([^TA])%-?(aN)", b="%1ًا"}, | 437 | {a="([^TAH])%-?(aN)", b="%1ًا"}, |
435 | {a="%-?(iNI?)", b="ٍ"} | 438 | {a="%-?(iNI?)", b="ٍ"} |
436 | } | 439 | } |
437 | 440 | ||
@@ -1003,6 +1006,7 @@ singlefv = { | |||
1003 | {a="w", b="و"}, | 1006 | {a="w", b="و"}, |
1004 | {a="y", b="ي"}, | 1007 | {a="y", b="ي"}, |
1005 | {a="T", b="ة"}, | 1008 | {a="T", b="ة"}, |
1009 | {a="H", b="ه"}, | ||
1006 | -- additional characters (begin) | 1010 | -- additional characters (begin) |
1007 | {a="p", b="پ"}, | 1011 | {a="p", b="پ"}, |
1008 | {a="v", b="ڤ"}, | 1012 | {a="v", b="ڤ"}, |
@@ -1038,6 +1042,7 @@ singlefveasy = { -- see the differences under 'easy' tag below | |||
1038 | {a="y", b="ي"}, | 1042 | {a="y", b="ي"}, |
1039 | {a="T", b="ة"}, | 1043 | {a="T", b="ة"}, |
1040 | -- additional characters (begin) | 1044 | -- additional characters (begin) |
1045 | {a="H", b="ه"}, | ||
1041 | {a="p", b="پ"}, | 1046 | {a="p", b="پ"}, |
1042 | {a="v", b="ڤ"}, | 1047 | {a="v", b="ڤ"}, |
1043 | {a="g", b="گ"}, | 1048 | {a="g", b="گ"}, |
diff --git a/arabluatex_novoc.lua b/arabluatex_novoc.lua index 5141861..1800655 100644 --- a/arabluatex_novoc.lua +++ b/arabluatex_novoc.lua | |||
@@ -2,24 +2,23 @@ | |||
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 -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2019 Robert Alessi | 5 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | Please send error reports and suggestions for improvements to Robert | 8 | Permission to use, copy, modify, and distribute this software for any |
8 | Alessi <alessi@robertalessi.net> | 9 | purpose with or without fee is hereby granted, provided that the above |
9 | 10 | copyright notice and this permission notice appear in all copies. | |
10 | This program is free software: you can redistribute it and/or modify | ||
11 | it under the terms of the GNU General Public License as published by | ||
12 | the Free Software Foundation, either version 3 of the License, or | ||
13 | (at your option) any later version. | ||
14 | 11 | ||
15 | This program is distributed in the hope that it will be useful, but | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
18 | General Public License for more details. | 15 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | 19 | ||
20 | You should have received a copy of the GNU General Public License | 20 | Please send error reports and suggestions for improvements to Robert |
21 | along with this program. If not, see | 21 | Alessi <alessi@robertalessi.net> |
22 | <http://www.gnu.org/licenses/>. | ||
23 | --]] | 22 | --]] |
24 | 23 | ||
25 | tanwinnv = { | 24 | tanwinnv = { |
@@ -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 63a1956..c3c21e1 100644 --- a/arabluatex_trans.lua +++ b/arabluatex_trans.lua | |||
@@ -2,24 +2,23 @@ | |||
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 -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2019 Robert Alessi | 5 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | Please send error reports and suggestions for improvements to Robert | 8 | Permission to use, copy, modify, and distribute this software for any |
8 | Alessi <alessi@robertalessi.net> | 9 | purpose with or without fee is hereby granted, provided that the above |
9 | 10 | copyright notice and this permission notice appear in all copies. | |
10 | This program is free software: you can redistribute it and/or modify | ||
11 | it under the terms of the GNU General Public License as published by | ||
12 | the Free Software Foundation, either version 3 of the License, or | ||
13 | (at your option) any later version. | ||
14 | 11 | ||
15 | This program is distributed in the hope that it will be useful, but | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
18 | General Public License for more details. | 15 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | 19 | ||
20 | You should have received a copy of the GNU General Public License | 20 | Please send error reports and suggestions for improvements to Robert |
21 | along with this program. If not, see | 21 | Alessi <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 | ||
204 | hamzatrnoinitialdmg = { | ||
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 | |||
205 | tanwintrdmg = { | 289 | tanwintrdmg = { |
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 | ||
607 | trigraphstrloc = { -- trigraphs or more | 694 | trigraphstrloc = { -- 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 9b2a31c..6211b4b 100644 --- a/arabluatex_voc.lua +++ b/arabluatex_voc.lua | |||
@@ -2,24 +2,23 @@ | |||
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 -- Processing ArabTeX notation under LuaLaTeX |
5 | Copyright (C) 2016--2019 Robert Alessi | 5 | Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 |
6 | Robert Alessi <alessi@robertalessi.net> | ||
6 | 7 | ||
7 | Please send error reports and suggestions for improvements to Robert | 8 | Permission to use, copy, modify, and distribute this software for any |
8 | Alessi <alessi@robertalessi.net> | 9 | purpose with or without fee is hereby granted, provided that the above |
9 | 10 | copyright notice and this permission notice appear in all copies. | |
10 | This program is free software: you can redistribute it and/or modify | ||
11 | it under the terms of the GNU General Public License as published by | ||
12 | the Free Software Foundation, either version 3 of the License, or | ||
13 | (at your option) any later version. | ||
14 | 11 | ||
15 | This program is distributed in the hope that it will be useful, but | 12 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
18 | General Public License for more details. | 15 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | 19 | ||
20 | You should have received a copy of the GNU General Public License | 20 | Please send error reports and suggestions for improvements to Robert |
21 | along with this program. If not, see | 21 | Alessi <alessi@robertalessi.net> |
22 | <http://www.gnu.org/licenses/>. | ||
23 | --]] | 22 | --]] |
24 | 23 | ||
25 | arbmarks = { | 24 | arbmarks = { |
@@ -202,7 +201,7 @@ hamza = { | |||
202 | -- taḫfīfu 'l-hamza | 201 | -- taḫfīfu 'l-hamza |
203 | {a="'u'([^uaiUAI])", b="أU%1"}, | 202 | {a="'u'([^uaiUAI])", b="أU%1"}, |
204 | {a="'i'([^uaiUAI])", b="إI%1"}, | 203 | {a="'i'([^uaiUAI])", b="إI%1"}, |
205 | {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, | 204 | {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أ%2"}, |
206 | {a="^u'([^uaiUAI])", b="اU%1"}, | 205 | {a="^u'([^uaiUAI])", b="اU%1"}, |
207 | {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, | 206 | {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, |
208 | {a="^i'([^uaiUAI])", b="اI%1"}, | 207 | {a="^i'([^uaiUAI])", b="اI%1"}, |
@@ -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 |
@@ -325,7 +324,7 @@ hamzaeasy = { -- differences marked below with 'easy' | |||
325 | -- taḫfīfu 'l-hamza | 324 | -- taḫfīfu 'l-hamza |
326 | {a="'u'([^uaiUAI])", b="أU%1"}, | 325 | {a="'u'([^uaiUAI])", b="أU%1"}, |
327 | {a="'i'([^uaiUAI])", b="إI%1"}, | 326 | {a="'i'([^uaiUAI])", b="إI%1"}, |
328 | {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, | 327 | {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أ%2"}, |
329 | {a="^u'([^uaiUAI])", b="اU%1"}, | 328 | {a="^u'([^uaiUAI])", b="اU%1"}, |
330 | {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, | 329 | {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, |
331 | {a="^i'([^uaiUAI])", b="اI%1"}, | 330 | {a="^i'([^uaiUAI])", b="اI%1"}, |
@@ -368,7 +367,7 @@ hamzaeasy = { -- differences marked below with 'easy' | |||
368 | -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) | 367 | -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) |
369 | -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new | 368 | -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new |
370 | -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new | 369 | -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new |
371 | {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, | 370 | {a="(mi)(%')(a[TtH])", b="%1ائ%3"}, |
372 | {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, | 371 | {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, |
373 | -- easy (begin) | 372 | -- easy (begin) |
374 | -- The Munjid says that such words as radI'aN do not have the | 373 | -- The Munjid says that such words as radI'aN do not have the |
@@ -443,9 +442,9 @@ tanwin = { | |||
443 | {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, | 442 | {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, |
444 | {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 443 | {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
445 | {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 444 | {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
446 | {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, | 445 | {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, |
447 | {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new | 446 | {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new |
448 | {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, | 447 | {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, |
449 | {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, | 448 | {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, |
450 | -- assimilations (end) | 449 | -- assimilations (end) |
451 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, | 450 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, |
@@ -455,9 +454,9 @@ tanwin = { | |||
455 | {a="(B)%-?(\"aN)", b="%1"}, | 454 | {a="(B)%-?(\"aN)", b="%1"}, |
456 | {a="%-?(\"aN)(_A)", b="ى"}, | 455 | {a="%-?(\"aN)(_A)", b="ى"}, |
457 | {a="%-?(\"aN)(Y)", b="ى"}, | 456 | {a="%-?(\"aN)(Y)", b="ى"}, |
458 | {a="(T)%-?(\"aN)", b="%1"}, | 457 | {a="([TH])%-?(\"aN)", b="%1"}, |
459 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new | 458 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new |
460 | {a="([^TA])%-?(\"aN)", b="%1ا"}, | 459 | {a="([^TAH])%-?(\"aN)", b="%1ا"}, |
461 | {a="%-?(\"iNI?)", b=""}, | 460 | {a="%-?(\"iNI?)", b=""}, |
462 | -- quoted tanwīn (end) | 461 | -- quoted tanwīn (end) |
463 | {a="%-?(uN)", b="ٌ"}, | 462 | {a="%-?(uN)", b="ٌ"}, |
@@ -465,15 +464,15 @@ tanwin = { | |||
465 | -- needed by \arbcolor: | 464 | -- needed by \arbcolor: |
466 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, | 465 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, |
467 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, | 466 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, |
468 | {a="(O[%S]-TO)%-?(aN)", b="ً"}, | 467 | {a="(O[%S]-[TH]O)%-?(aN)", b="ً"}, |
469 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new | 468 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new |
470 | {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, | 469 | {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"}, |
471 | -- | 470 | -- |
472 | {a="%-?(aN)(_A)", b="ًى"}, | 471 | {a="%-?(aN)(_A)", b="ًى"}, |
473 | {a="%-?(aN)(Y)", b="ًى"}, | 472 | {a="%-?(aN)(Y)", b="ًى"}, |
474 | {a="(T)%-?(aN)", b="%1ً"}, | 473 | {a="([TH])%-?(aN)", b="%1ً"}, |
475 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new | 474 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new |
476 | {a="([^TA])%-?(aN)", b="%1ًا"}, | 475 | {a="([^TAH])%-?(aN)", b="%1ًا"}, |
477 | {a="%-?(iNI?)", b="ٍ"} | 476 | {a="%-?(iNI?)", b="ٍ"} |
478 | } | 477 | } |
479 | 478 | ||
@@ -492,9 +491,9 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: | |||
492 | -- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, | 491 | -- {a="(O[%S]-)(%-?aN)(Y)(O)([rlmnwy])", b="%5%5"}, |
493 | -- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 492 | -- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
494 | -- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, | 493 | -- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, |
495 | -- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, | 494 | -- {a="([TH])%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, |
496 | -- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new | 495 | -- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new |
497 | -- {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, | 496 | -- {a="([^TAH])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, |
498 | -- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, | 497 | -- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, |
499 | -- assimilations (end) | 498 | -- assimilations (end) |
500 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, | 499 | {a="(O[%S]-)(%-?aN)(_A)(O)([uai])", b="%5"}, |
@@ -504,9 +503,9 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: | |||
504 | {a="(B)%-?(\"aN)", b="%1"}, | 503 | {a="(B)%-?(\"aN)", b="%1"}, |
505 | {a="%-?(\"aN)(_A)", b="ى"}, | 504 | {a="%-?(\"aN)(_A)", b="ى"}, |
506 | {a="%-?(\"aN)(Y)", b="ى"}, | 505 | {a="%-?(\"aN)(Y)", b="ى"}, |
507 | {a="(T)%-?(\"aN)", b="%1"}, | 506 | {a="([TH])%-?(\"aN)", b="%1"}, |
508 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new | 507 | {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new |
509 | {a="([^TA])%-?(\"aN)", b="%1ا"}, | 508 | {a="([^TAH])%-?(\"aN)", b="%1ا"}, |
510 | {a="%-?(\"iNI?)", b=""}, | 509 | {a="%-?(\"iNI?)", b=""}, |
511 | -- quoted tanwīn (end) | 510 | -- quoted tanwīn (end) |
512 | {a="%-?(uN)", b="ٌ"}, | 511 | {a="%-?(uN)", b="ٌ"}, |
@@ -514,15 +513,15 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: | |||
514 | -- needed by \arbcolor: | 513 | -- needed by \arbcolor: |
515 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, | 514 | {a="%-?(aN)(O[%S]-%_AO)", b="ً"}, |
516 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, | 515 | {a="%-?(aN)(O[%S]-YO)", b="ً"}, |
517 | {a="(O[%S]-TO)%-?(aN)", b="ً"}, | 516 | {a="(O[%S]-[TH]O)%-?(aN)", b="ً"}, |
518 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new | 517 | {a="(O[%S]-)([اآ])(ء)(O)%-?(aN)", b="ً"}, --new |
519 | {a="(O[%S]-[^TA]O)%-?(aN)", b="ًا"}, | 518 | {a="(O[%S]-[^TAH]O)%-?(aN)", b="ًا"}, |
520 | -- | 519 | -- |
521 | {a="%-?(aN)(_A)", b="ًى"}, | 520 | {a="%-?(aN)(_A)", b="ًى"}, |
522 | {a="%-?(aN)(Y)", b="ًى"}, | 521 | {a="%-?(aN)(Y)", b="ًى"}, |
523 | {a="(T)%-?(aN)", b="%1ً"}, | 522 | {a="([TH])%-?(aN)", b="%1ً"}, |
524 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new | 523 | {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new |
525 | {a="([^TA])%-?(aN)", b="%1ًا"}, | 524 | {a="([^TAH])%-?(aN)", b="%1ًا"}, |
526 | {a="%-?(iNI?)", b="ٍ"} | 525 | {a="%-?(iNI?)", b="ٍ"} |
527 | } | 526 | } |
528 | 527 | ||
@@ -836,6 +835,7 @@ single = { | |||
836 | {a="y", b="ي"}, | 835 | {a="y", b="ي"}, |
837 | {a="T", b="ة"}, | 836 | {a="T", b="ة"}, |
838 | -- additional characters (begin) | 837 | -- additional characters (begin) |
838 | {a="H", b="ه"}, | ||
839 | {a="p", b="پ"}, | 839 | {a="p", b="پ"}, |
840 | {a="v", b="ڤ"}, | 840 | {a="v", b="ڤ"}, |
841 | {a="g", b="گ"}, | 841 | {a="g", b="گ"}, |
@@ -873,6 +873,19 @@ shortv = { | |||
873 | {a="i", b="ِ"} | 873 | {a="i", b="ِ"} |
874 | } | 874 | } |
875 | 875 | ||
876 | punctuationhb = { | ||
877 | {a="%(%(", b="﴿"}, | ||
878 | {a="%)%)", b="﴾"}, | ||
879 | {a="%.", b="."}, | ||
880 | -- replaced with the next two rules to make the Arabic comma work | ||
881 | -- after \abraces{} | ||
882 | -- {a="([^0-9])%,", b="%1،"}, | ||
883 | {a="%,", b="،"}, | ||
884 | {a="([%d])%،", b="%1,"}, | ||
885 | {a="%?", b="؟"}, | ||
886 | {a="%;", b="؛"}, | ||
887 | } | ||
888 | |||
876 | punctuation = { | 889 | punctuation = { |
877 | {a="%(%(", b="﴿"}, | 890 | {a="%(%(", b="﴿"}, |
878 | {a="%)%)", b="﴾"}, | 891 | {a="%)%)", b="﴾"}, |
@@ -899,6 +912,7 @@ punctuation = { | |||
899 | } | 912 | } |
900 | 913 | ||
901 | null = { | 914 | null = { |
915 | {a="%&", b=""}, -- That is ^^^^200d, the zero-width joiner | ||
902 | {a="%|", b=""}, | 916 | {a="%|", b=""}, |
903 | {a="^%-", b=""}, | 917 | {a="^%-", b=""}, |
904 | {a="([^0-9])(%-)", b="%1"}, | 918 | {a="([^0-9])(%-)", b="%1"}, |
@@ -1,21 +1,24 @@ | |||
1 | pkg := arabluatex | 1 | pkg := arabluatex |
2 | ver := $(shell ltxfileinfo -v $(pkg).dtx|sed -e 's/^v//') | 2 | #VERS := $(shell ltxfileinfo -v $(pkg).dtx|sed -e 's/^v//') |
3 | VERS := $(shell typeoutfileinfo $(pkg).dtx | egrep -o '\+.*$$' | awk '{ print $$6 }' | sed -e 's/^v//') | ||
3 | TEXMFDIR := $(shell kpsewhich -expand-var='$$TEXMFHOME') | 4 | TEXMFDIR := $(shell kpsewhich -expand-var='$$TEXMFHOME') |
4 | HOMEDIR := $$HOME | 5 | HOMEDIR := $$HOME |
6 | CMP = lualatex-dev | ||
7 | SHELL = bash | ||
5 | 8 | ||
6 | sty: clean | 9 | sty: clean |
7 | lualatex $(pkg).ins | 10 | $(CMP) $(pkg).ins |
8 | 11 | ||
9 | doc: clean sty | 12 | doc: clean sty |
10 | lualatex --shell-escape $(pkg).dtx | 13 | $(CMP) --shell-escape $(pkg).dtx |
11 | biber arabluatex | 14 | biber arabluatex |
12 | lualatex --shell-escape $(pkg).dtx | 15 | $(CMP) --shell-escape $(pkg).dtx |
13 | makeindex -s gind.ist -o $(pkg).ind $(pkg).idx | 16 | makeindex -s gind.ist -o $(pkg).ind $(pkg).idx |
14 | makeindex -s gglo.ist -o $(pkg).gls $(pkg).glo | 17 | makeindex -s gglo.ist -o $(pkg).gls $(pkg).glo |
15 | lualatex --shell-escape $(pkg).dtx | 18 | $(CMP) --shell-escape $(pkg).dtx |
16 | lualatex --shell-escape $(pkg).dtx | 19 | $(CMP) --shell-escape $(pkg).dtx |
17 | for i in samples/*.tex; \ | 20 | for i in samples/*.tex; \ |
18 | do latexmk -outdir=TMP -lualatex -e '$$lualatex=q/lualatex %O --shell-escape %S/' $$i; \ | 21 | do latexmk -outdir=TMP -lualatex -e '$$lualatex=q/$(CMP) %O --shell-escape %S/' $$i; \ |
19 | done | 22 | done |
20 | mv TMP/*.pdf samples/ | 23 | mv TMP/*.pdf samples/ |
21 | 24 | ||
@@ -26,20 +29,43 @@ local: clean sty | |||
26 | mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \ | 29 | mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \ |
27 | fi | 30 | fi |
28 | cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex | 31 | cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex |
29 | if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ | 32 | if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \ |
30 | mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ | 33 | mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \ |
31 | fi | 34 | fi |
32 | cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto | 35 | cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/style |
36 | |||
37 | inst: 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 | ||
33 | 51 | ||
34 | auctex: clean | 52 | auctex: clean |
35 | if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ | 53 | if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/style" ]; then \ |
36 | mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ | 54 | mkdir -p $(HOMEDIR)/.emacs.d/auctex/style; \ |
37 | fi | 55 | fi |
38 | cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto | 56 | cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/style |
57 | |||
58 | zip: 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 | |||
63 | hal: clean | ||
64 | zip -Drq $(PWD)/$(pkg)-$(VERS).zip * | ||
39 | 65 | ||
40 | package: clean all | 66 | package: clean all |
41 | mkdir -p arabluatex/samples/ | 67 | mkdir -p arabluatex/samples/ |
42 | cp *.lua *.ins *.dtx *.md *.pdf arabluatex/ # .bib is in dtx | 68 | cp *.{lua,ins,dtx,md,pdf} makefile README.tex arabluatex/ # .bib is in dtx |
43 | cp samples/*.{tex,pdf} arabluatex/samples/ | 69 | cp samples/*.{tex,pdf} arabluatex/samples/ |
44 | mkdir -p tex/lualatex/arabluatex/ | 70 | mkdir -p tex/lualatex/arabluatex/ |
45 | cp *.lua *.sty tex/lualatex/arabluatex/ | 71 | cp *.lua *.sty tex/lualatex/arabluatex/ |
@@ -47,23 +73,23 @@ package: clean all | |||
47 | cp *.{pdf,el} doc/lualatex/arabluatex/ | 73 | cp *.{pdf,el} doc/lualatex/arabluatex/ |
48 | cp samples/*.{tex,pdf} doc/lualatex/arabluatex/samples | 74 | cp samples/*.{tex,pdf} doc/lualatex/arabluatex/samples |
49 | mkdir -p source/lualatex/arabluatex/ | 75 | mkdir -p source/lualatex/arabluatex/ |
50 | cp *.ins *.dtx *.tex source/lualatex/arabluatex/ # .bib is in dtx | 76 | cp *.{ins,dtx,tex,md} makefile source/lualatex/arabluatex/ # .bib is in dtx |
51 | zip -r arabluatex.tds.zip tex doc source | 77 | zip -r arabluatex.tds.zip tex doc source |
52 | tar czf arabluatex-$(ver).tar.gz arabluatex.tds.zip arabluatex/ | 78 | tar czf arabluatex-$(VERS).tar.gz arabluatex.tds.zip arabluatex/ |
53 | 79 | ||
54 | clean: | 80 | clean: |
55 | rm -rf $(TEXMFDIR)/tex/lualatex/arabluatex/ | 81 | rm -rf $(TEXMFDIR)/{tex,doc}/lualatex/arabluatex/ |
56 | rm -rf $(HOMEDIR)/.emacs.d/auctex/auto/arabluatex*.el | 82 | rm -rf $(HOMEDIR)/.emacs.d/auctex/style/arabluatex*.{el,elc} |
57 | rm -rf tex/ doc/ source/ auto/ | 83 | rm -rf tex/ doc/ source/ auto/ |
58 | rm -rf arabluatex/ | 84 | rm -rf arabluatex/ |
59 | rm -rf saved/ TMP/ _minted-arabluatex/ | 85 | rm -rf saved/ TMP/ _minted-arabluatex/ |
60 | find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf | 86 | find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf |
61 | mkdir saved | 87 | mkdir saved |
62 | 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 |
63 | rm *.* | 89 | rm *.* |
64 | cp saved/* . | 90 | cp saved/* . |
65 | rm -rf saved/ | 91 | rm -rf saved/ |
66 | 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 |
67 | pandoc -s README.tex -o about.html | 93 | pandoc README.tex -o about.html |
68 | 94 | ||
69 | .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 49a52f8..d7dd3f7 100644 --- a/samples/al-Jahiz.tex +++ b/samples/al-Jahiz.tex | |||
@@ -4,8 +4,9 @@ | |||
4 | % 'lualatex --shell-escape al-Jahiz' | 4 | % 'lualatex --shell-escape al-Jahiz' |
5 | % | 5 | % |
6 | \documentclass[fontsize=12pt, paper=letter, DIV=classic]{scrartcl} | 6 | \documentclass[fontsize=12pt, paper=letter, DIV=classic]{scrartcl} |
7 | \usepackage[english]{babel} | ||
8 | \usepackage{fontspec} | 7 | \usepackage{fontspec} |
8 | \usepackage[default]{fontsetup} | ||
9 | \usepackage[english]{babel} | ||
9 | \babelfont{rm}{Old Standard} | 10 | \babelfont{rm}{Old Standard} |
10 | \usepackage{filecontents} | 11 | \usepackage{filecontents} |
11 | 12 | ||
@@ -27,9 +28,9 @@ | |||
27 | \SetArbEasy | 28 | \SetArbEasy |
28 | 29 | ||
29 | \PassOptionsToPackage{pdfa}{hyperref} | 30 | \PassOptionsToPackage{pdfa}{hyperref} |
30 | \usepackage{hyperxmp} | ||
31 | \usepackage{hyperref} | 31 | \usepackage{hyperref} |
32 | \hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert Alessi}} | 32 | \hypersetup{colorlinks, linkcolor=blue, pdfauthor={Robert Alessi}} |
33 | \usepackage{hyperxmp} | ||
33 | 34 | ||
34 | \begin{document} | 35 | \begin{document} |
35 | \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} |