diff options
author | Norbert Preining <norbert@preining.info> | 2020-03-01 03:01:38 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-03-01 03:01:38 +0000 |
commit | ad1928316d819ffb337fc4a926dbef47607dfb95 (patch) | |
tree | ccca9edbbeacc0e88602998f86c75b2c24c02af6 /macros/luatex/latex/arabluatex | |
parent | 4736ac744a8c914e0d5ced1d157e017a385bbf43 (diff) |
CTAN sync 202003010301
Diffstat (limited to 'macros/luatex/latex/arabluatex')
-rw-r--r-- | macros/luatex/latex/arabluatex/README.md | 4 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/README.tex | 146 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex.dtx | 214 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex.ins | 4 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex.lua | 43 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex.pdf | bin | 685259 -> 647013 bytes | |||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua | 59 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex_novoc.lua | 2 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex_trans.lua | 2 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/arabluatex_voc.lua | 25 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/makefile | 70 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf | bin | 114234 -> 112526 bytes | |||
-rw-r--r-- | macros/luatex/latex/arabluatex/samples/al-Jahiz.tex | 8 | ||||
-rw-r--r-- | macros/luatex/latex/arabluatex/samples/exporting.pdf | bin | 59687 -> 63557 bytes | |||
-rw-r--r-- | macros/luatex/latex/arabluatex/samples/template-01.pdf | bin | 65289 -> 63935 bytes |
15 files changed, 471 insertions, 106 deletions
diff --git a/macros/luatex/latex/arabluatex/README.md b/macros/luatex/latex/arabluatex/README.md index c9dec25920..5cd4118d78 100644 --- a/macros/luatex/latex/arabluatex/README.md +++ b/macros/luatex/latex/arabluatex/README.md @@ -26,7 +26,7 @@ License and disclamer ArabLuaTeX – Processing ArabTeX notation under LuaLaTeX -Copyright ⓒ 2016–2019 Robert Alessi +Copyright ⓒ 2016–2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi: @@ -70,7 +70,7 @@ This release of arabluatex consists of the following source files: License applicable to the documentation --------------------------------------- -Copyright ⓒ 2016–2019 Robert Alessi +Copyright ⓒ 2016–2020 Robert Alessi The documentation file `arabluatex.pdf` that is generated from the `arabluatex.dtx` source is licensed under the Creative Commons diff --git a/macros/luatex/latex/arabluatex/README.tex b/macros/luatex/latex/arabluatex/README.tex new file mode 100644 index 0000000000..5d4871603f --- /dev/null +++ b/macros/luatex/latex/arabluatex/README.tex @@ -0,0 +1,146 @@ +% The arabluatex package -- README file +% Robert Alessi +% March 18, 2017 +\documentclass{article} + +\usepackage{fontspec} + +\title{The arabluatex package -- README file} +\author{Robert Alessi} +\usepackage{hyperref} +\hypersetup{pdftitle={The arabluatex package -- README file}, + pdfauthor={Robert Alessi}} + +\begin{document} +\maketitle + +\section*{Overview} +\label{sec:overview} +This package provides for \href{http://luatex.org}{Lua\LaTeX} an +\href{http://ctan.org/pkg/arabtex}{Arab\TeX}-like interface to +generate Arabic writing from an \textsc{ascii} 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 +Arab\TeX\ input notation. Its output can be set in the same modes of +vocalization as Arab\TeX, 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 +\verb|.tex| source files, in addition to printed books, \texttt{TEI + xml} compliant critical editions and/or lexicons that can be +searched, analyzed and correlated in various ways. + +\section*{License and disclamer} +ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX + +Copyright ⓒ 2016--2020 Robert Alessi + +Please send error reports and suggestions for improvements to Robert +Alessi: +\begin{itemize} +\item email: \href{mailto:alessi@robertalessi.net}{alessi@robertalessi.net} +\item website: \url{http://www.robertalessi.net/arabluatex} +\item comments, feature requests, bug reports: + \url{https://gitlab.com/ralessi/arabluatex/issues} +\end{itemize} + +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. + +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. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +<http://www.gnu.org/licenses/>. + +This release of arabluatex consists of the following +source files: +\begin{itemize} +\item \verb|arabluatex.ins| +\item \verb|arabluatex.dtx| +\item \verb|arabluatex.lua| +\item \verb|arabluatex_voc.lua| +\item \verb|arabluatex_fullvoc.lua| +\item \verb|arabluatex_novoc.lua| +\item \verb|arabluatex_trans.lua| +\end{itemize} + +\subsection*{License applicable to the documentation} +\label{sec:documentation-license} +Copyright ⓒ 2016--2020 Robert Alessi + +The documentation file \verb|arabluatex.pdf| that is generated from +the \verb|arabluatex.dtx| source is licensed under the Creative +Commons Attribution-ShareAlike 4.0 International License. To view a +copy of this license, visit +\url{http://creativecommons.org/licenses/by-sa/4.0/} or send a letter +to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + +\section*{Installation} +\label{sec:installation} +\begin{enumerate} +\item Run \verb+'lualatex arabluatex.ins'+ to produce the + \verb+arabluatex.sty+ file; +\item To finish the installation you have to move the following files + into a directory where LaTeX can find them. See the FAQ on + \verb|texfaq.org| at + \url{https://texfaq.org/FAQ-inst-wlcf} for more on this: +\begin{itemize} +\item \verb|arabluatex.sty| +\item \verb|arabluatex-patch.sty| +\item \verb|arabluatex.lua| +\item \verb|arabluatex_voc.lua| +\item \verb|arabluatex_fullvoc.lua| +\item \verb|arabluatex_novoc.lua| +\item \verb|arabluatex_trans.lua| +\end{itemize} +\item Additionally, those who use emacs with AUC\TeX\ may copy + \verb|arabluatex.el| to their \verb|~/.emacs.d/auctex/auto| local + directory. This will enable the appropriate hooks for ArabLua\TeX\ + in AUC\TeX. +\end{enumerate} + +\section{Development, Git Repository} +\label{sec:devel-git-repos} +\subsection*{Browse the code} +\label{sec:browse-code} + +You can browse ArabLua\TeX\ repository on the web: +\url{http://git.robertalessi.net/arabluatex} + +From this page, you can download all the releases of ArabLua\TeX. For +instructions on how to install ArabLua\TeX, please see above. + +\subsection*{Comments, Feature requests, Bug Reports} +\label{sec:comm-feat-requ} +\url{https://gitlab.com/ralessi/arabluatex/issues} + +\subsection*{Download the repository} +\label{sec:download-repository} +ArabLua\TeX\ 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). + +Use this command to download the repository +\begin{verbatim} +git clone http://git.robertalessi.net/arabluatex +\end{verbatim} + + +A new directory named arabluatex will have been created, containing +ArabLuaTeX. + +\subsection*{Git hosting} +\label{sec:git-hosting} +Make an account on \url{https://gitlab.com} and navigate (while +logged in) to \url{https://gitlab.com/ralessi/arabluatex}. Click +\emph{Fork} and you will have in your account your own repository of +\verb|arabluatex| where you will be able to make whatever changes you +like to. + +\end{document}
\ No newline at end of file diff --git a/macros/luatex/latex/arabluatex/arabluatex.dtx b/macros/luatex/latex/arabluatex/arabluatex.dtx index 001f962c70..534271e52c 100644 --- a/macros/luatex/latex/arabluatex/arabluatex.dtx +++ b/macros/luatex/latex/arabluatex/arabluatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -% Copyright (C) 2016--2019 Robert Alesssi +% Copyright (C) 2016--2020 Robert Alesssi % % Please send error reports and suggestions for improvements to Robert % Alessi <alessi@robertalessi.net> @@ -27,7 +27,7 @@ %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<package>\ProvidesPackage{arabluatex} %<*package> - [2019/03/24 v1.17 An ArabTeX-like interface for LuaLaTeX] + [2020/02/29 v1.18 An ArabTeX-like interface for LuaLaTeX] %</package> % %<*driver> @@ -37,7 +37,7 @@ % This file is part of the `arabluatex' package % % ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -% Copyright (C) 2016--2019 Robert Alessi +% Copyright (C) 2016--2020 Robert Alessi % % Please send error reports and suggestions for improvements to Robert % Alessi <alessi@robertalessi.net> @@ -147,19 +147,16 @@ location = {London -- Edinburgh} } \end{filecontents} +\usepackage{fontspec} \usepackage[english]{babel} \usepackage{dox} \doxitem{Option}{option}{options} -\usepackage{fontspec} \usepackage{microtype} -\defaultfontfeatures{RawFeature={+liga}} -\setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}, - RawFeature={+mark;+ccmp;+ss05;+ss06}] -\usepackage{newunicodechar} -\newunicodechar{ǧ}{ǧ} % Old Standard does not include ǧ/Ǧ -\newunicodechar{Ǧ}{Ǧ} % +\babelfont{rm}{Old Standard} +\babelfont{sf}{NewComputerModern Sans} +\babelfont{tt}{NewComputerModern Mono} \usepackage{metalogox} -\usepackage{arabluatex}[2019/03/24] +\usepackage{arabluatex}[2020/02/29] \SetArbUp{\textsuperscript{\thinspace#1}} % Old Standard needs this \usepackage[nopar]{quran} \usepackage[noindex]{nameauth} @@ -170,11 +167,12 @@ \usepackage{uri} \usepackage{bookmark} \usepackage{authblk} -\hypersetup{unicode=true, colorlinks, allcolors=blue, +\usepackage{latexcolors} +\hypersetup{unicode=true, colorlinks, allcolors=cinnamon, linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The arabluatex package}, pdfcontactemail={alessi@robertalessi.net}, pdfcontacturl={http://www.robertalessi.net/arabluatex}, - pdfcopyright={Copyright (C) 2016--2019 Robert Alessi + pdfcopyright={Copyright (C) 2016--2020 Robert Alessi <alessi@robertalessi.net>. This document is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit @@ -208,15 +206,14 @@ \usepackage{relsize} \usepackage{tikz} \usepackage[breakable, skins, xparse, minted]{tcolorbox} -\tcbset{colback=white, boxrule=.15mm, colframe=red!50!white, +\tcbset{colback=white, boxrule=.15mm, colframe=cinnamon, breakable} \newtcbox{\arabluabox}{boxrule=.3mm, left=0mm, right=0mm, top=0mm, bottom=0mm} \newtcblisting{example}{minted options={linenos, numbersep=0mm, fontsize=\smaller}} \newtcblisting{code}{minted options={linenos, numbersep=0mm, - fontsize=\smaller}, listing - only} + fontsize=\smaller}, listing only} \newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}} \usepackage[contents]{colordoc} \usepackage{csquotes} @@ -262,7 +259,7 @@ %</driver> % \fi % -% \CheckSum{919} +% \CheckSum{1006} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -355,7 +352,7 @@ % \label{sec:license-software} % % \package{arabluatex} --- Processing Arab\TeX\ notation under Lua\LaTeX.\\ -% Copyright \textcopyright\ 2016--2019 Robert Alessi +% Copyright \textcopyright\ 2016--2020 Robert Alessi % % Please send error reports and suggestions for improvements to Robert % Alessi: @@ -397,7 +394,7 @@ % % \subsection*{License applicable to this document} % \label{sec:documentation-license} -% Copyright \textcopyright\ 2016--2019 Robert Alessi +% Copyright \textcopyright\ 2016--2020 Robert Alessi % % \ccbysa\marginpar{\texttt{CC BY-SA 4.0}} % This document is licensed under the Creative Commons @@ -717,25 +714,16 @@ %</example> % \fi % -% \paragraph{Caveat} -% For some reason, left-to-right paragraphs that start with Arabic -% words lose their indentation. For the time being, this can be -% circumvented by appending the \cs{indent} command at the -% commencement of such paragraphs. -% -% \label{ref:ltr-lists}% -% The same remark applies to left-to-right list environments: when -% items start with Arabic words, the \cs{arb} command must be prefixed -% with \cs{indent}. The following example comes from \textcite[i. 213 +% The following example comes from \textcite[i. 213 % C]{Wright}:--- % % \iffalse %<*example> % \fi \begin{example} \begin{enumerate}[label=\Roman*., start=16] - \item \indent\arb{fawA`ilu}*. + \item \arb{fawA`ilu}*. \begin{enumerate}[label=\arabic*.] - \item \indent\arb{fA`aluN}; as \arb{_hAtamuN} \emph{a + \item \arb{fA`aluN}; as \arb{_hAtamuN} \emph{a signet-ring}, ... \end{enumerate} \end{enumerate} @@ -957,7 +945,7 @@ % \subsubsection{Long vowels} % \Cref{tab:arabtex-long-vowels} gives the Arab\TeX\ equivalents for % the Arabic long vowels. -% +% \enlargethispage{1\baselineskip} % \begin{longtable}{lllll} % \bottomrule % \caption*{\Cref*{tab:arabtex-long-vowels}: Standard Arab\TeX\ (long @@ -1255,17 +1243,17 @@ % \arb[voc]{'as'i\-laTuN} \arb[trans]{'as'ilaTuN}, |mas'alaTuN| % \arb[voc]{mas'alaTuN} \arb[trans]{mas'alaTuN}, |'as'alu| % \arb[voc]{'as'alu} \arb[trans]{'as'alu}, |yatasA'alUna| -% \arb[voc]{yatasA'alUna}\linebreak \arb[trans]{yatasA'alUna}, -% |murU'aTuN| \arb[voc]{murU'aTuN}, |taw'amuN| -% \arb[fullvoc]{taw'amuN} \arb[trans]{taw'amuN}, -% \arb[trans]{murU'aTuN}, |ta'xIruN| \arb[fullvoc]{ta'xIruN} -% \arb[trans]{ta'xIruN}, |ta'ax|\allowbreak|xara| -% \arb[voc]{ta'axxara} \arb[trans]{ta'axxara}, |ji'tu-ka| -% \arb[voc]{ji'tu-ka} \arb[trans]{ji'tu-ka}, |qA'iluN| -% \arb[voc]{qA'iluN} \arb[trans]{qA'iluN}, |.hIna'i_diN| -% \arb[trans]{.hIna'i_diN} \arb[voc]{.hIna'i_diN}, |hay'aTuN| -% \arb[voc]{hay'aTuN} \arb[trans]{hay\-'aTuN}, |hay'AtuN| -% \arb[voc]{hay'AtuN} \arb[trans]{hay'AtuN}. +% \arb[voc]{yatasA'alUna} \arb[trans]{yatasA'alUna}, |murU'aTuN| +% \arb[voc]{murU'aTuN} \arb[trans]{murU'aTuN}, |taw'amuN| +% \arb[fullvoc]{taw'amuN} \arb[trans]{taw'amuN}, |ta'xIruN| +% \arb[fullvoc]{ta'xIruN} \arb[trans]{ta'xIruN}, +% |ta'ax|\allowbreak|xara| \arb[voc]{ta'axxara} +% \arb[trans]{ta'axxara}, |ji'tu-ka| \arb[voc]{ji'tu-ka} +% \arb[trans]{ji'tu-ka}, |qA'iluN| \arb[voc]{qA'iluN} +% \arb[trans]{qA'iluN}, |.hIna'i_diN| \arb[trans]{.hIna'i_diN} +% \arb[voc]{.hIna'i_diN}, |hay'aTuN| \arb[voc]{hay'aTuN} +% \arb[trans]{hay\-'aTuN}, |hay'AtuN| \arb[voc]{hay'AtuN} +% \arb[trans]{hay'AtuN}. % % From \textcite[i. 14 B]{Wright}:--- All consonants, whatsoever, % not even \arb[trans]{'alif} \emph{hèmzatum} excepted, admit of @@ -1544,7 +1532,7 @@ % |uqtul| \arb[fullvoc]{qAla uqtul} \arb[trans]{qAla uqtul}, |huwa| % |inhazama| \arb[fullvoc]{huwa inhazama} \arb[trans]{huwa % inhazama}, |wa-ustu`mila| \arb[fullvoc]{wa-ustu`mila} -% \arb[trans]{wa-ustu`mila}, |qad-i| |in.sarafa| \arb[fullvoc]{qadi +% \arb[trans]{wa-ustu`mila}, |qadi| |in.sarafa| \arb[fullvoc]{qadi % in.sarafa} \arb[trans]{qadi in.sarafa}, |al-iqtidAr-u| % \arb[fullvoc]{al-iqtidAr-u} \arb[trans]{al-iqtidAr-u}, |'il_A| % |'l-inti|\allowbreak|qA.d-i| \arb[fullvoc]{'il_A 'l-intiqA.d-i} @@ -1905,7 +1893,8 @@ % \arb[fullvoc]{'a`daA"'|"'ikum} \arb[trans]{'a`dA|"'ikum}. % \end{quote} % -% \subsection{The \enquote{pipe} character (\textbar)} +% \subsection{\texorpdfstring{The \enquote*{pipe} character +% (\textbar)}{The ‘pipe’ character (\textbar)}} % \label{sec:pipe} % In the terminology of Arab\TeX, the \enquote{pipe} character % \enquote*{\textbar} is referred to as the \enquote{invisible @@ -2293,7 +2282,7 @@ % As one can see, \emph{triple hyphens} have been used. In the % \arb[trans]{.sadr}, the first hyphen triggers the rules that are % related to the definite article and the \arb[trans]{'alif-u -% 'l-wa.sl-i},\footnote{See \vref{ref:definite-article}} while the +% 'l-wa.sl-i},\footnote{See \vref{ref:definite-article}.} while the % following two select the figure of the letter \arb[trans]{lAm} % connected with a following letter. In the \arb[trans]{`a^guz}, the % last two hyphens select the letter \arb[trans]{yA'} connected with a @@ -2324,7 +2313,7 @@ gutter=1cm] \bayt{.gayra 'annI qad 'asta`Inu `al_A 'l-ha--}[--mmi ]{'i_dA _haffa bi-'l-_tawiyyi 'l-na^gA'u}\\ - \bayt{bi-zaf--UfiN ka-'anna-hA hiq--laTuN}[ 'ummu ]{ri'AliN + \bayt{bi-zaf--UfiN ka-'anna-hA hiq|--laTuN}[ 'ummu ]{ri'AliN dawwiyyaTuN saqfA'u}\\ \end{arabverse} \end{example} @@ -2619,6 +2608,35 @@ %</example> % \fi % +% \paragraph{\texorpdfstring{The \enquote*{Zero width joiner} +% character (\texttt{U+200D})}% +% {The ‘Zero width joiner’ character (\texttt{U+200D})}} +% \phantomsection% +% \NEWfeature{v1.18}% +% The \enquote*{Zero width joiner} character (|U+200D|) belongs to the +% \enquote*{General Punctuation} block (range |2000|--|206F|) of the +% Unicode standard. It is a non-printing character which, when it is +% placed between two characters that would for some reason not be +% connected, causes them to be printed in their connected forms. +% +% It is encoded |&| in Arab\TeX\ scheme. +% +% In the following example, the \cs{uline} command would have +% prevented adjacent Arabic letters from being connected if the +% \enquote*{Zero width joiner} had not been used:---% +% \iffalse +%<*example> +% \fi +\begin{example} + \begin{arab}[fullvoc] + huwa 'abU zaydiN .hunaynu bnu 'is.h_aqa 'l-`a&\uline{&bA}diyyu + bi-fat.hi 'l-`ayni wa-ta_hfIfi 'l-bA'i. + \end{arab} +\end{example} +% \iffalse +%</example> +% \fi +% % \subsection{\texorpdfstring{The \prname{qur'An}}{The Qurʾān}} % \label{sec:the-quran} % This sub-part is destined to become a part of its own, as fine @@ -2711,14 +2729,14 @@ \begin{arab} \arbcolor[red]{al-bAbu 'l-_hAmisu} fI .tabaqAti 'l-'a.tibbA'i 'lla_dIna kAnUA mun_du zamAni \uc{^gAlInUsa} wa-qarIbaN - min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-li-na.da` 'awwalaN + min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-l-na.da` 'awwalaN kalAmaN kulliyyaN fI 'a_hbAri \uc{^gAlInUsa} wa-mA kAna `alay-hi... \end{arab} \begin{arab}[trans] \arbcolor[red]{al-bAbu 'l-_hAmisu} fI .tabaqAti 'l-'a.tibbA'i 'lla_dIna kAnUA mun_du zamAni \uc{^gAlInUsa} wa-qarIbaN - min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-li-na.da` 'awwalaN + min-hu. \arbcolor[red]{\uc{^gAlInUsu}}: wa-l-na.da` 'awwalaN kalAmaN kulliyyaN fI 'a_hbAri \uc{^gAlInUsa} wa-mA kAna `alay-hi... \end{arab} @@ -2788,6 +2806,7 @@ % \arb{B.a} & \dmg{.a} & \loc{.a} & \brill{.a} & \verb|.a| \\ % \pagebreak[1] % \arb{B.u} & \dmg{.u} & \loc{.u} & \brill{.u} & \verb|.u| \\ +% \pagebreak[1] % \arb{B.i} & \dmg{.i} & \loc{.i} & \brill{.i} & \verb|.i| \\ \midrule % \arb{Bo} & \dmg{o} & \loc{o} & \brill{o} & \verb|o| \\ % \end{longtable} @@ -3140,7 +3159,8 @@ % \uc{'l-rAziyyu}}. % \end{quote} % -% \paragraph{\enquote*{Long} pro\-per names} +% \paragraph{\texorpdfstring{\enquote*{Long} pro\-per +% names}{‘Long’ proper names}} % \NEWfeature{v1.10} \cs{uc} is also able to process proper names % consisting of several subsequent words:--- % \begin{quote} @@ -3417,8 +3437,8 @@ %</example> % \fi % -% \paragraph{\enquote*{base}, \enquote*{\texttt{xml}} and -% \enquote*{safe} schemes} +% \paragraph{\texorpdfstring{\enquote*{base}, \enquote*{\texttt{xml}} +% and \enquote*{safe} schemes}{‘base’, ‘xml’ and ‘safe’ schemes}} % \package{arabluatex} can use any of the so-called Buckwalter % \enquote*{base}, \enquote*{\texttt{xml}} or \enquote*{safe} schemes % as they are described in \textcite[25--26]{Habash}.\footnote{I am @@ -3457,7 +3477,6 @@ % \endhead \footnotetext{See \vref{sec:transliteration}.} % \label{tab:buckwalter-scheme} % \arb[novoc]{a} & \dmg{a} & \loc{a} & \brill{a} & |A| & |A| \\ -% \pagebreak[1] % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| & |b| \\ % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| & |t| \\ % \arb[novoc]{_t} & \dmg{_t} & \loc{_t} & \brill{_t} & |v| & |v| \\ @@ -3475,6 +3494,7 @@ % \arb[novoc]{.t} & \dmg{.t} & \loc{.t} & \brill{.t} & |T| & |T| \\ % \arb[novoc]{.z} & \dmg{.z} & \loc{.z} & \brill{.z} & |Z| & |Z| \\ % \arb[novoc]{`} & \dmg{`} & \loc{`} & \brill{`} & |E| & |E| \\ +% \pagebreak[2] % \arb[novoc]{.g} & \dmg{.g} & \loc{.g} & \brill{.g} & |g| & |g| \\ % \arb[novoc]{f} & \dmg{f} & \loc{f} & \brill{f} & |f| & |f| \\ % \arb[novoc]{q} & \dmg{q} & \loc{q} & \brill{q} & |q| & |q| \\ @@ -4305,18 +4325,12 @@ % functions and tables. Read the |.lua| files that accompany % \package{arabluatex} for more information. % \begin{macrocode} -\RequirePackage{ifluatex} +\RequirePackage{iftex} % \end{macrocode} % \package{arabluatex} requires {\LuaLaTeX} of course. Issue a warning % if the document is processed with another engine. % \begin{macrocode} -\ifluatex\else - \PackageError{arabluatex}{lualatex needed}{% - Package `arabluatex' needs LuaTeX.\MessageBreak - So you should use `lualatex' to process your document.\MessageBreak - See documentation of `arabluatex' for further information.}% - \expandafter\expandafter\expandafter\csname endinput\endcsname -\fi +\RequireLuaTeX % \end{macrocode} % Declare the global options, and define them: % \begin{macrocode} @@ -4364,9 +4378,10 @@ % and attempt to load the Amiri font which is included in \TeX{}live: % \begin{macrocode} \AtBeginDocument{\ifdefined\arabicfont\relax\else -\PackageWarning{arabluatex}{\string\arabicfont\ is not defined.^^J - I will try to load Amiri}% -\newfontfamily\arabicfont[Script=Arabic]{Amiri}\fi}% + \PackageInfo{arabluatex}{% + \string\arabicfont\ is not defined.\MessageBreak + arabluatex will try to load Amiri}% + \newfontfamily\arabicfont{Amiri}[Script=Arabic]\fi}% % \end{macrocode} % \begin{macro}{\setRL} % This neutralizes what may be defined by other packages: @@ -4618,6 +4633,7 @@ % not documented. % \begin{macrocode} \NewDocumentCommand{\txarb}{+m}{% + \ifvmode\leavevmode\fi% \bgroup\textdir TRT\arabicfont#1\egroup} \NewDocumentCommand{\txtrans}{+m}{% \bgroup\textdir TLT\al@trans@font\al@trans@style#1\egroup} @@ -4636,6 +4652,17 @@ \pardir TRT\textdir TRT\arabicfont}{\par} % \end{macrocode} % \end{environment} +% \begin{environment}{txarabtr} +% |txarabtr| environment is used internally by several Lua functions +% to insert running paragraphs of transliterated Arabic text +% Therefore, it is not documented. +% \begin{macrocode} +\NewDocumentEnvironment{txarabtr}{}{% + \par% + \pardir TLT\textdir TLT% + \al@trans@font\al@trans@style}{\par} +% \end{macrocode} +% \end{environment} % \begin{macro}{\arb} % The \cs{arb} command detects which Arabic mode is to be used, % either globally if no option is set, or locally, then passes its @@ -4644,16 +4671,19 @@ \NewDocumentCommand{\arb}{O{\al@mode} +m}% {\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% + \ifvmode\leavevmode\fi% \bgroup\booltrue{al@rlmode}\textdir TRT\arabicfont% \luadirect{tex.sprint(arabluatex.processvoc(\luastringN{#2}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@fullvoc% + \ifvmode\leavevmode\fi% \bgroup\booltrue{al@rlmode}\textdir TRT\arabicfont% \luadirect{tex.sprint(arabluatex.processfullvoc(\luastringN{#2}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@novoc% + \ifvmode\leavevmode\fi% \bgroup\booltrue{al@rlmode}\textdir TRT\arabicfont% \luadirect{tex.sprint(arabluatex.processnovoc(\luastringN{#2}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% @@ -4703,7 +4733,7 @@ % The |arab| environment does for paragraphs the same as \cs{arb} does % for short insertions of Arabic text. % \begin{macrocode} -\NewDocumentEnvironment{arab}{O{\al@mode} +b}% +\NewDocumentEnvironment{arab}{!O{\al@mode} +b}% {\par\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% \booltrue{al@rlmode}% @@ -4760,7 +4790,7 @@ % \end{macrocode} % Then follows the environment itself: % \begin{macrocode} -\NewDocumentEnvironment{arabverse}{O{}}% +\NewDocumentEnvironment{arabverse}{!O{}}% {\bgroup\setkeys[al]{verse}[width, gutter, color, utf, delim, metre]{#1}% \if@pkg@export\ifal@verse@export% @@ -4848,6 +4878,58 @@ % \end{macrocode} % \end{macro} % \end{environment} +% \begin{macro}{\arind} +% \changes{v1.18}{2020/02/29}{New command \cs{arind} for building +% indexes} +% \cs{arind}\marg{root} is a command specialized in the contruction of +% indexes. As a mandadory argument, it takes the Arabic root under +% which a given word is to be indexed. Additionally, it may receive +% three optional \enquote*{named} arguments: |index|, |root| and +% |form|. +% \begin{macrocode} +\NewDocumentCommand{\SetDefaultIndex}{m}{ + \edef\@tempa{#1} + \ifx\@tempa\empty + \def\al@default@index{\jobname} + \else + \def\al@default@index{#1} + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\al@index@mode{\al@mode} +\NewDocumentCommand{\SetIndexMode}{m}{ + \def\al@index@mode{#1} +} +% \end{macrocode} +% \begin{macrocode} +\define@cmdkeys[al]{index}[alind@]{index,root,form} +\NewDocumentCommand{\arind}{o m}{% + \IfNoValueTF{#1}{% + \ifdefined\al@default@index% + \csname index\endcsname[\al@default@index]{#2}% + \else% + \csname index\endcsname{#2}% + \fi% + }{% + \bgroup + \setkeys[al]{index}{#1}% + \def\al@one{% + \ifdefined\alind@root!\LR{\alind@root}\else!\LR{1}\fi}% + \def\al@two{% + \ifdefined\alind@form @\arb[\al@index@mode]{\alind@form}\else\fi}% + \ifdefined\alind@index% + \csname index\endcsname[\alind@index]{#2\al@one\al@two}% + \else% + \ifdefined\al@default@index% + \csname index\endcsname[\al@default@index]{#2\al@one\al@two}% + \else% + \csname index\endcsname{#2\al@one\al@two}% + \fi% + \fi% + \egroup}} +% \end{macrocode} +% \end{macro} % \begin{macro}{\abjad} \cs{abjad}\marg{number} expresses its argument % in Arabic letters in accordance with the \arb[trans]{'abjad} % arrangement of the alphabet. \meta{number} must be between 1 and diff --git a/macros/luatex/latex/arabluatex/arabluatex.ins b/macros/luatex/latex/arabluatex/arabluatex.ins index ea5a73ebcf..f51c46d73d 100644 --- a/macros/luatex/latex/arabluatex/arabluatex.ins +++ b/macros/luatex/latex/arabluatex/arabluatex.ins @@ -1,7 +1,7 @@ %% This file is part of the `arabluatex' package %% %% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -%% Copyright (C) 2016--2019 Robert Alessi +%% Copyright (C) 2016--2020 Robert Alessi %% %% Please send error reports and suggestions for improvements to %% Robert Alessi <alessi@robertalessi.net> @@ -43,7 +43,7 @@ This is a generated file. This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> diff --git a/macros/luatex/latex/arabluatex/arabluatex.lua b/macros/luatex/latex/arabluatex/arabluatex.lua index df031569c0..868e11692d 100644 --- a/macros/luatex/latex/arabluatex/arabluatex.lua +++ b/macros/luatex/latex/arabluatex/arabluatex.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> @@ -56,6 +56,7 @@ local aftercmd = lpeg.Cs(lpeg.S("*[{,.?;:'`\"") + dblbkslash) local cmdargs = lpeg.Cs(spce^-1 * bsqbracketsii * bcbracesii * bsqbrackets^-1) local arbargs = lpeg.Cs(spce^-1 * bsqbrackets^-1 * bcbraces) local baytargs = lpeg.Cs(spce * bcbraces * bsqbrackets^-1 * bcbraces) +local arind = lpeg.Cs(dblbkslash * lpeg.P("arind") * spce^-1 * bsqbracketsii) local function protectarb(str) str = string.gsub(str, "(\\arb%s?)(%[.-%])(%b{})", "\\al@brk{\\arb%2%3}") @@ -268,7 +269,7 @@ local function takeoutarb(str) end str = string.gsub(str, "(\\arb%s?)(%b{})", function(tag, body) body = string.sub(body, 2, -2) - return string.format("%s", body) + return string.format("\\al@brk{%s{%s}}", tag, body) end) str = string.gsub(str, "\\@rb", "\\arb") str = "\\arb{"..str.."}" @@ -655,6 +656,20 @@ local function processbuckw(str) return str end +local function processarind(str, mode) + str = gsub(str, arind * bcbraces, function(tag, arg) + arg = string.sub(arg, 2, -2) + if mode == "trans" then + return string.format("%s{\\txtrans{%s}}", tag, arg) + else + arg = novoc(arg) + arg = string.gsub(arg, "\\arabicfont%s?{}", "") + return string.format("%s{\\txarb{%s}}", tag, arg) + end + end) + return str +end + -- The following functions produce a copy of the original .tex source -- file in which all arabtex strings are replaced with Unicode -- equivalents @@ -743,15 +758,9 @@ local function processarbtoutf(str) return string.format("%s{\\arb[trans]{\\uc{%s}}}", tag, body) end end) - str = string.gsub(str, "(\\begin%s?{arab})(%b[])", function(tag, body) - if string.find(body, "trans") then - return string.format("\\par\\bgroup\\setLR\\arb%s{", body) - else - return string.format("\\par\\bgroup\\setRL\\arb%s{", body) - end - end) - str = string.gsub(str, "(\\begin%s?{arab})", "\\par\\bgroup\\arbpardir\\arb{") - str = string.gsub(str, "\\end%s?{arab}", "}\\egroup\\par") + str = string.gsub(str, "(\\begin%s?{arab})(%b[])", "\\bgroup\\arb%2{") + str = string.gsub(str, "(\\begin%s?{arab})", "\\bgroup\\arb{") + str = string.gsub(str, "\\end%s?{arab}", "}\\egroup") -- This does not work, while the following two do. Look into this later. -- str = gsub(str, lpeg.Cs("\\arb") * spcenc * bsqbrackets^-1 * bcbraces, function(tag, opt, body) -- body = string.sub(body, 2, -2) @@ -836,6 +845,14 @@ function arabluatex.closestream() t = string.gsub(t, "(\\@al@ob)", "{") t = string.gsub(t, "(\\@al@cb@sp)", "} ") t = string.gsub(t, "(\\@al@cb)(%s?)", "}") + t = string.gsub(t, "(\\bgroup%s?)(\\txarb%s?)(%b{})(\\egroup%s?)", function(tagio, tag, body, tagic) + body = string.sub(body, 2, -2) + return string.format("\\begin{txarab}%s\\end{txarab}", body) + end) + t = string.gsub(t, "(\\bgroup%s?)(\\txtrans%s?)(%b{})(\\egroup%s?)", function(tagio, tag, body, tagic) + body = string.sub(body, 2, -2) + return string.format("\\begin{txarabtr}%s\\end{txarabtr}", body) + end) t = gsub(t, lpeg.Cs("\\begin") * spcenc^-1 * bcbraces * cmdargs, "\n%1%2%3\n") t = string.gsub(t, "(\\\\)(%s?)", "%1\n") @@ -892,6 +909,7 @@ function arabluatex.processvoc(str, rules, scheme) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) + str = processarind(str) if scheme == "buckwalter" then str = processbuckw(str) else end @@ -920,6 +938,7 @@ function arabluatex.processfullvoc(str, rules, scheme) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) + str = processarind(str) if scheme == "buckwalter" then str = processbuckw(str) else end @@ -950,6 +969,7 @@ function arabluatex.processnovoc(str, rules, scheme) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) + str = processarind(str) if scheme == "buckwalter" then str = processbuckw(str) else end @@ -979,6 +999,7 @@ function arabluatex.processtrans(str, mode, rules, scheme) str = protectarb(str) str = breakcmd(str) str = holdcmd(str) + str = processarind(str, "trans") if scheme == "buckwalter" then str = processbuckw(str) end diff --git a/macros/luatex/latex/arabluatex/arabluatex.pdf b/macros/luatex/latex/arabluatex/arabluatex.pdf Binary files differindex 5374b0aef2..44e83c9d4a 100644 --- a/macros/luatex/latex/arabluatex/arabluatex.pdf +++ b/macros/luatex/latex/arabluatex/arabluatex.pdf diff --git a/macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua b/macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua index f524c3b6d9..a53adce4d2 100644 --- a/macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua +++ b/macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> @@ -38,6 +38,7 @@ hamzafv = { {a="w\"'", b="ؤ"}, {a="i\"'", b="إ"}, {a="y\"'", b="ئ"}, + -- moved below (end of 'final' section) {a="ؤ([^uaiUAI])", b="ؤْ%1"}, {a="ؤ(%p*)$", b="ؤْ%1"}, {a="ؤ(%p*%s)", b="ؤْ%1"}, @@ -47,6 +48,9 @@ hamzafv = { {a="ئ([^uaiUAI])", b="ئْ%1"}, {a="ئ(%p*)$", b="ئْ%1"}, {a="ئ(%p*%s)", b="ئْ%1"}, + {a="ء([^uaiUAI])", b="ءْ%1"}, + {a="ء(%p*)$", b="ءْ%1"}, + {a="ء(%p*%s)", b="ءْ%1"}, -- hamza takes tašdīd too {a="''([Uu])", b="ؤؤ%1"}, {a="''([Aa])", b="أأ%1"}, @@ -129,22 +133,40 @@ hamzafv = { {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, {a="(i)(')(%p*)$", b="%1ئْ%3"}, {a="(i)(')(%p*%s)", b="%1ئْ%3"}, --- +-- the following was wrong for it broke the taḫfīfu 'l-hamzati +-- (look into this later): +-- moved here from above: + -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, + -- {a="ؤ(%p*)$", b="ؤْ%1"}, + -- {a="ؤ(%p*%s)", b="ؤْ%1"}, + -- {a="أ([^uaiUAI])", b="أْ%1"}, + -- {a="أ(%p*)$", b="أْ%1"}, + -- {a="أ(%p*%s)", b="أْ%1"}, + -- {a="ئ([^uaiUAI])", b="ئْ%1"}, + -- {a="ئ(%p*)$", b="ئْ%1"}, + -- {a="ئ(%p*%s)", b="ئْ%1"}, + -- {a="ء([^uaiUAI])", b="ءْ%1"}, + -- {a="ء(%p*)$", b="ءْ%1"}, + -- {a="ء(%p*%s)", b="ءْ%1"}, -- middle {a="([UIwy])(')", b="%1ء"}, --new -- {a="([Iy])(')", b="%1ئ"}, --included in the above line - {a="([^uai])(')([uU])", b="%1ؤ%3"}, - {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, - {a="([^uai])(')([iI])", b="%1ئ%3"}, - {a="(u)(')([uU])", b="%1ؤ%3"}, + -- hamza is alone after letters of prolongation or sukūn + -- {a="([^uai])(')([uU])", b="%1ؤ%3"}, + -- {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, + -- {a="([^uai])(')([iI])", b="%1ئ%3"}, + {a="([^uai])(')(%_?[uaiUAYI])", b="%1ء%3"}, + {a="(u)(')([UI])", b="%1ء%3"}, + {a="(u)(')([u])", b="%1ؤ%3"}, {a="(u)(')(%_?[aAY])", b="%1ؤ%3"}, - {a="(u)(')([iI])", b="%1ئ%3"}, + {a="(u)(')([i])", b="%1ئ%3"}, {a="(a)(')(%_?[aAY])", b="%1أ%3"}, {a="(a)(')([uU])", b="%1ؤ%3"}, {a="(a)(')([iI])", b="%1ئ%3"}, + {a="(i)(')([UI])", b="%1ء%3"}, {a="(i)(')(%_?[aAY])", b="%1ئ%3"}, - {a="(i)(')([uU])", b="%1ئ%3"}, - {a="(i)(')([iI])", b="%1ئ%3"}, + {a="(i)(')([u])", b="%1ئ%3"}, + {a="(i)(')([i])", b="%1ئ%3"}, {a="(a)(')([^uaiUAI])", b="%1أْ%3"}, {a="(u)(')([^uaiUAI])", b="%1ؤْ%3"}, {a="(i)(')([^uaiUAI])", b="%1ئْ%3"} @@ -166,6 +188,7 @@ hamzafveasy = { -- differences marked below with 'easy' {a="w\"'", b="ؤ"}, {a="i\"'", b="إ"}, {a="y\"'", b="ئ"}, + -- moved below (end of 'final' section) {a="ؤ([^uaiUAI])", b="ؤْ%1"}, {a="ؤ(%p*)$", b="ؤْ%1"}, {a="ؤ(%p*%s)", b="ؤْ%1"}, @@ -175,6 +198,9 @@ hamzafveasy = { -- differences marked below with 'easy' {a="ئ([^uaiUAI])", b="ئْ%1"}, {a="ئ(%p*)$", b="ئْ%1"}, {a="ئ(%p*%s)", b="ئْ%1"}, + {a="ء([^uaiUAI])", b="ءْ%1"}, + {a="ء(%p*)$", b="ءْ%1"}, + {a="ء(%p*%s)", b="ءْ%1"}, -- hamza takes tašdīd too {a="''([Uu])", b="ؤؤ%1"}, {a="''([Aa])", b="أأ%1"}, @@ -269,6 +295,21 @@ hamzafveasy = { -- differences marked below with 'easy' {a="(i)(')([uai]N?)(%p*%s)", b="%1ئ%3%4"}, {a="(i)(')(%p*)$", b="%1ئْ%3"}, {a="(i)(')(%p*%s)", b="%1ئْ%3"}, +-- the following was wrong for it broke the taḫfīfu 'l-hamzati +-- (look into this later): +-- moved here from above: + -- {a="ؤ([^uaiUAI])", b="ؤْ%1"}, + -- {a="ؤ(%p*)$", b="ؤْ%1"}, + -- {a="ؤ(%p*%s)", b="ؤْ%1"}, + -- {a="أ([^uaiUAI])", b="أْ%1"}, + -- {a="أ(%p*)$", b="أْ%1"}, + -- {a="أ(%p*%s)", b="أْ%1"}, + -- {a="ئ([^uaiUAI])", b="ئْ%1"}, + -- {a="ئ(%p*)$", b="ئْ%1"}, + -- {a="ئ(%p*%s)", b="ئْ%1"}, + -- {a="ء([^uaiUAI])", b="ءْ%1"}, + -- {a="ء(%p*)$", b="ءْ%1"}, + -- {a="ء(%p*%s)", b="ءْ%1"}, -- -- middle {a="([Uw])(')", b="%1ء"}, --new diff --git a/macros/luatex/latex/arabluatex/arabluatex_novoc.lua b/macros/luatex/latex/arabluatex/arabluatex_novoc.lua index 51418617b7..f3410e74d9 100644 --- a/macros/luatex/latex/arabluatex/arabluatex_novoc.lua +++ b/macros/luatex/latex/arabluatex/arabluatex_novoc.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> diff --git a/macros/luatex/latex/arabluatex/arabluatex_trans.lua b/macros/luatex/latex/arabluatex/arabluatex_trans.lua index 63a1956345..455b57ba23 100644 --- a/macros/luatex/latex/arabluatex/arabluatex_trans.lua +++ b/macros/luatex/latex/arabluatex/arabluatex_trans.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> diff --git a/macros/luatex/latex/arabluatex/arabluatex_voc.lua b/macros/luatex/latex/arabluatex/arabluatex_voc.lua index 54c324c428..4ec0fe3ae4 100644 --- a/macros/luatex/latex/arabluatex/arabluatex_voc.lua +++ b/macros/luatex/latex/arabluatex/arabluatex_voc.lua @@ -2,7 +2,7 @@ This file is part of the `arabluatex' package ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX -Copyright (C) 2016--2019 Robert Alessi +Copyright (C) 2016--2020 Robert Alessi Please send error reports and suggestions for improvements to Robert Alessi <alessi@robertalessi.net> @@ -202,7 +202,7 @@ hamza = { -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, {a="'i'([^uaiUAI])", b="إI%1"}, - {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أ%2"}, {a="^u'([^uaiUAI])", b="اU%1"}, {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, {a="^i'([^uaiUAI])", b="اI%1"}, @@ -276,18 +276,22 @@ hamza = { -- middle {a="([UIwy])(')", b="%1ء"}, --new -- {a="([Iy])(')", b="%1ئ"}, -- included in the above line - {a="([^uai])(')([uU])", b="%1ؤ%3"}, - {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, - {a="([^uai])(')([iI])", b="%1ئ%3"}, - {a="(u)(')([uU])", b="%1ؤ%3"}, + -- hamza is alone after letters of prolongation or sukūn + -- {a="([^uai])(')([uU])", b="%1ؤ%3"}, + -- {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, + -- {a="([^uai])(')([iI])", b="%1ئ%3"}, + {a="([^uai])(')(%_?[uaiUAYI])", b="%1ء%3"}, + {a="(u)(')([UI])", b="%1ء%3"}, + {a="(u)(')([u])", b="%1ؤ%3"}, {a="(u)(')(%_?[aAY])", b="%1ؤ%3"}, - {a="(u)(')([iI])", b="%1ئ%3"}, + {a="(u)(')([i])", b="%1ئ%3"}, {a="(a)(')(%_?[aAY])", b="%1أ%3"}, {a="(a)(')([uU])", b="%1ؤ%3"}, {a="(a)(')([iI])", b="%1ئ%3"}, + {a="(i)(')([UI])", b="%1ء%3"}, {a="(i)(')(%_?[aAY])", b="%1ئ%3"}, - {a="(i)(')([uU])", b="%1ئ%3"}, - {a="(i)(')([iI])", b="%1ئ%3"}, + {a="(i)(')([u])", b="%1ئ%3"}, + {a="(i)(')([i])", b="%1ئ%3"}, {a="(a)(')([^uaiUAI])", b="%1أ%3"}, {a="(u)(')([^uaiUAI])", b="%1ؤ%3"}, {a="(i)(')([^uaiUAI])", b="%1ئ%3"} @@ -321,7 +325,7 @@ hamzaeasy = { -- differences marked below with 'easy' -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, {a="'i'([^uaiUAI])", b="إI%1"}, - {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أ%2"}, {a="^u'([^uaiUAI])", b="اU%1"}, {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, {a="^i'([^uaiUAI])", b="اI%1"}, @@ -895,6 +899,7 @@ punctuation = { } null = { + {a="%&", b=""}, -- That is ^^^^200d, the zero-width joiner {a="%|", b=""}, {a="^%-", b=""}, {a="([^0-9])(%-)", b="%1"}, diff --git a/macros/luatex/latex/arabluatex/makefile b/macros/luatex/latex/arabluatex/makefile new file mode 100644 index 0000000000..9b51523499 --- /dev/null +++ b/macros/luatex/latex/arabluatex/makefile @@ -0,0 +1,70 @@ +pkg := arabluatex +ver := $(shell ltxfileinfo -v $(pkg).dtx|sed -e 's/^v//') +TEXMFDIR := $(shell kpsewhich -expand-var='$$TEXMFHOME') +HOMEDIR := $$HOME +CMP = lualatex-dev + +sty: clean + $(CMP) $(pkg).ins + +doc: clean sty + $(CMP) --shell-escape $(pkg).dtx + biber arabluatex + $(CMP) --shell-escape $(pkg).dtx + makeindex -s gind.ist -o $(pkg).ind $(pkg).idx + makeindex -s gglo.ist -o $(pkg).gls $(pkg).glo + $(CMP) --shell-escape $(pkg).dtx + $(CMP) --shell-escape $(pkg).dtx + for i in samples/*.tex; \ + do latexmk -outdir=TMP -lualatex -e '$$lualatex=q/$(CMP) %O --shell-escape %S/' $$i; \ + done + mv TMP/*.pdf samples/ + +all: clean sty doc + +local: clean sty + if [ ! -d "$(TEXMFDIR)/tex/lualatex/arabluatex" ]; then \ + mkdir -p $(TEXMFDIR)/tex/lualatex/arabluatex; \ + fi + cp $(pkg)*.{sty,lua} $(TEXMFDIR)/tex/lualatex/arabluatex + if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ + mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ + fi + cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto + +auctex: clean + if [ ! -d "$(HOMEDIR)/.emacs.d/auctex/auto" ]; then \ + mkdir -p $(HOMEDIR)/.emacs.d/auctex/auto; \ + fi + cp $(pkg)*.el $(HOMEDIR)/.emacs.d/auctex/auto + +package: clean all + mkdir -p arabluatex/samples/ + cp *.{lua,ins,dtx,md,pdf} makefile README.tex arabluatex/ # .bib is in dtx + cp samples/*.{tex,pdf} arabluatex/samples/ + mkdir -p tex/lualatex/arabluatex/ + cp *.lua *.sty tex/lualatex/arabluatex/ + mkdir -p doc/lualatex/arabluatex/samples + cp *.{pdf,el} doc/lualatex/arabluatex/ + cp samples/*.{tex,pdf} doc/lualatex/arabluatex/samples + mkdir -p source/lualatex/arabluatex/ + cp *.{ins,dtx,tex,md} makefile source/lualatex/arabluatex/ # .bib is in dtx + zip -r arabluatex.tds.zip tex doc source + tar czf arabluatex-$(ver).tar.gz arabluatex.tds.zip arabluatex/ + +clean: + rm -rf $(TEXMFDIR)/tex/lualatex/arabluatex/ + rm -rf $(HOMEDIR)/.emacs.d/auctex/auto/arabluatex*.el + rm -rf tex/ doc/ source/ auto/ + rm -rf arabluatex/ + rm -rf saved/ TMP/ _minted-arabluatex/ + find ./samples/ | grep -v "\./samples/$$" | grep -v ".*tex$$" | xargs rm -rf + mkdir saved + cp *.{lua,ins,dtx,tex,el} makefile saved # .bib is in dtx + rm *.* + cp saved/* . + rm -rf saved/ + pandoc -s README.tex -o README.md && sed -i 's/{#.*}//g' README.md + pandoc -s README.tex -o about.html + +.PHONY: sty doc all local auctex package clean diff --git a/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf b/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf Binary files differindex b12a86dd1c..c56297fc96 100644 --- a/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf +++ b/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf diff --git a/macros/luatex/latex/arabluatex/samples/al-Jahiz.tex b/macros/luatex/latex/arabluatex/samples/al-Jahiz.tex index e83b795cbd..6c34bcc5c4 100644 --- a/macros/luatex/latex/arabluatex/samples/al-Jahiz.tex +++ b/macros/luatex/latex/arabluatex/samples/al-Jahiz.tex @@ -5,10 +5,10 @@ % \documentclass[fontsize=12pt, paper=letter, DIV=classic]{scrartcl} \usepackage{fontspec} -\setmainfont{Old Standard} -\usepackage{newunicodechar} -\newunicodechar{ǧ}{ǧ} % Old Standard does include ǧ/Ǧ -\newunicodechar{Ǧ}{Ǧ} % +\usepackage[english]{babel} +\babelfont{rm}{Old Standard} +\babelfont{sf}{NewComputerModern Sans} +\babelfont{tt}{NewComputerModern Mono} \usepackage{filecontents} \usepackage{xcolor} diff --git a/macros/luatex/latex/arabluatex/samples/exporting.pdf b/macros/luatex/latex/arabluatex/samples/exporting.pdf Binary files differindex aff9bb76e2..5911562443 100644 --- a/macros/luatex/latex/arabluatex/samples/exporting.pdf +++ b/macros/luatex/latex/arabluatex/samples/exporting.pdf diff --git a/macros/luatex/latex/arabluatex/samples/template-01.pdf b/macros/luatex/latex/arabluatex/samples/template-01.pdf Binary files differindex b72fa71008..db695d716b 100644 --- a/macros/luatex/latex/arabluatex/samples/template-01.pdf +++ b/macros/luatex/latex/arabluatex/samples/template-01.pdf |