aboutsummaryrefslogtreecommitdiff
path: root/arabluatex.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'arabluatex.dtx')
-rw-r--r--arabluatex.dtx247
1 files changed, 247 insertions, 0 deletions
diff --git a/arabluatex.dtx b/arabluatex.dtx
new file mode 100644
index 0000000..96261bc
--- /dev/null
+++ b/arabluatex.dtx
@@ -0,0 +1,247 @@
1% \iffalse meta-comment
2% copyright (C) 2016 Robert Alessi
3%
4% Please send error reports and suggestions for improvements to
5% Robert Alessi <alessi@robertalessi.net>
6%
7% This program is free software; you can redistribute it and/or
8% modify it under the terms of the GNU General Public License
9% as published by the Free Software Foundation; either version 2
10% of the License, or (at your option) any later version.
11%
12% This program is distributed in the hope that it will be useful,
13% but WITHOUT ANY WARRANTY; without even the implied warranty of
14% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15% GNU General Public License for more details.
16%
17% You should have received a copy of the GNU General Public License
18% along with this program; if not, write to the Free Software
19% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20% 02111-1307, USA.
21% \fi
22%
23% \iffalse
24%<*driver>
25\ProvidesFile{arabluatex.dtx}
26%</driver>
27%<package-info>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
28%<package-info>\ProvidesPackage{arabluatex}
29%<*package-info>
30 [2016/01/26 v1.0 This is ArabTeX for LuaLaTeX]
31%</package-info>
32%
33%<*driver>
34\documentclass{ltxdoc}
35\usepackage[english]{babel}
36\usepackage{fontspec,luatextra,realscripts}
37\defaultfontfeatures{RawFeature={+liga}}
38\setmainfont{Libertinus Serif}
39\setsansfont{Libertinus Sans}
40\setmonofont[Scale=.9]{Libertinus Mono}
41\usepackage{arabluatex}[2016/01/26]
42\usepackage{hypdoc}
43\hypersetup{colorlinks, allcolors=blue}
44\usepackage{multicol}
45\newcommand{\package}[1]{\textsf{#1}}
46\usepackage{paralist}
47\setdefaultitem{\textendash}{\textendash}{\textendash}{\textendash}
48\usepackage{tikz}
49\usepackage[skins]{tcolorbox}
50\usepackage{csquotes}
51\EnableCrossrefs
52\CodelineIndex
53\RecordChanges
54\begin{document}
55 \DocInput{arabluatex.dtx}
56 \PrintChanges
57 \PrintIndex
58\end{document}
59%</driver>
60% \fi
61%
62% \CheckSum{0}
63%
64% \CharacterTable
65% {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
66% Lower-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
67% Digits \0\1\2\3\4\5\6\7\8\9
68% Exclamation \! Double quote \" Hash (number) \#
69% Dollar \$ Percent \% Ampersand \&
70% Acute accent \' Left paren \( Right paren \)
71% Asterisk \* Plus \+ Comma \,
72% Minus \- Point \. Solidus \/
73% Colon \: Semicolon \; Less than \<
74% Equals \= Greater than \> Question mark \?
75% Commercial at \@ Left bracket \[ Backslash \\
76% Right bracket \] Circumflex \^ Underscore \_
77% Grave accent \` Left brace \{ Vertical bar \|
78% Right brace \} Tilde \~}
79%
80%
81% \changes{1.0}{2016/01/26}{Converted to DTX file}
82%
83% \DoNotIndex{\newcommand,\newenvironment,\renewcommand}
84%
85% \providecommand*{\url}{\texttt}
86% \GetFileInfo{arabluatex.dtx}
87%
88% \title{\tcbox[enhanced, tikznode, drop lifted shadow, colback=white,
89% boxrule=.25mm]%
90% {The \textsf{arabluatex} package\\
91% \fileversion~from \filedate}}
92%
93% \newcommand*{\NEWfeature}[1]{%
94% \hskip 1sp \marginpar{\small\sffamily\raggedright
95% New feature\\#1}}
96%
97% \author{Robert Alessi \\ \url{alessi@robertalessi.net}}
98% \date{}
99%
100% \maketitle
101%
102% \begin{multicols}{2}
103% \footnotesize
104% \tableofcontents
105% \end{multicols}
106%
107% \begin{abstract}
108% This package provides for \LuaLaTeX\ an Arab{\TeX}-like interface
109% to generate Arabic writing from an \textsc{ascii}
110% transliteration. It is particularly well-suited for complex
111% documents such as technical documents or critical editions where a
112% lot of left-to-right commands intertwine with Arabic
113% writing. \package{arabluatex} is able to process any Arab\TeX\
114% input notation. Its output can be set in the same modes of
115% vocalization as Arab\TeX\ ones, or in different roman
116% transliterations. It further allows some typographical
117% refinements.
118% \end{abstract}
119%
120% \section*{License and disclamer}
121% \addcontentsline{toc}{section}{License and disclamer}
122% Please send error reports and suggestions for improvements to
123% Robert Alessi <\url{alessi@robertalessi.net}>
124%
125% This program is free software; you can redistribute it and/or
126% modify it under the terms of the GNU General Public License
127% as published by the Free Software Foundation; either version 2
128% of the License, or (at your option) any later version.
129%
130% This program is distributed in the hope that it will be useful,
131% but WITHOUT ANY WARRANTY; without even the implied warranty of
132% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
133% GNU General Public License for more details.
134%
135% You should have received a copy of the GNU General Public License
136% along with this program; if not, write to the Free Software
137% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
138% 02111-1307, USA.
139%
140% \section{Introduction}
141% In comparison to Prof. Lagally's outstanding Arab\TeX,\footnote{See
142% \url{http://ctan.org/pkg/arabtex}} Arab\LuaTeX\ is at present
143% nothing more than a modest piece of software. Hopefully---if I may
144% say so---it will eventually provide all of its valuable qualities to
145% the \LuaLaTeX\ users.
146%
147% \section{Usage}
148%
149% Usage goes here.
150%
151% \StopEventually{}
152%
153% \section{Implementation}
154%
155% \iffalse
156%<*package>
157% \fi
158%
159% \begin{macrocode}
160\NeedsTeXFormat{LaTeX2e}
161\ProvidesPackage{arabluatex}%
162[2016/01/26 v1.0 ArabTeX-like interface for LuaLaTeX]
163\RequirePackage{ifluatex}
164% \end{macrocode}
165% \package{arabluatex} requires \LuaLaTeX\ of course.
166% \begin{macrocode}
167\ifluatex\else
168 \PackageError{arabluatex}{lualatex needed}{%
169 Package `arabluatex' needs LuaTeX.\MessageBreak
170 So you should use `lualatex' to process you document!\MessageBreak
171 See documentation of `arabluatex' for further information.}%
172 \expandafter\expandafter\expandafter\csname endinput\endcsname
173\fi
174% \end{macrocode}
175% \begin{macrocode}
176\DeclareOption{voc}{\def\al@mode{voc}}
177\DeclareOption{novoc}{\def\al@mode{novoc}}
178\ExecuteOptions{voc}
179\ProcessOptions\relax
180\def\al@mode@voc{voc}
181\def\al@mode@novoc{novoc}
182% \newif\ifal@mode@defined
183\RequirePackage{amsmath}
184\RequirePackage{etoolbox}
185\RequirePackage{luacode}
186\RequirePackage{xparse}
187\RequirePackage{environ}
188\luadirect{dofile(kpse.find_file("arabluatex.lua"))}
189% \end{macrocode}
190% This is needed by the current version of \package{luabidi}.
191% \begin{macrocode}
192\luadirect{tex.enableprimitives("luatex",tex.extraprimitives("omega"))}
193% \end{macrocode}
194% \package{luabidi} provides a \cs{Footnote} command. Use it for now.
195% \begin{macrocode}
196\RequirePackage{luabidi}
197% \end{macrocode}
198% \begin{macrocode}
199\AtBeginDocument{\ifdefined\arabicfont\relax\else
200\PackageWarning{arabluatex}{\string\arabicfont\ is not defined!^^JI
201 will try to load Amiri}%
202\newfontfamily\arabicfont[Script=Arabic]{Amiri}\fi}%
203\DeclareDocumentCommand{\LR}{+m}{\bgroup\textdir TLT\rmfamily#1\egroup}
204\DeclareDocumentCommand{\txarb}{+m}{\bgroup\textdir TRT\arabicfont#1\egroup}
205\DeclareDocumentCommand{\arb}{O{\al@mode} +m}%
206{\edef\@tempa{#1}%
207 \ifx\@tempa\al@mode@voc%
208 \bgroup\textdir TRT\arabicfont%
209 \luadirect{tex.sprint(processvoc("\luaescapestring{#2}"))}\egroup%
210 \else%
211 \ifx\@tempa\al@mode@novoc%
212 \bgroup\textdir TRT\arabicfont%
213 \luadirect{tex.sprint(processnovoc("\luaescapestring{#2}"))}\egroup%
214 \else%
215 \fi\fi}
216\DeclareDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}
217\NewEnviron{arab}[1][\al@mode]%
218{\par\edef\@tempa{#1}%
219 \ifx\@tempa\al@mode@voc%
220 \bgroup\pardir TRT\textdir TRT\arabicfont%
221 \luadirect{tex.sprint(processvoc("\luaescapestring{\BODY}"))}\egroup%
222 \else%
223 \ifx\@tempa\al@mode@novoc%
224 \bgroup\pardir TRT\textdir TRT\arabicfont%
225 \luadirect{tex.sprint(processnovoc("\luaescapestring{\BODY}"))}\egroup%
226 \else
227 \BODY%
228 \fi\fi}[\par]
229\robustify{\textbf}
230\robustify{\emph}
231\robustify{\footnote}
232\robustify{\marginpar}
233\DeclareDocumentCommand{\Marginpar}{m}{\marginpar{\textdir TLT #1}}
234\RenewDocumentCommand{\thefootnote}{}{\bgroup\textdir
235 TLT\arabic{footnote}\egroup}
236\AtBeginDocument{\ifdef{\abjad}{\robustify{\abjad}}{}}
237\AtBeginDocument{\ifdef{\Footnote}{\robustify{\Footnote}}{}}
238\endinput
239% \end{macrocode}
240
241%
242% \iffalse
243%</package>
244% \fi
245%
246% \Finale
247\endinput