From a52d9f0e68444976ad0c87a021f58708f838b1da Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 14 Nov 2016 22:35:32 +0000 Subject: arabluatex (14nov16) git-svn-id: svn://tug.org/texlive/trunk@42510 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/lualatex/arabluatex/arabluatex.pdf | Bin 331870 -> 374128 bytes .../source/lualatex/arabluatex/arabluatex.dtx | 420 +++++++++++++++++++-- .../source/lualatex/arabluatex/arabluatex.ins | 6 +- .../tex/lualatex/arabluatex/arabluatex-patch.sty | 136 +++++++ .../tex/lualatex/arabluatex/arabluatex.lua | 13 + .../tex/lualatex/arabluatex/arabluatex.sty | 20 +- .../tex/lualatex/arabluatex/arabluatex_trans.lua | 8 +- 7 files changed, 572 insertions(+), 31 deletions(-) create mode 100644 Master/texmf-dist/tex/lualatex/arabluatex/arabluatex-patch.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf index 83a1eb534bb..702e16658dc 100644 Binary files a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf and b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf differ diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx index 1391460395b..b2e901a6900 100644 --- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx +++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx @@ -27,7 +27,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{arabluatex} %<*package-info> - [2016/10/05 v1.4.5 An ArabTeX-like interface for LuaLaTeX] + [2016/11/14 v1.5 An ArabTeX-like interface for LuaLaTeX] % % %<*driver> @@ -145,7 +145,8 @@ \defaultfontfeatures{RawFeature={+liga}} \setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}, RawFeature={+mark;+ccmp;+ss05;+ss06}] -\usepackage{arabluatex}[2016/10/05] +\usepackage{arabluatex}[2016/11/14] +\usepackage[nopar]{quran} \usepackage{varioref} \usepackage{hypdoc} \hypersetup{unicode=true, colorlinks, allcolors=blue, @@ -198,7 +199,7 @@ % % \fi % -% \CheckSum{379} +% \CheckSum{561} % % \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 @@ -249,10 +250,10 @@ % \maketitle % \footnotesize % \tableofcontents +% \pagebreak % \listoftables % \normalsize % -% \pagebreak % \begin{abstract} % This package provides for \LuaLaTeX\ an Arab{\TeX}-like interface % to generate Arabic writing from an \textsc{ascii} @@ -579,7 +580,34 @@ vowels (see §~3). % \iffalse % % \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 command \cs{indent} 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 +% C]{Wright}:--- % +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \begin{enumerate}[XVI.] + \item \indent\arb{fawA`ilu}*. + \begin{enumerate}[1.] + \item \indent\arb{fA`aluN}; as \arb{_hAtamuN} \emph{a + signet-ring}, ... + \end{enumerate} + \end{enumerate} +\end{arabluacode} +% \iffalse +% +% \fi +% % \DescribeEnv{arab} Running paragraphs of Arabic text should rather % be placed inside an \emph{Arabic environment} % @@ -2163,7 +2191,37 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu % Al-intiqaADi} with the correct vowel \meta{i} in place of the % % \SetInputScheme{arabtex}% % \arb[trans]{'alif-u 'l-wa.sl-i}. -% +% +% \section{Unicode Arabic input} +% \label{sec:unicode-input} +% \NEWfeature{v1.5} As said above in \vref{sec:buckwalter-scheme} +% about the Buckwalter input scheme, even though \package{arabluatex} +% is primarily designed to process the Arab\TeX\ notation, it also +% accepts unicode Arabic input. It should be noted that +% \package{arabluatex} does in no way interfere with unicode Arabic +% input: none of the options |voc|, |fullvoc|, |novoc| or |trans| will +% have any effect on plain unicode Arabic for the time being. +% +% That said, there are two ways of inserting unicode +% Arabic: +% \begin{compactenum}[(a)] +% \item \DescribeMacro{\txarb} The \cs{txarb}\marg{unicode Arabic} +% command for inserting unicode Arabic text in paragraphs; +% \item The \DescribeEnv{txarab} |txarab| environment for inserting +% running paragraphs of Arabic text, like so:---\\% +% \iffalse +%<*example> +% \fi +\begin{arabluaverbatim} + \begin{txarab} + + \end{txarab} +\end{arabluaverbatim} +% \iffalse +% +% \fi +% \end{compactenum} +% % \section{\LaTeX\ Commands in Arabic environments} % \label{sec:commands-in-arb} % \paragraph{General principle} \label{ref:cmd-inside-arabic}\LaTeX\ @@ -2296,6 +2354,133 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a... % % \fi % +% \subsection{Environments} +% \label{sec:environments} +% \changes{v1.5}{2016/11/14}{Environments may be nested inside the +% \texttt{arab} environment} +% \NEWfeature{v1.5} Environments such as +% \arabluaverb{\begin{quote}... \end{quote}} may be nested inside the +% |arab| environment. Up to one optional argument may be passed to +% each nested environment, like so:--- +% \iffalse +%<*example> +% \fi +\begin{arabluaverbatim} +\begin{arab} + \begin{}[] + + \end{} +\end{arab} +\end{arabluaverbatim} +% \iffalse +% +% \fi +% +% In the following example, the \package{quoting} package is used:--- +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \setquotestyle{arabic} + \begin{arab}[fullvoc] + kAna \cap{'abU} \cap{'l-hu_dayli} 'ahd_A 'il_A \cap{muwaysiN} + dajAjaTaN. wa-kAnat dajAjatu-hu 'llatI 'ahdA-hA dUna mA kAna + yuttaxa_du li-\cap{muwaysiN}. wa-l_akinna-hu bi-karami-hi + wa-bi-.husni xuluqi-hi 'a.zhara 'l-ta`ajjuba min simani-hA + wa-.tIbi la.hmi-hA. wa-kAna <\cap{'abU} \cap{'l-hu_dayli}> yu`rafu + bi-'l-'imsAki 'l-^sadIdi. fa-qAla: \enquote{wa-kayfa ra'ayta yA + \cap{'abA} \cap{`imrAna} tilka 'l-dajAjaTa?} qAla: + \enquote{kAnat `ajabaN mina 'l-`ajabi!} fa-yaqUlu: + \begin{quoting}[begintext=», endtext=«] + wa-tadrI mA jinsu-hA? wa-tadrI mA sinnu-hA? fa-'inna + 'l-dajAjaTa 'inna-mA ta.tIbu bi-'l-jinsi wa-'l-sinni. wa-tadrI + bi-'ayyi ^say'iN kunnA nusamminu-hA? wa-fI 'ayyi makAniN kunnA + na`lifu-hA? + \end{quoting} + fa-lA yazAlu fI h_a_dA wa-'l-'A_haru ya.d.haku .da.hkaN na`rifu-hu + na.hnu wa-lA ya`rifu-hu \cap{'abU} \cap{'l-hu_dayli}. + \end{arab} +\end{arabluacode} +% \iffalse +% +% \fi +% +% \subsubsection{Lists} +% \label{sec:lists} +% Lists environments are also accepted inside the |arab| +% environment. One may either use any of the three standard list +% environments, viz. |itemize|, |enumerate| and |description| or use a +% package that provides additional refinements such as +% \package{paralist}. +% +% To take a first example, should one wish to typeset a list of +% manuscripts, the |description| environment may be used like so:--- +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \setRL\paragraph{\arb[novoc]{rumUzi 'l-kitAbi}}\setLR + \begin{arab}[novoc] + \begin{description} + \item[b] max.tU.tu 'l-maktabaTi 'l-'ahliyyaTi bi-\cap{bArIs} 2860 + `arabiyyuN. + \item[s] max.tU.tu 'l-maktabaTi 'l-'ahliyyaTi bi-\cap{bArIs} 2859 + `arabiyyuN. + \item[m] max.tU.tu majlisi \arb[novoc]{^sUrAY malY} .tahrAna 521. + \end{description} + \end{arab} +\end{arabluacode} +% \iffalse +% +% \fi +% +% As a second example, the contents of a treatise may be typeset with +% the standard list environments, like so:--- +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \setRL\centerline{\arb{\textbf{al-qAnUnu fI 'l-.tibbi}}}\setLR + \begin{arab} + \begin{itemize} + \item \textbf{al-fannu 'l-'awwalu} fI .haddi 'l-.tibbi + wa-maw.dU`Ati-hi mina 'l-'umUri 'l-.tabI`iyyaTi wa-ya^stamilu + `al_A sittaTi ta`AlImiN + \begin{itemize} + \item \textbf{al-ta`lImu 'l-'awwalu} [wa-huwa fa.slAni] + \begin{itemize} + \item \textbf{al-fa.slu 'l-'awwalu} + \end{itemize} + \end{itemize} + \end{itemize} + \end{arab} +\end{arabluacode} +% \iffalse +% +% \fi +% +% \paragraph{Caveat} +% The various French definition files of the \package{babel} package +% viz. |acadian|, |canadien|, |francais|, |frenchb| or |french| all +% redefine the list environments, which breaks the standard definition +% file that is used by \package{arabluatex}. Therefore, +% \package{babel-french} must be loaded with the option +% |StandardLayout=true|, like so:--- +% \iffalse +%<*example> +% \fi +\begin{arabluaverbatim} +\usepackage[french]{babel} +\frenchbsetup{StandardLayout=true} +\end{arabluaverbatim} +% \iffalse +% +% \fi% +% This option will prevent \package{babel-french} from interfering +% with the layout of the document. Then the package \package{paralist} +% may be used to make the lists \enquote*{compact} as +% \package{babel-french} do. +% % \subsection{\package{csquotes}} % \label{sec:csquotes} % The recommended way of inserting quotation marks in running Arabic @@ -2357,6 +2542,48 @@ wa-ya.sIru ta.hta 'l-jild-i % \iffalse % % \fi +% +% \subsection{\package{quran}} +% \label{sec:pkg-quran} +% \changes{v1.5}{2016/11/14}{Compatibility with the \textsf{quran} +% package} \package{arabluatex} is compatible with the \package{quran} +% package so that both can be used in conjunction with one another for +% typesetting the \arb[trans]{\cap{qur'An}}. As \package{quran} draws +% the text of the \arb[trans]{\cap{qur'An}} from a unicode encoded +% database, its commands have to be passed as arguments to the +% \cs{txarb} command for short insertions in left-to-right paragraphs, +% or inserted inside the \index{txarab=txarab (environment)}|txarab| +% environment for typesetting running paragraphs of +% \arb[trans]{\cap{qur'An}}\emph{ic} text (see above +% \vref{sec:unicode-input} for more details). Please note that +% \package{arabluatex} takes care of formatting the Arabic: therefore, +% it is recommended to load the \package{quran} package with the +% option |nopar|, after \package{arabluatex} itself has been loaded, +% like so:--- % +% \iffalse +%<*example> +% \fi +\begin{arabluaverbatim} + \usepackage{arabluatex} + \usepackage[nopar]{quran} +\end{arabluaverbatim} +% \iffalse +% +% \fi +% +% As an example, the following code will typeset the \arb[trans]{sUraT} +% \arb[trans]{al-\cap{fAti.haT}}:--- +% \iffalse +%<*example> +% \fi +\begin{arabluacode} + \begin{txarab} + \quransurah[1] + \end{txarab} +\end{arabluacode} +% \iffalse +% +% \fi % % \section{Future work} % \label{sec:future-work} @@ -2399,7 +2626,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2016/10/05 v1.4.5 An ArabTeX-like interface for LuaLaTeX] +[2016/11/14 v1.5 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} % \end{macrocode} % \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning @@ -2426,20 +2653,20 @@ wa-ya.sIru ta.hta 'l-jild-i \def\al@mode@novoc{novoc} \def\al@mode@trans{trans} % \end{macrocode} -% The following line will be used in the next release of -% \package{arabluatex}: -% \begin{macrocode} -% \newif\ifal@mode@defined -% \end{macrocode} % Packages that are required by \package{arabluatex}: % \begin{macrocode} +\RequirePackage{etoolbox} +\RequirePackage{arabluatex-patch} \RequirePackage{fontspec} \RequirePackage{amsmath} -\RequirePackage{etoolbox} \RequirePackage{luacode} \RequirePackage{xparse} \RequirePackage{environ} % \end{macrocode} +% The following boolean will be set to |true| in |RL| mode: +% \begin{macrocode} +\newbool{al@rlmode} +% \end{macrocode} % Here begins the real work: load |arabluatex.lua|: % \begin{macrocode} \luadirect{dofile(kpse.find_file("arabluatex.lua"))} @@ -2462,13 +2689,13 @@ wa-ya.sIru ta.hta 'l-jild-i % This neutralizes what is defined by the same command in % \package{luabidi}: % \begin{macrocode} -\AtBeginDocument{\def\setRL{\pardir TRT\textdir TRT}} +\AtBeginDocument{\def\setRL{\booltrue{al@rlmode}\pardir TRT\textdir TRT}} % \end{macrocode} % \end{macro} % \begin{macro}{\setLR} % The same applies to \cs{setLR}: % \begin{macrocode} -\AtBeginDocument{\def\setLR{\pardir TLT\textdir TLT}} +\AtBeginDocument{\def\setLR{\boolfalse{al@rlmode}\pardir TLT\textdir TLT}} % \end{macrocode} % \end{macro} % \begin{macro}{\LR} This command typesets its argument from left to @@ -2599,12 +2826,12 @@ wa-ya.sIru ta.hta 'l-jild-i % \end{macrocode} % \end{macro} % \begin{macro}{\txarb} \cs{txarb} sets the direction to right-to-left -% and selects the Arabic font. As it is supposed to be used -% internally by several Lua functions, this command is not -% documented, but available to the user should he wish to insert +% and selects the Arabic font. It is used internally by several Lua +% functions, but available to the user should he wish to insert % |utf8| Arabic text in his document. % \begin{macro}{\txtrans} \cs{txtrans} is used internally by several -% Lua functions to insert transliterated Arabic text. +% Lua functions to insert transliterated Arabic text. Therefore, it is +% not documented. % \begin{macrocode} \DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir TRT\arabicfont#1\egroup} @@ -2613,6 +2840,18 @@ wa-ya.sIru ta.hta 'l-jild-i % \end{macrocode} % \end{macro} % \end{macro} +% \begin{environment}{txarab} +% \changes{v1.5}{2016/11/14}{New \texttt{txarab} environment for +% typesetting running paragraphs in unicode Arabic} The |txarab| +% environment does for paragraphs the same as \cs{txarb} does for +% short insertions of |utf8| Arabic text. +% \begin{macrocode} +\NewDocumentEnvironment{txarab}{}{% + \par% + \booltrue{al@rlmode}% + \pardir TRT\textdir TRT\arabicfont}{\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 @@ -2652,20 +2891,24 @@ wa-ya.sIru ta.hta 'l-jild-i \NewEnviron{arab}[1][\al@mode]% {\par\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processvoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@fullvoc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processfullvoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@novoc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processnovoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% - \else \ifx\@tempa\al@mode@trans% + \else% + \ifx\@tempa\al@mode@trans% \bgroup\pardir TLT\textdir TLT\al@trans@style% \luadirect{tex.sprint(processtrans(\luastringO{\BODY}, \luastringO{\al@trans@convention}, @@ -2737,15 +2980,144 @@ wa-ya.sIru ta.hta 'l-jild-i % \end{macrocode} % \end{macro} % That is it. Say goodbye before leaving. +% +% \iffalse +% +% \fi +% +% \subsection*{Patches} +% \label{sec:patches} +% +% \iffalse +%<*patch> +% \fi % \begin{macrocode} -\endinput +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{arabluatex-patch}% +[2016/11/14 v1.0 patches for arabluatex] +% \end{macrocode} +% I have put in a separate |.sty| file external lines of code that +% I had to patch for a good reason. I hate doing this, and hopefully, +% most of these lines will disappear as soon as they are not required +% anymore. +% +% The following is taken from |latex.ltx|. I had to make this patch +% for I could not find a way to process the list environments in +% right-to-left mode. The \LuaTeX\ primitives \cs{bodydir} and +% \cs{pagedir} will eventually allow us to get rid of this: +% \begin{macrocode} +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \parindent\listparindent + \advance\linewidth -\rightmargin + \advance\linewidth -\leftmargin +% \end{macrocode} +% patch begins: +% \begin{macrocode} + \ifbool{al@rlmode}{\advance\@totalleftmargin \rightmargin}% + {\advance\@totalleftmargin \leftmargin} +% \end{macrocode} +% patch ends. +% \begin{macrocode} + \parshape \@ne \@totalleftmargin \linewidth + \ignorespaces} +\def\@item[#1]{% + \if@noparitem + \@donoparitem + \else + \if@inlabel + \indent \par + \fi + \ifhmode + \unskip\unskip \par + \fi + \if@newlist + \if@nobreak + \@nbitem + \else + \addpenalty\@beginparpenalty + \addvspace\@topsep + \addvspace{-\parskip}% + \fi + \else + \addpenalty\@itempenalty + \addvspace\itemsep + \fi + \global\@inlabeltrue + \fi + \everypar{% + \@minipagefalse + \global\@newlistfalse + \if@inlabel + \global\@inlabelfalse + {\setbox\z@\lastbox + \ifvoid\z@ + \kern-\itemindent + \fi}% + \box\@labels + \penalty\z@ + \fi + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \if@noitemarg + \@noitemargfalse + \if@nmbrlist + \refstepcounter\@listctr + \fi + \fi +% \end{macrocode} +% patch begins: +% \begin{macrocode} + \ifbool{al@rlmode}{\sRLbox\@tempboxa{\makelabel{#1}}}{% + \sbox\@tempboxa{\makelabel{#1}}}% + \ifbool{al@rlmode}{\global\setbox\@labels\hbox dir TRT}% + {\global\setbox\@labels\hbox}{% +% \end{macrocode} +% patch ends. +% \begin{macrocode} + \unhbox\@labels + \hskip \itemindent + \hskip -\labelwidth + \hskip -\labelsep + \ifdim \wd\@tempboxa >\labelwidth + \box\@tempboxa + \else + \hbox to\labelwidth {\unhbox\@tempboxa}% + \fi + \hskip \labelsep}% + \ignorespaces} +% \end{macrocode} +% This is adapted from Vafa Khalighi's \package{bidi} package. Thanks +% to him. +% \begin{macrocode} +\long\def\sRLbox#1#2{\setbox#1\hbox dir TRT{% + \color@setgroup#2\color@endgroup}} % \end{macrocode} -% -% \printbibliography[heading=bibintoc] % % \iffalse -% +% % \fi % +% \printbibliography[heading=bibintoc] +% % \Finale \endinput diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.ins b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.ins index 69d9f53a8be..5cf1bad48f2 100644 --- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.ins +++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.ins @@ -73,7 +73,10 @@ This release of 'arabluatex' consists of the following source files: \endpreamble -\generate{\file{arabluatex.sty}{\from{arabluatex.dtx}{package}}} +\generate{% + \file{arabluatex.sty}{\from{arabluatex.dtx}{package}} + \file{arabluatex-patch.sty}{\from{arabluatex.dtx}{patch}} + } \Msg{***********************************************************} \Msg{*} @@ -83,6 +86,7 @@ This release of 'arabluatex' consists of the following source files: \Msg{* more on this} \Msg{*} \Msg{* \space\space arabluatex.sty} +\Msg{* \space\space arabluatex-patch.sty} \Msg{* \space\space arabluatex.lua} \Msg{* \space\space arabluatex_voc.lua} \Msg{* \space\space arabluatex_fullvoc.lua} diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex-patch.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex-patch.sty new file mode 100644 index 00000000000..68f05a3b05a --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex-patch.sty @@ -0,0 +1,136 @@ +%% +%% This is file `arabluatex-patch.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% arabluatex.dtx (with options: `patch') +%% +%% This is a generated file. +%% +%% This file is part of the `arabluatex' package +%% +%% ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX +%% Copyright (C) 2016 Robert Alessi +%% +%% Please send error reports and suggestions for improvements to Robert +%% Alessi +%% +%% 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 +%% . +%% +%% This release of 'arabluatex' consists of the following source files: +%% - arabluatex.ins +%% - arabluatex.dtx +%% - arabluatex.lua +%% - arabluatex_voc.lua +%% - arabluatex_fullvoc.lua +%% - arabluatex_novoc.lua +%% - arabluatex_trans.lua +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{arabluatex-patch}% +[2016/11/14 v1.0 patches for arabluatex] +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \parindent\listparindent + \advance\linewidth -\rightmargin + \advance\linewidth -\leftmargin + \ifbool{al@rlmode}{\advance\@totalleftmargin \rightmargin}% + {\advance\@totalleftmargin \leftmargin} + \parshape \@ne \@totalleftmargin \linewidth + \ignorespaces} +\def\@item[#1]{% + \if@noparitem + \@donoparitem + \else + \if@inlabel + \indent \par + \fi + \ifhmode + \unskip\unskip \par + \fi + \if@newlist + \if@nobreak + \@nbitem + \else + \addpenalty\@beginparpenalty + \addvspace\@topsep + \addvspace{-\parskip}% + \fi + \else + \addpenalty\@itempenalty + \addvspace\itemsep + \fi + \global\@inlabeltrue + \fi + \everypar{% + \@minipagefalse + \global\@newlistfalse + \if@inlabel + \global\@inlabelfalse + {\setbox\z@\lastbox + \ifvoid\z@ + \kern-\itemindent + \fi}% + \box\@labels + \penalty\z@ + \fi + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \if@noitemarg + \@noitemargfalse + \if@nmbrlist + \refstepcounter\@listctr + \fi + \fi + \ifbool{al@rlmode}{\sRLbox\@tempboxa{\makelabel{#1}}}{% + \sbox\@tempboxa{\makelabel{#1}}}% + \ifbool{al@rlmode}{\global\setbox\@labels\hbox dir TRT}% + {\global\setbox\@labels\hbox}{% + \unhbox\@labels + \hskip \itemindent + \hskip -\labelwidth + \hskip -\labelsep + \ifdim \wd\@tempboxa >\labelwidth + \box\@tempboxa + \else + \hbox to\labelwidth {\unhbox\@tempboxa}% + \fi + \hskip \labelsep}% + \ignorespaces} +\long\def\sRLbox#1#2{\setbox#1\hbox dir TRT{% + \color@setgroup#2\color@endgroup}} +\endinput +%% +%% End of file `arabluatex-patch.sty'. diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua index 956f796bdfc..38fe87b31dd 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua @@ -29,6 +29,9 @@ require("arabluatex_trans") local function protectarb(str) str = string.gsub(str, "(\\arb.?)(%[.-%])(%b{})", "\\@arb%2%3") + str = string.gsub(str, "(\\begin.?)(%b{})(%b[])", "\\@begin%3%2") + str = string.gsub(str, "(\\begin.?)(%b{})", "\\@begin%2") + str = string.gsub(str, "(\\end.?)(%b{})", "\\@end%2") str = string.gsub(str, "\\par", "\\p@r{}") str = string.gsub(str, "\\@@par", "\\p@r{}") return str @@ -36,11 +39,21 @@ end local function unprotectarb(str) str = string.gsub(str, "(\\@arb)(%[.-%])(%b{})", "\\arb%2%3") + str = string.gsub(str, "(\\@begin)(%b[])(%b{})", "\\begin%3%2") + str = string.gsub(str, "(\\@begin)(%b{})", "\\begin%2") + str = string.gsub(str, "(\\@end)(%b{})", "\\end%2") str = string.gsub(str, "\\p@r{}", "\\par") return str end local function breakcmd(str) + -- process \item[], then \item[] + str = string.gsub(str, "\\(item.?)(%b[])", + function(tag, body) + body = string.sub(body, 2, -2) + return string.format("}\\item[\\arb{%s}] \\arb{", body) + end) + str = string.gsub(str, "(\\item)(%s+)", "%1{}%2") -- \edtext str = string.gsub(str, "\\(edtext.-)(%b{})(%b{})", function(tag, bodylem, bodyvar) diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty index 0f031110332..4921677093d 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty @@ -41,7 +41,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2016/10/05 v1.4.5 An ArabTeX-like interface for LuaLaTeX] +[2016/11/14 v1.5 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} \ifluatex\else \PackageError{arabluatex}{lualatex needed}{% @@ -60,20 +60,22 @@ \def\al@mode@fullvoc{fullvoc} \def\al@mode@novoc{novoc} \def\al@mode@trans{trans} +\RequirePackage{etoolbox} +\RequirePackage{arabluatex-patch} \RequirePackage{fontspec} \RequirePackage{amsmath} -\RequirePackage{etoolbox} \RequirePackage{luacode} \RequirePackage{xparse} \RequirePackage{environ} +\newbool{al@rlmode} \luadirect{dofile(kpse.find_file("arabluatex.lua"))} \luadirect{tex.enableprimitives("luatex",tex.extraprimitives("omega"))} \AtBeginDocument{\ifdefined\arabicfont\relax\else \PackageWarning{arabluatex}{\string\arabicfont\ is not defined.^^JI will try to load Amiri}% \newfontfamily\arabicfont[Script=Arabic]{Amiri}\fi}% -\AtBeginDocument{\def\setRL{\pardir TRT\textdir TRT}} -\AtBeginDocument{\def\setLR{\pardir TLT\textdir TLT}} +\AtBeginDocument{\def\setRL{\booltrue{al@rlmode}\pardir TRT\textdir TRT}} +\AtBeginDocument{\def\setLR{\boolfalse{al@rlmode}\pardir TLT\textdir TLT}} \AtBeginDocument{\ifdef{\LR}% {\RenewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}} {\NewDocumentCommand{\LR}{m}{\bgroup\textdir TLT\rmfamily#1\egroup}}} @@ -109,6 +111,10 @@ TRT\arabicfont#1\egroup} \DeclareDocumentCommand{\txtrans}{+m}{\bgroup\textdir TLT\al@trans@font#1\egroup} +\NewDocumentEnvironment{txarab}{}{% + \par% + \booltrue{al@rlmode}% + \pardir TRT\textdir TRT\arabicfont}{\par} \DeclareDocumentCommand{\arb}{O{\al@mode} +m}% {\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% @@ -137,20 +143,24 @@ \NewEnviron{arab}[1][\al@mode]% {\par\edef\@tempa{#1}% \ifx\@tempa\al@mode@voc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processvoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@fullvoc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processfullvoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% \else% \ifx\@tempa\al@mode@novoc% + \booltrue{al@rlmode}% \bgroup\pardir TRT\textdir TRT\arabicfont% \luadirect{tex.sprint(processnovoc(\luastringO{\BODY}, \luastringO{\al@arb@rules}, \luastringO{\al@input@scheme}))}\egroup% - \else \ifx\@tempa\al@mode@trans% + \else% + \ifx\@tempa\al@mode@trans% \bgroup\pardir TLT\textdir TLT\al@trans@style% \luadirect{tex.sprint(processtrans(\luastringO{\BODY}, \luastringO{\al@trans@convention}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua index 82459e946f4..87c85e9ac2b 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua @@ -267,7 +267,13 @@ trigraphstrdmgeasy = { -- see the differences below under 'easy' tag digraphstrdmg = { {a="([uai]%-)(\"?[uai])", b="%1'"}, -- hyphen + initial alif without hamza - {a="^(\"?[uai])", b="%1"}, -- initial alif without hamza + -- the following two are replaced with the 4 lines next for now +-- {a="^(\"?[uai])", b="%1"}, -- initial alif without hamza +-- {a="(%W)(\"?[uai])", b="%1%2"}, -- initial alif without hamza + {a="^(\"[uai])", b="'"}, -- initial alif without hamza + {a="(%W)(\"[uai])", b="%1'"}, -- initial alif without hamza + {a="^([uai])", b="%1"}, -- initial alif without hamza + {a="(%W)([uai])", b="%1%2"}, -- initial alif without hamza -- this is not necessary, take out for now: -- {a="([%_]?[uaiUAIY])(%s)([uai])", b="%1%2'"}, -- initial alif without hamza {a="(aW)(%s)(\"?[uai])", b="awu%2%3"}, -- cgit v1.2.3