summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/expkv-def/README.md2
-rw-r--r--macros/generic/expkv-def/expkv-def.dtx26
-rw-r--r--macros/generic/expkv-def/expkv-def.pdfbin294005 -> 294123 bytes
-rw-r--r--macros/latex/contrib/asmeconf/README.md6
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.pdfbin479400 -> 419299 bytes
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.tex28
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf.cls28
-rw-r--r--macros/latex/contrib/asmejour/README.md4
-rw-r--r--macros/latex/contrib/asmejour/asmejour-template.pdfbin477385 -> 481258 bytes
-rw-r--r--macros/latex/contrib/asmejour/asmejour-template.tex12
-rw-r--r--macros/latex/contrib/asmejour/asmejour.cls29
-rw-r--r--macros/latex/contrib/autofancyhdr/LICENSE416
-rw-r--r--macros/latex/contrib/autofancyhdr/README.md11
-rw-r--r--macros/latex/contrib/autofancyhdr/autofancyhdr.sty69
-rw-r--r--macros/latex/contrib/biblatex2bibitem/README.md10
-rw-r--r--macros/latex/contrib/biblatex2bibitem/biblatex2bibitem.sty64
-rw-r--r--macros/latex/contrib/diagbox/diagbox.dtx337
-rw-r--r--macros/latex/contrib/diagbox/diagbox.ins2
-rw-r--r--macros/latex/contrib/diagbox/diagbox.pdfbin233171 -> 244804 bytes
-rw-r--r--macros/latex/contrib/icite/Makefile2
-rw-r--r--macros/latex/contrib/icite/README.md15
-rw-r--r--macros/latex/contrib/icite/icite.dtx78
-rw-r--r--macros/latex/contrib/icite/icite.ins71
-rw-r--r--macros/latex/contrib/icite/icite.pdfbin237025 -> 223753 bytes
-rw-r--r--macros/latex/contrib/icite/samples/icite-biblatex.pdfbin60828 -> 60981 bytes
-rw-r--r--macros/latex/contrib/icite/samples/icite-minimal.pdfbin42307 -> 42316 bytes
-rw-r--r--macros/latex/contrib/icite/samples/icite-nobiblatex.pdfbin57312 -> 57463 bytes
-rw-r--r--macros/luatex/latex/arabluatex/README.md4
-rw-r--r--macros/luatex/latex/arabluatex/README.tex146
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex.dtx214
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex.ins4
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex.lua43
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex.pdfbin685259 -> 647013 bytes
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex_fullvoc.lua59
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex_novoc.lua2
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex_trans.lua2
-rw-r--r--macros/luatex/latex/arabluatex/arabluatex_voc.lua25
-rw-r--r--macros/luatex/latex/arabluatex/makefile70
-rw-r--r--macros/luatex/latex/arabluatex/samples/al-Jahiz.pdfbin114234 -> 112526 bytes
-rw-r--r--macros/luatex/latex/arabluatex/samples/al-Jahiz.tex8
-rw-r--r--macros/luatex/latex/arabluatex/samples/exporting.pdfbin59687 -> 63557 bytes
-rw-r--r--macros/luatex/latex/arabluatex/samples/template-01.pdfbin65289 -> 63935 bytes
42 files changed, 1433 insertions, 354 deletions
diff --git a/macros/generic/expkv-def/README.md b/macros/generic/expkv-def/README.md
index 4026585657..513466054e 100644
--- a/macros/generic/expkv-def/README.md
+++ b/macros/generic/expkv-def/README.md
@@ -1,7 +1,7 @@
-------------------------------------------------------------------------------
# expkv-def -- a key-defining frontend for expkv
-Version 2020-02-27 v0.1
+Version 2020-02-29 v0.1a
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
diff --git a/macros/generic/expkv-def/expkv-def.dtx b/macros/generic/expkv-def/expkv-def.dtx
index 33bcf27157..4fbde86d2c 100644
--- a/macros/generic/expkv-def/expkv-def.dtx
+++ b/macros/generic/expkv-def/expkv-def.dtx
@@ -230,7 +230,7 @@ and the derived files expkv-def.pdf
% \pkg{l3keys}) or directory like handlers (\emph{e.g.}, |/.store in| of
% \pkg{pgfkeys}). This was decided as a personal preference, more over in \TeX\
% parsing for the first space is way easier than parsing for the last one.
-% \expkvd's prefixes are sorted into two categories |p|-type, which are
+% \expkvd's prefixes are sorted into two categories: |p|-type, which are
% equivalent to \TeX's prefixes like |\long|, and |t|-type defining the type of
% the key. For a description of the available |p|-prefixes take a look at
% \autoref{sec:prefix:p}, the |t|-prefixes are described in
@@ -387,7 +387,7 @@ and the derived files expkv-def.pdf
%
% \begin{function}{skip,eskip,gskip,xskip}
% \begin{syntax}
-% dimen \key\ = \meta{cs} \prefixes12
+% skip \key\ = \meta{cs} \prefixes12
% \end{syntax}
% The \meta{cs} should be a single control sequence, such as |\foo|.
% This is just like |int| but uses a skip register, |\newskip| and |\glueexpr|
@@ -396,7 +396,7 @@ and the derived files expkv-def.pdf
%
% \begin{function}{toks,gtoks,apptoks,gapptoks}
% \begin{syntax}
-% dimen \key\ = \meta{cs} \prefixes12
+% toks \key\ = \meta{cs} \prefixes12
% \end{syntax}
% The \meta{cs} should be a single control sequence, such as |\foo|.
% Store \val\ inside of a toks-register. The |g| variants use |\global|, the
@@ -452,7 +452,7 @@ and the derived files expkv-def.pdf
% \begin{syntax}
% set \key\ = \marg{set} \prefixes33
% \end{syntax}
-% This will define |\key| to change the set of the current |\ekvset|
+% This will define \key\ to change the set of the current |\ekvset|
% invocation to \set. You can omit \set\ (including the equals sign),
% which is the same as using \texttt{set \key\ = \{\key\}}. The created |set|
% key will not take a \val. Note that just like in \expkv\ it'll not be
@@ -467,7 +467,7 @@ and the derived files expkv-def.pdf
% Defines \key\ to be a |choice| key, meaning it will only accept a limited
% set of values. You should define each possible \val\ inside of the
% \val=\meta{definition} list. If a defined \val\ is passed to \key\ the
-% \meta{dafinition} will be left in the input stream. You can make
+% \meta{definition} will be left in the input stream. You can make
% individual values |protected| inside the \val=\meta{definition} list. By
% default a |choice| key is expandable, an undefined \val\ will throw an error
% in an expandable way.
@@ -583,8 +583,8 @@ and the derived files expkv-def.pdf
% \begin{macro}{\ekvdVersion,\ekvdDate}
% We're on our first input, so lets store the version and date in a macro.
% \begin{macrocode}
-\def\ekvdVersion{0.1}
-\def\ekvdDate{2020-02-27}
+\def\ekvdVersion{0.1a}
+\def\ekvdDate{2020-02-29}
% \end{macrocode}
% \end{macro}
%
@@ -608,7 +608,7 @@ and the derived files expkv-def.pdf
% \begin{macro}[internal]
% {\ekvd@long,\ekvd@prot,\ekvd@clear@prefixes,\ekvd@empty}
% \expkvd\ will use |\ekvd@long| and |\ekvd@prot| to store whether a key should
-% be defined an |\long| or |\protected|, and we have to clear them for every new
+% be defined as |\long| or |\protected|, and we have to clear them for every new
% key. By default they'll just be empty.
% \begin{macrocode}
\def\ekvd@empty{}
@@ -641,12 +641,12 @@ and the derived files expkv-def.pdf
% the prefix grabbing routine, else we throw an error and ignore the key.
% \begin{macrocode}
\protected\def\ekvd@noarg#1{\ekvd@{#1}\ekvd@noarg@mark}
-\protected\def\ekvd@#1#2%
+\protected\long\def\ekvd@#1#2%
{%
\ekvd@clear@prefixes
\ekvd@ifspace{#1}%
{\ekvd@prefix\ekv@mark#1\ekv@stop{#2}}%
- {\ekvd@missing@prefix{#1}}%
+ {\ekvd@err@missing@prefix{#1}}%
}
% \end{macrocode}
% \end{macro}
@@ -996,7 +996,7 @@ and the derived files expkv-def.pdf
\ekvd@prot\ekvd@long\def\ekvd@tmp#2{\ekvset{#1}{#3}}%
}
\protected\def\ekvd@t@meta{\ekvd@type@meta{}\ekvlet{##1}}
-\protected\def\ekvd@t@nmeta#1#2%
+\protected\long\def\ekvd@t@nmeta#1#2%
{%
\ekvd@assert@not@long{nmeta #1}%
\ekvd@type@meta n\ekvletNoVal{}{#1}{#2}%
@@ -1023,7 +1023,7 @@ and the derived files expkv-def.pdf
\expandafter\ekvd@type@meta@\expandafter{\@firstoftwo#2}{#3}{#1}%
}
\protected\def\ekvd@t@smeta{\ekvd@type@smeta{}\ekvlet{##1}}
-\protected\def\ekvd@t@snmeta#1#2%
+\protected\long\def\ekvd@t@snmeta#1#2%
{%
\ekvd@assert@not@long{snmeta #1}%
\ekvd@type@smeta n\ekvletNoVal{}{#1}{#2}%
@@ -1062,7 +1062,7 @@ and the derived files expkv-def.pdf
{%
\ekvparse\ekvd@populate@choice@noarg\ekvd@populate@choice@
}
-\protected\def\ekvd@populate@choice@noarg#1%
+\protected\long\def\ekvd@populate@choice@noarg#1%
{%
\expandafter\ekvd@err@missing@definition\expandafter{\ekvd@set@choice : #1}%
}
diff --git a/macros/generic/expkv-def/expkv-def.pdf b/macros/generic/expkv-def/expkv-def.pdf
index a4c589c83f..a41b259d5f 100644
--- a/macros/generic/expkv-def/expkv-def.pdf
+++ b/macros/generic/expkv-def/expkv-def.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmeconf/README.md b/macros/latex/contrib/asmeconf/README.md
index 2039844683..87f8916cbb 100644
--- a/macros/latex/contrib/asmeconf/README.md
+++ b/macros/latex/contrib/asmeconf/README.md
@@ -1,7 +1,7 @@
#asmeconf: A template for ASME conference papers#
- Version 1.16 dated 2020/02/28.
+ Version 1.17 dated 2020/02/29.
####Overview####
This class provides a template to format ASME Conference papers according to
@@ -67,6 +67,8 @@
####Change log####
+ v1.17: set T1 font encoding with utf-8 input, ensure LuaLaTeX compatibility; load hologo and metalogo packages; edit documentation.
+
v1.16: remove xpatch and comment packages from class file; disable \\( and \\) in pdf bookmarks to avoid warnings; edit documentation.
v1.15: correct extra space left by \\CorrespondingAuthor when that author is not last; correct breakage of \\ref in captions. Thanks to Bret Van Poppel for reporting these issues.
@@ -94,7 +96,7 @@
####License####
- Copyright (c) 2019 John H. Lienhard
+ Copyright (c) 2020 John H. Lienhard
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.pdf b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
index 74cebad255..6e64eb32b9 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.pdf
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.tex b/macros/latex/contrib/asmeconf/asmeconf-template.tex
index 542c090acd..4010bd1f0e 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.tex
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.tex
@@ -1,11 +1,12 @@
+% !TEX encoding = UTF-8 Unicode
%%
%% This file is asmeconf-template.tex, a template to format ASME Conference papers according to
%% the requirements on ASME's conference web pages.
%%
-%% This file is version 1.16 dated 2020/02/28.
+%% This file is version 1.17 dated 2020/02/29
%%
-%% As of version 1.11, this template follows ASME's newer conference guidelines posted in July 2019.
-%% The new guidelines have changed the requested author block formatting.
+%% As of version 1.11, this template follows ASME's newer conference guidelines first posted July 2019.
+%% The new guidelines have changed the requested author block formatting (old format is also supported)
%% Nomenclature now follows the abstract. Abstract is in italics.
%%
%% Author: John H. Lienhard V
@@ -83,9 +84,9 @@
%% Class options are described above.
+
\documentclass[varvw,largesc,upint,mathalfa=cal=euler,colorlinks,hyphenate,balance]{asmeconf} % <=== remove colorlinks for submission to ASME
-\pdfminorversion=7 % This selection is not required.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%% Fields to be completed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -116,7 +117,7 @@
% Units of measure and other specialty lowercase terms in the title should be
% enclosed in \NoCaseChange{...} to maintain lower case type
-% LaTeX will automatically set this in all capital letters.
+% LaTeX will automatically set the title in all capital letters.
\title{Place Title Here: Place Subtitle After Colon} % <=== change to YOUR title
@@ -130,7 +131,7 @@
%%
%% \JointFirstAuthor, if applicable, follows the affiliation of the relevant authors, no spaces.
-\SetAuthors{Luis Hern\'{a}ndez\affil{1}\JointFirstAuthor , Maria Silva\affil{2}\JointFirstAuthor, Henry Tudor\affil{3}, Catherine~Parr\affil{3}, John H.\ Lienhard V\affil{4}\CorrespondingAuthor{lienhard@mit.edu}}
+\SetAuthors{Luis Hern\'andez\affil{1}\JointFirstAuthor , Maria Silva\affil{2}\JointFirstAuthor, Henry Tudor\affil{3}, Catherine~Parr\affil{3}, John H.\ Lienhard V\affil{4}\CorrespondingAuthor{lienhard@mit.edu}}
\SetAffiliation{1}{Institution or Company Name, City, State}
\SetAffiliation{2}{Institution or Company Name, City, Province, Canada}
@@ -157,7 +158,7 @@
%%
%% Abstract should be no more than 200 words
\begin{abstract}
-This paper is an example and template for typesetting ASME Conference Papers in \LaTeX\ using the {\upshape\texttt{asmeconf}} class. This class follows ASME guidelines for margins, fonts, headings, captions, and reference formats as of December 2019. The class is compatible with the {\upshape\texttt{hyperref}} package for producing pdf files with links. The optional argument of \verb|\section| has been modified for manually setting pdf bookmarks when macros or complicated mathematics are included in section headings. The class is intended to be used with the {\upshape\texttt{asmeconf.bst}} \textsc{Bib}\negthinspace\TeX\ style, which is part of this distribution. The class may be invoked with several options, most of which address math fonts. The class calls a number of packages, all of which are in \TeX\ Live and on CTAN.
+This paper is an example and template for typesetting ASME Conference Papers in {\upshape\LaTeX} using the {\upshape\texttt{asmeconf}} class. This class follows ASME guidelines for margins, fonts, headings, captions, and reference formats as of early 2020. The class is compatible with the {\upshape\texttt{hyperref}} package for producing pdf files with links. The optional argument of \verb|\section| has been modified for manually setting pdf bookmarks when macros or complicated mathematics are included in section headings. The class is intended to be used with the {\upshape\texttt{asmeconf.bst} \hologo{BibTeX}} style, which is part of this distribution. The class may be invoked with several options, most of which address math fonts. The class calls a number of packages, all of which are in {\upshape\TeX\ Live} and on CTAN. The class is compatible with {\upshape\hologo{pdfLaTeX}} or {\upshape\hologo{LuaLaTeX}}.
\end{abstract}
%%%%%%%%% NOMENCLATURE (OPTIONAL) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -330,7 +331,7 @@ Landscape figures and tables may be produced at full-page size by putting \verb|
Citations are automatically numbered \cite{ning2002}. They should be inserted at the appropriate point using a \verb|\cite{ref}| command~\cite{gibson2008,stevens1999}. The citations will be automatically sorted and compressed as well if they are given in a set \cite{stevens1999,ning2002,gibson2008,wions2005,smith2002,watson1982,smith1998}. See the \texttt{asmeconf-sample.bib} file for examples of how to enter your references. Citations and references are managed by the standard \texttt{natbib} package.
-The {\upshape\texttt{asmeconf.bst}} \textsc{Bib}\negthinspace\TeX\ style follows the reference styles posted on ASME's conference web site in early 2020. Examples for these and many other cases are given in the \texttt{asmeconf-sample.bib} file, which is part of this distribution. Nevertheless, a few comments are necessary.
+The {\upshape\texttt{asmeconf.bst}} \hologo{BibTeX} style follows the reference styles posted on ASME's conference web site in early 2020. Examples for these and many other cases are given in the \texttt{asmeconf-sample.bib} file, which is part of this distribution. Nevertheless, a few comments are necessary.
%% subsubsections are not numbered
\subsubsection*{DOI, URL, and eprint} Include DOI numbers when they are available. URL's may alternatively be given.
@@ -507,7 +508,7 @@ the option [\texttt{oldauthors}]. When using this form, the author names and ad
\verb|\SetAuthorBlock{\CorrespondingAuthor{John Lienhard%|
\hbox{}\hfil\verb|}{lienhard@mit.edu}}{Institution \\ City, State}|
-%% see after end document for usable code if you go this route.
+%% directly usable code follows \end{document}, below.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -519,11 +520,18 @@ as a secondary and tertiary language, \texttt{lang-second} and \texttt{lang-thir
The standard caption and section names will follow \texttt{babel}'s dictionary for primary languages other than English. Users may additionally change ``Keywords'', ``Nomenclature'', ``Corresponding author'', and ``Joint first authors'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, \verb|\CAwords|, and \verb|\JAwords|. Changes to the page footer were described earlier. The pdf bookmark for ``Appendices'' may be changed by renewing \verb|\appendicesname|.
-No effort has been made to support customization of language-specific fonts, although this is possible by modifying the class file (examples are given in the \texttt{newtx} documentation). The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed at \texttt{BibTeX}. Multilingual bibliographies can be supported using \texttt{BibLaTeX}.
+Font encoding is set to T1 with utf-8 input supported:
+%% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.
+\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.}
+àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż.
+
+No effort has been made to support customization of language-specific fonts, although this is possible by modifying the class file (examples are given in the \texttt{newtx} documentation). The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed at \hologo{BibTeX}. Multilingual bibliographies can be supported using \texttt{BibLaTeX}.
\end{document}
+%%% This is the set-up for the old author block style, a grid of blocks.
+
% Can also put multiple emails and use command more than once for multiple corresponding authors.
% Change to your name[s] and addresses, in the desired order of authors. Up to nine author blocks.
% Note usage below for joint first authors and for corresponding author.
diff --git a/macros/latex/contrib/asmeconf/asmeconf.cls b/macros/latex/contrib/asmeconf/asmeconf.cls
index 4f2d8f3d42..11cf01aba5 100644
--- a/macros/latex/contrib/asmeconf/asmeconf.cls
+++ b/macros/latex/contrib/asmeconf/asmeconf.cls
@@ -5,9 +5,9 @@
%%
%% Please note that ASME's journals follow specifications different from ASME conference papers.
%%
-%% This file is version 1.16 dated 2020/02/28.
- \def\versionno{1.16}
- \def\versiondate{2020/02/28\space}
+%% This file is version 1.17 dated 2020/02/29.
+ \def\versionno{1.17}
+ \def\versiondate{2020/02/29\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -190,7 +190,7 @@
\RequirePackage{graphicx}
\RequirePackage[hyperref,fixpdftex,dvipsnames,svgnames,x11names]{xcolor}
\RequirePackage{xparse}
-%\RequirePackage{comment} % user may load this in preamble if desired.
+\RequirePackage{metalogo,hologo} % Access various LaTeX logos if needed
%%%%%%%%%%%%%%%%%%%%%%%%
@@ -202,8 +202,18 @@
%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{mathtools} % extends amsmath
-\RequirePackage[utf8]{inputenc}
+\RequirePackage[T1]{fontenc}
+
+\RequirePackage{iftex} % check whether pdfTeX or a different engine is used
+\ifpdftex
+ \pdfminorversion=7 % This selection is not required.
+ \RequirePackage[utf8]{inputenc} % for backward compatibility with pre-2018 distributions
+\else
+ \relax
+\fi
+
+\RequirePackage{mathtools} % loads and extends amsmath
+
\RequirePackage[]{babel}
\RequirePackage[]{newtxtext}
\RequirePackage[varqu,varl]{inconsolata} % sans typewriter font
@@ -213,8 +223,8 @@
%% override \textsu if using default superiors
\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax}
-\RequirePackage[]{mathalfa} % load optional fonts for Calligraphy, Script, etc.
-% See package documentation for capabilities of this package.
+\RequirePackage[]{mathalfa} % load optional fonts for Calligraphy, Script, Fraktur
+% See mathalfa package documentation for capabilities of this package.
% Option format: mathalfa=cal=euler (etc.)
\RequirePackage{bm} % load after all math to give access to bold math
@@ -360,7 +370,7 @@
\urlstyle{same} % don't switch to typewriter font
-\RequirePackage{doi} % provides line breaking for doi hyperlinks in bibliography
+\RequirePackage{doi} % supports the nasty characters in some doi's
\renewcommand{\doitext}{DOI } % change the default value, {doi:}, to this per ASME specification
\RequirePackage{bookmark} % improves handling of pdf bookmarks
diff --git a/macros/latex/contrib/asmejour/README.md b/macros/latex/contrib/asmejour/README.md
index 1d9901b796..cc60f3eee6 100644
--- a/macros/latex/contrib/asmejour/README.md
+++ b/macros/latex/contrib/asmejour/README.md
@@ -1,7 +1,7 @@
#asmejour: A template for ASME journal papers#
- Version 1.10 dated 2020/02/28.
+ Version 1.11 dated 2020/02/29.
####Overview####
This class provides a template to format preprints submitted to ASME journals in the style that
@@ -57,6 +57,8 @@
####Change log####
+v1.11: ensure T1 font encoding, utf-8 input, and LuaLaTeX compatibility; edit documentation.
+
v1.10: update asmeconf.bst to most recent Crossref standard prefix for doi (https://doi.org/); remove xpatch package from class file; disable \\( and \\) in pdf bookmarks to avoid warnings; adjust \\eqref in bookmarks; edit documentation.
v1.09: adjust nomenclature list; edit language support
diff --git a/macros/latex/contrib/asmejour/asmejour-template.pdf b/macros/latex/contrib/asmejour/asmejour-template.pdf
index f41e442098..9c0a5568ed 100644
--- a/macros/latex/contrib/asmejour/asmejour-template.pdf
+++ b/macros/latex/contrib/asmejour/asmejour-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmejour/asmejour-template.tex b/macros/latex/contrib/asmejour/asmejour-template.tex
index 2d6601004f..2c0941f983 100644
--- a/macros/latex/contrib/asmejour/asmejour-template.tex
+++ b/macros/latex/contrib/asmejour/asmejour-template.tex
@@ -3,7 +3,7 @@
%% This file is asmejour-template.tex, a template to format papers in the style of ASME journal papers
%% as they are being published in 2020.
%%
-%% This file is version 1.10 dated 2020/02/28
+%% This file is version 1.11 dated 2020/02/29
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -139,12 +139,12 @@ email: lienhard@mit.edu
%%% This command must come BEFORE the end of the abstract.
%%% If you don't want keywords, delete the command.
-\keywords{ASME, Paper, Template, \LaTeX, \hologo{BibTeX}}
+\keywords{ASME, Paper, Template, {\upshape\LaTeX}, {\upshape\hologo{BibTeX}}}
%% Abstract should be no more than 250 words
\begin{abstract}
-This paper is an example and template for the {\upshape\texttt{asmejour}} class. Papers typeset in this class will follow ASME journal style for margins, fonts, headings, captions, and reference formats. Standard \LaTeX\ commands are used. The class will lay out the author, title, and abstract in ASME style. The class will produce a pdf file that that includes hyperlinks, bookmarks, and pdf metadata. The class is intended to be used with the {\upshape\texttt{asmejour.bst}} \hologo{BibTeX} style for typesetting references, which is part of this distribution. This style supports hyperlinks and modern reference formats, following current ASME practice. The class may be invoked with several options, most of which address math fonts. The class calls a number of packages, all of which are in \TeX~Live and in CTAN (\href{http://ctan.org}{ctan.org}). The class is compatible with \hologo{pdfLaTeX} or \LuaLaTeX.
+This paper is an example and template for the {\upshape\texttt{asmejour}} class. Papers typeset in this class will follow ASME journal style for margins, fonts, headings, captions, and reference formats. Standard {\upshape\LaTeX} commands are used. The class will lay out the author, title, and abstract in ASME style. The class will produce a pdf file that that includes hyperlinks, bookmarks, and pdf metadata. The class is intended to be used with the {\upshape\texttt{asmejour.bst} \hologo{BibTeX}} style for typesetting references, which is part of this distribution. This style supports hyperlinks and modern reference formats, following current ASME practice. The class may be invoked with several options, most of which address math fonts. The class calls a number of packages, all of which are in {\upshape\TeX~Live} and in CTAN (\href{http://ctan.org}{ctan.org}). The class is compatible with {\upshape\hologo{pdfLaTeX}} or {\upshape\hologo{LuaLaTeX}}.
\end{abstract}
@@ -551,9 +551,13 @@ If no language option is given, the package defaults to English. The standard ca
An example of use is shown in \selectlanguage{french}\appendixname\ \ref{app:fourier}.\selectlanguage{english}
+Font encoding is set to T1 with utf-8 input supported:
+%% If you have trouble with the next line (or the French text that follows), your file may not be saved in utf-8 format. You can delete these lines to resolve the issue.
+\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.}
+àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż
+
No effort has been made to support customization of language-specific fonts, although this is possible by modifying the class file (examples are given in the \texttt{newtx} documentation). The bibliography style, \texttt{asmejour.bst}, is designed in English and aimed at \texttt{BibTeX}. Multilingual bibliographies can be supported using \texttt{BibLaTeX}.
-
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\selectlanguage{french}
\section{Joseph Fourier}\label{app:fourier}
diff --git a/macros/latex/contrib/asmejour/asmejour.cls b/macros/latex/contrib/asmejour/asmejour.cls
index b452428380..ea70605bda 100644
--- a/macros/latex/contrib/asmejour/asmejour.cls
+++ b/macros/latex/contrib/asmejour/asmejour.cls
@@ -6,9 +6,9 @@
%% The asmejour.cls file should be used with the files asmejour.bst (for citations) and asmejour-template.tex.
%%
%%
-%% This file is version 1.10 dated 2020/2/28.
- \def\versionno{1.10}
- \def\versiondate{2020/02/28\space}
+%% This file is version 1.11 dated 2020/02/29.
+ \def\versionno{1.11}
+ \def\versiondate{2020/02/29\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -209,8 +209,17 @@
%%%%%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage[T1]{fontenc}
+
+\RequirePackage{iftex} % check whether pdftex or another engine is used
+\ifpdftex
+ \pdfminorversion=7 % This selection is not required.
+ \RequirePackage[utf8]{inputenc} % for backward compatibility with pre-2018 distributions
+\else
+ \relax
+\fi
+
\RequirePackage{mathtools} % extends amsmath
-\RequirePackage[utf8]{inputenc} % backward compatibility...LuaLaTeX will disable
\RequirePackage[]{babel}
\RequirePackage[]{newtxtext}
\RequirePackage[varqu,varl]{inconsolata} % sans typewriter font
@@ -223,7 +232,7 @@
\RequirePackage{bm} % load after all math to give access to bold math
-%% In addition to the word spacing options declared in line 121...
+%% In addition to the word spacing options declared in line 163...
%% Relative to size9.clo: leading reduced to 10 pt; displayskips made greater
\renewcommand\normalsize{%
\@setfontsize\normalsize\@ixpt{10\p@}% % <== was \@xipt
@@ -274,7 +283,7 @@
%%%%%%%%%%%%%%%%% EQUATION AND LINE NUMBERING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ASME puts equation tags in blue
-\RequirePackage{etoolbox} % dropped xpatch 28/2/20
+\RequirePackage{etoolbox} % dropped xpatch 28/02/20
\patchcmd{\tagform@}{(\ignorespaces#1\unskip\@@italiccorr)}{\color{blue}(\ignorespaces#1\unskip\@@italiccorr)}{}{}
%% Ensure that the current font is used for equation tags, not \normalfont as set by amsmath
@@ -768,14 +777,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\usepackage{iftex}%% can delete all this if desired.
-\ifpdftex
- \pdfminorversion=7 % This selection is not required.
-\else
- \relax
-\fi
-
-
\endinput
%%
%% End of file `asmejour.cls'.
diff --git a/macros/latex/contrib/autofancyhdr/LICENSE b/macros/latex/contrib/autofancyhdr/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/autofancyhdr/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/autofancyhdr/README.md b/macros/latex/contrib/autofancyhdr/README.md
new file mode 100644
index 0000000000..f92ed68b1e
--- /dev/null
+++ b/macros/latex/contrib/autofancyhdr/README.md
@@ -0,0 +1,11 @@
+This package automatically compute headlength for fancyhdr package.
+For using this package just substitute
+```tex
+\usepackage{fancyhdr}
+```
+with
+```tex
+\usepackage{autofancyhdr}
+```
+This package is under LaTeX Project Public 1.3c license.
+You can contact me by emailing to mojtaba.baghban@gmail.com \ No newline at end of file
diff --git a/macros/latex/contrib/autofancyhdr/autofancyhdr.sty b/macros/latex/contrib/autofancyhdr/autofancyhdr.sty
new file mode 100644
index 0000000000..83613a59b4
--- /dev/null
+++ b/macros/latex/contrib/autofancyhdr/autofancyhdr.sty
@@ -0,0 +1,69 @@
+\ProvidesPackage{autofancyhdr}%
+ [2019/01/18 v0.1
+ Extensive control of page headers and footers with automatic calculate headheight]%
+\RequirePackage{fancyhdr}
+\RequirePackage{biditools}
+\def\headfootlength{}
+% Redefine \f@nch@vbox for auto height
+\def\f@nch@vbox#1#2{%
+ \setbox0\vbox{#2}%
+ \ifdim\ht0=#1\else%
+ \f@nch@warning{%
+ \string#1 (\the#1) is not equal with \the\ht0.^^J
+ Please compile again to correct this problem.%
+ }%
+ \fi%
+ \ifx#1\headheight%
+ \edef\eheadfootlength{%
+ \string\expandafter\string\def\string\csname\space
+ headleng\thepage \string\endcsname{\strip@pt\ht0}%
+ }%
+ \expandafter\g@addto@macro\expandafter\headfootlength\expandafter{%
+ \eheadfootlength^^J%
+ }%
+ \fi%
+ \box0%
+}
+\bidi@AfterOutputPageShipOut{%
+ \newdimen\newheadheight%
+ \ifcsname headleng\the\numexpr\value{page}+1\relax\endcsname%
+ \setlength{\newheadheight}{%
+ \csname headleng\the\numexpr\value{page}+1\relax\endcsname pt%
+ }%
+ \else%
+ \ifcsname headleng1\endcsname%
+ \setlength{\newheadheight}{%
+ \csname headleng1\endcsname pt%
+ }%
+ \else%
+ \setlength{\newheadheight}{0pt}%
+ \fi%
+ \fi%
+ \global\setlength{\textheight}{
+ \dimexpr\textheight+\headheight-\newheadheight\relax
+ }%
+ \global\setlength{\headheight}{\newheadheight}%
+}%
+\IfFileExists{\jobname.headfootlength}
+{
+ \input{\jobname.headfootlength}
+}
+{}
+\ifcsname headleng1\endcsname
+\global\setlength\headheight{\csname headleng1\endcsname pt}
+\else
+\global\setlength\headheight{0pt}
+\fi
+\bidi@AfterLastShipout{%
+ \if@filesw%
+ \begingroup
+ % same write register as environment `filecontents` uses
+ \chardef\reserved@c=15 %
+ \immediate\openout\reserved@c=\jobname.headfootlength\relax
+ \immediate\write\reserved@c{%
+ \headfootlength%
+ }%
+ \immediate\closeout\reserved@c
+ \endgroup
+ \fi%
+} \ No newline at end of file
diff --git a/macros/latex/contrib/biblatex2bibitem/README.md b/macros/latex/contrib/biblatex2bibitem/README.md
new file mode 100644
index 0000000000..6873f6272d
--- /dev/null
+++ b/macros/latex/contrib/biblatex2bibitem/README.md
@@ -0,0 +1,10 @@
+## Usage
+In preamble:
+```
+\usepackage{biblatex2bibitem}
+```
+
+At the very end of document:
+```
+\printbibitembibliography
+```
diff --git a/macros/latex/contrib/biblatex2bibitem/biblatex2bibitem.sty b/macros/latex/contrib/biblatex2bibitem/biblatex2bibitem.sty
new file mode 100644
index 0000000000..cc3ff68bcf
--- /dev/null
+++ b/macros/latex/contrib/biblatex2bibitem/biblatex2bibitem.sty
@@ -0,0 +1,64 @@
+% A workaround to convert biblatex-generated bibliography to bibitems
+%
+% (c) Nikolai Avdeev aka @nickkolok, and @odomanov
+%
+% See also https://github.com/odomanov/biblatex-gost/issues/20
+%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{biblatex2bibitem}
+ [2020/02/24 v0.01 LaTeX package to convert biblatex-generated bibliography to bibitem commands]
+
+\RequirePackage{biblatex}
+
+\defbibenvironment{bibitembibliography}
+ {\textbackslash begin\{thebibliography\}\{99\}
+ % Page numbers and page headings are not wanted when copying
+ \thispagestyle{empty}
+ \pagestyle{empty}
+ \hyphenpenalty=10000
+ \exhyphenpenalty=10000
+ \renewcommand*{\&}{\textbackslash \symbol{38}}%
+ \renewcommand*{\mkbibemph}[1]{\textbackslash emph\{##1\}}%
+ \renewcommand*{\mkbibitalic}[1]{\textbackslash textit\{##1\}}%
+ \renewcommand*{\mkbibbold}[1]{\textbackslash textbf\{##1\}}%
+ %\DeclareFieldFormat{titlecase}{\texttt{\utffriendlydetokenize{#1}}}
+ \list{}{}}
+ {\endlist
+ \textbackslash end\{thebibliography\}
+ \thispagestyle{empty}
+ \pagestyle{empty}
+ }
+ {\item\%\\~\textbackslash bibitem\{\printfield{entrykey}\}\\}
+
+\newcommand{\utffriendlydetokenize}[1]{
+ \scantokens{
+ \catcode`\_=12
+ \catcode`\^=12
+ \catcode`\{=12
+ \catcode`\}=12
+ \catcode`\&=12
+ \catcode`\$=12
+ \catcode`\#=12
+ \catcode`\\=12
+ #1
+ }
+}
+
+
+
+\newcommand{\printbibitembibliography}{
+ \raggedright
+ \DeclareFieldFormat{titlecase}{\utffriendlydetokenize{##1}}
+ %\DeclareDelimFormat[bib]{nametitledelim}{\newline\bibsentence}
+ \printbibliography[env=bibitembibliography]
+}
+
+
+
+\endinput
+%%
+%% End of file `biblatex2bibitem.sty'.
diff --git a/macros/latex/contrib/diagbox/diagbox.dtx b/macros/latex/contrib/diagbox/diagbox.dtx
index 0fa92deec6..341a3cdccf 100644
--- a/macros/latex/contrib/diagbox/diagbox.dtx
+++ b/macros/latex/contrib/diagbox/diagbox.dtx
@@ -58,6 +58,7 @@
\makeatother
\usepackage[numbered]{hypdoc}
\hypersetup{pdfstartview=FitH}
+\fvset{gobble=1} %% 删除例子代码开头的 %
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -69,7 +70,7 @@
%</driver>
% \fi
%
-% \CheckSum{661}
+% \CheckSum{901}
%
% \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
@@ -97,7 +98,8 @@
% \newbox, \newdimen, \p@, \PackageError, \pkg, \put, \relax, \RequirePackage,
% \setbox, \setkeys, \setlength, \strip@pt, \unexpanded, \unitlength,
% \vcenter, \wd, \xdef, \z@, \@ifnextchar, \bgroup, \FPadd, \FPmul, \FPneg,
-% \FPsub, \FPupn, \let, \unless, \hspace}
+% \FPsub, \FPupn, \let, \unless, \hspace, \@tempskipa, \newif, \detokenize,
+% \@@, \\, \c, \l, \cs, \fp, \dim, \msg, \scan}
%
% \providecommand*{\pkg}{\textsf}
% \GetFileInfo{diagbox.dtx}
@@ -629,13 +631,8 @@
% \begin{macrocode}
\RequirePackage{pict2e}
% \end{macrocode}
-% 计算依赖 \pkg{fp} 宏包。
% \changes{v2.2}{2016/12/28}{避免 \pkg{fp} 包的 \texttt{nomessages} 选项在使用
% \pkg{catoptions} 包时冲突}
-% \begin{macrocode}
-\RequirePackage{fp}
-\FPmessagesfalse
-% \end{macrocode}
% 长度计算 \pkg{calc} 宏包。
% \changes{v2.2}{2016/12/28}{使用 \pkg{calc} 包计算选项参数,以支持
% \cs{widthof} 等命令。}
@@ -1004,6 +1001,88 @@
% \changes{v2.3}{2020/02/09}{检测二次方程无解、异常解的情形}
% 分成三部分的盒子。四个参数,分别为 key-value 格式的可选项、左半边内容、中间
% 内容、右半边内容。
+% \begin{macrocode}
+\def\diagbox@triple#1#2#3#4{%
+ \begingroup
+ \diagbox@clear
+ \def\diagbox@part{triple}%
+ \setkeys{diagbox}{dir=NW,#1}%
+ \@nameuse{diagbox@triple@setbox@\diagbox@dir}{#2}{#3}{#4}%
+% \end{macrocode}
+% 在宏包最后定义,需要返回 "\x", "\xm", "\xxm", "\y", "\ym" 和 "\yym"。
+% \begin{macrocode}
+ \diagbox@solve@equations
+ $\vcenter{\hbox{\diagbox@pict}}$%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{用户命令}
+%
+% \begin{macro}{\diagbox}
+% \changes{v2.0}{2011/11/22}{判断参数个数,选择两部分或三部分盒子。}
+% 主要的用户命令。判断使用两部分还是三部分的盒子。
+% \begin{macrocode}
+\newcommand\diagbox[3][]{%
+ \@ifnextchar\bgroup
+ {\diagbox@triple{#1}{#2}{#3}}{\diagbox@double{#1}{#2}{#3}}}
+% \end{macrocode}
+% \end{macro}
+%
+% 以下代码用来模拟 \pkg{slashbox} 宏包的功能。
+%
+% 禁止读入 \pkg{slashbox}。
+% \begin{macrocode}
+\expandafter\xdef\csname ver@slashbox.\@pkgextension\endcsname{9999/99/99}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\slashbox}
+% 模拟 "\slashbox"。
+% \begin{macrocode}
+\def\slashbox{%
+ \def\diagbox@slashbox@options{dir=SW,}%
+ \slashbox@}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\backslashbox}
+% 模拟 "\backslashbox"。
+% \begin{macrocode}
+\def\backslashbox{%
+ \def\diagbox@slashbox@options{dir=NW,}%
+ \slashbox@}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\slashbox@}
+% \begin{macrocode}
+\newcommand\slashbox@[1][]{%
+ \ifx\relax#1\relax\else
+ \edef\diagbox@slashbox@options{%
+ \unexpanded\expandafter{\diagbox@slashbox@options}%
+ \unexpanded{width=#1,}}%
+ \fi
+ \slashbox@@}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\slashbox@@}
+% \begin{macrocode}
+\newcommand\slashbox@@[3][]{%
+ \edef\diagbox@slashbox@options{%
+ \unexpanded\expandafter{\diagbox@slashbox@options}%
+ \unexpanded{trim=#1,}}%
+ \expandafter\diagbox\expandafter[\diagbox@slashbox@options]{#2}{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{v2.4}{2020/02/28}{利用 \pkg{l3fp} 解方程组。}
+%
+% \subsection{解方程组}
%
% 这里计算双斜线盒子宽、高的算法是简单而直观的。如下图所示,将 A、M、B 三个子盒
% 子分别放在斜线盒的三个角后,斜线正好使 M 盒、A 或 B 盒、斜线盒的一角三点共
@@ -1023,6 +1102,16 @@
% \frac{y}{y_b} &= \frac{x - x_m}{x - x_m - x_b}.
% \end{align*}
% 该方程组通常可化简为一个一元二次方程求解,两组共轭根中可以只需要较大的一组。
+% 通过 Mathematica 软件,容易得到方程组的解为:
+% \begin{align*}
+% x & = \frac{u + v \pm \sqrt{\Delta}} {2(t - y_b)}, \\
+% y & = \frac{u - v \mp \sqrt{\Delta}} {2(x_a - s)}, \\
+% \Delta & := (u + v)^2 + 4 x_a (t - y_b) \bigl(x_m (y_b - y_m) - x_b y_m\bigr), \\
+% u & := x_a y_m - x_m y_b, \\
+% v & := st - x_a y_b, \\
+% s & := x_b + x_m, \\
+% t & := y_a + y_m.
+% \end{align*}
% 但须注意上面的方程组并非总有正的实根,经过简单的代数分析可知,要给出几何直观
% 的可行解(正实根),需要同时满足以下条件:
% \begin{align*}
@@ -1030,13 +1119,164 @@
% y_b &< y_m + y_a.
% \end{align*}
% 该条件需要在计算中予以检查。
+%
+% \begin{macro}{\diagbox@solve@equations}
+% 如果 \pkg{expl3} 环境可用,就使用 \pkg{l3fp} 计算,否则使用 \pkg{fp} 包。
% \begin{macrocode}
-\def\diagbox@triple#1#2#3#4{%
- \begingroup
- \diagbox@clear
- \def\diagbox@part{triple}%
- \setkeys{diagbox}{dir=NW,#1}%
- \@nameuse{diagbox@triple@setbox@\diagbox@dir}{#2}{#3}{#4}%
+\ifcsname\detokenize{fp_eval:n}\endcsname
+\csname fi\endcsname
+\ExplSyntaxOn
+%<@@=diagbox>
+\cs_new_protected:Npn \@@_solve_equations:
+ {
+% \end{macrocode}
+% 取长宽。
+% \begin{macrocode}
+ \fp_set:Nn \l_@@_xa_fp
+ { \dim_to_fp:n { \wd \diagbox@boxa } }
+ \fp_set:Nn \l_@@_ya_fp
+ { \dim_to_fp:n { \ht \diagbox@boxa + \dp \diagbox@boxa } }
+ \fp_set:Nn \l_@@_xb_fp
+ { \dim_to_fp:n { \wd \diagbox@boxb } }
+ \fp_set:Nn \l_@@_yb_fp
+ { \dim_to_fp:n { \ht \diagbox@boxb + \dp \diagbox@boxb } }
+ \fp_set:Nn \l_@@_xm_fp
+ { \dim_to_fp:n { \wd \diagbox@boxm } }
+ \fp_set:Nn \l_@@_ym_fp
+ { \dim_to_fp:n { \ht \diagbox@boxm + \dp \diagbox@boxm } }
+ \fp_set:Nn \l_@@_s_fp { \l_@@_xb_fp + \l_@@_xm_fp }
+ \fp_set:Nn \l_@@_t_fp { \l_@@_ya_fp + \l_@@_ym_fp }
+% \end{macrocode}
+% 如果宽度和长度都被指定了,就不需要列方程组求解。
+% \begin{macrocode}
+ \fp_set_eq:NN \l_@@_delta_fp \c_nan_fp
+ \dim_compare:nNnTF \diagbox@wd = \c_zero_dim
+ { \@@_calculate_width: }
+ { \fp_set:Nn \l_@@_x_fp { \dim_to_fp:n { \diagbox@wd } } }
+ \dim_compare:nNnTF \diagbox@ht = \c_zero_dim
+ { \@@_calculate_height: }
+ { \fp_set:Nn \l_@@_y_fp { \dim_to_fp:n { \diagbox@ht } } }
+ \edef \x { \fp_use:N \l_@@_x_fp }
+ \edef \y { \fp_use:N \l_@@_y_fp }
+ \edef \xm { \fp_use:N \l_@@_xm_fp }
+ \edef \ym { \fp_use:N \l_@@_ym_fp }
+ \edef \xxm { \fp_eval:n { \l_@@_x_fp - \l_@@_xm_fp } }
+ \edef \yym { \fp_eval:n { \l_@@_y_fp - \l_@@_ym_fp } }
+ }
+% \end{macrocode}
+% 检查可行解条件,解二次方程。这里对于无正实根的情形,会给出一个宽松的值作为斜
+% 线盒子的宽高:
+% \begin{align*}
+% x &= 2 \max(x_a + x_m, x_b + x_m),\\
+% y &= 2 \max(y_a + y_m, y_b + y_m).
+% \end{align*}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_calculate_width:
+ {
+ \fp_zero:N \l_@@_x_fp
+ \fp_compare:nNnT \l_@@_yb_fp < \l_@@_t_fp
+ {
+ \@@_calculate_coefficient:
+ \fp_if_nan:nF { \l_@@_sqrt_fp }
+ {
+ \fp_set:Nn \l_@@_x_fp
+ {
+ ( \l_@@_u_fp + \l_@@_v_fp + \l_@@_sqrt_fp ) /
+ ( 2 ( \l_@@_t_fp - \l_@@_yb_fp ) )
+ }
+ }
+ }
+ \fp_compare:nNnF \l_@@_x_fp > \c_zero_fp
+ {
+ \fp_set:Nn \l_@@_x_fp
+ { 2 ( max( \l_@@_xa_fp , \l_@@_xb_fp ) + \l_@@_xm_fp ) }
+ \msg_warning:nnxx { diagbox } { calculate-error }
+ { width } { \fp_use:N \l_@@_x_fp }
+ }
+ \diagbox@wd = \fp_to_dim:N \l_@@_x_fp \scan_stop:
+ }
+\cs_new_protected:Npn \@@_calculate_height:
+ {
+ \fp_zero:N \l_@@_y_fp
+ \fp_compare:nNnT \l_@@_xa_fp < \l_@@_s_fp
+ {
+ \@@_calculate_coefficient:
+ \fp_if_nan:nF { \l_@@_sqrt_fp }
+ {
+ \fp_set:Nn \l_@@_y_fp
+ {
+ ( \l_@@_u_fp - \l_@@_v_fp - \l_@@_sqrt_fp ) /
+ ( 2 ( \l_@@_xa_fp - \l_@@_s_fp ) )
+ }
+ }
+ }
+ \fp_compare:nNnF \l_@@_y_fp > \c_zero_fp
+ {
+ \fp_set:Nn \l_@@_y_fp
+ { 2 ( max( \l_@@_ya_fp , \l_@@_yb_fp ) + \l_@@_ym_fp ) }
+ \msg_warning:nnxx { diagbox } { calculate-error }
+ { height } { \fp_use:N \l_@@_y_fp }
+ }
+ \diagbox@ht = \fp_to_dim:N \l_@@_y_fp \scan_stop:
+ }
+\cs_new_protected:Npn \@@_calculate_coefficient:
+ {
+ \fp_if_nan:nT { \l_@@_delta_fp }
+ { \@@_calculate_coefficient_aux: }
+ }
+\cs_new_protected:Npn \@@_calculate_coefficient_aux:
+ {
+ \fp_set:Nn \l_@@_u_fp
+ {
+ \l_@@_xa_fp * \l_@@_ym_fp -
+ \l_@@_xm_fp * \l_@@_yb_fp
+ }
+ \fp_set:Nn \l_@@_v_fp
+ {
+ \l_@@_s_fp * \l_@@_t_fp -
+ \l_@@_xa_fp * \l_@@_yb_fp
+ }
+ \fp_set:Nn \l_@@_delta_fp
+ {
+ ( \l_@@_u_fp + \l_@@_v_fp )^2 +
+ 4 * \l_@@_xa_fp * ( \l_@@_t_fp - \l_@@_yb_fp ) *
+ ( \l_@@_xm_fp * ( \l_@@_yb_fp - \l_@@_ym_fp ) -
+ \l_@@_xb_fp * \l_@@_ym_fp )
+ }
+ \fp_compare:nNnTF \l_@@_delta_fp < \c_zero_fp
+ { \fp_set_eq:NN \l_@@_sqrt_fp \c_nan_fp }
+ { \fp_set:Nn \l_@@_sqrt_fp { sqrt(\l_@@_delta_fp) } }
+ }
+\cs_new_eq:NN \diagbox@solve@equations \@@_solve_equations:
+\fp_new:N \l_@@_xa_fp
+\fp_new:N \l_@@_ya_fp
+\fp_new:N \l_@@_xb_fp
+\fp_new:N \l_@@_yb_fp
+\fp_new:N \l_@@_xm_fp
+\fp_new:N \l_@@_ym_fp
+\fp_new:N \l_@@_x_fp
+\fp_new:N \l_@@_y_fp
+\fp_new:N \l_@@_s_fp
+\fp_new:N \l_@@_t_fp
+\fp_new:N \l_@@_u_fp
+\fp_new:N \l_@@_v_fp
+\fp_new:N \l_@@_sqrt_fp
+\fp_new:N \l_@@_delta_fp
+\msg_new:nnn { diagbox } { calculate-error }
+ {
+ Cannot~calculate~proper~#1~of~triple~diagbox~
+ \msg_line_context:. \\
+ Use~#2pt~instead.
+ }
+\file_input_stop:
+% \end{macrocode}
+%
+% 若 \pkg{l3fp} 不可用,则引入 \pkg{fp} 包计算。
+% \begin{macrocode}
+\fi
+\RequirePackage{fp}
+\FPmessagesfalse
+\def\diagbox@solve@equations{%
% \end{macrocode}
% 取长宽
% \begin{macrocode}
@@ -1096,81 +1336,12 @@
\else
\edef\y{\strip@pt\diagbox@ht}%
\fi
-% \end{macrocode}
-% 画盒子
-% \begin{macrocode}
\FPsub\xxm\x\xm
\FPsub\yym\y\ym
- $\vcenter{\hbox{\diagbox@pict}}$%
- \endgroup}
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{用户命令}
-%
-% \begin{macro}{\diagbox}
-% \changes{v2.0}{2011/11/22}{判断参数个数,选择两部分或三部分盒子。}
-% 主要的用户命令。判断使用两部分还是三部分的盒子。
-% \begin{macrocode}
-\newcommand\diagbox[3][]{%
- \@ifnextchar\bgroup
- {\diagbox@triple{#1}{#2}{#3}}{\diagbox@double{#1}{#2}{#3}}}
-% \end{macrocode}
-% \end{macro}
-%
-% 以下代码用来模拟 \pkg{slashbox} 宏包的功能。
-%
-% 禁止读入 \pkg{slashbox}。
-% \begin{macrocode}
-\expandafter\xdef\csname ver@slashbox.\@pkgextension\endcsname{9999/99/99}
-% \end{macrocode}
-%
-%
-% \begin{macro}{\slashbox}
-% 模拟 "\slashbox"。
-% \begin{macrocode}
-\def\slashbox{%
- \def\diagbox@slashbox@options{dir=SW,}%
- \slashbox@}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\backslashbox}
-% 模拟 "\backslashbox"。
-% \begin{macrocode}
-\def\backslashbox{%
- \def\diagbox@slashbox@options{dir=NW,}%
- \slashbox@}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\slashbox@}
-% \begin{macrocode}
-\newcommand\slashbox@[1][]{%
- \ifx\relax#1\relax\else
- \edef\diagbox@slashbox@options{%
- \unexpanded\expandafter{\diagbox@slashbox@options}%
- \unexpanded{width=#1,}}%
- \fi
- \slashbox@@}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\slashbox@@}
-% \begin{macrocode}
-\newcommand\slashbox@@[3][]{%
- \edef\diagbox@slashbox@options{%
- \unexpanded\expandafter{\diagbox@slashbox@options}%
- \unexpanded{trim=#1,}}%
- \expandafter\diagbox\expandafter[\diagbox@slashbox@options]{#2}{#3}}
-\endinput
+}
% \end{macrocode}
% \end{macro}
%
-%
% \iffalse
%</package>
% \fi
diff --git a/macros/latex/contrib/diagbox/diagbox.ins b/macros/latex/contrib/diagbox/diagbox.ins
index 196e5eb08b..2011c3321c 100644
--- a/macros/latex/contrib/diagbox/diagbox.ins
+++ b/macros/latex/contrib/diagbox/diagbox.ins
@@ -16,7 +16,7 @@
%% and the derived filebase diagbox.sty.
%%
-\input docstrip.tex
+\input l3docstrip.tex
\keepsilent
\usedir{tex/latex/diagbox}
diff --git a/macros/latex/contrib/diagbox/diagbox.pdf b/macros/latex/contrib/diagbox/diagbox.pdf
index b891b8926a..51592660f8 100644
--- a/macros/latex/contrib/diagbox/diagbox.pdf
+++ b/macros/latex/contrib/diagbox/diagbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/icite/Makefile b/macros/latex/contrib/icite/Makefile
index 35bf3e4a63..e06046ec57 100644
--- a/macros/latex/contrib/icite/Makefile
+++ b/macros/latex/contrib/icite/Makefile
@@ -95,7 +95,7 @@ zip: all
package: distclean all
mkdir $(NAME)/
- cp Makefile README.md $(NAME).{dtx,ins,pdf} $(NAME)/
+ cp Makefile README.md $(NAME).{dtx,pdf} $(NAME)/
cp -r samples/ $(NAME)/
mkdir -p tex/latex/$(NAME)/
cp $(NAME).sty tex/latex/$(NAME)/
diff --git a/macros/latex/contrib/icite/README.md b/macros/latex/contrib/icite/README.md
index 05846e536a..a96df41d83 100644
--- a/macros/latex/contrib/icite/README.md
+++ b/macros/latex/contrib/icite/README.md
@@ -17,7 +17,7 @@ License and disclamer
icite – Indices locorum citatorum
-Copyright ⓒ 2019 Robert Alessi
+Copyright ⓒ 2019--2020 Robert Alessi
Please send error reports and suggestions for improvements to Robert
Alessi:
@@ -46,14 +46,16 @@ This release of icite consists of the following source files:
- `icite.dtx`
-- `icite.ins`
+- `icite.ins` (As this file can be generated from `icite.dtx`, it is
+ not included in CTAN repository, but it is included in the git
+ repository mentioned below for easier installation.)
- `Makefile`
License applicable to the documentation
---------------------------------------
-Copyright ⓒ 2019 Robert Alessi
+Copyright ⓒ 2019--2020 Robert Alessi
The documentation file `icite.pdf` that is generated from the
`icite.dtx` source file is licensed under the Creative Commons
@@ -64,8 +66,11 @@ a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Installation
============
-1. Run `'latex icite.ins'` to produce the `icite.sty`
- file;
+1. If `icite` was downloaded from CTAN, run `'lualatex --shell-escape
+ icite.dtx'` to produce the `icite.sty` file.
+
+ If `icite` was downloaded from the git repository mentioned above,
+ Run `'latex icite.ins'` to produce the `icite.sty` file.
2. To finish the installation you have to move the `icite.sty` file into
a directory where LaTeX can find them. See the FAQ on `texfaq.org`
diff --git a/macros/latex/contrib/icite/icite.dtx b/macros/latex/contrib/icite/icite.dtx
index 1e61a15d9c..d89d01299d 100644
--- a/macros/latex/contrib/icite/icite.dtx
+++ b/macros/latex/contrib/icite/icite.dtx
@@ -23,7 +23,7 @@ License and disclamer
icite – Indices locorum citatorum
-Copyright ⓒ 2019 Robert Alessi
+Copyright ⓒ 2019--2020 Robert Alessi
Please send error reports and suggestions for improvements to Robert
Alessi:
@@ -52,14 +52,16 @@ This release of icite consists of the following source files:
- `icite.dtx`
-- `icite.ins`
+- `icite.ins` (As this file can be generated from `icite.dtx`, it is
+ not included in CTAN repository, but it is included in the git
+ repository mentioned below for easier installation.)
- `Makefile`
License applicable to the documentation
---------------------------------------
-Copyright ⓒ 2019 Robert Alessi
+Copyright ⓒ 2019--2020 Robert Alessi
The documentation file `icite.pdf` that is generated from the
`icite.dtx` source file is licensed under the Creative Commons
@@ -70,8 +72,11 @@ a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Installation
============
-1. Run `'latex icite.ins'` to produce the `icite.sty`
- file;
+1. If `icite` was downloaded from CTAN, run `'lualatex --shell-escape
+ icite.dtx'` to produce the `icite.sty` file.
+
+ If `icite` was downloaded from the git repository mentioned above,
+ Run `'latex icite.ins'` to produce the `icite.sty` file.
2. To finish the installation you have to move the `icite.sty` file into
a directory where LaTeX can find them. See the FAQ on `texfaq.org`
@@ -131,7 +136,7 @@ be able to make whatever changes you like to.
\askforoverwritefalse
\preamble
-Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net>
+Copyright (C) 2019-2020 by Robert Alessi <alessi@robertalessi.net>
Please send error reports and suggestions for improvements to Robert
Alessi <alessi@robertalessi.net>
@@ -188,7 +193,7 @@ Running "make install" installs the files in the local TeX tree.
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{icite}
%<*package>
- [2019/03/17 v1.2 Make Indices locorum citatorum]
+ [2020/02/29 v1.3 Make Indices locorum citatorum]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -258,7 +263,7 @@ Running "make install" installs the files in the local TeX tree.
}
@Book{IAUMuller,
- sortname = {Ibn abi Usaybia},
+ sortname = {{ibn abi usaybia}},
editor = {Müller, August},
author = {\prname{ibn 'abI 'u.saybi`aT}},
shorteditor = {Müller},
@@ -289,7 +294,7 @@ Running "make install" installs the files in the local TeX tree.
title = {\arb[trans]{\uc{k}itAb al-^sukUk `al_A
\uc{^g}AlInUs}},
indextitle = {\arb[trans]{\uc{^s}ukUk}},
- sortname = {Razi},
+ sortname = {razi},
date = 1993,
shorthand = {\prname{al-rAziyy}, \arb[trans]{\uc{^s}ukUk}},
editor = {Mehdi Mohaghegh},
@@ -310,7 +315,7 @@ Running "make install" installs the files in the local TeX tree.
@MVBook{al-Nadim,
author = {\prname{ibn al-nadIm}},
title = {\arb[trans]{\uc{f}ihrist}},
- sortname = {Ibn al-Nadim},
+ sortname = {{ibn al-nadim}},
date = {1871/1872},
shorthand = {\arb[trans]{\uc{f}ihrist}},
editor = {Flügel, Gustav},
@@ -320,7 +325,7 @@ Running "make install" installs the files in the local TeX tree.
}
@Book{al-Qifti,
- sortname = {Ibn al-Qifti},
+ sortname = {{ibn al-qifti}},
entrysubtype = {classical},
shorthand = {\prname{al-qif.tiyy}, \arb[trans]{\uc{t}a'rI_h}},
location = {Leipzig},
@@ -340,25 +345,25 @@ Running "make install" installs the files in the local TeX tree.
version = {1.0a}
}
\end{filecontents*}
+\usepackage{fontspec}
\usepackage[english]{babel}
\usepackage[letterpaper,margin=25mm,left=50mm,nohead]{geometry}
-\usepackage{fontspec}
-\setmainfont{Old Standard}[RawFeature={+ss05;+ss06}]
-\usepackage{newunicodechar}
-\newunicodechar{ǧ}{ǧ} % Old Standard does not include ǧ/Ǧ
-\newunicodechar{Ǧ}{Ǧ} %
+\babelfont{rm}{Old Standard}
+\babelfont{sf}{NewComputerModern Sans}
+\babelfont{tt}{NewComputerModern Mono}
\usepackage{arabluatex}
\SetTranslitConvention{loc}
\usepackage{xurl}
\usepackage{uri}
\usepackage{hyperxmp}
\usepackage{varioref}
+\usepackage{latexcolors}
\usepackage[numbered]{hypdoc}
-\hypersetup{unicode=true, colorlinks, allcolors=blue,
+\hypersetup{unicode=true, colorlinks, allcolors=cinnamon,
linktocpage=true, pdfauthor={Robert Alessi}, pdftitle={The
icite package}, pdfcontactemail={alessi@robertalessi.net},
pdfcontacturl={http://www.robertalessi.net/icite},
- pdfcopyright={Copyright (C) 2019 Robert Alessi
+ pdfcopyright={Copyright (C) 2019--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
@@ -408,7 +413,7 @@ Running "make install" installs the files in the local TeX tree.
\newcommand{\package}[1]{\textsf{#1}\index{#1=#1 (package)}}
\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}
\newtcblisting{example}{minted options={linenos, numbersep=0mm}}
\newtcblisting{code}{minted options={linenos, numbersep=0mm}, listing
@@ -451,7 +456,7 @@ Running "make install" installs the files in the local TeX tree.
%</driver>
% \fi
%
-% \CheckSum{352}
+% \CheckSum{360}
%
% \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
@@ -526,7 +531,7 @@ Running "make install" installs the files in the local TeX tree.
% \label{sec:license-software}
%
% \package{icite} --- \emph{Indices locorum citatorum}\\
-% Copyright \textcopyright\ 2019 Robert Alessi
+% Copyright \textcopyright\ 2019--2020 Robert Alessi
%
% Please send error reports and suggestions for improvements to Robert
% Alessi:
@@ -563,7 +568,7 @@ Running "make install" installs the files in the local TeX tree.
%
% \subsection*{License applicable to this document}
% \label{sec:documentation-license}
-% Copyright \textcopyright\ 2019 Robert Alessi
+% Copyright \textcopyright\ 2019--2020 Robert Alessi
%
% \ccbysa\marginpar{\texttt{CC BY-SA 4.0}}
% This document is licensed under the Creative Commons
@@ -609,7 +614,7 @@ Running "make install" installs the files in the local TeX tree.
%</example>
% \fi
%
-% \package{icite} may be loaded with two optional \enquote*{named
+% \package{icite} may be loaded with three optional \enquote*{named
% arguments} either of which is set using the syntax
% \meta{key}$=$\meta{value}. The description of the optional arguments
% follows:---
@@ -626,7 +631,7 @@ Running "make install" installs the files in the local TeX tree.
% \tcboxverb{Default: not set}\\
% \meta{index\_name} is the name of the index in which all passages
% cited with the \cs{icite} command are to be found by default. As
-% this option is not initally set, \cs{icite} naturally inserts cited
+% this option is not initially set, \cs{icite} naturally inserts cited
% passages in the default general index, unless |defaultindex| is set
% to the value |none|, in which case indexing is disabled. It must be
% noted that this named argument does not need a value as it defaults
@@ -717,8 +722,9 @@ Running "make install" installs the files in the local TeX tree.
% is satisfactory in most cases.
% \item[indexauthor] This field is not set by Bib\LaTeX. However, it
% may be used as a fallback field for multiple or complex names.
-% \item[sortname] This standard Bib\LaTeX\ which is never printed may
-% be used to modify the sorting order of the index entries.
+% \item[sortname] This standard Bib\LaTeX\ field which is never
+% printed may be used to modify the sorting order of the index
+% entries.
% \end{description}
%
% \paragraph{Example}
@@ -733,7 +739,7 @@ Running "make install" installs the files in the local TeX tree.
% But in the end, the |sortname| field is also needed because the
% diacritics must be discarded so that the name be sorted
% properly:\\[1ex]%
-% |sortname = {|Hunayn ibn Ishaq|}|
+% |sortname = {{|Hunayn ibn Ishaq|}}|
%
% \subsection{Titles}
% To process titles, \package{icite} uses the following entry fields:
@@ -1111,7 +1117,7 @@ Running "make install" installs the files in the local TeX tree.
\begin{code}
% preamble:
\usepackage[xindy]{imakeidx}
- \makeindex[name=loccit, options=-M icite.sty]
+ \makeindex[name=loccit, options=-M icite.xdy]
% document:
\printindex[loccit]
\end{code}
@@ -1320,6 +1326,7 @@ Running "make install" installs the files in the local TeX tree.
\index{\@sortedauthor!\@sortedtitle}%
\fi\fi%
}{%
+ \bgroup%
\DTLforeach*{icite@indices}{%
\icite@subtype=subtype,\icite@index=index}{%
\ifx\@subtype\icite@subtype%
@@ -1332,7 +1339,8 @@ Running "make install" installs the files in the local TeX tree.
\else%
\index{\@sortedauthor!\@sortedtitle}%
\fi\fi%
- \fi}}
+ \fi}%
+ \egroup}%
\ifno@bibengine
\ifx\@shorthand\empty%
\@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
@@ -1352,6 +1360,7 @@ Running "make install" installs the files in the local TeX tree.
\index{\@sortedauthor!\@sortedtitle!#1}%
\fi\fi%
}{%
+ \bgroup%
\DTLforeach*{icite@indices}{%
\icite@subtype=subtype,\icite@index=index}{%
\ifx\@subtype\icite@subtype%
@@ -1364,13 +1373,14 @@ Running "make install" installs the files in the local TeX tree.
\else%
\index{\@sortedauthor!\@sortedtitle!#1}%
\fi\fi%
- \fi}}%
+ \fi}%
+ \egroup}%
\ifno@bibengine
\ifx\@shorthand\empty%
\@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
\ic@titpgdelim{#1}%
\else%
- \@shorthand, {#1}%
+ \@shorthand\ic@titpgdelim{#1}%
\fi%
\else%
\fi%
@@ -1384,6 +1394,7 @@ Running "make install" installs the files in the local TeX tree.
\index{\@sortedauthor!\@sortedtitle!#2}%
\fi\fi%
}{%
+ \bgroup%
\DTLforeach*{icite@indices}{%
\icite@subtype=subtype,\icite@index=index}{%
\ifx\@subtype\icite@subtype%
@@ -1396,13 +1407,14 @@ Running "make install" installs the files in the local TeX tree.
\else%
\index{\@sortedauthor!\@sortedtitle!#2}%
\fi\fi%
- \fi}}%
+ \fi}%
+ \egroup}%
\ifno@bibengine
\ifx\@shorthand\empty%
#1 \@useauthor\ic@authtitdelim\TitleStyle{\@usetitle}%
\ic@titpgdelim{#2}%
\else%
- #1 \@shorthand, {#2}%
+ #1 \@shorthand\ic@titpgdelim{#2}%
\fi
\else%
\fi%
diff --git a/macros/latex/contrib/icite/icite.ins b/macros/latex/contrib/icite/icite.ins
deleted file mode 100644
index 176b1fd700..0000000000
--- a/macros/latex/contrib/icite/icite.ins
+++ /dev/null
@@ -1,71 +0,0 @@
-%%
-%% This is file `icite.ins',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% icite.dtx (with options: `install')
-%%
-%% Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net>
-%%
-%% Please send error reports and suggestions for improvements to Robert
-%% Alessi <alessi@robertalessi.net>
-%%
-%% 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 work consists of the file icite.dtx, icite.ins and a Makefile.
-%% Running "make" generates the derived files README.md, icite.pdf and icite.sty.
-%% Running "make inst" installs the files in the user's TeX tree.
-%% Running "make install" installs the files in the local TeX tree.
-%%
-\input docstrip.tex
-\keepsilent
-\askforoverwritefalse
-\preamble
-
-Copyright (C) 2019 by Robert Alessi <alessi@robertalessi.net>
-
-Please send error reports and suggestions for improvements to Robert
-Alessi <alessi@robertalessi.net>
-
-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 work consists of the file icite.dtx, icite.ins and a Makefile.
-Running "make" generates the derived files README.md, icite.pdf and icite.sty.
-Running "make inst" installs the files in the user's TeX tree.
-Running "make install" installs the files in the local TeX tree.
-
-\endpreamble
-
-\usedir{tex/latex/icite}
-\generate{
- \file{\jobname.sty}{\from{\jobname.dtx}{package}}
-}
-\endbatchfile
-\endinput
-%%
-%% End of file `icite.ins'.
diff --git a/macros/latex/contrib/icite/icite.pdf b/macros/latex/contrib/icite/icite.pdf
index c492cb5e31..a39837d7c0 100644
--- a/macros/latex/contrib/icite/icite.pdf
+++ b/macros/latex/contrib/icite/icite.pdf
Binary files differ
diff --git a/macros/latex/contrib/icite/samples/icite-biblatex.pdf b/macros/latex/contrib/icite/samples/icite-biblatex.pdf
index f19d15473c..54154eb06f 100644
--- a/macros/latex/contrib/icite/samples/icite-biblatex.pdf
+++ b/macros/latex/contrib/icite/samples/icite-biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/icite/samples/icite-minimal.pdf b/macros/latex/contrib/icite/samples/icite-minimal.pdf
index e010128479..13b201c4d8 100644
--- a/macros/latex/contrib/icite/samples/icite-minimal.pdf
+++ b/macros/latex/contrib/icite/samples/icite-minimal.pdf
Binary files differ
diff --git a/macros/latex/contrib/icite/samples/icite-nobiblatex.pdf b/macros/latex/contrib/icite/samples/icite-nobiblatex.pdf
index ae93aa9deb..7f524bb7ec 100644
--- a/macros/latex/contrib/icite/samples/icite-nobiblatex.pdf
+++ b/macros/latex/contrib/icite/samples/icite-nobiblatex.pdf
Binary files differ
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
index 5374b0aef2..44e83c9d4a 100644
--- a/macros/luatex/latex/arabluatex/arabluatex.pdf
+++ b/macros/luatex/latex/arabluatex/arabluatex.pdf
Binary files differ
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
index b12a86dd1c..c56297fc96 100644
--- a/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf
+++ b/macros/luatex/latex/arabluatex/samples/al-Jahiz.pdf
Binary files differ
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
index aff9bb76e2..5911562443 100644
--- a/macros/luatex/latex/arabluatex/samples/exporting.pdf
+++ b/macros/luatex/latex/arabluatex/samples/exporting.pdf
Binary files differ
diff --git a/macros/luatex/latex/arabluatex/samples/template-01.pdf b/macros/luatex/latex/arabluatex/samples/template-01.pdf
index b72fa71008..db695d716b 100644
--- a/macros/luatex/latex/arabluatex/samples/template-01.pdf
+++ b/macros/luatex/latex/arabluatex/samples/template-01.pdf
Binary files differ