summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/lualatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-12-17 20:40:20 +0000
committerKarl Berry <karl@freefriends.org>2016-12-17 20:40:20 +0000
commit16bf613671c9c801210b618e549388542875cf89 (patch)
treee449aa6c65885a555f38f1f5ce275b3303387b4c /Master/texmf-dist/source/lualatex
parentde0332fcc5336a39edea9f6a5103f6d8f1c4d608 (diff)
arabluatex (17dec16)
git-svn-id: svn://tug.org/texlive/trunk@42737 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/lualatex')
-rw-r--r--Master/texmf-dist/source/lualatex/arabluatex/README.tex3
-rw-r--r--Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx455
2 files changed, 433 insertions, 25 deletions
diff --git a/Master/texmf-dist/source/lualatex/arabluatex/README.tex b/Master/texmf-dist/source/lualatex/arabluatex/README.tex
index 7a455acaa50..2ee1c501799 100644
--- a/Master/texmf-dist/source/lualatex/arabluatex/README.tex
+++ b/Master/texmf-dist/source/lualatex/arabluatex/README.tex
@@ -82,6 +82,7 @@ source files:
\url{http://www.tex.ac.uk/faq/FAQ-inst-wlcf.html} 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|
@@ -113,7 +114,7 @@ distributions package it in their repositories).
Use this command to download the repository
\begin{verbatim}
-git clone http://git.robertalessi.net/cgit.cgi/arabluatex
+git clone http://git.robertalessi.net/arabluatex
\end{verbatim}
diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
index b2e901a6900..0f2dfb84820 100644
--- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
+++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
@@ -27,7 +27,7 @@
%<package-info>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package-info>\ProvidesPackage{arabluatex}
%<*package-info>
- [2016/11/14 v1.5 An ArabTeX-like interface for LuaLaTeX]
+ [2016/12/17 v1.6 An ArabTeX-like interface for LuaLaTeX]
%</package-info>
%
%<*driver>
@@ -145,7 +145,7 @@
\defaultfontfeatures{RawFeature={+liga}}
\setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps},
RawFeature={+mark;+ccmp;+ss05;+ss06}]
-\usepackage{arabluatex}[2016/11/14]
+\usepackage{arabluatex}[2016/12/17]
\usepackage[nopar]{quran}
\usepackage{varioref}
\usepackage{hypdoc}
@@ -160,6 +160,7 @@
\quotingsetup{noorphans, rightmargin=0pt}
\renewcommand*{\quotingfont}{\footnotesize}
\usepackage[position=below]{caption}
+\usepackage{lineno}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage[defaultlines=3,all]{nowidow}
@@ -191,15 +192,18 @@
\CodelineIndex
\begin{document}
\DocInput{arabluatex.dtx}
+ \printbibliography[heading=bibintoc]
+ \phantomsection
\addcontentsline{toc}{section}{Change History}
\PrintChanges
+ \phantomsection
\addcontentsline{toc}{section}{Index}
\PrintIndex
\end{document}
%</driver>
% \fi
%
-% \CheckSum{561}
+% \CheckSum{694}
%
% \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
@@ -506,21 +510,26 @@
% \end{quote}
% \item The euphonic \arb[trans]{ta^sdId} is generated (see
% \vpageref{ref:euphonic-tashdid}).
-% \item Assimilation rules laid on \vref{ref:assimilation} are
-% applied.
% \item In |fullvoc| mode, the \arb[trans]{sukUn} is expressed.
% \end{compactitem}
%
% \DescribeMacro{\SetArbEasy} \NEWfeature{v1.4.4}
% \DescribeMacro{\SetArbEasy*} \DescribeMacro{\SetArbDflt} Such
-% refinements may be discarded by the command \cs{SetArbEasy}, either
+% refinements as \enquote*{classic} \arb[trans]{maddaT} may be
+% discarded by the command \cs{SetArb\allowbreak{}Easy}, either
% globally in the preamble or locally at any point of the
% document. The difference between \cs{SetArbEasy} and its
% \enquote*{starred} version \cs{SetArbEasy*} is that the former keeps
% the \arb[trans]{sukUn} that is generated by the |fullvoc| mode,
% while the latter further takes it away. Default \enquote*{classic}
% rules may be set back at any point of the document with the command
-% \cs{SetArbDflt}. Examples follow:---
+% \cs{SetArbDflt}. \NEWfeature{v1.6}
+% \DescribeMacro{\SetArbDflt*}Assimilation rules laid on
+% \vref{ref:assimilation} may also be applied by the
+% \enquote*{starred} version of this command \cs{SetArbDflt*} either
+% in the preamble or at any point of the document.\footnote{For an
+% example, see \vref{sec:poetry-example}.} Examples
+% follow:---
% \begin{compactenum}[(a)]
% \item \cs{SetArbDflt}:
% \begin{compactenum}[i.]
@@ -531,6 +540,15 @@
% \item |trans| \arb[trans]{wa-mAta istisqA'aN qabla 'an yutimma
% kitAba-hu fI nujUm-i 'l-samA'-i}
% \end{compactenum}
+% \item \cs{SetArbDflt*}:
+% \begin{compactenum}[i.]\SetArbDflt*
+% \item |voc| \arb[voc]{wa-mAta istisqA'aN qabla 'an yutimma
+% kitAba-hu fI nujUm-i 'l-samA'-i}
+% \item |fullvoc| \arb[fullvoc]{wa-mAta istisqA'aN qabla 'an yutimma
+% kitAba-hu fI nujUm-i 'l-samA'-i}
+% \item |trans| \arb[trans]{wa-mAta istisqA'aN qabla 'an yutimma
+% kitAba-hu fI nujUm-i 'l-samA'-i}\SetArbDflt
+% \end{compactenum}
% \item \cs{SetArbEasy}:
% \begin{compactenum}[i.]\SetArbEasy
% \item |voc| \arb[voc]{wa-mAta istisqA'aN qabla 'an yutimma
@@ -1153,7 +1171,7 @@ vowels (see §~3).
% \arb[novoc]{l}, \arb[novoc]{m}, \arb[novoc]{w}, \arb[novoc]{y}
% after \arb[voc]{n} with \arb[trans]{jazmaT}, and also after the
% \arb[trans]{tanwIn}:---
-% \begin{quote}
+% \begin{quote}\SetArbDflt*
% Note the absence of \arb[trans]{sukUn} above the passed over
% \arb[novoc]{n} in the following examples, each of which is
% accompanied by a consistent transliteration: |min rabbi-hi|
@@ -1162,8 +1180,22 @@ vowels (see §~3).
% |'an| |yaqtula| \arb[fullvoc]{'an yaqtula} \arb[trans]{'an yaqtula}.
%
% With \arb[trans]{tanwIn}: |kitAbuN| |mubInuN| \arb[voc]{kitAbuN
-% mubInuN} \arb[trans]{kitAbuN mubInuN}.
+% mubInuN} \arb[trans]{kitAbuN mubInuN}.\SetArbDflt
% \end{quote}
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}[text only]
+ \textsc{Rem.} This particular feature must be put into operation by
+ the command \cs{SetArbDflt*} explicitly. See above
+ \vref{sec:classic-modern-typesetting} for further details. Other
+ kinds of assimilations, including the various cases of
+ \arb[trans]{'id.gAm}, will be included in \package{arabluatex}
+ gradually.
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi
% \item With the letter \arb[voc]{t} after the dentals
% \arb[novoc]{_t}, \arb[novoc]{d}, \arb[novoc]{_d}, \arb[novoc]{.d},
% \arb[novoc]{.t}, \arb[novoc]{.z} in certain parts of the verb:
@@ -1174,6 +1206,7 @@ vowels (see §~3).
% \end{compactenum}
%
% \paragraph{The definite article and the \arb[trans]{'alif-u 'l-wa.sl-i}}
+% \label{ref:definite-article}
% At the beginning of a sentence, \arb[fullvoc]{"a} is never written,
% as \arb[fullvoc]{'l-.hamd-u li-ll_ah-i}; instead, to indicate that
% the \arb[trans]{'alif} is a connective \arb[trans]{'alif}
@@ -1321,13 +1354,20 @@ vowels (see §~3).
% \cap{'l-rUm-u}}.
% \end{quote}
% \label{ref:muhammaduni}
-% However, the Arabic script does not shows the \arb[trans]{kasraT}
-% which is taken by the nouns having \arb[trans]{tanwIn} although it
-% is explicit in pronunciation and must appear in some transliteration
-% standards. \package{arabluatex} takes care of that automatically:---
+% However, the Arabic script does not show the \arb[trans]{kasraT} or
+% the \arb[trans]{.dammaT} which may be taken by the nouns having
+% \arb[trans]{tanwIn} although it is explicit in pronunciation and
+% must appear in some transliteration standards. \package{arabluatex}
+% takes care of that automatically:---
% \begin{quote}
% |mu.hammaduN| |'l-nabI| \arb[fullvoc]{mu.hammaduN 'l-nabI}
-% \arb[trans]{\cap{m}u.hammaduN 'l-nabI}.
+% \arb[trans]{\cap{m}u.hammaduN 'l-nabI}, |salAmuN| |ud_hulUA|
+% \arb[fullvoc]{salAmuN ud_hulUA} \arb[trans]{salAmuN ud_hulUA},
+% |qa.sIdata-hu| |fI| |qatl-i| |\cap{'a}bI| |\cap{m}uslimiN|
+% |'llatI| |yaqUlu| |fI-hA| \arb[fullvoc]{qa.sIdata-hu fI qatl-i
+% \cap{'a}bI \cap{m}uslimiN 'llatI yaqUlu fI-hA}
+% \arb[trans]{qa.sIdata-hu fI qatl-i \cap{'a}bI \cap{m}uslimiN
+% 'llatI yaqUlu fI-hA}.
% \end{quote}
%
% \subsection{Special orthographies}
@@ -1478,8 +1518,8 @@ vowels (see §~3).
% \begin{quote}
% |wa-"ust"u`mila| \arb[novoc]{wa-"ust"u`mila}
% \arb[trans]{wa-"ust"u`mila}, |huwa| |"inhazama| \arb[novoc]{huwa
-% "inhazama} \arb[trans]{huwa "inhazama}, |al-"intiqA.du|
-% \arb[novoc]{al-"intiqA.du} \arb[trans]{al-"intiqA.du}.
+% "inhazama} \arb[trans]{huwa "inhazama}, |al-"intiqA.d-u|
+% \arb[novoc]{al-"intiqA.d-u} \arb[trans]{al-"intiqA.d-u}.
% \end{quote}
% \end{compactenum}
%
@@ -1540,7 +1580,7 @@ vowels (see §~3).
% \end{quote}
%
% \subsubsection{\texorpdfstring{Quoting the
-% \arb[trans]{hamzaT}}{Quoting the hamza}}
+% \arb[trans]{hamzaT}}{Quoting the hamzah}}
% \label{sec:quoting-hamza}
% As said above in \vref{ref:hamza}, the \arb[trans]{hamzaT} is always
% written \meta{\texttt{'}}, its carrier being determined by contextual
@@ -1742,6 +1782,281 @@ vowels (see §~3).
% \arb[trans]{\abjad{45}: kitAbu-hu fI 'l-\cap{`AdAt-i}}.
% \end{quote}
%
+% \section{Arabic poetry}
+% \label{sec:poetry}
+% \NEWfeature{v1.6} \package{arabluatex} provides a special
+% environment for typesetting Arabic poetry. Every line in this
+% environment must end with |\\|.
+%
+% \DescribeEnv{arabverse} The |arabverse| environment may take up to
+% six optional \enquote*{named arguments} each of which is set using
+% the syntax \meta{key}$=$\meta{value}, like so:---%
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluaverbatim}
+ \begin{arabverse}[key1=value1, key2=value2, ...]
+ <verses>
+ \end{arabverse}
+\end{arabluaverbatim}
+% \iffalse
+%</example>
+% \fi
+%
+% The description of the optional arguments follows:---
+%
+% \DescribeOption{mode} |mode|$=$\meta{mode}, either |voc|, |fullvoc|,
+% |novoc| or |trans|. The default mode is the one that is set at load
+% time as already seen \vref{sec:options}.
+%
+% \DescribeOption{width} |width|$=$\meta{length}
+% \hfill\arabluaverb{Default: 0.3\linewidth}\\ The default width of
+% each hemistich that the verse consists of. It may be expressed in
+% any accepted unit of measurement, such as |4cm| or |2in|. However,
+% one must keep in mind that the total length of the two hemistichs
+% added to the one of the gutter that separates them must not exceed
+% the length of the base line, unless one wishes to have the
+% hemistichs distributed on subsequent lines.
+%
+% \DescribeOption{gutter} |gutter|$=$\meta{width}
+% \hfill\arabluaverb{Default: 0.15 x (hemistich width)}\\ The gutter
+% consists of the blank space that is between the two hemistichs. By
+% default, it is commensurate with the width of the hemistich, but it
+% may be expressed in any accepted unit of measurement as well.
+%
+% \DescribeOption{metre} |metre|$=$\meta{name}
+% \hfill\arabluaverb{Default: none}\\ If the name of the metre is
+% expressed, it is printed after the lines and set flush left in
+% |voc|, |fullvoc| and |novoc| modes or flush right in |trans| mode.
+%
+% \DescribeOption{delim} |delim|$=$|true|\verb+|+|false|
+% \hfill\arabluaverb{Default: false}\\ This named argument does not
+% need a value as it defaults to |true| if it is used. If so, a
+% delimiter is printed between each of the hemistichs. By default, it
+% is set to the \enquote*{star} character \enquote*{*}. The command
+% \DescribeMacro{\SetHemistichDelim}\cs{SetHemistichDelim}\marg{delimiter}
+% may be used at any point of the document to change this default
+% setting.
+%
+% \DescribeOption{utf} |utf|$=$|true|\verb+|+|false|
+% \hfill\arabluaverb{Default: false}\\ As the preceding one, this
+% named argument does not need a value as it defaults to |true| if it
+% is used. If so, unicode Arabic input is expected in the |arabverse|
+% environment instead of \textsc{ascii} Arab\TeX\ or Buckwalter input
+% schemes. See \vref{sec:unicode-input} for more details.
+%
+% \DescribeMacro{\bayt} Inside the |arabverse| environment, each line
+% is typeset by the command \cs{bayt} which takes two mandatory
+% arguments and may accept one optional argument. Additionally, every
+% \cs{bayt} command \emph{must} be followed with |\\| like so:---%
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}[text only]
+ \cs{bayt}\marg{\arb[trans]{.sadr}}\oarg{\arb[trans]{tadwIr}}%
+ \marg{\arb[trans]{`ajuz}}|\\|
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi
+%
+% That two subsequent hemistichs should be connected with one another
+% is technically named \arb[trans]{tadwIr}. Should that happen, either
+% the \arb[trans]{.sadr} or the \arb[trans]{`ajuz} or both of them,
+% may be connected to one another by letters that are naturally bound
+% to the following or the preceding ones over the
+% \arb[trans]{tadwIr}. The optional argument of the \cs{bayt} command
+% is designed to deal with the various situations that may arise:---
+% \begin{compactenum}[(a)]
+% \item If the two hemistichs be connected with one another by a
+% prominent horizontal flexible stroke, the \arb[trans]{tatwIl} should
+% be used, like so: |[--]| (see \vref{sec:tatwil}). Of course, the
+% ending word of the \arb[trans]{.sadr} and the word at the
+% commencement of the \arb[trans]{`a^guz} must have the
+% \arb[trans]{ta.twIl} too so that the proper shapes of the letters be
+% selected. Consider for example the following:---
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}
+\begin{arabverse}[mode=fullvoc, width=.3\linewidth]
+ \bayt{lA 'ar_A man `ahidtu fI-hA fa-'abkI 'l---}[--]{---yawma
+ dalhaN wa-mA yu.hIru 'l-bukA'u}\\
+\end{arabverse}
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi%
+% 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
+% 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
+% preceding letter, while the first one is simply discarded in this
+% mode, but still may appear as it should, if the |trans| mode be
+% selected:---%
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}
+\begin{arabverse}[mode=trans, width=.4\linewidth]
+ \bayt{lA 'ar_A man `ahidtu fI-hA fa-'abkI 'l---}[--]{---yawma
+ dalhaN wa-mA yu.hIru 'l-bukA'u}\\
+\end{arabverse}
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi%
+% \item In some other cases, it may seem difficult, if not fairly
+% impossible, to split a given word into two parts. This happens
+% mostly because of the \arb[trans]{^saddaT}. Consider for example
+% the following:---
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}
+\begin{arabverse}[mode=fullvoc, width=.25\linewidth, 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
+ dawwiyyaTuN saqfA'u}\\
+\end{arabverse}
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi%
+% In the first line, the word \arb{al-hammi} should be split into
+% \arb{al-ham"-- --mi} as the first part of it belongs to the
+% \arb[trans]{.sadr} and the second to the \arb[trans]{`a^guz}. One
+% solution to avoid splitting this word in such a way is to write
+% inside the \arb[trans]{tadwIr} the part of it that belongs to either
+% hemistich, without omitting to add a space after it. In the second
+% line, the word \arb{'ummu} should be split into \arb{'um"-- --mu},
+% so that the only way to avoid splitting it into two parts is to
+% write it all inside the \arb[trans]{tadwIr}. In that case, as the
+% word is to be placed in the middle, it has been surrounded by
+% spaces.
+% \end{compactenum}
+%
+% \paragraph{Scaling and distortion of characters}
+% The |arabverse| environment and the \cs{bayt} command are designed
+% to typeset the verses in a two-column, fixed width layout. This may
+% result in somewhat distorted text. Should that happen, one may adapt
+% the layout by modifying the values of the above described |width|
+% and |gutter| named arguments until the visual aspect of the layout
+% be satisfactory. It has to be noted that distortion and warping may
+% be even more perceptible in Roman than in Arabic characters.
+%
+% \paragraph{Footnotes}
+% Footnotes are not set by default inside the \cs{bayt} command, but
+% there are two easy ways to have them printed.
+%
+% If they are little in number, each footnote may be split into pairs
+% of \cs{footnote\allowbreak{}mark}|{}| (please mind the braces) in
+% either argument of the \cs{bayt} command and \cs{footnotetext}
+% outside the \cs{bayt} command.
+%
+% If the footnotes are abundant in number, it is advised to load the
+% \package{footnote} package which \package{arabluatex} will then use
+% to typeset any kind of footnote that is called from the arguments of
+% the \cs{bayt} command. Please note that the package
+% \package{footnote} must be loaded \emph{after} \package{arabluatex}.
+%
+% \paragraph{Line numbering}
+% Inside the |arabverse| environment, the |linenumbers| environment of
+% the \package{lineno} package may be used to have the lines of
+% succeeding verses numbered. Please refer to the documentation of
+% this package for more information or to the example below for a
+% basic implementation of this technique.
+%
+% \subsection{Example}
+% \label{sec:poetry-example}
+% Here follow the first lines of \arb[trans]{\upshape{}\cap{i}mru'u
+% 'l-\cap{q}aysi}'s \arb[trans]{\cap{m}u`allaqaT}. In this example,
+% \cs{SetArbDflt*} has been selected so as to mark the
+% \arb[trans]{'id.gAm} that is fit to this declamatory
+% poetry:---\footnote{See \vref{sec:classic-modern-typesetting} for
+% more information.}%
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluaverbatim}
+\begin{arab}[fullvoc]
+ qAla \cap{i}mru'u 'l-\cap{q}aysi fI mu`allaqati-hi:
+\end{arab}
+
+\begin{arabverse}[mode=fullvoc, metre={(al-.darbu 'l-_tAnI mina
+ 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}]
+ \SetArbDflt*
+ \begin{linenumbers*}
+ \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti
+ \cap{'l-l}iw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\
+ \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu
+ rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
+ \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA
+ ka-'anna-hu .habbu fulfuli}\\
+ \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday
+ samurAti 'l-.hayyi nAqifu .han.zali}\\
+ \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA
+ tahlik 'asaN_A wa-ta^gammali}\\
+ \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN
+ dAsiriN min mu`awwali}\\
+ \end{linenumbers*}
+\end{arabverse}
+\end{arabluaverbatim}
+% \iffalse
+%</example>
+% \fi%
+% \begin{arab}[fullvoc]
+% qAla \cap{i}mru'u 'l-\cap{q}aysi fI mu`allaqati-hi:
+% \end{arab}
+%
+% \begin{arabverse}[mode=fullvoc, metre={(al-.darbu 'l-_tAnI mina
+% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.25\linewidth]
+% \SetArbDflt*
+% \begin{linenumbers*}
+% \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti
+% \cap{'l-l}iw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\
+% \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu
+% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
+% \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA
+% ka-'anna-hu .habbu fulfuli}\\
+% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday
+% samurAti
+% 'l-.hayyi nAqifu .han.zali}\\
+% \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA
+% tahlik 'asaN_A wa-ta^gammali}\\
+% \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN
+% dAsiriN min mu`awwali}\\
+% \end{linenumbers*}
+% \end{arabverse}
+%
+% \begin{arab}[trans]
+% qAla \cap{i}mru'u 'l-\cap{q}aysi fI mu`allaqati-hi:
+% \end{arab}
+%
+% \begin{arabverse}[mode=trans, metre={(al-.darbu 'l-_tAnI mina
+% 'l-`arU.di 'l-'_Ul_A mina 'l-.tawIli)}, width=.4\linewidth]
+% \SetArbDflt*
+% \begin{linenumbers*}
+% \bayt{qifA nabki min _dikr_A .habibiN wa-manzili}{bi-saq.ti
+% \cap{'l-l}iw_A bayna \cap{'l-d}a_hUli wa-\cap{.h}awmali}\\
+% \bayt{fa-\cap{t}Udi.ha fa-'l-\cap{m}iqrATi lam ya`fu
+% rasmu-hA}{limA nasa^gat-hA min ^ganUbiN wa-^sam'ali}\\
+% \bayt{tar_A ba`ara 'l-'ar'Ami fI `ara.sAti-hA}{wa-qI`Ani-hA
+% ka-'anna-hu .habbu fulfuli}\\
+% \bayt{ka-'annI .gadATa 'l-bayni yawma ta.hammalUA}{laday
+% samurAti
+% 'l-.hayyi nAqifu .han.zali}\\
+% \bayt{wuqUfaN bi-hA .sa.hbI `alayya ma.tiyya-hum}{yaqUlUna lA
+% tahlik 'asaN_A wa-ta^gammali}\\
+% \bayt{wa-'inna ^sifA'I `abraTuN muhrAqaTuN}{fa-hal `inda rasmiN
+% dAsiriN min mu`awwali}\\
+% \end{linenumbers*}
+% \end{arabverse}
+%
% \section{Special applications}
% \label{sec:special-applications}
% \paragraph{Linguistics}
@@ -2592,9 +2907,6 @@ wa-ya.sIru ta.hta 'l-jild-i
% \begin{compactenum}[(a)]
% \item Short-term:
% \begin{compactenum}[i.]
-% \item Support for typesetting Arabic poetry.
-% \item The \arb[trans]{\cap{qur'An}}: support for typesetting the
-% \arb[trans]{\cap{Qur'An}}.
% \item \texttt{TEI xml} support: \package{arabluatex} will
% interoperate with \texttt{TEI xml} through new global and local
% options that will output Arabic in a \texttt{TEI xml} compliant
@@ -2626,7 +2938,7 @@ wa-ya.sIru ta.hta 'l-jild-i
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{arabluatex}%
-[2016/11/14 v1.5 An ArabTeX-like interface for LuaLaTeX]
+[2016/12/17 v1.6 An ArabTeX-like interface for LuaLaTeX]
\RequirePackage{ifluatex}
% \end{macrocode}
% \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning
@@ -2662,6 +2974,8 @@ wa-ya.sIru ta.hta 'l-jild-i
\RequirePackage{luacode}
\RequirePackage{xparse}
\RequirePackage{environ}
+\RequirePackage{adjustbox}
+\RequirePackage{xkeyval}
% \end{macrocode}
% The following boolean will be set to |true| in |RL| mode:
% \begin{macrocode}
@@ -2751,17 +3065,28 @@ wa-ya.sIru ta.hta 'l-jild-i
% \arb[trans]{sukUn} that is generated, while the starred version
% \cs{SetArbEasy*} takes it away. Default complex rules can be set
% back at any point of the document with \cs{SetArbDflt}.
+% \begin{macro}{\SetArbDflt*}
+% \changes{v1.6}{2016/12/17}{This starred version applies the
+% assimilation rules in addition to what \cs{SetArbDflt} already
+% does.} As of v1.6, \package{arabluatex} does not applies any more
+% the assimilation rules that are laid on \vref{ref:assimilation}; a
+% new starred version \cs{SetArbDflt*} is now available to the user
+% should he wish to apply them.
% \begin{macrocode}
\def\al@arb@rules{dflt}
\NewDocumentCommand{\SetArbEasy}{s}{%
\IfBooleanTF{#1}
{\def\al@arb@rules{easynosukun}}
{\def\al@arb@rules{easy}}}
-\NewDocumentCommand{\SetArbDflt}{}{\def\al@arb@rules{dflt}}
+\NewDocumentCommand{\SetArbDflt}{s}{%
+ \IfBooleanTF{#1}
+ {\def\al@arb@rules{idgham}}
+ {\def\al@arb@rules{dflt}}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
% \begin{macro}{\SetTranslitFont}
% \changes{v1.4}{2016/07/05}{For selecting a specific font for
% transliterated texts} By default, the font that is used for
@@ -2917,6 +3242,90 @@ wa-ya.sIru ta.hta 'l-jild-i
\else \fi\fi\fi\fi}[\par]
% \end{macrocode}
% \end{environment}
+% \begin{environment}{arabverse}
+% \changes{v1.6}{2016/12/17}{New environment \texttt{arabverse} for
+% typesetting Arabic poetry} The |arabverse| environment may receive
+% different options: |mode|, |width|, |gutter|, |metre|, |utf|
+% and |delim|; all of them are defined here just before the
+% |arabverse| environment:
+% \begin{macrocode}
+\newlength{\al@bayt@width}
+\newlength{\al@gutter@width}
+\setlength{\al@bayt@width}{.3\textwidth}
+\setlength{\al@gutter@width}{.15\al@bayt@width}
+\define@key[al]{verse}{width}{\setlength{\al@bayt@width}{#1}}
+\define@key[al]{verse}{gutter}{\setlength{\al@gutter@width}{#1}}
+\define@key[al]{verse}{metre}{\arb{#1}}
+\define@boolkey[al]{verse}{utf}[true]{}
+\define@boolkey[al]{verse}{delim}[true]{}
+\define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc,
+ trans}{\def\al@mode{#1}}
+\presetkeys[al]{verse}{metre=\LR{\vskip -\baselineskip}, utf=false,
+ delim=false}{}
+% \end{macrocode}
+% Then follows the environment itself:
+% \begin{macrocode}
+\NewDocumentEnvironment{arabverse}{O{}}%
+{\par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}%
+ \ifx\al@mode\al@mode@trans%
+ \ifal@verse@utf\setRL\else\setLR\fi%
+ \else\setRL\fi}%
+{\hfill\setkeys[al]{verse}[width,gutter,utf,mode]{#1}\egroup}
+% \end{macrocode}
+% \begin{macro}{\bayt}
+% \changes{v1.6}{2016/12/17}{New macro \cs{bayt} for typesetting
+% each verse inside the \texttt{arabverse} environment} Each verse
+% consists of two hemistichs; therefore the command \cs{bayt} takes
+% two arguments, the first receives the \arb[trans]{.sadr} and the
+% second the \arb[trans]{`ajuz}. That two subsequent hemistichs
+% should be connected with one another is technically named
+% \arb[trans]{tadwIr}. In some of these cases, the hemistichs may be
+% connected by a prominent horizontal flexible stroke which is drawn
+% by the command \cs{al@verse@stroke}.
+% \begin{macro}{\SetHemistichDelim}
+% \changes{v1.6}{2016/12/17}{New command \cs{SetHemistichDelim} for
+% changing the default delimiter between hemistichs} A hemistich
+% delimiter also may be defined. By default, it is set to the
+% \enquote*{star} character: |*|. The command
+% \cs{SetHemistichDelim}\marg{delimiter} may be used at any point of
+% the document to change this default setting.
+% \end{macro}
+% \begin{macrocode}
+\NewDocumentCommand{\arb@utf}{m}{%
+ \ifal@verse@utf\txarb{#1}\else\arb{#1}\fi}
+\def\al@hemistich@delim{*}
+\NewDocumentCommand{\SetHemistichDelim}{m}{\def\al@hemistich@delim{#1}}
+\def\al@verse@stroke{\leavevmode\xleaders\hbox{\arb{--}}\hfill\kern0pt}
+\NewDocumentCommand{\bayt}{m o m}{%
+ \ifdefined\savenotes\savenotes\else\fi%
+ \edef\al@tatweel{--}%
+ \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#1}}%
+ \IfNoValueTF{#2}{%
+ \ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}%
+ \else%
+ \hspace{\al@gutter@width}%
+ \fi
+ }{%
+ \edef\@tempa{#2}%
+ \ifx\@tempa\al@tatweel%
+ \ifx\al@mode\al@mode@trans%
+ \hspace{\al@gutter@width}%
+ \else%
+ \makebox[\al@gutter@width][s]{\al@verse@stroke}%
+ \fi%
+ \else%
+ \ifx\al@mode\al@mode@trans%
+ \adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#2}}%
+ \else%
+ \makebox[\al@gutter@width][s]{\arb@utf{#2}}%
+ \fi\fi}%
+ \adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#3}}%
+ \ifdefined\spewnotes\spewnotes\else\fi%
+}
+% \end{macrocode}
+%
+% \end{macro}
+% \end{environment}
% \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
@@ -3117,7 +3526,5 @@ wa-ya.sIru ta.hta 'l-jild-i
%</patch>
% \fi
%
-% \printbibliography[heading=bibintoc]
-%
% \Finale
\endinput