summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/tracklang/CHANGES6
-rw-r--r--macros/generic/tracklang/README4
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals-babel.pdfbin14855 -> 14843 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals-de-poly.pdfbin3820 -> 3817 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals-de.pdfbin13625 -> 13613 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals-poly.pdfbin3559 -> 3555 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals.pdfbin12656 -> 12644 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2-de.pdfbin13625 -> 13613 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2-de2.pdfbin13625 -> 13613 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2-de3.pdfbin13607 -> 13595 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2-de4.pdfbin3822 -> 3818 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2-poly.pdfbin3558 -> 3556 bytes
-rw-r--r--macros/generic/tracklang/samples/animals/sample-animals2.pdfbin12656 -> 12644 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions.pdfbin13161 -> 13148 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2-manx.pdfbin19785 -> 19773 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2-map.pdfbin26000 -> 25988 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2-map2.pdfbin25852 -> 25840 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2-map3.pdfbin24924 -> 24912 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2-nomap.pdfbin25468 -> 25456 bytes
-rw-r--r--macros/generic/tracklang/samples/regions/sample-regions2.pdfbin14716 -> 14704 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang.pdfbin19552 -> 19540 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang2.pdfbin19802 -> 19790 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang3.pdfbin19814 -> 19802 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang4.pdfbin6202 -> 6199 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang5.pdfbin16914 -> 16902 bytes
-rw-r--r--macros/generic/tracklang/samples/sample-tracklang6.pdfbin19897 -> 19885 bytes
-rw-r--r--macros/generic/tracklang/tracklang.dtx108
-rw-r--r--macros/generic/tracklang/tracklang.ins2
-rw-r--r--macros/generic/tracklang/tracklang.pdfbin676481 -> 678702 bytes
-rw-r--r--macros/latex/contrib/acronym/CHANGES15
-rw-r--r--macros/latex/contrib/acronym/README16
-rw-r--r--macros/latex/contrib/acronym/acronym.dtx433
-rw-r--r--macros/latex/contrib/acronym/acronym.pdfbin267497 -> 272577 bytes
-rw-r--r--macros/latex/contrib/algxpar/README.md20
-rw-r--r--macros/latex/contrib/algxpar/algxpar.dtx1113
-rw-r--r--macros/latex/contrib/algxpar/algxpar.ins34
-rw-r--r--macros/latex/contrib/algxpar/algxpar.pdfbin0 -> 205770 bytes
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx897
-rw-r--r--macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdfbin280065 -> 281516 bytes
-rw-r--r--macros/latex/contrib/datetime2/CHANGES6
-rw-r--r--macros/latex/contrib/datetime2/README4
-rw-r--r--macros/latex/contrib/datetime2/datetime2.dtx162
-rw-r--r--macros/latex/contrib/datetime2/datetime2.ins2
-rw-r--r--macros/latex/contrib/datetime2/datetime2.pdfbin685020 -> 690721 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-babel.pdfbin73269 -> 50065 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-calc.pdfbin28801 -> 28789 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-filedate.pdfbin16654 -> 16564 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-hyperref.pdfbin62238 -> 62459 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-journal.pdfbin100536 -> 100525 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-styles.pdfbin53924 -> 54274 bytes
-rw-r--r--macros/latex/contrib/datetime2/samples/datetime2-sample-xe.pdfbin7018 -> 7157 bytes
-rw-r--r--macros/latex/contrib/grffile/README.md2
-rw-r--r--macros/latex/contrib/grffile/grffile.dtx8
-rw-r--r--macros/latex/contrib/grffile/grffile.pdfbin353503 -> 353477 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.pdfbin314351 -> 315137 bytes
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix-french.tex28
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.dtx267
-rw-r--r--macros/latex/contrib/nicematrix/nicematrix.pdfbin672477 -> 682462 bytes
-rw-r--r--macros/luatex/generic/luaotfload/NEWS5
-rw-r--r--macros/luatex/generic/luaotfload/README.md4
-rw-r--r--macros/luatex/generic/luaotfload/filegraph.pdfbin39841 -> 39841 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua7
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-colors.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-conf.pdfbin77675 -> 77676 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-configuration.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-database.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-embolden.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-features.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-filelist.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-define.lua28
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua11
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-init.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-latex.pdfbin394415 -> 394746 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-letterspace.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-loaders.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-log.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-main.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-main.tex17
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-multiscript.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-notdef.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-parsers.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-resolvers.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-scripts.lua91
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-status.lua54
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.12
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.pdfbin76923 -> 76928 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.rst4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tounicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-unicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.52
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.rst4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.sty2
-rw-r--r--macros/luatex/generic/luaotfload/scripts-demo.pdfbin21422 -> 21422 bytes
-rw-r--r--macros/luatex/generic/luaotfload/scripts-demo.tex8
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo-graphite.pdfbin8487 -> 8487 bytes
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo.pdfbin8411 -> 8411 bytes
99 files changed, 2772 insertions, 674 deletions
diff --git a/macros/generic/tracklang/CHANGES b/macros/generic/tracklang/CHANGES
index 416116d3ee..90d299adc3 100644
--- a/macros/generic/tracklang/CHANGES
+++ b/macros/generic/tracklang/CHANGES
@@ -1,3 +1,9 @@
+v1.3.9 (2019-11-11):
+
+ * tracklang.tex:
+
+ - added \TrackIfKnownLanguage
+
v1.3.8 (2019-10-06):
* tracklang.tex:
diff --git a/macros/generic/tracklang/README b/macros/generic/tracklang/README
index bdbfd53bed..6c9b86401c 100644
--- a/macros/generic/tracklang/README
+++ b/macros/generic/tracklang/README
@@ -1,6 +1,6 @@
-Generic TeX Bundle : tracklang v1.3.8
+Generic TeX Bundle : tracklang v1.3.9
-Last Modified : 2019-10-06
+Last Modified : 2019-11-11
Author : Nicola Talbot
diff --git a/macros/generic/tracklang/samples/animals/sample-animals-babel.pdf b/macros/generic/tracklang/samples/animals/sample-animals-babel.pdf
index 135162fdda..330ff6a026 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals-babel.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals-babel.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals-de-poly.pdf b/macros/generic/tracklang/samples/animals/sample-animals-de-poly.pdf
index b041feba54..509be5eb63 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals-de-poly.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals-de-poly.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals-de.pdf b/macros/generic/tracklang/samples/animals/sample-animals-de.pdf
index 0fd701147b..d1448c319d 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals-de.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals-de.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals-poly.pdf b/macros/generic/tracklang/samples/animals/sample-animals-poly.pdf
index 7c14bbe47f..1075134907 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals-poly.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals-poly.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals.pdf b/macros/generic/tracklang/samples/animals/sample-animals.pdf
index f3b1cc7ba8..c799fb8f3a 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2-de.pdf b/macros/generic/tracklang/samples/animals/sample-animals2-de.pdf
index b2d5afa233..07c8bf0ec6 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2-de.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2-de.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2-de2.pdf b/macros/generic/tracklang/samples/animals/sample-animals2-de2.pdf
index 40a16a442a..292dcd486f 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2-de2.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2-de2.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2-de3.pdf b/macros/generic/tracklang/samples/animals/sample-animals2-de3.pdf
index c90e064f31..095c57d130 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2-de3.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2-de3.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2-de4.pdf b/macros/generic/tracklang/samples/animals/sample-animals2-de4.pdf
index 6ff1942239..86802c70d3 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2-de4.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2-de4.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2-poly.pdf b/macros/generic/tracklang/samples/animals/sample-animals2-poly.pdf
index 78d5ec39e0..d0faec29a6 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2-poly.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2-poly.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/animals/sample-animals2.pdf b/macros/generic/tracklang/samples/animals/sample-animals2.pdf
index f6e3e8525a..bd3e154a86 100644
--- a/macros/generic/tracklang/samples/animals/sample-animals2.pdf
+++ b/macros/generic/tracklang/samples/animals/sample-animals2.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions.pdf b/macros/generic/tracklang/samples/regions/sample-regions.pdf
index 2adf3b9d03..693d8b75e9 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2-manx.pdf b/macros/generic/tracklang/samples/regions/sample-regions2-manx.pdf
index e3fdc40f47..40eab364f8 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2-manx.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2-manx.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2-map.pdf b/macros/generic/tracklang/samples/regions/sample-regions2-map.pdf
index badfd23383..033fec24ce 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2-map.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2-map.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2-map2.pdf b/macros/generic/tracklang/samples/regions/sample-regions2-map2.pdf
index 6d659b6bc5..85f8f1f150 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2-map2.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2-map2.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2-map3.pdf b/macros/generic/tracklang/samples/regions/sample-regions2-map3.pdf
index 690bbf07de..bbd85ced7b 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2-map3.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2-map3.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2-nomap.pdf b/macros/generic/tracklang/samples/regions/sample-regions2-nomap.pdf
index 5d9a7c1c5c..46f836a3e3 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2-nomap.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2-nomap.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/regions/sample-regions2.pdf b/macros/generic/tracklang/samples/regions/sample-regions2.pdf
index a2f66edfa4..6c39680885 100644
--- a/macros/generic/tracklang/samples/regions/sample-regions2.pdf
+++ b/macros/generic/tracklang/samples/regions/sample-regions2.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang.pdf b/macros/generic/tracklang/samples/sample-tracklang.pdf
index 1f5c6ea8c1..a2c23d601b 100644
--- a/macros/generic/tracklang/samples/sample-tracklang.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang2.pdf b/macros/generic/tracklang/samples/sample-tracklang2.pdf
index 258262f906..b8bad2af52 100644
--- a/macros/generic/tracklang/samples/sample-tracklang2.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang2.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang3.pdf b/macros/generic/tracklang/samples/sample-tracklang3.pdf
index 2609984b35..61b4f28c70 100644
--- a/macros/generic/tracklang/samples/sample-tracklang3.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang3.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang4.pdf b/macros/generic/tracklang/samples/sample-tracklang4.pdf
index 894b62d507..d42a97d715 100644
--- a/macros/generic/tracklang/samples/sample-tracklang4.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang4.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang5.pdf b/macros/generic/tracklang/samples/sample-tracklang5.pdf
index 1253e87c1b..8c05bc36f1 100644
--- a/macros/generic/tracklang/samples/sample-tracklang5.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang5.pdf
Binary files differ
diff --git a/macros/generic/tracklang/samples/sample-tracklang6.pdf b/macros/generic/tracklang/samples/sample-tracklang6.pdf
index e8462de248..47c5c053fd 100644
--- a/macros/generic/tracklang/samples/sample-tracklang6.pdf
+++ b/macros/generic/tracklang/samples/sample-tracklang6.pdf
Binary files differ
diff --git a/macros/generic/tracklang/tracklang.dtx b/macros/generic/tracklang/tracklang.dtx
index b3415f2e22..e7e28decc4 100644
--- a/macros/generic/tracklang/tracklang.dtx
+++ b/macros/generic/tracklang/tracklang.dtx
@@ -2,15 +2,15 @@
% tracklang.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
% -section "chapter"
-% -doc "tracklang-manual.tex"
% -author "Nicola Talbot"
+% -doc "tracklang-manual.tex"
% -src "tracklang.sty\Z=>tracklang.sty"
% -src "tracklang.tex\Z=>tracklang.tex"
% -src "tracklang-region-codes.tex\Z=>tracklang-region-codes.tex"
% -src "tracklang-scripts.sty\Z=>tracklang-scripts.sty"
% -src "tracklang-scripts.tex\Z=>tracklang-scripts.tex"
% tracklang
-% Created on 2019/10/6 15:08
+% Created on 2019/11/11 16:00
%\fi
%\iffalse
%<*package>
@@ -59,7 +59,7 @@
pdfauthor={Nicola L.C. Talbot},
pdftitle={tracklang: tracking language options}]{hyperref}
-\CheckSum{3965}
+\CheckSum{3986}
\appto\MacroFont{\scriptsize}
\renewcommand*{\usage}[1]{\textit{\hyperpage{#1}}}
@@ -278,11 +278,11 @@ and~\ref{tab:nonisoopts}}
%
%\MakeShortVerb{"}
%
-%\title{tracklang v1.3.8:
+%\title{tracklang v1.3.9:
%tracking language options}
%\author{Nicola L. C. Talbot\\\url{http://www.dickimaw-books.com/}}
%
-%\date{2019-10-06}
+%\date{2019-11-11}
%\maketitle
%
%\begin{abstract}
@@ -936,10 +936,44 @@ and~\ref{tab:nonisoopts}}
%label. (Irregular grandfather tags aren't recognised.)
%This command will fully expand \meta{tag}.
%A warning is issued if the tag is empty.
+%
+%If you want to first check that \meta{tag} includes a valid language
+%code, then you can instead use:
+%\begin{definition}[\DescribeMacro\TrackIfKnownLanguage]
+%\cs{TrackIfKnownLanguage}\marg{tag}\marg{success code}\marg{fail code}
+%\end{definition}
+%This will only track \meta{tag} (and then do \meta{success code}) if
+%\meta{tag} starts with a valid language code (or is a predefined
+%dialect) otherwise it will do \meta{fail code}. Both
+%\cs{TrackLanguageTag} and \cs{TrackIfKnownLanguage} will check if
+%\meta{tag} is a predefined option. (This saves parsing the tag if
+%it's recognised.)
+%
%For example:
%\begin{verbatim}
%\TrackLanguageTag{hy-Latn-IT-arevela}
+%Latn-ME: \TrackIfKnownLanguage{Latn-ME}{success}{fail}.
+%brazilian: \TrackIfKnownLanguage{brazilian}{success}{fail}.
+%\end{verbatim}
+%This will track hy-Latn-IT-arevela and brazilian (pt-BR) but not
+%Latn-ME (because it doesn't contain a valid language code) even
+%though it's a valid script and country code. The above is just for
+%illustrative purposes. Typically the language tracking isn't
+%performed within the document text.
+%
+%The \sty{datetime2} package assumes that any unknown package option is a
+%language identifier. It could simply do:
+%\begin{verbatim}
+%\TrackLanguageTag{\CurrentOption}
+%\end{verbatim}
+%but users can make mistakes sometimes and this won't provide any
+%helpful information if they, for example, misspelt a package option
+%or forgot the ``\meta{key}='' part of a \meta{key}=\meta{value}
+%setting. Instead (as from v1.5.5) it does:
+%\begin{verbatim}
+%\TrackIfKnownLanguage{\CurrentOption}{...}{\PackageError{...}{...}{...}}
%\end{verbatim}
+%This will now give the user some guidance.
%
%If \meta{tag} contains a sub-language tag, this will be set
%as the 639-3 code for the \emph{dialect} label. Note that this is
@@ -957,8 +991,7 @@ and~\ref{tab:nonisoopts}}
%ISO 639-3: \TrackedIsoCodeFromLanguage{639-3}{zhcmnHansCN}.
%\end{verbatim}
%
-%Version 1.2 (currently pending) of
-%\sty{texosquery} will have a new command \ics{TeXOSQueryLangTag},
+%Version 1.2 of \sty{texosquery} provides the command \ics{TeXOSQueryLangTag},
%which may be used to fetch the operating system's regional
%information as a language tag. These commands can be used as
%follows:
@@ -3264,7 +3297,7 @@ and~\ref{tab:nonisoopts}}
% packages such as \styfmt{etoolbox}.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang}[2019/10/06 v1.3.8 (NLCT) Track Languages]
+\ProvidesPackage{tracklang}[2019/11/11 v1.3.9 (NLCT) Track Languages]
% \end{macrocode}
%\begin{macro}{\@tracklang@declareoption}
% Set up package options.
@@ -3560,7 +3593,7 @@ and~\ref{tab:nonisoopts}}
% Version info.
% \begin{macrocode}
\expandafter\def\csname ver@tracklang.tex\endcsname{%
- 2019/10/06 v1.3.8 (NLCT) Track Languages Generic Code}
+ 2019/11/11 v1.3.9 (NLCT) Track Languages Generic Code}
% \end{macrocode}
% Define a long command for determining the existence of a control
% sequence by its name. (\cs{relax} is considered undefined.)
@@ -5959,6 +5992,57 @@ and~\ref{tab:nonisoopts}}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\TrackIfKnownLanguage}
+%\begin{definition}
+%\cs{TrackIfKnownLanguage}\marg{tag}\meta{success code}\marg{fail code}
+%\end{definition}
+%Like \cs{TrackLanguageTag} but does \meta{fail code} if the tag
+%doesn't contain a valid language code. If successful, does
+%\meta{success code} after tracking the language.
+%\changes{1.3.9}{2019-11-11}{new}
+% \begin{macrocode}
+\def\TrackIfKnownLanguage#1#2#3{%
+ \edef\@tracklang@tag{#1}%
+ \ifx\@tracklang@tag\empty
+ #3%
+ \else
+ \expandafter\@TrackIfKnownLanguage\expandafter{\@tracklang@tag}{#2}{#3}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@TrackIfKnownLanguage}
+%Argument must be expanded.
+%\changes{1.3.9}{2019-11-11}{new}
+% \begin{macrocode}
+\def\@TrackIfKnownLanguage#1#2#3{%
+% \end{macrocode}
+%First check if it's predefined.
+% \begin{macrocode}
+ \@tracklang@ifundef{@tracklang@add@#1}%
+ {%
+% \end{macrocode}
+%Parse language tag.
+% \begin{macrocode}
+ \@tracklang@parselangtag{#1}%
+% \end{macrocode}
+%Track this information if \cs{@TrackLangEnvLang} is a known ISO
+%language code.
+% \begin{macrocode}
+ \TrackLangIfKnownLangFromIso{\@TrackLangEnvLang}%
+ {\@tracklang@track@locale#2}{#3}%
+ }%
+ {%
+% \end{macrocode}
+%Predefined tag.
+% \begin{macrocode}
+ \@tracklang@nameuse{@tracklang@add@#1}%
+ #2%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\@tracklang@parse@langtag}
%\changes{1.3}{2016-10-07}{new}
% \begin{macrocode}
@@ -10109,7 +10193,7 @@ and~\ref{tab:nonisoopts}}
% Version info.
% \begin{macrocode}
\expandafter\def\csname ver@tracklang-region-codes.tex\endcsname{%
- 2019/10/06 v1.3.8 (NLCT) Track Languages Regions}%
+ 2019/11/11 v1.3.9 (NLCT) Track Languages Regions}%
% \end{macrocode}
%
%\begin{macro}{\TrackLangRegionMap}
@@ -10498,7 +10582,7 @@ and~\ref{tab:nonisoopts}}
%\changes{1.3}{2016-10-07}{added tracklang-scripts.sty}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang-scripts}[2019/10/06 v1.3.8 (NLCT) Track
+\ProvidesPackage{tracklang-scripts}[2019/11/11 v1.3.9 (NLCT) Track
Language Scripts (LaTeX)]
\RequirePackage{tracklang}
\input{tracklang-scripts}
@@ -10540,7 +10624,7 @@ Language Scripts (LaTeX)]
% Version info.
% \begin{macrocode}
\expandafter\def\csname ver@tracklang-scripts.tex\endcsname{%
- 2019/10/06 v1.3.8 (NLCT) Track Languages Scripts (Generic)}%
+ 2019/11/11 v1.3.9 (NLCT) Track Languages Scripts (Generic)}%
% \end{macrocode}
%
%\begin{macro}{\TrackLangScriptsMap}
diff --git a/macros/generic/tracklang/tracklang.ins b/macros/generic/tracklang/tracklang.ins
index ae7dc0eb5a..19adb1e4f4 100644
--- a/macros/generic/tracklang/tracklang.ins
+++ b/macros/generic/tracklang/tracklang.ins
@@ -1,4 +1,4 @@
-% tracklang.ins generated using makedtx version 1.2 2019/10/6 15:08
+% tracklang.ins generated using makedtx version 1.2 2019/11/11 16:00
\input docstrip
\preamble
diff --git a/macros/generic/tracklang/tracklang.pdf b/macros/generic/tracklang/tracklang.pdf
index c7e9645d51..5aef4affc3 100644
--- a/macros/generic/tracklang/tracklang.pdf
+++ b/macros/generic/tracklang/tracklang.pdf
Binary files differ
diff --git a/macros/latex/contrib/acronym/CHANGES b/macros/latex/contrib/acronym/CHANGES
index 99ed62c868..f98d1f9b5c 100644
--- a/macros/latex/contrib/acronym/CHANGES
+++ b/macros/latex/contrib/acronym/CHANGES
@@ -1,3 +1,10 @@
+
+Version 1.42 (Nov 2019)
+
+fix the carriage return with long lines (line 234/235) -- Philippe Chauvat
+fix page number display for acfi Acfi -- Tobi Oetiker
+fix double space and missing used flag with acfi -- Horst Schirmeier
+
Version 1.41 (Mar 2015)
change names of internal macros to avoid nameing conflics with pageslts
@@ -21,7 +28,7 @@ add support for dynamic indefinite articles depending on the acronym form used
-- Ash Hughes
fix for non hyphenation of first word in long form
--- Martin Rler
+-- Martin Rüßler
fix description of acrodefplural
-- Joel Johnson
@@ -70,13 +77,13 @@ occurenace to list of acronyms.
-- Tobias Oetiker (tobi with oetiker.ch)
Version 1.26 (June 2006) supress lone item when nolist is in effect
--- Immo Kster <Immo.Koester there rwth-aachen.de>
+-- Immo Köster <Immo.Koester there rwth-aachen.de>
Version 1.25 (November 2005) properly handle acronyms in pdfbookmarks
-- Heiko Oberdiek <oberdiek there uni-freiburg.de>
Version 1.24 (October 2005) ac* commands are now not fragile anymore ...
--- Jos Emilio Vila Forcn jose.vila there cui.unige.ch
+-- José Emilio Vila Forcén jose.vila there cui.unige.ch
Version 1.23 (October 2005) fixed typo in nolist option. added comment about fragility of ac commands.
-- Tobias Oetiker (tobi with oetiker.ch)
@@ -91,7 +98,7 @@ Set acronyms as used in the first run, not only in the second one.
-- Tobi Oetiker tobi at oetiker.ch
added new option nolist to suppress printing the acronym list all together
--- Jos Emilio Vila Forcn jose.vila there cui.unige.ch
+-- José Emilio Vila Forcén jose.vila there cui.unige.ch
Version 1.20 (August 2005): make the acused command actually work
-- Richard Walker Richard.Walker there cs.anu.edu.au
diff --git a/macros/latex/contrib/acronym/README b/macros/latex/contrib/acronym/README
index cb17146dca..92bc92d41b 100644
--- a/macros/latex/contrib/acronym/README
+++ b/macros/latex/contrib/acronym/README
@@ -1,19 +1,16 @@
-I'd like to announce the availability of
-my LaTeX2e acronym Package from CTAN.
+An Acronym Environment for LaTeX
INSTALLATION:
- call 'latex acronym.ins' and copy the acronym.sty - file into
a path searched by LaTeX.
- to re-generate the documentation, call latex acronym.dtx
-When writing a paper on cellular mobile radio I started to used a lot
-of acronyms. This can be very disturbing for the reader, as he might
-not know all the used acronyms. To help the reader I kept a list of
-all the acronyms at the end of my paper.
+While writing a paper on cellular mobile radio I had to used a lot of
+acronyms. Acronyms can be quite disturbing for the novice reader ...
-This package makes sure, that all acronyms used in the text are
-spelled out in full at least once. And it provides an environment to
-keep a list of used acronyms.
+The Acronym package provides tooling to make sure that all acronyms used in
+the text are spelled out in full at least once and it provides an
+environment to keep a list of used acronyms.
Note that acronym requires the 'suffix' package. You can find it on
CTAN:macros/latex/contrib/bigfoot/
@@ -24,4 +21,3 @@ Files of the `acronym' package:
acronym.ins Installation script generating the source and an example
acronym.pdf PDF Version of the Docs
CHANGES list of changes
-
diff --git a/macros/latex/contrib/acronym/acronym.dtx b/macros/latex/contrib/acronym/acronym.dtx
index 6e54f37dc0..62df769abb 100644
--- a/macros/latex/contrib/acronym/acronym.dtx
+++ b/macros/latex/contrib/acronym/acronym.dtx
@@ -2,7 +2,7 @@
%
% Doc-Source file to use with LaTeX2e
%
-% Copyright 1994-2015 by Tobias Oetiker (tobi@oetiker.ch) and many Contributors.
+% Copyright 1994-2019 by Tobias Oetiker (tobi@oetiker.ch) and many Contributors.
% All rights reserved.
%
% This work may be distributed and/or modified under the conditions of
@@ -35,7 +35,7 @@
%</driver>
% \fi
%
-% \CheckSum{1062}
+% \CheckSum{1389}
%
%% \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
@@ -83,6 +83,7 @@
% \DoNotIndex{\usepackage}
%
%
+% \changes{v1.42}{2019/11/11}{Philippe Chauvat \cmd{hskip} Fix the carriage return with long lines, Tobi Oetiker and Horst Schirmeier fixed usedflag and page number entries for acfi and Acfi}
% \changes{v1.41}{2015/03/21}{Tobi Oetiker and Jason Mills \cmd{hskip} fix nameing conflicts with pageslts package}
% \changes{v1.40}{2014/09/29}{Hartmut Henkel - remove \cmd{hskip} instances, since they cause bad formating since space at the end of a line can not be collapsed anymore}
% \changes{v1.39}{2014/08/14}{Yann Leprince - make the appearance of labels consistent whether or not the acronym environment has its optional argument provided}
@@ -180,7 +181,7 @@
% \DescribeMacro{\ac}
% To enter an acronym inside the text, use the
% \begin{quote}
-% |\ac{|\meta{acronym}|}|
+% |\ac[|\meta{linebreak penalty}|]{|\meta{acronym}|}|
% \end{quote}
% command. The first time you use an acronym, the full name of the
% acronym along with the acronym in brackets will be printed. If you
@@ -189,6 +190,18 @@
% The next time you access the acronym only the acronym will
% be printed.
%
+% When an acronym is being used, for the first time (with the |footnote|
+% option not specified), next to the end of the line, a line break between
+% the full name of the acronym and the acronym in brackets can be
+% encountered. The optional variable represents the penalty level of
+% breaking the line at that place, taking integer values between 0 and 4.
+% A higher number corresponds to a higher penalty.
+%
+% \DescribeMacro{\Ac}
+% Works in the same way as \cmd{\ac}, but starts the long form with an
+% upper case letter. Use case: when the acronym is used for the first
+% time, at the beginning of a sentence.
+%
% \DescribeMacro{\acresetall}
% The 'memory' of the macro \cmd{\ac} can be flushed by calling the macro
% \cmd{\acresetall}. Afterwards, \cmd{\ac} will print the full name of any
@@ -198,11 +211,20 @@
% If later in the text again the Full Name of the acronym should be
% printed, use the command
% \begin{quote}
-% |\acf{|\meta{acronym}|}|
+% |\acf[|\meta{linebreak penalty}|]{|\meta{acronym}|}|
% \end{quote}
% to access the acronym. It stands for ``full acronym'' and it
-% always prints the full name
-% and the acronym in brackets.
+% always prints the full name and the acronym in brackets.
+%
+% When an full acronym is being used next to the end of the line, a line
+% break between the full name of the acronym and the acronym in brackets
+% can be encountered. The optional variable represents the penalty level
+% of breaking the line at that place, taking integer values between 0
+% and 4. A higher number corresponds to a higher penalty.
+%
+% \DescribeMacro{\Acf}
+% Works in the same way as \cmd{\acf}, but starts the long form with an
+% upper case letter.
%
% \DescribeMacro{\acs}
% To get the short version of the acronym, use the command
@@ -217,13 +239,25 @@
% |\acl{|\meta{acronym}|}|
% \end{quote}
%
+% \DescribeMacro{\Acl}
+% Works in the same way as \cmd{\acl}, but starts with an upper case
+% letter.
+%
% \DescribeMacro{\acp}
% Works in the same way as \cmd{\ac}, but makes the short and/or
-% long forms into plurals.
+% long forms into plurals.
+%
+% \DescribeMacro{\Acp}
+% Works in the same way as \cmd{\acp}, but starts the long form with an
+% upper case letter.
%
% \DescribeMacro{\acfp}
% Works in the same way as \cmd{\acf}, but makes the short and
-% long forms into plurals.
+% long forms into plurals.
+%
+% \DescribeMacro{\Acfp}
+% Works in the same way as \cmd{\acfp}, but starts the long form with an
+% upper case letter.
%
% \DescribeMacro{\acsp}
% Works in the same way as \cmd{\acs}, but makes the short
@@ -233,9 +267,18 @@
% Works in the same way as \cmd{\acl}, but makes the long form
% into a plural.
%
+% \DescribeMacro{\Aclp}
+% Works in the same way as \cmd{\aclp}, but starts with an upper case
+% letter.
+%
% \DescribeMacro{\acfi}
-% Prints the Full Name acronym (\cmd{\acl}) in italics and the abbreviated
-% form (\cmd{\acs}) in upshaped form.
+% Works in the same way as \cmd{\acf}, but prints the Full Name acronym
+% (\cmd{\acl}) in italics and the abbreviated form (\cmd{\acs}) in
+% upshaped form.
+%
+% \DescribeMacro{\Acfi}
+% Works in the same way as \cmd{\acfi}, but starts the long form with an
+% upper case letter.
%
% \DescribeMacro{\acused}
% Marks an acronym as used, as if it had been called with \cmd{\ac},
@@ -248,6 +291,10 @@
% \DescribeMacro{\aclu}
% Prints the long form of the acronym and marks it as used.
%
+% \DescribeMacro{\Aclu}
+% Works in the same way as \cmd{\aclu}, but starts with an upper case
+% letter.
+%
% Example: |\acl{lox}/\acl{lh2} (\acsu{lox}/\acsu{lh2})|
%
% \DescribeMacro{\iac}
@@ -263,9 +310,10 @@
% that the acronym will not be marked as used. If you work with the 'onlyused'
% option then macros which have only been used with starred commands will
% not show up.\\
-% \cmd{\ac*}, \cmd{\acs*}, \cmd{\acl*}, \cmd{\acf*}, \cmd{\acp*},
-% \cmd{\acsp*}, \cmd{\aclp*}, \cmd{\acfp*}, \cmd{\acfi*}, \cmd{\acsu*},
-% \cmd{\aclu*}, \cmd{\iac*} and \cmd{\Iac*}.
+% \cmd{\ac*}, \cmd{\Ac*}, \cmd{\acs*}, \cmd{\acl*}, \cmd{\Acl*}, \cmd{\acf*},
+% \cmd{\Acf*}, \cmd{\acp*}, \cmd{\Acp*}, \cmd{\acsp*}, \cmd{\aclp*}, \cmd{\Aclp*},
+% \cmd{\acfp*}, \cmd{\Acfp*}, \cmd{\acfi*}, \cmd{\Acfi*}, \cmd{\acsu*},
+% \cmd{\aclu*}, \cmd{\Aclu*}, \cmd{\iac*} and \cmd{\Iac*}.
%
% \subsection{Customization}
%
@@ -287,7 +335,7 @@
% handles the output of \cmd{\acf}, where the included acronym
% goes through \DescribeMacro{\acfsfont}\cmd{\acfsfont} (and
% \cmd{\acsfont}).
-% The plural forms are treated accordingly. Usually the
+% The plural and upper case forms are treated accordingly. Usually the
% three macros do nothing. To give an example, the option |smaller|
% makes \cmd{\acsfont} use the command \cmd{\textsmaller} from the
% |relsize| package:
@@ -496,7 +544,7 @@
% but please note the following:
% \begin{itemize}
% \item Do not use the general form (\cmd{\ac} or \cmd{\acp}) in
-% sectional headers, because it will the uses the full name the first time,
+% sectional headers, because it will uses the full name the first time,
% that is in the table of contents, and the short form further on.
%
% \item The text of \meta{acronym} is used verbatim in bookmarks and
@@ -509,7 +557,7 @@
% for example:
% \begin{quote}
% |\acro{Nx}[\ensuremath{N_{\chi}}]|\\
-% | {\texorpdfstring{$\chi$}{X}-faktor}|
+% | {\texorpdfstring{$\chi$}{X}-factor}|
% \end{quote}
% which will then give
% \begin{quote}\begin{tabbing}
@@ -577,6 +625,10 @@ between the constant of Boltzmann and the \acl{NA}:
\acl{lox}/\acl{lh2} (\acsu{lox}/\acsu{lh2})
+\Acp{LFVP} are processes in which the lepton number of the initial
+and final states are different. An example for \iac{LFVP} is
+neutrinoless double beta decay.
+
\subsection{Some testing fundamentals}
When testing \acp{IC}, one typically wants to identify functional
blocks to be tested separately. The latter are commonly indicated as
@@ -589,6 +641,8 @@ blocks to be tested separately. The latter are commonly indicated as
\acro{NA}[\ensuremath{N_{\mathrm A}}]
{Number of Avogadro\acroextra{ (see \S\ref{Chem})}}
\acro{NAD+}[NAD\textsuperscript{+}]{Nicotinamide Adenine Dinucleotide}
+ \acro{LFVP}{lepton flavor violating process}
+ \acroindefinite{LFVP}{an}{a}
\acro{NUA}{Not Used Acronym}
\acro{TDMA}{Time Division Multiple Access}
\acro{UA}{Used Acronym}
@@ -621,8 +675,8 @@ blocks to be tested separately. The latter are commonly indicated as
% First we test that we got the right format and name the package.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{acronym}[2015/03/21
- v1.41
+\ProvidesPackage{acronym}[2019/11/11
+ v1.42
Support for acronyms (Tobias Oetiker)]
\RequirePackage{suffix,xstring}
% \end{macrocode}
@@ -632,8 +686,9 @@ blocks to be tested separately. The latter are commonly indicated as
% \subsection{Options}
%
% \begin{macro}{\ifAC@footnote}
-% The option |footnote| leads to a redefinition of \cmd{\acf} and
-% \cmd{\acfp}, making the full name appear as a footnote.
+% The option |footnote| leads to a redefinition of \cmd{\acf},
+% \cmd{\Acf}, \cmd{\acfp}, and \cmd{\Acfp}, making the full name appear
+% as a footnote.
% \begin{macrocode}
\newif\ifAC@footnote
\AC@footnotefalse
@@ -695,10 +750,10 @@ blocks to be tested separately. The latter are commonly indicated as
%
% \begin{macro}{\ifAC@dua}
% The option |dua| stands for ``don't use acronyms''.
-% It leads to a redefinition of \cmd{\ac} and
-% \cmd{\acp}, making the full name appear all the time
+% It leads to a redefinition of \cmd{\ac}, \cmd{\Ac}, \cmd{\acp},
+% and \cmd{\Acp}, making the full name appear all the time
% and suppressing all acronyms but the explicity requested by
-% \cmd{\acf} or \cmd{\acfp}.
+% \cmd{\acf}, \cmd{\Acf}, \cmd{\acfp} or \cmd{\Acfp}.
% \begin{macrocode}
\newif\ifAC@dua
\AC@duafalse
@@ -715,6 +770,16 @@ blocks to be tested separately. The latter are commonly indicated as
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ifAC@nolinebreak}
+% The option |nolinebreak| dictates whether to forbid, by defalt, a line break
+% between the full name and the short name, when they are presented together.
+% \begin{macrocode}
+\newif\ifAC@nolinebreak
+\AC@nolinebreakfalse
+\DeclareOption{nolinebreak}{\AC@nolinebreaktrue}
+% \end{macrocode}
+% \end{macro}
+%
% Now we process the options.
% \begin{macrocode}
\ProcessOptions\relax
@@ -751,6 +816,21 @@ blocks to be tested separately. The latter are commonly indicated as
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\AC@linebreakpenalty}
+% When the option |nolinebreak| is specified, the default penalty for a line break
+% is being set to the maximum. Otherwise, the default penalty is one level below
+% the maximum, meaning that most of the times, by default, the line will not get
+% broken.
+%
+% \begin{macrocode}
+\ifAC@nolinebreak
+ \def\AC@linebreakpenalty{4}
+\else
+ \def\AC@linebreakpenalty{3}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Hyperlinks and PDF support}
%
% \begin{macro}{\AC@hyperlink}
@@ -814,17 +894,27 @@ blocks to be tested separately. The latter are commonly indicated as
}%
\def\acs#1{\AChy@call{#1}\AC@acs}%
\def\acl#1{\AChy@call{#1}\@acl}%
+ \def\Acl#1{\AChy@call{#1}\@Acl}%
\def\acf#1{\AChy@call{#1}\AChy@acf}%
+ \def\Acf#1{\AChy@call{#1}\AChy@Acf}%
\def\ac#1{\AChy@call{#1}\@ac}%
+ \def\Ac#1{\AChy@call{#1}\@Ac}%
\def\acsp#1{\AChy@call{#1}\@acsp}%
\def\aclp#1{\AChy@call{#1}\@aclp}%
+ \def\Aclp#1{\AChy@call{#1}\@Aclp}%
\def\acfp#1{\AChy@call{#1}\AChy@acfp}%
+ \def\Acfp#1{\AChy@call{#1}\AChy@Acfp}%
\def\acp#1{\AChy@call{#1}\@acp}%
+ \def\Acp#1{\AChy@call{#1}\@Acp}%
\def\acfi#1{\AChy@call{#1}\AChy@acf}%
+ \def\Acfi#1{\AChy@call{#1}\AChy@Acf}%
\let\acsu\acs
\let\aclu\acl
+ \let\Aclu\Acl
\def\AChy@acf#1{\AC@acl{#1} (\AC@acs{#1})}%
+ \def\AChy@Acf#1{\AC@Acl{#1} (\AC@acs{#1})}%
\def\AChy@acfp#1{\AC@aclp{#1} (\AC@acsp{#1})}%
+ \def\AChy@Acfp#1{\AC@Aclp{#1} (\AC@acsp{#1})}%
}%
}
% \end{macrocode}
@@ -856,7 +946,7 @@ blocks to be tested separately. The latter are commonly indicated as
% \begin{macro}{\acresetall}
% \begin{macro}{\AC@reset}
% This macro resets the |AC@FN| - tag of each acronym, therefore |\ac|
-% will use FullName (FN) next time it is called
+% will use Full Name (FN) next time it is called
% \begin{macrocode}
\newcommand*\acresetall{\the\AC@clearlist\AC@clearlist={}}
% \end{macrocode}
@@ -928,6 +1018,17 @@ blocks to be tested separately. The latter are commonly indicated as
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@firstupper}
+% Internal commands for making a first letter upper case.
+% \begin{macrocode}
+\newcommand{\@firstupper}[1]{%
+ \StrLeft{#1}{1}[\firstletter]%
+ \StrGobbleLeft{#1}{1}[\remainder]%
+ \MakeUppercase\firstletter\remainder%
+}
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{Defining acronyms}
%
@@ -1086,8 +1187,8 @@ blocks to be tested separately. The latter are commonly indicated as
full in text}%
\else%
\dotfill\pageref{acro:#1}%
- \fi\\%
- \fi%
+ \fi%
+ \fi\\%
\fi%
\else%
\item[\protect\AC@hypertarget{#1}{\aclabelfont{#2}}] #3%
@@ -1099,7 +1200,8 @@ blocks to be tested separately. The latter are commonly indicated as
\protected@write\@auxout{}%
{\string\newacro{#1}[\string\AC@hyperlink{#1}{#2}]{#3}}%
\@esphack
- \endgroup}
+ \endgroup
+ \ignorespaces}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1220,6 +1322,7 @@ blocks to be tested separately. The latter are commonly indicated as
%
%
% \begin{macro}{\AC@aclp}
+% \begin{macro}{\AC@Aclp}
% \begin{macro}{\AC@acsp}
% Deliver either standard or nonstandard plural form (long and short
% respectively).
@@ -1231,6 +1334,9 @@ blocks to be tested separately. The latter are commonly indicated as
\AC@acl{#1}s%
\fi
}
+\newcommand*\AC@Aclp[1]{%
+ \@firstupper{\AC@aclp{#1}}%
+}
\newcommand*\AC@acsp[1]{%
\ifcsname fn@#1@PS\endcsname
\csname fn@#1@PS\endcsname
@@ -1241,7 +1347,7 @@ blocks to be tested separately. The latter are commonly indicated as
% \end{macrocode}
% \end{macro}
% \end{macro}
-
+% \end{macro}
%
% \subsection{Using acronyms}
%
@@ -1277,6 +1383,7 @@ blocks to be tested separately. The latter are commonly indicated as
%
% \begin{macro}{\AC@acs}
% \begin{macro}{\AC@acl}
+% \begin{macro}{\AC@Acl}
% The internal commands \cmd{\AC@acs} and \cmd{\AC@acl} returns
% the (unformatted) short and the long forms of an acronym as
% saved in \fnacro. Mbox to prevent hyphenation of short form.
@@ -1288,6 +1395,12 @@ blocks to be tested separately. The latter are commonly indicated as
\newcommand*\AC@acl[1]{%
\expandafter\AC@get\csname fn@#1\endcsname\@secondoftwo{#1}}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*\AC@Acl[1]{%
+ \@firstupper{\AC@acl{#1}}%
+}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \end{macro}
%
@@ -1319,6 +1432,8 @@ blocks to be tested separately. The latter are commonly indicated as
%
% \begin{macro}{\acl}
% \begin{macro}{\@acl}
+% \begin{macro}{\Acl}
+% \begin{macro}{\@Acl}
% The user macro \cmd{\acl} prints the full name of the
% acronym.
% \begin{macrocode}
@@ -1326,10 +1441,21 @@ blocks to be tested separately. The latter are commonly indicated as
\WithSuffix\newcommand\acl*{\AC@starredtrue\protect\@acl}%
% \end{macrocode}
% \begin{macrocode}
+\newcommand*{\Acl}{\AC@starredfalse\protect\@Acl}%
+\WithSuffix\newcommand\Acl*{\AC@starredtrue\protect\@Acl}%
+% \end{macrocode}
+% \begin{macrocode}
\newcommand*{\@acl}[1]{%
\AC@acl{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@Acl}[1]{%
+ \AC@Acl{#1}%
+ \ifAC@starred\else\AC@logged{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
%
@@ -1425,6 +1551,9 @@ blocks to be tested separately. The latter are commonly indicated as
% \begin{macro}{\acf}
% \begin{macro}{\acfa}
% \begin{macro}{\@acf}
+% \begin{macro}{\Acf}
+% \begin{macro}{\Acfa}
+% \begin{macro}{\@Acf}
% The user macro \cmd{\acf} always prints the full name with
% the acronym. The format depends on \cmd{\acffont} and
% \cmd{\acfsfont}, and on the option |footnote| handled below.
@@ -1434,72 +1563,112 @@ blocks to be tested separately. The latter are commonly indicated as
%
% The option |footnote| leads to a redefinition of \cmd{\acf},
% making the full name appear as a footnote. There is then
-% no need for \cmd{\acffont} and \cmd{\acfsfont}.
+% no need for \cmd{\acffont} and \cmd{\acfsfont}. If the option
+% |footnote| is not specified, the optional variable determines
+% the penalty for a line break.
% \begin{macrocode}
\newcommand*{\acf}{\AC@starredfalse\protect\acfa}%
\WithSuffix\newcommand\acf*{\AC@starredtrue\protect\acfa}%
% \end{macrocode}
% \begin{macrocode}
-\newcommand*{\acfa}[1]{%
- \texorpdfstring{\protect\@acf{#1}}{\AC@acl{#1} (#1)}}
+\newcommand*{\Acf}{\AC@starredfalse\protect\Acfa}%
+\WithSuffix\newcommand\Acf*{\AC@starredtrue\protect\Acfa}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\acfa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@acf[#1]{#2}}{\AC@acl{#2} (#2)}}
% \end{macrocode}
% \begin{macrocode}
-\newcommand*{\@acf}[1]{%
+\newcommand*{\Acfa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@Acf[#1]{#2}}{\AC@Acl{#2} (#2)}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@acf}[2][\AC@linebreakpenalty]{%
\ifAC@footnote
- \acsfont{\AC@acs{#1}}%
- \footnote{\AC@placelabel{#1}\AC@acl{#1}{}}%
+ \acsfont{\AC@acs{#2}}%
+ \footnote{\AC@placelabel{#2}\AC@acl{#2}{}}%
\else
\acffont{%
- \AC@placelabel{#1}\AC@acl{#1}%
- \nolinebreak[3] %
- \acfsfont{(\acsfont{\AC@acs{#1}})}%
+ \AC@placelabel{#2}\AC@acl{#2}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acs{#2}})}%
}%
\fi
- \ifAC@starred\else\AC@logged{#1}\fi}
+ \ifAC@starred\else\AC@logged{#2}\fi}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@Acf}[2][\AC@linebreakpenalty]{%
+ \ifAC@footnote
+ \acsfont{\AC@acs{#2}}%
+ \footnote{\AC@placelabel{#2}\AC@Acl{#2}{}}%
+ \else
+ \acffont{%
+ \AC@placelabel{#2}\AC@Acl{#2}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acs{#2}})}%
+ }%
+ \fi
+ \ifAC@starred\else\AC@logged{#2}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ac}
+% \begin{macro}{\@ac}
+% \begin{macro}{\Ac}
+% \begin{macro}{\@Ac}
% The first time an acronym is accessed its Full Name (FN) is
% printed. The next time just (FN). When the |footnote| option is
-% used the short form (FN) is always used.
+% used the short form (FN) is always used. The optional variable
+% is being passed to \cmd{\acf}, in case it is used.
% \begin{macrocode}
\newcommand*{\ac}{\AC@starredfalse\protect\@ac}%
\WithSuffix\newcommand\ac*{\AC@starredtrue\protect\@ac}%
% \end{macrocode}
% \begin{macrocode}
-\newcommand{\@ac}[1]{%
+\newcommand*{\Ac}{\AC@starredfalse\protect\@Ac}%
+\WithSuffix\newcommand\Ac*{\AC@starredtrue\protect\@Ac}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\@ac}[2][\AC@linebreakpenalty]{%
\ifAC@dua
- \ifAC@starred\acl*{#1}\else\acl{#1}\fi%
+ \ifAC@starred\acl*{#2}\else\acl{#2}\fi%
\else
- \expandafter\ifx\csname AC@#1\endcsname\AC@used%
- \ifAC@starred\acs*{#1}\else\acs{#1}\fi%
+ \expandafter\ifx\csname AC@#2\endcsname\AC@used%
+ \ifAC@starred\acs*{#2}\else\acs{#2}\fi%
\else
- \ifAC@starred\acf*{#1}\else\acf{#1}\fi%
+ \ifAC@starred\acf*[#1]{#2}\else\acf[#1]{#2}\fi%
\fi
\fi}
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@firstupper}
-% Internal commands for Indefinite article
% \begin{macrocode}
-\newcommand{\@firstupper}[1]{%
- \StrLeft{#1}{1}[\firstletter]%
- \StrGobbleLeft{#1}{1}[\remainder]%
- \MakeUppercase\firstletter\remainder
-}
+\newcommand{\@Ac}[2][\AC@linebreakpenalty]{%
+ \ifAC@dua
+ \ifAC@starred\Acl*{#2}\else\Acl{#2}\fi%
+ \else
+ \expandafter\ifx\csname AC@#2\endcsname\AC@used%
+ \ifAC@starred\acs*{#2}\else\acs{#2}\fi%
+ \else
+ \ifAC@starred\Acf*[#1]{#2}\else\Acf[#1]{#2}\fi%
+ \fi
+ \fi}
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\iac}
% \begin{macro}{\@iac}
% \begin{macro}{\@iaci}
% \begin{macro}{\Iac}
% \begin{macro}{\@Iac}
-% Indefinite article correct expansion
+% Indefinite article correct expansion. The optional variable
+% is being passed to \cmd{\ac}.
% \begin{macrocode}
\newcommand*{\iac}{\AC@starredfalse\protect\@iac}%
\WithSuffix\newcommand\iac*{\AC@starredtrue\protect\@iac}%
@@ -1522,11 +1691,11 @@ blocks to be tested separately. The latter are commonly indicated as
a%
\fi
}
-\newcommand*{\@iac}[1]{%
- \@iaci{#1} \ifAC@starred\ac*{#1}\else\ac{#1}\fi%
+\newcommand*{\@iac}[2][\AC@linebreakpenalty]{%
+ \@iaci{#2} \ifAC@starred\ac*[#1]{#2}\else\ac[#1]{#2}\fi%
}
-\newcommand*{\@Iac}[1]{%
- \@firstupper{\@iaci{#1}} \ifAC@starred\ac*{#1}\else\ac{#1}\fi%
+\newcommand*{\@Iac}[2][\AC@linebreakpenalty]{%
+ \@firstupper{\@iaci{#2}} \ifAC@starred\ac*[#1]{#2}\else\ac[#1]{#2}\fi%
}
% \end{macrocode}
% \end{macro}
@@ -1562,6 +1731,8 @@ blocks to be tested separately. The latter are commonly indicated as
%
% \begin{macro}{\aclp}
% \begin{macro}{\@aclp}
+% \begin{macro}{\Aclp}
+% \begin{macro}{\@Aclp}
% The user macro \cmd{\aclp} prints the plural full name of the
% acronym.
% \begin{macrocode}
@@ -1569,85 +1740,177 @@ blocks to be tested separately. The latter are commonly indicated as
\WithSuffix\newcommand\aclp*{\AC@starredtrue\protect\@aclp}%
% \end{macrocode}
% \begin{macrocode}
+\newcommand*{\Aclp}{\AC@starredfalse\protect\@Aclp}%
+\WithSuffix\newcommand\Aclp*{\AC@starredtrue\protect\@Aclp}%
+% \end{macrocode}
+% \begin{macrocode}
\newcommand*{\@aclp}[1]{%
\AC@aclp{#1}%
\ifAC@starred\else\AC@logged{#1}\fi}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@Aclp}[1]{%
+ \AC@Aclp{#1}%
+ \ifAC@starred\else\AC@logged{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\acfp}
% \begin{macro}{\acfpa}
% \begin{macro}{\@acfp}
+% \begin{macro}{\Acfp}
+% \begin{macro}{\Acfpa}
+% \begin{macro}{\@Acfp}
% The user macro \cmd{\acfp} always prints the plural full name with
% the plural of the acronym. The format depends on \cmd{\acffont} and
% \cmd{\acfsfont}, and on the option |footnote| handled below.
%
-% The option |footnote| leads to a redefinition of
-% \cmd{\acfp}, making the full name appear as a footnote.
-% There is then
-% no need for \cmd{\acffont} and \cmd{\acfsfont}.
+% The option |footnote| leads to a redefinition of \cmd{\acfp},
+% making the full name appear as a footnote. There is then no need
+% for \cmd{\acffont} and \cmd{\acfsfont}. If the option |footnote| is
+% not specified, the optional variable determines the penalty for a
+% line break.
% \begin{macrocode}
\newcommand*{\acfp}{\AC@starredfalse\protect\acfpa}%
\WithSuffix\newcommand\acfp*{\AC@starredtrue\protect\acfpa}%
% \end{macrocode}
% \begin{macrocode}
-\newcommand*{\acfpa}[1]{%
- \texorpdfstring{\protect\@acfp{#1}}{\AC@aclp{#1} (\AC@acsp{#1})}}
+\newcommand*{\Acfp}{\AC@starredfalse\protect\Acfpa}%
+\WithSuffix\newcommand\Acfp*{\AC@starredtrue\protect\Acfpa}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\acfpa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@acfp[#1]{#2}}{\AC@aclp{#2} (\AC@acsp{#2})}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\Acfpa}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@Acfp[#1]{#2}}{\AC@Aclp{#2} (\AC@acsp{#2})}}
% \end{macrocode}
% \begin{macrocode}
-\newcommand*{\@acfp}[1]{%
+\newcommand*{\@acfp}[2][\AC@linebreakpenalty]{%
\ifAC@footnote
- \acsfont{\AC@acsp{#1}}%
- \footnote{\AC@placelabel{#1}\AC@aclp{#1}{}}%
+ \acsfont{\AC@acsp{#2}}%
+ \footnote{\AC@placelabel{#2}\AC@aclp{#2}{}}%
\else
\acffont{%
- \AC@placelabel{#1}\AC@aclp{#1}%
- \nolinebreak[3] %
- \acfsfont{(\acsfont{\AC@acsp{#1}})}%
+ \AC@placelabel{#2}\AC@aclp{#2}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acsp{#2}})}%
}%
\fi
- \ifAC@starred\else\AC@logged{#1}\fi}
+ \ifAC@starred\else\AC@logged{#2}\fi}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@Acfp}[2][\AC@linebreakpenalty]{%
+ \ifAC@footnote
+ \acsfont{\AC@acsp{#2}}%
+ \footnote{\AC@placelabel{#2}\AC@Aclp{#2}{}}%
+ \else
+ \acffont{%
+ \AC@placelabel{#2}\AC@Aclp{#2}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acsp{#2}})}%
+ }%
+ \fi
+ \ifAC@starred\else\AC@logged{#2}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\acp}
% \begin{macro}{\@acp}
+% \begin{macro}{\Acp}
+% \begin{macro}{\@Acp}
% The first time an acronym is accessed Full Names (FNs) is
-% printed. The next time just (FNs).
+% printed. The next time just (FNs).The optional variable
+% is being passed to \cmd{\acfp}, in case it is used.
% \begin{macrocode}
\newcommand*{\acp}{\AC@starredfalse\protect\@acp}%
\WithSuffix\newcommand\acp*{\AC@starredtrue\protect\@acp}%
% \end{macrocode}
% \begin{macrocode}
-\newcommand{\@acp}[1]{%
+\newcommand*{\Acp}{\AC@starredfalse\protect\@Acp}%
+\WithSuffix\newcommand\Acp*{\AC@starredtrue\protect\@Acp}%
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\@acp}[2][\AC@linebreakpenalty]{%
+ \ifAC@dua
+ \ifAC@starred\aclp*{#2}\else\aclp{#2}\fi%
+ \else
+ \expandafter\ifx\csname AC@#2\endcsname\AC@used
+ \ifAC@starred\acsp*{#2}\else\acsp{#2}\fi%
+ \else
+ \ifAC@starred\acfp*[#1]{#2}\else\acfp[#1]{#2}\fi%
+ \fi
+ \fi}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\@Acp}[2][\AC@linebreakpenalty]{%
\ifAC@dua
- \ifAC@starred\aclp*{#1}\else\aclp{#1}\fi%
+ \ifAC@starred\Aclp*{#2}\else\Aclp{#2}\fi%
\else
- \expandafter\ifx\csname AC@#1\endcsname\AC@used
- \ifAC@starred\acsp*{#1}\else\acsp{#1}\fi%
+ \expandafter\ifx\csname AC@#2\endcsname\AC@used
+ \ifAC@starred\acsp*{#2}\else\acsp{#2}\fi%
\else
- \ifAC@starred\acfp*{#1}\else\acfp{#1}\fi%
+ \ifAC@starred\Acfp*[#1]{#2}\else\Acfp[#1]{#2}\fi%
\fi
\fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
% \begin{macro}{\acfi}
% \begin{macro}{\acfia}
+% \begin{macro}{\Acfi}
+% \begin{macro}{\Acfia}
% The Full Name is printed in italics and the abbreviated is printed in upshape.
+% The optional variable determines the penalty for a line break.
% \begin{macrocode}
\newcommand*{\acfi}{\AC@starredfalse\protect\acfia}%
\WithSuffix\newcommand\acfi*{\AC@starredtrue\protect\acfia}%
% \end{macrocode}
% \begin{macrocode}
-\newcommand{\acfia}[1]{%
- {\itshape \AC@acl{#1} \nolinebreak[3]} (\ifAC@starred\acs*{#1}\else\acs{#1}\fi)}
+\newcommand*{\Acfi}{\AC@starredfalse\protect\Acfia}%
+\WithSuffix\newcommand\Acfi*{\AC@starredtrue\protect\Acfia}%
% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\acfia}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@acfi[#1]{#2}}{{\AC@acl{#2}} (#2)}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\Acfia}[2][\AC@linebreakpenalty]{%
+ \texorpdfstring{\protect\@Acfi[#1]{#2}}{{\AC@Acl{#2}} (#2)}}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@acfi}[2][\AC@linebreakpenalty]{%
+ \acffont{%
+ \AC@placelabel{#2}{\itshape\AC@acl{#2}}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acs{#2}})}%
+ }%
+ \ifAC@starred\else\AC@logged{#2}\fi}
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand*{\@Acfi}[2][\AC@linebreakpenalty]{%
+ \acffont{%
+ \AC@placelabel{#2}{\itshape\AC@Acl{#2}}%
+ \nolinebreak[#1] %
+ \acfsfont{(\acsfont{\AC@acs{#2}})}%
+ }%
+ \ifAC@starred\else\AC@logged{#2}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
%
@@ -1677,15 +1940,27 @@ blocks to be tested separately. The latter are commonly indicated as
%
% \begin{macro}{\aclu}
% \begin{macro}{\aclua}
+% \begin{macro}{\Aclu}
+% \begin{macro}{\Aclua}
% Print the long form of the acronym and mark it as used.
% \begin{macrocode}
\newcommand*{\aclu}{\AC@starredfalse\protect\aclua}%
\WithSuffix\newcommand\aclu*{\AC@starredtrue\protect\aclua}%
% \end{macrocode}
% \begin{macrocode}
+\newcommand*{\Aclu}{\AC@starredfalse\protect\Aclua}%
+\WithSuffix\newcommand\Aclu*{\AC@starredtrue\protect\Aclua}%
+% \end{macrocode}
+% \begin{macrocode}
\newcommand{\aclua}[1]{%
\ifAC@starred\acl*{#1}\else\acl{#1}\fi\acused{#1}}
% \end{macrocode}
+% \begin{macrocode}
+\newcommand{\Aclua}[1]{%
+ \ifAC@starred\Acl*{#1}\else\Acl{#1}\fi\acused{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
%
diff --git a/macros/latex/contrib/acronym/acronym.pdf b/macros/latex/contrib/acronym/acronym.pdf
index 40f98ef76f..109766fa15 100644
--- a/macros/latex/contrib/acronym/acronym.pdf
+++ b/macros/latex/contrib/acronym/acronym.pdf
Binary files differ
diff --git a/macros/latex/contrib/algxpar/README.md b/macros/latex/contrib/algxpar/README.md
new file mode 100644
index 0000000000..f69460d098
--- /dev/null
+++ b/macros/latex/contrib/algxpar/README.md
@@ -0,0 +1,20 @@
+# algxpar
+This package extends the algorithmicx package (algpseudocode) to support multiline text.
+
+# Licence
+Copyright (C) 2019 by Jander Moreira (moreira.jander@gmail.com)
+
+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 Jander Moreira.
+
+This work consists of the files algxpar.dtx and algxpar.ins
+and the derived file algxpar.sty.
diff --git a/macros/latex/contrib/algxpar/algxpar.dtx b/macros/latex/contrib/algxpar/algxpar.dtx
new file mode 100644
index 0000000000..bac74b7a35
--- /dev/null
+++ b/macros/latex/contrib/algxpar/algxpar.dtx
@@ -0,0 +1,1113 @@
+% \iffalse
+%<*driver>
+\ProvidesFile{algxpar.dtx}
+\documentclass{ltxdoc}
+\usepackage[english]{babel}
+
+\usepackage{xcolor}
+\usepackage{fancyvrb}
+\usepackage{tcolorbox}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\tcbuselibrary{listings, skins, xparse, breakable}
+\newenvironment{commands}{
+ \VerbatimEnvironment
+ \begin{tcolorbox}[
+ bottomrule = 0pt,
+ toprule = 0pt,
+ leftrule = 0pt,
+ rightrule = 0pt,
+ titlerule = 0pt,
+ colframe = white,
+ colback = white,
+ sharp corners,
+ pad at break*=1pc,
+ enhanced jigsaw,
+ overlay first and middle={
+ \coordinate (A1) at ($(interior.south east) + (-10pt,5pt)$);
+ \coordinate (C1) at ($(interior.south east) + (-6pt,7.5pt)$);
+ \draw[fill=tcbcol@frame] (A1) -- +(0,5pt) -- (C1) -- cycle;
+ },
+ ]%
+ \begin{Verbatim}[gobble = 2, tabsize=4, commandchars = &\[\]]%
+}{%
+ \end{Verbatim}%
+ \end{tcolorbox}%
+}
+\newtcolorbox{codigo}[1]{%
+ bottomrule = 0pt,
+ toprule = 0pt,
+ leftrule = 0pt,
+ rightrule = 0pt,
+ titlerule = 0pt,
+ sharp corners,
+ sidebyside,
+ sidebyside align = top,
+ #1
+}
+\newcommand{\afile}[1]{\mbox{\texttt{#1}}}
+\newcommand{\package}[1]{\mbox{\textsf{#1}}}
+\newcommand{\inlinecommand}[1]{\mbox{\texttt{#1}}}
+
+\usetikzlibrary{calc}
+\newenvironment{example}{
+ \begingroup\tcbverbatimwrite{\jobname_code.tmp}
+}{
+ \endtcbverbatimwrite\endgroup%
+ \begin{tcolorbox}[
+ bottomrule = 0pt,
+ toprule = 0pt,
+ leftrule = 0pt,
+ rightrule = 0pt,
+ titlerule = 0pt,
+ colframe = white,
+ segmentation style = {black!30, solid},
+ colback = white,
+ sharp corners,
+ pad at break*=1pc,
+ enhanced jigsaw,
+ breakable,
+ overlay first and middle={
+ \coordinate (A1) at ($(interior.south east) + (-10pt,5pt)$);
+ \coordinate (C1) at ($(interior.south east) + (-6pt,7.5pt)$);
+ \draw[fill=tcbcol@frame] (A1) -- +(0,5pt) -- (C1) -- cycle;
+ },
+ ]%
+ \small\VerbatimInput[tabsize=4, gobble = 2]{\jobname_code.tmp}
+ \tcblower
+% \begin{minipage}{0.85\linewidth}
+ \begin{algorithmic}
+ \input{\jobname_code.tmp}
+ \end{algorithmic}
+% \end{minipage}
+ \end{tcolorbox}
+}
+
+\usepackage[backref=page]{hyperref}
+\hypersetup{
+ colorlinks,
+ urlcolor = blue!20!black,
+ linkcolor = blue!10!black,
+ citecolor = black!80,
+}
+
+\usepackage{algxpar}
+
+\usepackage{imakeidx}
+\makeindex
+
+\EnableCrossrefs
+% \CodelineIndex
+% \PageIndex
+\RecordChanges
+\begin{document}
+ \sloppy
+ \DocInput{algxpar.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \let\DM\DescribeMacro
+% \makeatletter
+% \def\cstostr#1{%
+% \expandafter\@gobble\detokenize\expandafter{\string#1}}
+% \makeatother
+% \renewcommand{\DescribeMacro}[1]{%
+% \DM{#1}%
+% }
+%
+% \CheckSum{0}
+%
+% \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
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v0.9}{2019/10/23}{Initial version}
+%
+% \GetFileInfo{algxpar.sty}
+%
+%
+% \DoNotIndex{\newcommand,\newenvironment,\renewcommand,\renewenvironment}
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\@ne}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+% \DoNotIndex{\def,\dimexpr,\parbox,\relax,\else,\fi,\hfill}
+% \DoNotIndex{\setlength,\settowidth,\strut,\ifdim,\ifx}
+% \DoNotIndex{\linewidth,\temp,\theALG@nested}
+% \DoNotIndex{\\}
+% \DoNotIndex{\RaggedRight}
+%
+%
+% \title{The \package{algxpar} package\thanks{This document
+% corresponds to \package{algxpar}~\fileversion, dated \filedate.}}
+% \author{Jander Moreira\\\texttt{moreira.jander@gmail.com}}
+%
+% \maketitle
+% %
+% \begin{abstract}
+% The \textsf{algxpar} packages is an extension of the \textsf{algorithmicx} package to handle multiline text with the proper indentation.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \PrintChanges
+%
+% \section{Introduction}
+% I teach algorithms and programming and adopted the \package{algorithmicx} package (\package{algpseudocode}) to typeset my code, as it provides a clean, easy to read pseudolanguage algorithms with a minimum effort to write.
+%
+% As part of the teaching process, I use very verbose commands in my algorithms before the students start to use more sintetic text. For example, I use ``\textit{Iniciate a counter $c$ with the value $0$}'', what will become ``${c \gets 0}$'' later. This leads to sentences that often span the text for multiple lines, specially in two-column documents with nested structures.
+%
+% Unfortunatelly, \package{algorithmicx} has no support for multiline statements natively, but it can adapted to use |\parbox|es to achive this goal.
+%
+% This package, therefore, extends macros to handle multiple lines in a seamlessly way. Some new commands and features are also added.
+%
+% \section{Instalation}
+% The package \package{algxpar} is provided by the files \afile{algxpar.ins} and \afile{algxpar.dtx}.
+%
+% If the \afile{.sty} file is not available, it can be generated by running the following at a command line prompt.
+%
+% \begin{commands}
+% latex algxpar.ins
+% \end{commands}
+%
+% Then the generated \afile{algxpar.sty} must be copied to a directory searched by \LaTeX. Package dependencies can be checked in section~\ref{sec:implementation}.
+%
+%
+% \section{Usage}
+% The package must be loaded using
+% \begin{commands}
+% \usepackage&oarg[options]{algxpar}
+% \end{commands}
+%
+% The only option to the package is |brazilian|, which sets the pseudocode ``reserved words'' to Brazilian Portuguese, so |\While| is rendered \textbf{enquanto} instead of \textbf{while}, for example. No other language is supported so far, but a translation can be easily achieved (see section~\ref{sec:customization}).
+%
+%
+% \section{Writing pseudocode}
+% The algorithms must be written using the |algorithmic| environment and use basically the same set of macros defined by \package{algpseudcode}.
+%
+% \begin{commands}
+% \begin{algorithmic}
+% &ensuremath[&langle]&textrm[&textit[contents]]&ensuremath[&rangle]
+% \end{algorithmic}
+% \end{commands}
+%
+% \subsubsection*{Example}
+% Consider the following code.
+%
+% \begin{commands}
+% \begin{algorithmic}
+% \Function{Max}{$a, b$}
+% \If{$a > b$}
+% \Statep{\Return $a$}
+% \Else
+% \Statep{\Return $b$}
+% \EndIf
+% \EndFunction
+% \end{algorithmic}
+% \end{commands}
+%
+% The corresponding typeset is shown below.
+%
+% \begin{algorithmic}
+% \Function{Max}{$a, b$}
+% \If{$a > b$}
+% \Statep{\Return $a$}
+% \Else
+% \Statep{\Return $b$}
+% \EndIf
+% \EndFunction
+% \end{algorithmic}
+%
+%
+% \subsection{Header}
+% A header for the algorithm is proposed so the algorithm can provide a description, its inputs and outputs, as well as the preconditions and post-conditions Therefore, new macros are defined.
+%
+% \DescribeMacro{\Description}
+% A description can be provided for the sake of code documentation. The macro |\Description| is used to provide such a text.
+% \DescribeMacro{\Input}
+% \DescribeMacro{\Output}
+% The input requirements for the algorithm uses the clause |\Input| and the produced by the code should be expressed with |\Output|.
+% \DescribeMacro{\Require}
+% \DescribeMacro{\Ensure}
+% Also, the possibility to use |\Require| and |\Ensure| remains.
+%
+% \subsubsection*{Examples}
+%
+% \begin{example}
+% \Description Evaluates and prints the factorial of $n$
+% \Input A non-negative integer number $n$
+% \Output The value of the factorial $n$\end{example}
+%
+% \begin{example}
+% \Require $n \in \{1, 2, \ldots, 10\}$
+% \Ensure $k = \max(1, 2, \ldots, 10)$\end{example}
+%
+%
+% \subsection{Constants and identifiers}
+% \DescribeMacro{\True}
+% \DescribeMacro{\False}
+% \DescribeMacro{\Nil}
+% Some additional macros were added: |\True|, |\False|, and |\Nil|, producing \True, \False, and \Nil, respectively.
+%
+% \DescribeMacro{\Id}
+% The macro |\Id|\marg{id} was included to support long variable names, such as \Id{maxval} or \Id{count}, for example. This macro handles better ligatures and accented characters than the regular math mode. |$offered$| results in $offered$ and |\Id{offered}| produces \Id{offered}. With accented characters, |$magnético$| and |\Id{magnético}| result in $magnético$ and \Id{magnético}, respectively.
+%
+% \DescribeMacro{\TextString}
+% For literal constants, usually represented quoted in programs and algorithms, the macro |\TextString|\marg{text} is provided, so |\TextString{Error}| produces \TextString{Error}.
+%
+% \DescribeMacro{\VisibleSpace}
+% An additional macro called |\VisibleSpace| is also provided to produce \VisibleSpace. Sometimes the number of spaces is relevant in text strings, so one can write |\TextString{a\VisibleSpace\VisibleSpace\VisibleSpace b}| to get \TextString{a\VisibleSpace\VisibleSpace\VisibleSpace b}.
+%
+% The macros |\Id| and |\TextString| work in text and math modes.
+%
+% \subsection{Assignment, reading and writing}
+% \DescribeMacro{\gets}
+% The default symbol for assigning values to variables is $\gets$, provided by |\gets|. This is a clearer option, once the equal sign is left just for comparisons.
+%
+% \DescribeMacro{\Read}
+% \DescribeMacro{\Write}
+% Although not common in algorithms published in scientific journals, explicit reading and writing is necessary for basic algorithms. Therefore |\Read| and |\Write| fulfills this need.
+%
+% \begin{example}
+% \Statep{\Read\ $a, b$}
+% \Statep{$s \gets a + b$}
+% \Statep{\Write\ $s$}\end{example}
+%
+% \subsection{Comments}
+% Comments use the symbol \makeatletter\axp@commentleftsymbol\makeatother\ preceding the commented text and stay close to the left margin. Comment macros are intended to be used with |\State| or |\Statex|, when no multiline handling is done. Comments with multiline control are considered starting at section~\ref{sec:statements}.
+%
+% \DescribeMacro{\Comment}
+% The macro |\Comment|\marg{text} puts \meta{text} at the end of the line.
+%
+% \DescribeMacro{\Commentl}
+% A variant, |\Commentl|\marg{text}, places the commented text without moving it to the left margin. It is a ``local'' comment.
+%
+% \DescribeMacro{\CommentIn}
+% A third option is |\CommentIn|\marg{text}, that places the comment locally, but finishes it with \makeatletter\axp@commentrightsymbol\makeatother. Yes, that is really ugly.
+%
+% \begin{example}
+% \State\Commentl{Simple counter}
+% \State $c \gets 1$\Comment{initialize conter}
+% \State $n \gets \Call{FirstInstance}{}$
+% \While{$n < 0$}
+% \State $c \gets c + 1$\Comment{counts one more}
+% \State $n \gets \mbox{\CommentIn{all new} } \Call{NewInstance}{}$
+% \EndWhile
+% \end{example}
+%
+% \subsection{Statements}\label{sec:statements}%
+% \DescribeMacro{\Statep}
+% \DescribeMacro{\State}
+% \DescribeMacro{\Statex}
+% The statements should use |\Statep|\marg{text}, which defines a hang indent for continued lines. The \package{algorithmicx}'s |\State| and |\Statex| can be used as well.
+%
+% In opposition to |\State| and |\Statex|, which uses justified text, |\Statep| aligns only to the left, what is aesthetically better than justification in my opinion.
+%
+% Since |\Statep| uses a |\parbox| to span the text over multiple lines, no room is left for a comment. When needed a comment can be added through the optional argument: |\Statep|\oarg{comment}\marg{text}.
+%
+% \subsubsection*{Example}
+% \begin{example}
+% \Statep{Calculate the value of $x$ using $k$ and $m$,
+% considering the stochastic distribution}
+% \Statep[$k \neq 0$, $m > k$]{Calculate the value of $x$
+% using $k$ and $m$, considering the stochastic distribution}\end{example}
+%
+% \subsection{Conditionals}
+% The traditional \textbf{if}-\textbf{then}-\textbf{else} structure is suported, handling nested commands as well.
+% An \textbf{else~if} construction avoids nesting \textbf{if}s and getting too much indentation. The macros are: |\If|, |\Else|, and |\ElsIf|.
+%
+% \DescribeMacro{\If}
+% \DescribeMacro{\Else}
+% |\If|\oarg{comment}\marg{condition} is used for conditional execution and is ended with a |\EndIf|. The optional \meta{comment} is typeset to the left and the \meta{condition} is put in a |\parbox|. Regular |\Comment| and |\Commentl| can be used after |\Else|.
+%
+% \DescribeMacro{\ElsIf}
+% The \textbf{else~if} clause is specified by |\ElsIf|\oarg{comment}\marg{condition}.
+%
+% \DescribeMacro{\Switch}
+% \DescribeMacro{\EndSwitch}
+% \DescribeMacro{\Case}
+% \DescribeMacro{\EndCase}
+% \DescribeMacro{\Otherwise}
+% \DescribeMacro{\EndOtherwise}
+% Flow control using a selection structure are provided by the macro |\Switch|\oarg{comment}\marg{selector}, ended with |\EndSwitch|. Each matching clause uses |\Case|\oarg{comment}\marg{value} and |\EndCase|. The default uses |\Otherwise| and |\EndOtherwise|.
+%
+% To specify ranges, the macro |\Range|\oarg{step}\marg{start}\marg{end} can be used. For example, |\Range{1}{10}| outputs \Range{1}{10} and |\Range[2]{0}{10}| prints \Range[2]{0}{10}.
+%
+% \subsubsection*{Examples}
+%
+% \begin{example}
+% \If{$a < 0$}
+% \Statep{$a \gets 0$}
+% \EndIf\end{example}
+%
+% \begin{example}
+% \If[closing doors]{the building is empty and the
+% security system is active}
+% \Statep{$\Id{status} \gets \TextString{ok}$}
+% \Else
+% \Statep{$\Id{status} \gets \TextString{not ok}$}
+% \EndIf\end{example}
+%
+% \begin{example}
+% \If[desired status]{$n \geq 0.8$}
+% \Statep{$\Id{status} \gets \TextString{excelent}$}
+% \ElsIf{$n \geq 0.7$}
+% \Statep{$\Id{status} \gets \TextString{great}$}
+% \ElsIf{$n \geq 0.5$}
+% \Statep{$\Id{status} \gets \TextString{good}$}
+% \ElsIf{$n \geq 0.2$}
+% \Statep{$\Id{status} \gets \TextString{not so good}$}
+% \Else\Comment{minimum not achieved}
+% \Statep{$\Id{status} \gets \TextString{call for help}$}
+% \EndIf\end{example}
+%
+% \begin{example}
+% \Switch[$1 \leq \Id{month} \leq 12$]{\Id{month}}
+% \Case{2}
+% \If{\Call{IsLeapYear}{\Id{year}}}
+% \Statep{$n_{days} \gets 29$}
+% \Else
+% \Statep{$n_{days} \gets 28$}
+% \EndIf
+% \EndCase
+% \Case{4, 6, 9, 11}
+% \Statep{$n_{days} \gets 30$}
+% \EndCase
+% \Otherwise\Comment{1, 3, 5, 7, 8, 10, 12}
+% \Statep{$n_{days} \gets 31$}
+% \EndOtherwise
+% \EndSwitch\end{example}
+%
+% \subsection{Loops}
+% Loops uses \textbf{while}, \textbf{repeat~until}, and \textbf{for} flow control.
+%
+% \DescribeMacro{\While}
+% \DescribeMacro{\EndWhile}
+% Loops with condition on top uses |\While|\oarg{comment}\marg{condition} and are ended with |\EndWhile|.
+%
+% \DescribeMacro{\Repeat}
+% \DescribeMacro{\Until}
+% When loops have their termination condition tested at the bottom, the macros |\Repeat| and |\Until|\oarg{comment}\marg{condition} are used.
+%
+% \DescribeMacro{\For}
+% \DescribeMacro{\ForAll}
+% \DescribeMacro{\ForEach}
+% The \textbf{for} loop starts with |\For|\oarg{comment}\marg{condition} and ends with |\EndFor|. To make things more versatile, |\For| can be replaced by |\ForAll| or |\ForEach|.
+%
+% \DescribeMacro{\To}
+% \DescribeMacro{\DownTo}
+% \DescribeMacro{\Step}
+% Some macros for supporting loops are also provided: |\To|, |\DownTo|, and |\Step|, which defaults to \To, \DownTo, and \Step, repectively.
+%
+% \subsection*{Examples}
+% \begin{example}
+% \While{there is data in the input stream and no
+% termination signal was received}
+% \Statep{Get element $e$ from the input stream}
+% \Statep{\Call{Process}{$e$}}
+% \EndWhile\end{example}
+%
+% \begin{example}
+% \Statep[$n_1, n_2 > 0$]{Let $n_1$ and $n_2$
+% be the two integers in order to find the greatest
+% number that divides both}
+% \Repeat
+% \Statep[$n_1 \bmod n_2$]{Set \Id{rest} as the
+% rest of the integer
+% division of $n_1$ by $n_2$}
+% \Statep{Redefine $n_1$ with the value of $n_2$}
+% \Statep{Redefine $n_2$ with the value of \Id{rest}}
+% \Until[terminates]{$\Id{rest} = 0$}
+% \Statep[greatest common divisor]{Set $m$ to the value of $n_1$}\end{example}
+%
+% \begin{example}
+% \For{$i \gets n-1$ \DownTo\ $0$}
+% \Statep{$s \gets s + i$}
+% \EndFor\end{example}
+%
+% \begin{example}
+% \ForEach[main transactions]{transaction $t$ in the flow
+% of transactions for month $m$}
+% \Statep{\Call{ProcessTransaction}{$t$}}
+% \EndFor\end{example}
+%
+% \begin{example}
+% \ForAll{$e$ in set $M$}
+% \Statep{\Call{ProcessElement}{$e$}}
+% \EndFor\end{example}
+%
+% \subsection{Procedures and functions}
+% \DescribeMacro{\Procedure}
+% \DescribeMacro{\EndProcedure}
+% \DescribeMacro{\Function}
+% \DescribeMacro{\EndFunction}
+% \DescribeMacro{\Return}
+% Procedure and functions are supported with |\Procedure|\marg{name}\marg{arguments} and |\EndProcedure| and |\Function|\marg{name}\marg{arguments} and |\EndFunction|. The return value for functions use |\Return|.
+%
+% \subsection*{Examples}
+% \begin{example}
+% \Procedure{PrintError}{$code$}
+% \Switch{$code$}
+% \Case{1}
+% \Statep{\Write\ \TextString{Not found}}
+% \EndCase
+% \Case{2}
+% \Statep{\Write\ \TextString{Access denied}}
+% \EndCase
+% \Case{3}
+% \Statep{\Write\ \TextString{Blocked}}
+% \EndCase
+% \Otherwise
+% \Statep{\Write\ \TextString{Unknown}}
+% \EndOtherwise
+% \EndSwitch
+% \EndProcedure\end{example}
+%
+% \begin{example}
+% \Function{CelsiusToFahrenheit}{$t$}
+% \Statep{\Return $\dfrac{9}{5}t + 32$}
+% \EndFunction\end{example}
+%
+% \begin{example}
+% \Function[many parameters]{MyFunction}
+% {$a$, $b$, $c$, $d$, $e$, $f$, $g$, $h$, $i$, $j$, $k$, $l$}
+% \Statep{\Return $\dfrac{a+b+c+d}{f+g+hi^{j}}kl$}
+% \EndFunction\end{example}
+% %
+% \section{Extras}
+% Sometimes just letting the |\parbox| handle the line breaks is not enough.
+% \DescribeMacro{\NewLine}
+% The macro |\NewLine| can be used to manually break lines.
+%
+% \DescribeEnv{DefineCode}
+% \DescribeMacro{\UseCode}
+% \DescribeMacro{\ShowCode}
+% It is possible to define pieces of code for later use. Using the environment |DefineCode| with a \meta{name}, a part of the pseudocode can be specified and used with |\UseCode|\marg{name}. The \meta{name} provided should be unique; when repeated the code is overwritten. The macro |\ShowCode|\oarg{options}\marg{name} displays the saved code \textit{verbatim}. Any option for |\VerbatimInput| from \package{fancyvrb} can be specified in \meta{options}. All chuncks of code are written to temporary files.
+%
+%
+% \subsection*{Examples}
+%
+% \begin{example}
+% \If{$h > 0$ and\NewLine
+% ($n_1 \neq 0$ or $n_2 < n_1$) and \NewLine
+% $p \neq \Nil$}
+% \Statep{\Call{DoSomething}{}}
+% \Else
+% \Statep{\Call{DoSomethingElse}{}}
+% \EndIf
+% \end{example}
+%
+% \begin{DefineCode}{half_in_out}
+% \Input A number $n$
+% \Output Half of $n$ (i.e., $n/2$)
+% \end{DefineCode}
+% \begin{DefineCode}{half_code}
+% \Statep[in]{Get $n$}
+% \Statep[out]{Print $n/2$}
+% \end{DefineCode}
+%
+% \begin{minipage}{\linewidth}
+% \small
+% \begin{Verbatim}[gobble = 2, tabsize = 4]
+% \begin{DefineCode}{half_in_out}
+% \Input A number $n$
+% \Output Half of $n$ (i.e., $n/2$)
+% \end{DefineCode}
+% \begin{DefineCode}{half_code}
+% \Statep[in]{Get $n$}
+% \Statep[out]{Print $n/2$}
+% \end{DefineCode}
+% \end{Verbatim}
+% \end{minipage}
+%
+% \vspace{\baselineskip}Inside |algorithmic| one can use the following definitions.
+% \begin{example}
+% \UseCode{half_in_out}
+% \Statep{\Commentl{Code}}
+% \UseCode{half_code}
+% \end{example}
+%
+% The source is shown by |\ShowCode{half_code}|.
+% \ShowCode[gobble = 2]{half_code}
+%
+% \StopEventually{}
+%
+%
+% \section{Implementation}\label{sec:implementation}%
+% This package is \package{algxpar}~\fileversion~--~\LaTeXe.
+% \vspace{\baselineskip}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+\ProvidesPackage{algxpar}
+ [2019/10/24 v0.9 Algorithms with multiline/paragraph support]
+% \end{macrocode}
+
+% \iffalse
+%% Package options
+% \fi
+% \begin{macrocode}
+\newif\ifaxp@brazilian\axp@brazilianfalse
+\DeclareOption{brazilian}{\axp@braziliantrue}
+\DeclareOption*{\PackageWarning{algxpar}{Unknown ‘\CurrentOption’}}
+\ProcessOptions\relax
+% \end{macrocode}
+
+% \iffalse
+%% Required packages
+% \fi
+% \package{ragged2e}: for |\RaggedRight|\par
+% \package{listings}: to get accented characters in verbatim mode (pt\_BR)\par
+% \package{amsmath}, amssymb: for |\triangleright| and |\triangleleft|\par
+% \package{xcolor}: gray color for |\VisibleSpace|\par
+% \package{tcolorbox}: verbatim save to file\par
+% \package{fancyvrb}: verbatim read from file with tabs\par
+% \begin{macrocode}
+\RequirePackage{algorithmicx}
+\RequirePackage{algpseudocode}
+\RequirePackage{ragged2e}
+\RequirePackage{listings}
+\RequirePackage{amsmath, amssymb}
+\RequirePackage{xcolor}
+\RequirePackage{tcolorbox} % to save verbatim
+\RequirePackage{fancyvrb} % to load verbatim preserving tabs
+% \end{macrocode}
+
+% \iffalse
+%% Constants and identifiers
+% \fi
+% \begin{macro}{\True}
+% \begin{macro}{\False}
+% \begin{macro}{\Nil}
+% \begin{macro}{\Id}
+% \begin{macro}{\TextString}
+% \begin{macro}{\VisibleSpace}
+% \begin{macrocode}
+\algnewcommand\algorithmictrue{\textsc{True}}
+\algnewcommand\algorithmicfalse{\textsc{False}}
+\algnewcommand\algorithmicnil{\textsc{Nil}}
+\algnewcommand\True{\mbox{\algorithmictrue}}
+\algnewcommand\False{\mbox{\algorithmicfalse}}
+\algnewcommand\Nil{\mbox{\algorithmicnil}}
+\newcommand{\Id}[1]{\mbox{\textit{\rmfamily #1}}}
+\newcommand{\TextString}[1]{\textrm{\normalfont``{\ttfamily\mbox{#1}}''}}
+\algnewcommand{\VisibleSpace}{\textrm{\color{black!70}\textvisiblespace}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Headings
+% \fi
+% \begin{macro}{\Description}
+% \begin{macro}{\Input}
+% \begin{macro}{\Output}
+% \begin{macro}{\Ensure}
+% \begin{macro}{\Require}
+% \begin{macrocode}
+\algnewcommand\algorithmicdescription{\textbf{Description}}
+\algnewcommand\algorithmicinput{\textbf{Input}}
+\algnewcommand\algorithmicoutput{\textbf{Output}}
+\algrenewcommand\algorithmicensure{\textbf{Ensure}}
+\algrenewcommand\algorithmicrequire{\textbf{Require}}
+\algnewcommand\Description{\item[\algorithmicdescription:]}
+\algnewcommand\Input{\item[\algorithmicinput:]}
+\algnewcommand\Output{\item[\algorithmicoutput:]}
+\algrenewcommand\Ensure{\item[\algorithmicensure:]}
+\algrenewcommand\Require{\item[\algorithmicrequire:]}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Read, write
+% \fi
+% \begin{macro}{\Read}
+% \begin{macro}{\Write}
+% \begin{macrocode}
+\algnewcommand{\algorithmicread}{\textbf{read}}
+\algnewcommand{\algorithmicwrite}{\textbf{write}}
+\algnewcommand{\Read}{\algorithmicread}
+\algnewcommand{\Write}{\algorithmicwrite}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Comments
+% \fi
+% \begin{macro}{\Comment}
+% \begin{macro}{\Commentl}
+% \begin{macro}{\CommentIn}
+% \begin{macrocode}
+\newcommand{\axp@commentleftsymbol}{$\triangleright$}
+\newcommand{\axp@commentrightsymbol}{$\triangleleft$}
+\algnewcommand{\CommentIn}[1]{\axp@commentleftsymbol~%
+ \textsl{#1}~\axp@commentrightsymbol}
+\algnewcommand{\Commentl}[1]{\axp@commentleftsymbol~\textsl{#1}}
+\algrenewcommand{\algorithmiccomment}[1]{%
+ \def\tmp{#1}%
+ \ifx\tmp\empty\else%
+ \hfill\Commentl{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+
+% \iffalse
+%% Statep
+% \fi
+% \begin{macro}{\Statep}
+% \begin{macrocode}
+\newlength{\axp@stateindent}
+\setlength{\axp@stateindent}{\dimexpr\algorithmicindent/2\relax}
+\algnewcommand{\Statep}[2][]{\State\algparbox[#1]{#2}{\axp@stateindent}}
+% \end{macrocode}
+%\end{macro}
+
+% \iffalse
+%% While
+% \fi
+% \begin{macro}{\While}
+% \begin{macro}{\EndWhile}
+% \begin{macrocode}
+\newlength{\axp@whilewidth}
+\algblockdefx{While}{EndWhile}%
+ [2][]{%
+ \settowidth{\axp@whilewidth}{\algorithmicwhile\ }%
+ \algparbox[#1]{\algorithmicwhile\ #2~\algorithmicdo}{\axp@whilewidth}%
+ }%
+ {\algorithmicend\ \algorithmicwhile}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Repeat
+% \fi
+% \begin{macro}{\Repeat}
+% \begin{macro}{\Until}
+% \begin{macrocode}
+\newlength{\axp@untilwidth}
+\algblockdefx{Repeat}{Until}%
+ {\algorithmicrepeat}%
+ [2][]{%
+ \settowidth{\axp@untilwidth}{\algorithmicuntil\ }%
+ \axp@algparbox{#1}{\algorithmicuntil\ #2}{\axp@untilwidth}{0}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% If, else if, else
+% \fi
+% \begin{macro}{\If}
+% \begin{macro}{\Else}
+% \begin{macro}{\ElsIf}
+% \begin{macro}{\EndIf}
+% \begin{macrocode}
+\newlength{\axp@ifwidth}
+\newlength{\axp@elseifwidth}
+\algblockdefx[If]{If}{EndIf}%
+ [2][]{%
+ \settowidth{\axp@ifwidth}{\algorithmicif\ }%
+ \algparbox[#1]{\algorithmicif\ #2~\algorithmicthen}{\axp@ifwidth}%
+ }
+ {\algorithmicend\ \algorithmicif}
+\algcblockx[If]{If}{ElsIf}{EndIf}
+ [2][]{%
+ \settowidth{\axp@elseifwidth}{\algorithmicelse\ \algorithmicif\ }%
+ \algparbox[#1]{\algorithmicelse~\algorithmicif\ #2~\algorithmicthen}{\axp@elseifwidth}%
+ }
+ {\algorithmicend\ \algorithmicif}
+\algcblockx{If}{Else}{EndIf}
+ {\textbf{\algorithmicelse}}
+ {\textbf{\algorithmicend~\algorithmicif}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Switch, case, otherwise
+% \fi
+% \begin{macro}{\Switch}
+% \begin{macro}{\EndSwitch}
+% \begin{macro}{\Case}
+% \begin{macro}{\EndCase}
+% \begin{macro}{\Otherwise}
+% \begin{macro}{\EndOtherwise}
+% \begin{macro}{\Range}
+% \begin{macrocode}
+\algnewcommand{\algorithmicswitch}{\textbf{switch}}
+\algnewcommand{\algorithmicof}{\textbf{of}}
+\algnewcommand{\algorithmiccase}{\textbf{case}}
+\algnewcommand{\algorithmicotherwise}{\textbf{otherwise}}
+\newlength{\axp@switchwidth}
+\algblockdefx{Switch}{EndSwitch}%
+ [2][]{%
+ \settowidth{\axp@switchwidth}{\algorithmicswitch\ }%
+ \algparbox[#1]{\algorithmicswitch\ #2~\algorithmicof}{\axp@switchwidth}%
+ }
+ {\algorithmicend~\algorithmicswitch}
+\newlength{\axp@casewidth}
+\algblockdefx{Case}{EndCase}%
+ [2][]{%
+ \settowidth{\axp@casewidth}{\algorithmiccase\ }%
+ \algparbox[#1]{\algorithmiccase\ #2~\algorithmicdo}{\axp@casewidth}%
+ }
+ {\algorithmicend~\algorithmiccase}
+\algblockdefx{Otherwise}{EndOtherwise}%
+ {\algorithmicotherwise~\algorithmicdo}%
+ {\textbf{\algorithmicend\ \algorithmicotherwise}}
+\newcommand{\Range}[3][]{%
+ \ensuremath{%
+ #2%
+ \def\temp{#1}%
+ \mathcal{\ldotp\ldotp}#3
+ \ifx\temp\empty\relax\else{\ensuremath{\mathcal{:}#1}}\fi%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% For, for each, for all
+% \fi
+% \begin{macro}{\For}
+% \begin{macro}{\ForEch}
+% \begin{macro}{\ForAll}
+% \begin{macro}{\EndFor}
+% \begin{macro}{\To}
+% \begin{macro}{\DownTo}
+% \begin{macro}{\Step}
+% \begin{macrocode}
+\algnewcommand{\To}{\textbf{to}}
+\algnewcommand{\DownTo}{\textbf{downto}}
+\algnewcommand{\Step}{\textbf{step}}
+\newlength{\axp@forwidth}
+\algblockdefx{For}{EndFor}%
+ [2][]{%
+ \settowidth{\axp@forwidth}{\algorithmicfor\ }%
+ \algparbox[#1]{\algorithmicfor\ #2~\algorithmicdo}{\axp@forwidth}%
+ }
+ {\algorithmicend\ \algorithmicfor}
+\algnewcommand{\algorithmicforeach}{\textbf{for~each}}
+\newlength{\axp@foreachwidth}
+\algblockdefx{ForEach}{EndFor}%
+ [2][]{%
+ \settowidth{\axp@foreachwidth}{\algorithmicforeach\ }%
+ \algparbox[#1]{\algorithmicforeach\ #2~\algorithmicdo}{\axp@foreachwidth}%
+ }
+ {\algorithmicend\~\algorithmicfor}
+\newlength{\axp@forallwidth}
+\algblockdefx{ForAll}{EndFor}%
+ [2][]{%
+ \settowidth{\axp@forallwidth}{\algorithmicforall\ }%
+ \algparbox[#1]{\algorithmicforall\ #2~\algorithmicdo}{\axp@forallwidth}%
+ }%
+ {\algorithmicend\ \algorithmicfor}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% Procedure, function, calls
+% \fi
+% \begin{macro}{\Procedure}
+% \begin{macro}{\EndProcedure}
+% \begin{macro}{\Function}
+% \begin{macro}{\EndFunction}
+% \begin{macro}{\Call}
+% \begin{macrocode}
+\newlength{\axp@procedurewidth}
+\newlength{\axp@namewidth}
+\algblockdefx{Procedure}{EndProcedure}%
+ [3][]{%
+ \settowidth{\axp@procedurewidth}{\algorithmicprocedure~}%
+ \settowidth{\axp@namewidth}{\textsc{#2}(}%
+ \addtolength{\axp@procedurewidth}{0.6\axp@namewidth}%
+ \algparbox[#1]{\algorithmicprocedure\ \textsc{#2}(#3)}{\axp@procedurewidth}
+ }%
+ {\algorithmicend\ \algorithmicprocedure}
+\newlength{\axp@functionwidth}
+\algblockdefx{Function}{EndFunction}%
+ [3][]{%
+ \settowidth{\axp@functionwidth}{\algorithmicfunction~}%
+ \settowidth{\axp@namewidth}{\textsc{#2}(}%
+ \addtolength{\axp@functionwidth}{0.6\axp@namewidth}%
+ \algparbox[#1]{\algorithmicfunction\ \textsc{#2}(#3)}{\axp@functionwidth}
+ }%
+ {\algorithmicend\ \algorithmicfunction}
+\algrenewcommand\Call[2]{%
+ \def\argstmp{#2}%
+ \textsc{#1}\ifx\argstmp\empty\mbox{(\hskip0.5ex)}\else(#2)\fi%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \iffalse
+%% NewLine
+% \fi
+% \begin{macro}{\NewLine}
+% \begin{macrocode}
+\newcommand{\NewLine}{\\}
+% \end{macrocode}
+% \end{macro}
+
+% \iffalse
+%% DefineCode, UseCode, \ShowCode
+% \fi
+% \begin{environment}{DefineCode}
+% \begin{macro}{\UseCode}
+% \begin{macro}{\ShowCode}
+% \begin{macrocode}
+\newenvironment{DefineCode}[1]
+{\begingroup\tcbverbatimwrite{\jobname_code_#1.tmp}}
+{\endtcbverbatimwrite\endgroup}
+\newcommand{\UseCode}[1]{\input{\jobname_code_#1.tmp}}
+\newcommand{\ShowCode}[2][]{{\small\VerbatimInput[tabsize=4, #1]%
+ {\jobname_code_#2.tmp}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{environment}
+
+% \begin{macro}{\alglinenumber}
+% \begin{macrocode}
+\algrenewcommand{\alglinenumber}[1]%
+ {\hspace{-1em}\color{black!35}{\scriptsize#1}{\tiny$\blacktriangleright$}}
+% \end{macrocode}
+% \end{macro}
+
+% \iffalse
+%% axp@algparbox
+% \fi
+% \begin{macro}{\axp@algparbox}
+% \begin{macrocode}
+\newlength{\axp@commentwidth}
+\setlength{\axp@commentwidth}{0pt}
+\newcommand{\algparbox}[3][]{\axp@algparbox{#1}{#2}{#3}{1}}
+
+\newlength{\axp@largestcommentwidth}
+\setlength{\axp@largestcommentwidth}{0.3\linewidth}
+\newcommand{\axp@algparbox}[4]{%
+ \def\temp{#1}%
+ \ifx\temp\empty%
+ \setlength{\axp@commentwidth}{-2em}%
+ \else%
+ \settowidth{\axp@commentwidth}{\axp@commentleftsymbol\ #1}%
+ \ifdim\axp@commentwidth>\axp@largestcommentwidth\relax%
+ \setlength{\axp@commentwidth}{\axp@largestcommentwidth}%
+ \fi%
+ \fi%
+ \renewcommand{\NewLine}{\\\hspace{#3}}%
+ \parbox[t]{\dimexpr\linewidth-\axp@commentwidth-%
+ (\algorithmicindent)*(\theALG@nested - #4)-2em}%
+ {\RaggedRight\setlength{\hangindent}{#3}#2\strut}%
+ \ifx\temp\empty\else%
+ \hfill\axp@commentleftsymbol\hspace{0.5em}%
+ \parbox[t]{\axp@commentwidth}{\slshape\RaggedRight#1}%
+ \fi%
+ \renewcommand{\NewLine}{\\}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\lstset{
+ literate=
+ {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
+ {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
+ {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
+ {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
+ {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
+ {ã}{{\~a}}1 {õ}{{\~o}}1
+ {Ã}{{\~A}}1 {Õ}{{\~O}}1
+ {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
+ {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
+ {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
+ {ç}{{\c c}}1 {Ç}{{\c C}}1
+ {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
+ {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1
+ {ß}{{\ss}}1
+ {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
+ {£}{{\pounds}}1
+ {«}{{\guillemotleft}}1
+ {»}{{\guillemotright}}1
+ {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
+}
+% \end{macrocode}
+
+%
+% \section{Customization}\label{sec:customization}%
+% By default, the longest width for a comment at the right margin is
+%|0.3\linewidth|. This can be changed using something like the code below.
+%
+% \begin{commands}
+% \makeatletter
+% \setlength{\axp@largestcommentwidth}{&meta[new length]}
+% \makeatother
+% \end{commands}
+%
+% The assignment sign can be changed from $\gets$ to anything else, as well as the symbols used in comments.
+%
+% \begin{commands}
+% \renewcommand{\gets}{\mathop{::=}}
+% \renewcommand{\axp@commentleftsymbol}{\texttt{//}}
+% \renewcommand{\axp@commentrightsymbol}{\texttt{*/}}
+% \end{commands}
+%
+% The translation to Brazilian Portugues is straight forward.
+%
+% \begin{macrocode}
+\ifaxp@brazilian
+\RequirePackage{icomma} % comma as decimal separator
+\algrenewcommand\algorithmicdescription{\textbf{Descrição}}
+\algrenewcommand\algorithmicinput{\textbf{Entrada}}
+\algrenewcommand\algorithmicoutput{\textbf{Saída}}
+\algrenewcommand\algorithmicrequire{\textbf{Pré}}
+\algrenewcommand\algorithmicensure{\textbf{Pós}}
+\algrenewcommand{\algorithmicend}{\textbf{fim}}
+\algrenewcommand{\algorithmicif}{\textbf{se}}
+\algrenewcommand{\algorithmicthen}{\textbf{então}}
+\algrenewcommand{\algorithmicelse}{\textbf{senão}}
+\algrenewcommand{\algorithmicswitch}{\textbf{escolha}}
+\algrenewcommand{\algorithmicof}{\textbf{de}}
+\algrenewcommand{\algorithmiccase}{\textbf{caso}}
+\algrenewcommand{\algorithmicotherwise}{\textbf{caso~contrário}}
+\algrenewcommand{\algorithmicfor}{\textbf{para}}
+\algrenewcommand{\algorithmicdo}{\textbf{faça}}
+\algrenewcommand{\algorithmicwhile}{\textbf{enquanto}}
+\algrenewcommand{\algorithmicforall}{\textbf{para cada}}
+\algrenewcommand{\algorithmicrepeat}{\textbf{repita}}
+\algrenewcommand{\algorithmicuntil}{\textbf{até que}}
+\algrenewcommand{\algorithmicloop}{\textbf{repita}}
+\algrenewcommand{\algorithmicforeach}{\textbf{para~cada}}
+\algrenewcommand{\algorithmicforall}{\textbf{para~todo}}
+\algrenewcommand{\algorithmicfunction}{\textbf{função}}
+\algrenewcommand{\algorithmicprocedure}{\textbf{procedimento}}
+\algrenewcommand{\algorithmicreturn}{\textbf{retorne}}
+\algrenewcommand\algorithmictrue{\textsc{Verdadeiro}}
+\algrenewcommand\algorithmicfalse{\textsc{Falso}}
+\algrenewcommand\algorithmicnil{\textsc{Nulo}}
+\algrenewcommand{\algorithmicread}{\textbf{leia}}
+\algrenewcommand{\algorithmicwrite}{\textbf{escreva}}
+\algrenewcommand{\To}{\textbf{até}}
+\algrenewcommand{\DownTo}{\textbf{decrescente~até}}
+\algrenewcommand{\Step}{\textbf{passo}}
+\fi
+% \end{macrocode}
+%
+% \section{To do\ldots}
+% There are lots of improvements to make in the code. I recognize it!
+%
+% \section*{Appendix}
+% \appendix
+%\section{An example}
+% \newcommand*{\Leaf}{\mbox{\textsc{Leaf}}}
+% \newcommand*{\Internal}{\mbox{\textsc{Internal}}}
+% \newcommand*{\InvalidItem}{\mbox{\textsc{InvalidItem}}}
+%
+% \begin{example}
+% \Description Inserts a new item in the B-tree structure,
+% handling only the root node
+% \Input The \Id{item} to be inserted
+% \Output Returns \True\ in case of success, \False\ in
+% case of failure (i.e., duplicated keys)
+% \Function{Insert}{\Id{item}}
+% \If{\Id{tree.root address} is \Nil}
+% \Statep{\Commentl{Create first node}}
+% \Statep[\Nil\ = new node]{$\Id{new root node}
+% \gets \Call{GetNode}{\Nil}$}
+% \Statep[only item]{Insert \Id{item} in \Id{new
+% root node} and set both its left and right
+% childs to \Nil; also set \Id{new root
+% node.count} to 1}
+% \Statep[first node is always a leaf]{Set \Id{new
+% root node.type} to \Leaf}
+% \Statep[flag that node must be updated in file]
+% {Set \Id{new root node.modified} to \True}
+% \Statep{\Call{WriteNode}{\Id{new root node}}}
+% \Statep{$\Id{tree.root address} \gets
+% \Id{new root node.address}$}
+% \Statep[update root address in file]
+% {\Call{WriteRootAddress}{}}
+% \Statep{\Return \True}
+% \Else
+% \Statep{\Commentl{Insert in existing tree}}
+% \Statep[]{$\Id{success}$,
+% $\Id{promoted item}$, $\Id{new node address} \gets
+% \Call{SearchInsert}{\Id{tree.root address},
+% \Id{item}}$}
+% \If[root has splitted]{\Id{success} and
+% ${\Id{new node address}\neq\Nil}$}
+% \Statep[new root]{$\Id{new root node} \gets
+% \Call{GetNode}{\Nil}$}
+% \Statep{Insert \Id{promoted item} in \Id{new
+% root node} and set \Id{new root node.count}
+% to 1}
+% \Statep[tree height grows]{Set \Id{item}'s
+% left child to \Id{tree.root
+% address} and right child to \Id{new
+% node address}}
+% \Statep[not a leaf]{Set \Id{new root
+% node.type} to \Internal}
+% \Statep{Set \Id{new root node.modified}
+% to \True}
+% \Statep{\Call{WriteNode}{\Id{new root
+% node}}}
+% \Statep{$\Id{tree.root address} \gets
+% \Id{new root node.address}$}
+% \Statep[update root address in
+% file]{\Call{WriteRootAddress}{}}
+% \EndIf
+% \Statep[insertion status]{\Return \Id{success}}
+% \EndIf
+% \EndFunction
+% \end{example}
+%
+% \clearpage\PrintIndex
+%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/algxpar/algxpar.ins b/macros/latex/contrib/algxpar/algxpar.ins
new file mode 100644
index 0000000000..289551de47
--- /dev/null
+++ b/macros/latex/contrib/algxpar/algxpar.ins
@@ -0,0 +1,34 @@
+%%
+%% Copyright (C) 2019 by Jander Moreira
+%%
+%% This is an extension of the algorithmicx package to handle
+%% multiline contents.
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/algxpar}
+
+\preamble
+
+
+Copyright (C) 2019 by Jander Moreira (moreira.jander@gmail.com)
+
+\endpreamble
+
+\generate{
+ \file{algxpar.sty}{
+ \from{algxpar.dtx}{algxpar}
+ }
+}
+
+\obeyspaces
+\Msg{**********************************************************}
+\Msg{* The algxpar.sty file was generated}
+\Msg{*}
+\Msg{* To install it, move or copy it to a directory}
+\Msg{* searched by LaTeX.}
+\Msg{*}
+\Msg{**********************************************************}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/algxpar/algxpar.pdf b/macros/latex/contrib/algxpar/algxpar.pdf
new file mode 100644
index 0000000000..e5deed1d8f
--- /dev/null
+++ b/macros/latex/contrib/algxpar/algxpar.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx
index 8409c539c2..ec37cb4dc1 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.dtx
@@ -25,14 +25,14 @@
% \iffalse
%<*driver>
\documentclass[11pt]{ltxdoc}
+\CheckSum{3849}
-
-\usepackage{alltt}
-\usepackage{hologo}
-\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
+
+\usepackage{hologo}
+\usepackage{graphicx}
\usepackage{multicol}
\usepackage[dvipsnames]{xcolor}
\usepackage[english]{babel}
@@ -91,7 +91,6 @@ hyperindex=false%
\renewcommand*{\aclabelfont}[1]{{\acsfont{#1}}}
-%%\CheckSum{692}
\renewcommand*{\usage}[1]{\hyperpage{#1}}
\renewcommand*{\main}[1]{\hyperpage{#1}}
@@ -151,9 +150,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\MakeShortVerb{"}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Restyled the documentation.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
%
%\title{{\rmfamily\normalfont\spacedallcaps{%
@@ -164,9 +164,9 @@ top=3.25cm,bottom=3cm]{geometry}
% \url{r.andrej@gmail.com}
% \and
% \spacedlowsmallcaps{Nicola L. C. Talbot} \\
-% \spacedlowsmallcaps{(inactive)}
+% {\textsf{(inactive)}}
%}
-%\date{{\sffamily\scshape 2019-11-07 (v2.0)}}
+%\date{{\sffamily\scshape 2019-11-11 (v2.0.1)}}
%\maketitle
%
% \renewcommand{\abstractname}{\normalfont\normalsize\spacedlowsmallcaps{Abstract}}
@@ -186,9 +186,10 @@ top=3.25cm,bottom=3cm]{geometry}
% style will be changed by \cs{date}\meta{language}.
%\end{abstract}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a proper introduction.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \noindent
% As of version 2.0, there is support for both Ekavian and Ijekavian
@@ -231,9 +232,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
% \section{The Documentation}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added installation guide.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \subsection{Installation}
% Extract the language definition files first:
@@ -308,9 +310,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{document}
%\end{verbatim}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions and documented their use.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \subsection{Regions and scripts}\label{sub:regions}
%
% Serbian language is a rare example of synchronic digraphia --- a situation
@@ -343,22 +346,24 @@ top=3.25cm,bottom=3cm]{geometry}
%
%
% \subsection{Settings (Serbian-related)}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added documentation for new settings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% These settings can be changed using \sty{\\DTMlangsetup}.
% Here's an example showing how to set both multiple--choice and boolean
% settings.
%\begin{verbatim}
-% \DTMlangsetup[serbian]{pronunciation=ijekavian, monthi}
+%\DTMlangsetup[serbian]{pronunciation=ijekavian, monthi}
%\end{verbatim}
%
%
% \subsubsectionopt{pronunciation}\label{sub:pronu}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% May take values "ekavian" and "ijekavian", which denote the two most
% frequently used pronunciations in Serbian language.
% The only difference is in the way weekdays are written.
@@ -366,66 +371,82 @@ top=3.25cm,bottom=3cm]{geometry}
% The default value is Ekavian by default for "serbian", "serbianc", "sr-*-RS"
% and Ijekavian for the rest of the regions.
%
-% \smallskip
+% \changes{2.0.1}{2019-11-11}{Fixed paragraph indentation.}
+% \bigskip
+% \noindent
% ponedeljak, 4. novembar 2019. \hfill \emph{Ekavian pronunciation} \\
% ponedjeljak, 4. novembar 2019. \hfill \emph{Ijekavian pronunciation}
%
%
% \subsubsectionopt{monthi}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% This is a boolean key.
% If "false" (the default), the months June and July are spelled as \emph{Jun}
% and \emph{Jul}.
% If "true", the months June and July are spelled as \emph{Juni} and
% \emph{Juli}.
%
-% \smallskip
+% \changes{2.0.1}{2019-11-11}{Fixed paragraph indentation.}
+% \bigskip
+% \noindent
% 15. juni 1389. \hfill "monthi=true" \\
% 15. jun 1389. \hfill "monthi=false"
%
% \subsubsectionopt{leadingzero}\label{sub:leadingzero}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for toggling leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% This is a boolean key.
% If "false" (the default), there is no leading zero for hours, days or months.
% If "true", there is.
%
-% \smallskip
+% \changes{2.0.1}{2019-11-11}{Fixed paragraph indentation.}
+% \bigskip
+% \noindent
% уторак, 2. 4. 2019. 8.03 CET \hfill "leadingzero=false" \\
% уторак, 02. 04. 2019. 08.03 CET \hfill "leadingzero=true"
%
% \subsubsectionopt{monthord}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Changed colon \rightarrow{} period.}
% This key defines the way the month ordinal is written in Serbian "*-numeric"
% formats.
+% This key defines the way the month ordinal is written in Serbian "*-numeric"
% It takes values "arabic" (the default), "roman" and "romanlsc".
% The "arabic" setting results in an arabic numeral (subject to
-% \nameref{sub:leadingzero}) followed by a colon.
-% The "roman" setting results in an uppercase Roman numeral without a colon
+% \nameref{sub:leadingzero}) followed by a period.
+%
+% The "roman" setting results in an uppercase Roman numeral without a period
% suffix.
% The "romansc" setting results in a lowercase small caps Roman numeral without
-% a colon suffix (this looks better than regular uppercase when usign old style
-% figures).
+% a period suffix (this looks better than regular uppercase when usign old
+% style figures).
%
-% \smallskip
+% \changes{2.0.1}{2019-11-11}{Fixed paragraph indentation.}
+% \changes{2.0.1}{2019-11-11}{Fixed wrong example.}
+% \bigskip
+% \noindent
% уторак, 2. 4. 2019. 8.03 CET \hfill "monthord=arabic" \\
% \liningnums{уторак, 2. IV 2019. 8.03 CET} \hfill "monthord=roman" with
% "\liningnums" \\
-% \oldstylenums{уторак, 02. \textsc{iv} 2019. 08.03 CET} \hfill
+% \oldstylenums{уторак, 2. \textsc{iv} 2019. 8.03 CET} \hfill
% "monthord=romanlsc" with "\oldstylenums"
%
% \subsection{Other features and settings}
%
% \subsubsection{Showing the weekday}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% All language modules shipped with \sty{datetime2-serbian} support showing the
% weekday.
% To enable this feature, pass the \opt{showdow} option to the \sty{datetime2}
@@ -518,20 +539,21 @@ top=3.25cm,bottom=3cm]{geometry}
%\fi
%\subsection{Base package localization strings}
%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraphs.}
% This file contains the code common to all the Serbian regional
% variations.
-%
% The localization strings are later imported with the appropriate encoding.
%
%\changes{1.0}{2015-03-31}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Separated the base package from the regionless style.
% The base package now only declares common localization strings and includes
% adequately encoded localization strings from their respective packages.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
-\ProvidesDateTimeModule{serbian-base}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{serbian-base}[2019/11/11 v2.0.1]
% \end{macrocode}
%
%
@@ -603,8 +625,7 @@ top=3.25cm,bottom=3cm]{geometry}
}
% \end{macrocode}
%\end{macro}
-%
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% We will now include the appropriate localization data.
%
% Packages \sty{ifxetex} and \sty{ifluatex} provide a way to determine if the
@@ -648,13 +669,14 @@ top=3.25cm,bottom=3cm]{geometry}
% This file is loaded if \hologo{XeLaTeX} or \hologo{LuaLaTeX} are used.
%
%\changes{1.0}{2015-03-31}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings are now declared within the Python build script
% and both the \acs{utf-8} and \acs{licr} encoded strings are generated from
% said files on build, before uploading to CTAN.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{serbian-base-utf8}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{serbian-base-utf8}[2019/11/11 v2.0.1]
% \end{macrocode}
%
%\subsubsection{Latin month names}
@@ -1090,14 +1112,15 @@ top=3.25cm,bottom=3cm]{geometry}
% quite insane.
%
%\changes{1.0}{2015-03-31}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings are now declared within the Python build script
% and both the \acs{utf-8} and \acs{licr} encoded strings are generated from
% said files on build, before uploading to CTAN.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
-\ProvidesDateTimeModule{serbian-base-ascii}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{serbian-base-ascii}[2019/11/11 v2.0.1]
% \end{macrocode}
%
%%\subsubsection{Latin month names}
@@ -1527,24 +1550,29 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{serbian} Code
% (\texttt{datetime2-serbian.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{serbian}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{serbian}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% Load base Serbian module.
% \begin{macrocode}
\RequireDateTimeModule{serbian-base}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{serbian} style}
%
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
% Allow the user a way of configuring the "serbian" and
% "serbian-numeric" styles by providing macros for various format
% elements.
@@ -1552,7 +1580,6 @@ top=3.25cm,bottom=3cm]{geometry}
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMserbiandowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -1627,9 +1654,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMserbianweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -1647,9 +1675,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{serbian}%
@@ -1667,10 +1696,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -1680,10 +1710,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbian}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -1694,8 +1725,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{serbian}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMserbiandayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -1713,13 +1742,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMserbiandatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMserbiannoimonthname}
@@ -1745,7 +1774,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMserbianiMonthname}{\DTMserbianlatiMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -1755,7 +1784,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbian}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -1765,7 +1794,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbian}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -1775,9 +1804,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbian}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{serbian}% label
@@ -1883,11 +1913,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{serbian}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "serbian-numeric" style.
% \begin{macrocode}
@@ -1908,13 +1939,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -1997,6 +2030,7 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
\newcommand*{\DTMserbianzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
@@ -2004,7 +2038,6 @@ top=3.25cm,bottom=3cm]{geometry}
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -2012,14 +2045,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{serbian}}%
{\DTMsetstyle{serbian-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -2039,6 +2072,9 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
{\DTMsetstyle{serbian}}%
{\DTMsetstyle{serbian-numeric}}%
}%
@@ -2060,32 +2096,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Latn} Code
% (\texttt{datetime2-sr-Latn.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Latn}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Latn}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbian}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Latn} style}
%
-% Allow the user a way of configuring the "srLatn" and
-% "srLatn-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Latn" and
+% "sr-Latn-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrLatndowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -2160,9 +2200,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrLatnweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -2180,9 +2221,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Latn}%
@@ -2200,10 +2242,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -2213,10 +2256,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -2227,8 +2271,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Latn}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrLatndayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -2246,13 +2288,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrLatndatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrLatnnoimonthname}
@@ -2278,7 +2320,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrLatniMonthname}{\DTMserbianlatiMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -2288,7 +2330,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -2298,7 +2340,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -2308,9 +2350,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Latn}% label
@@ -2416,11 +2459,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Latn}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srLatn-numeric" style.
% \begin{macrocode}
@@ -2441,13 +2485,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -2530,14 +2576,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Latnzonemaps}{%
+\newcommand*{\DTMsrLatnzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -2545,14 +2591,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Latn}}%
{\DTMsetstyle{sr-Latn-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -2572,8 +2618,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Latn}}%
- {\DTMsetstyle{sr-Latn-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}%
}%
}%
% \end{macrocode}
@@ -2593,32 +2642,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Latn-RS} Code
% (\texttt{datetime2-sr-Latn-RS.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Latn-RS}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Latn-RS}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbian}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Latn-RS} style}
%
-% Allow the user a way of configuring the "srLatnRS" and
-% "srLatnRS-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Latn-RS" and
+% "sr-Latn-RS-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrLatnRSdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -2693,9 +2746,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrLatnRSweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -2713,9 +2767,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Latn-RS}%
@@ -2733,10 +2788,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -2746,10 +2802,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-RS}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -2760,8 +2817,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Latn-RS}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrLatnRSdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -2779,13 +2834,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrLatnRSdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrLatnRSnoimonthname}
@@ -2811,7 +2866,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrLatnRSiMonthname}{\DTMserbianlatiMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -2821,7 +2876,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-RS}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -2831,7 +2886,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-RS}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -2841,9 +2896,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-RS}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Latn-RS}% label
@@ -2949,11 +3005,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Latn-RS}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srLatnRS-numeric" style.
% \begin{macrocode}
@@ -2974,13 +3031,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -3063,14 +3122,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Latn-RSzonemaps}{%
+\newcommand*{\DTMsrLatnRSzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -3078,14 +3137,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Latn-RS}}%
{\DTMsetstyle{sr-Latn-RS-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -3105,8 +3164,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Latn-RS}}%
- {\DTMsetstyle{sr-Latn-RS-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}%
}%
}%
% \end{macrocode}
@@ -3126,32 +3188,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Latn-ME} Code
% (\texttt{datetime2-sr-Latn-ME.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Latn-ME}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Latn-ME}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbian}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Latn-ME} style}
%
-% Allow the user a way of configuring the "srLatnME" and
-% "srLatnME-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Latn-ME" and
+% "sr-Latn-ME-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrLatnMEdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -3226,9 +3292,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrLatnMEweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -3246,9 +3313,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Latn-ME}%
@@ -3266,10 +3334,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -3279,10 +3348,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-ME}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -3293,8 +3363,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Latn-ME}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrLatnMEdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -3312,13 +3380,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrLatnMEdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrLatnMEnoimonthname}
@@ -3344,7 +3412,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrLatnMEiMonthname}{\DTMserbianlatiMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -3354,7 +3422,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-ME}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -3364,7 +3432,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-ME}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -3374,9 +3442,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-ME}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Latn-ME}% label
@@ -3482,11 +3551,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Latn-ME}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srLatnME-numeric" style.
% \begin{macrocode}
@@ -3507,13 +3577,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -3596,14 +3668,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Latn-MEzonemaps}{%
+\newcommand*{\DTMsrLatnMEzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -3611,14 +3683,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Latn-ME}}%
{\DTMsetstyle{sr-Latn-ME-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -3638,8 +3710,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Latn-ME}}%
- {\DTMsetstyle{sr-Latn-ME-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}%
}%
}%
% \end{macrocode}
@@ -3659,32 +3734,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Latn-BA} Code
% (\texttt{datetime2-sr-Latn-BA.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Latn-BA}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Latn-BA}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbian}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Latn-BA} style}
%
-% Allow the user a way of configuring the "srLatnBA" and
-% "srLatnBA-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Latn-BA" and
+% "sr-Latn-BA-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrLatnBAdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -3759,9 +3838,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrLatnBAweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -3779,9 +3859,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Latn-BA}%
@@ -3799,10 +3880,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -3812,10 +3894,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-BA}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -3826,8 +3909,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Latn-BA}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrLatnBAdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -3845,13 +3926,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrLatnBAdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrLatnBAnoimonthname}
@@ -3877,7 +3958,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrLatnBAiMonthname}{\DTMserbianlatiMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -3887,7 +3968,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-BA}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -3897,7 +3978,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-BA}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -3907,9 +3988,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Latn-BA}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Latn-BA}% label
@@ -4015,11 +4097,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Latn-BA}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srLatnBA-numeric" style.
% \begin{macrocode}
@@ -4040,13 +4123,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -4129,14 +4214,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Latn-BAzonemaps}{%
+\newcommand*{\DTMsrLatnBAzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -4144,14 +4229,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Latn-BA}}%
{\DTMsetstyle{sr-Latn-BA-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbian} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -4171,8 +4256,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Latn-BA}}%
- {\DTMsetstyle{sr-Latn-BA-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbian}}%
+ {\DTMsetstyle{serbian-numeric}}%
}%
}%
% \end{macrocode}
@@ -4192,24 +4280,29 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{serbianc} Code
% (\texttt{datetime2-serbianc.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{serbianc}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{serbianc}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% Load base Serbian module.
% \begin{macrocode}
\RequireDateTimeModule{serbian-base}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{serbianc} style}
%
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
% Allow the user a way of configuring the "serbianc" and
% "serbianc-numeric" styles by providing macros for various format
% elements.
@@ -4217,7 +4310,6 @@ top=3.25cm,bottom=3cm]{geometry}
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMserbiancdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -4292,9 +4384,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMserbiancweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -4312,9 +4405,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{serbianc}%
@@ -4332,10 +4426,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -4345,10 +4440,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbianc}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -4359,8 +4455,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{serbianc}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMserbiancdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -4378,13 +4472,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMserbiancdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMserbiancnoimonthname}
@@ -4410,7 +4504,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMserbianciMonthname}{\DTMserbiancyriMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -4420,7 +4514,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbianc}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -4430,7 +4524,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbianc}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -4440,9 +4534,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{serbianc}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{serbianc}% label
@@ -4548,11 +4643,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{serbianc}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "serbianc-numeric" style.
% \begin{macrocode}
@@ -4573,13 +4669,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -4662,6 +4760,7 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
\newcommand*{\DTMserbianczonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
@@ -4669,7 +4768,6 @@ top=3.25cm,bottom=3cm]{geometry}
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -4677,14 +4775,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{serbianc}}%
{\DTMsetstyle{serbianc-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbianc} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -4704,6 +4802,9 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
{\DTMsetstyle{serbianc}}%
{\DTMsetstyle{serbianc-numeric}}%
}%
@@ -4725,32 +4826,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Cyrl} Code
% (\texttt{datetime2-sr-Cyrl.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Cyrl}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Cyrl}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbianc}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Cyrl} style}
%
-% Allow the user a way of configuring the "srCyrl" and
-% "srCyrl-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Cyrl" and
+% "sr-Cyrl-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrCyrldowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -4825,9 +4930,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrCyrlweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -4845,9 +4951,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Cyrl}%
@@ -4865,10 +4972,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -4878,10 +4986,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -4892,8 +5001,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Cyrl}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrCyrldayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -4911,13 +5018,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrCyrldatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrCyrlnoimonthname}
@@ -4943,7 +5050,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrCyrliMonthname}{\DTMserbiancyriMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -4953,7 +5060,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -4963,7 +5070,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -4973,9 +5080,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Cyrl}% label
@@ -5081,11 +5189,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Cyrl}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srCyrl-numeric" style.
% \begin{macrocode}
@@ -5106,13 +5215,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -5195,14 +5306,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Cyrlzonemaps}{%
+\newcommand*{\DTMsrCyrlzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -5210,14 +5321,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Cyrl}}%
{\DTMsetstyle{sr-Cyrl-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbianc} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -5237,8 +5348,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Cyrl}}%
- {\DTMsetstyle{sr-Cyrl-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbianc}}%
+ {\DTMsetstyle{serbianc-numeric}}%
}%
}%
% \end{macrocode}
@@ -5258,32 +5372,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Cyrl-RS} Code
% (\texttt{datetime2-sr-Cyrl-RS.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Cyrl-RS}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Cyrl-RS}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbianc}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Cyrl-RS} style}
%
-% Allow the user a way of configuring the "srCyrlRS" and
-% "srCyrlRS-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Cyrl-RS" and
+% "sr-Cyrl-RS-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrCyrlRSdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -5358,9 +5476,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrCyrlRSweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -5378,9 +5497,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Cyrl-RS}%
@@ -5398,10 +5518,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -5411,10 +5532,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-RS}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -5425,8 +5547,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Cyrl-RS}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrCyrlRSdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -5444,13 +5564,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrCyrlRSdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrCyrlRSnoimonthname}
@@ -5476,7 +5596,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrCyrlRSiMonthname}{\DTMserbiancyriMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -5486,7 +5606,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-RS}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -5496,7 +5616,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-RS}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -5506,9 +5626,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-RS}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Cyrl-RS}% label
@@ -5614,11 +5735,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Cyrl-RS}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srCyrlRS-numeric" style.
% \begin{macrocode}
@@ -5639,13 +5761,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -5728,14 +5852,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Cyrl-RSzonemaps}{%
+\newcommand*{\DTMsrCyrlRSzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -5743,14 +5867,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Cyrl-RS}}%
{\DTMsetstyle{sr-Cyrl-RS-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbianc} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -5770,8 +5894,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Cyrl-RS}}%
- {\DTMsetstyle{sr-Cyrl-RS-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbianc}}%
+ {\DTMsetstyle{serbianc-numeric}}%
}%
}%
% \end{macrocode}
@@ -5791,32 +5918,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Cyrl-ME} Code
% (\texttt{datetime2-sr-Cyrl-ME.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Cyrl-ME}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Cyrl-ME}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbianc}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Cyrl-ME} style}
%
-% Allow the user a way of configuring the "srCyrlME" and
-% "srCyrlME-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Cyrl-ME" and
+% "sr-Cyrl-ME-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrCyrlMEdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -5891,9 +6022,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrCyrlMEweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -5911,9 +6043,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Cyrl-ME}%
@@ -5931,10 +6064,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -5944,10 +6078,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-ME}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -5958,8 +6093,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Cyrl-ME}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrCyrlMEdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -5977,13 +6110,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrCyrlMEdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrCyrlMEnoimonthname}
@@ -6009,7 +6142,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrCyrlMEiMonthname}{\DTMserbiancyriMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -6019,7 +6152,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-ME}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -6029,7 +6162,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-ME}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -6039,9 +6172,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-ME}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Cyrl-ME}% label
@@ -6147,11 +6281,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Cyrl-ME}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srCyrlME-numeric" style.
% \begin{macrocode}
@@ -6172,13 +6307,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -6261,14 +6398,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Cyrl-MEzonemaps}{%
+\newcommand*{\DTMsrCyrlMEzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -6276,14 +6413,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Cyrl-ME}}%
{\DTMsetstyle{sr-Cyrl-ME-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbianc} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -6303,8 +6440,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Cyrl-ME}}%
- {\DTMsetstyle{sr-Cyrl-ME-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbianc}}%
+ {\DTMsetstyle{serbianc-numeric}}%
}%
}%
% \end{macrocode}
@@ -6324,32 +6464,36 @@ top=3.25cm,bottom=3cm]{geometry}
%\subsection{Serbian \sty{sr-Cyrl-BA} Code
% (\texttt{datetime2-sr-Cyrl-BA.ldf})}
%\changes{1.0}{2015-03-24}{Initial release}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions, all settings made available to regions so all changes can be
% region-specific.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
-\ProvidesDateTimeModule{sr-Cyrl-BA}[2019/11/07 v2.0]
+\ProvidesDateTimeModule{sr-Cyrl-BA}[2019/11/11 v2.0.1]
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% All localization strings loaded from base module.
%}
-%
-% Load base Serbian module.
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% Load appropriate regionless Serbian module.
% \begin{macrocode}
-\RequireDateTimeModule{serbian-base}
+\RequireDateTimeModule{serbianc}
% \end{macrocode}
%
+%
+%
%\subsubsection{Defining the \sty{sr-Cyrl-BA} style}
%
-% Allow the user a way of configuring the "srCyrlBA" and
-% "srCyrlBA-numeric" styles by providing macros for various format
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Fixed region name error.}
+% Allow the user a way of configuring the "sr-Cyrl-BA" and
+% "sr-Cyrl-BA-numeric" styles by providing macros for various format
% elements.
%
% This doesn't use the package-wide separators such as \cs{dtm@datetimesep} in
% case other date formats are also required.
%
-%
%\begin{macro}{\DTMsrCyrlBAdowdaysep}
% The separator between weekday and day.
% \begin{macrocode}
@@ -6424,9 +6568,10 @@ top=3.25cm,bottom=3cm]{geometry}
%
%\subsubsection{Switches and settings}
%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%\begin{macro}{\DTMsrCyrlBAweekdayname}
% Define the weekday name, lowercase.
% \begin{macrocode}
@@ -6444,9 +6589,10 @@ top=3.25cm,bottom=3cm]{geometry}
%\end{macro}
%
% Provide a way to switch between Ekavian and Ijekavian pronunciation.
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch between Ekavian and Ijekavian pronunciation.
%}
+ %\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
%
% \begin{macrocode}
\DTMdefchoicekey{sr-Cyrl-BA}%
@@ -6464,10 +6610,11 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a way to switch June, July alternate spellings.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that can switch between (jun, jul) and (juni, juli)
% month spellings.
% \begin{macrocode}
@@ -6477,10 +6624,11 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-BA}{monthi}{false}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch for adding leading zeroes in day and month ordinals.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day and month ordinals should
% have leading zeroes.
% \begin{macrocode}
@@ -6491,8 +6639,6 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMsetbool{sr-Cyrl-BA}{leadingzero}{false}
% \end{macrocode}
%
-%
-%
%\begin{macro}{\DTMsrCyrlBAdayordinal}
% Define the day ordinal format to be used by this style.
% \begin{macrocode}
@@ -6510,13 +6656,13 @@ top=3.25cm,bottom=3cm]{geometry}
\number#1\DTMsrCyrlBAdatesep}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Removed the option to switch between writing systems, since that is
% accomplished by using different regions or regionless styles ("serbian" and
% "serbianc" for example).
%}
-%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define the month names.
%
%\begin{macro}{\DTMsrCyrlBAnoimonthname}
@@ -6542,7 +6688,7 @@ top=3.25cm,bottom=3cm]{geometry}
\newcommand*{\DTMsrCyrlBAiMonthname}{\DTMserbiancyriMonthname}
% \end{macrocode}
%\end{macro}
-%
+%\changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the time zone mappings
% should be used.
% \begin{macrocode}
@@ -6552,7 +6698,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-BA}{mapzone}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the day of month should be
% displayed.
% \begin{macrocode}
@@ -6562,7 +6708,7 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-BA}{showdayofmonth}{true}
% \end{macrocode}
-%
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a boolean key that determines if the year should be
% displayed.
% \begin{macrocode}
@@ -6572,9 +6718,10 @@ top=3.25cm,bottom=3cm]{geometry}
% \begin{macrocode}
\DTMsetbool{sr-Cyrl-BA}{showyear}{true}
% \end{macrocode}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\DTMnewstyle%
{sr-Cyrl-BA}% label
@@ -6680,11 +6827,12 @@ top=3.25cm,bottom=3cm]{geometry}
\DTMifbool{sr-Cyrl-BA}{leadingzero}{\DTMtwodigits{#1}}{\number#1}.}%
% \end{macrocode}
%\end{macro}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added a switch between multiple numeric month ordinal formats used in
% Serbian.
%}
+% \changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define a setting to switch between Arabic, uppercase Roman and lowercase
% smallcaps Roman month format for the "srCyrlBA-numeric" style.
% \begin{macrocode}
@@ -6705,13 +6853,15 @@ top=3.25cm,bottom=3cm]{geometry}
\fi
}
% \end{macrocode}
-%
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Fixed the (previously entirely wrong) numeric date style.
%}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+%\changes{2.0.0}{2019-11-07}{%
% Added weekday names.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
+% \changes{2.0.1}{2019-11-11}{Removed extraneous paragraph indentation.}
% Define numeric style.
% \begin{macrocode}
\DTMnewstyle%
@@ -6794,14 +6944,14 @@ top=3.25cm,bottom=3cm]{geometry}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
+%\changes{2.0.1}{2019-11-11}{Replaced wrong parameter for zonemapping.}
% \begin{macrocode}
-\newcommand*{\DTMsr-Cyrl-BAzonemaps}{%
+\newcommand*{\DTMsrCyrlBAzonemaps}{%
\DTMdefzonemap{01}{00}{CET}%
\DTMdefzonemap{02}{00}{CEST}%
}
% \end{macrocode}
%\end{macro}
-
% Switch style according to the \opt{useregional} setting.
% \begin{macrocode}
\DTMifcaseregional%
@@ -6809,14 +6959,14 @@ top=3.25cm,bottom=3cm]{geometry}
{\DTMsetstyle{sr-Cyrl-BA}}%
{\DTMsetstyle{sr-Cyrl-BA-numeric}}%
% \end{macrocode}
-%
% Redefine \cs{dateserbianc} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.1}{2019-09-14}{removed spurious space}
-%\changes{2.0}{2019-11-07}{%
+%\changes{2.0.0}{2019-11-07}{%
% Added regions.
%}
+%\changes{2.0.1}{2019-11-11}{Adopted semantic versioning.}
% \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
@@ -6836,8 +6986,11 @@ top=3.25cm,bottom=3cm]{geometry}
\csdef{date\CurrentTrackedDialect}{%
\DTMifcaseregional%
{}% do nothing
- {\DTMsetstyle{sr-Cyrl-BA}}%
- {\DTMsetstyle{sr-Cyrl-BA-numeric}}%
+% \end{macrocode}
+%\changes{2.0.1}{2019-11-11}{Fixed non-regional variant for regional code.}
+% \begin{macrocode}
+ {\DTMsetstyle{serbianc}}%
+ {\DTMsetstyle{serbianc-numeric}}%
}%
}%
% \end{macrocode}
diff --git a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf
index 3f1b8c2768..22091a637a 100644
--- a/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf
+++ b/macros/latex/contrib/datetime2-contrib/datetime2-serbian/datetime2-serbian.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/CHANGES b/macros/latex/contrib/datetime2/CHANGES
index e25ea54492..a357d7f4af 100644
--- a/macros/latex/contrib/datetime2/CHANGES
+++ b/macros/latex/contrib/datetime2/CHANGES
@@ -1,3 +1,9 @@
+1.5.5 (2019-11-11):
+
+ * added check for \TrackIfKnownLanguage (provided by tracklang v1.3.9)
+
+ * added \DTMfinaldot and starred versions of \DTMdate and \DTMDate
+
1.5.4 (2019-10-21):
* renamed scratch variables to avoid conflict
diff --git a/macros/latex/contrib/datetime2/README b/macros/latex/contrib/datetime2/README
index 6e9b85f4f1..bb49d1d676 100644
--- a/macros/latex/contrib/datetime2/README
+++ b/macros/latex/contrib/datetime2/README
@@ -1,6 +1,6 @@
-LaTeX Package : datetime2 v1.5.4
+LaTeX Package : datetime2 v1.5.5
-Last Modified : 2019-10-21
+Last Modified : 2019-11-11
Author : Nicola Talbot
diff --git a/macros/latex/contrib/datetime2/datetime2.dtx b/macros/latex/contrib/datetime2/datetime2.dtx
index 401236b8d0..75c965671f 100644
--- a/macros/latex/contrib/datetime2/datetime2.dtx
+++ b/macros/latex/contrib/datetime2/datetime2.dtx
@@ -1,13 +1,13 @@
%\iffalse
% datetime2.dtx generated using makedtx version 1.2 (c) Nicola Talbot
% Command line args:
-% -src "datetime2.sty\Z=>datetime2.sty"
-% -src "datetime2-calc.sty\Z=>datetime2-calc.sty"
+% -author "Nicola Talbot"
% -doc "datetime2-manual.tex"
% -section "chapter"
-% -author "Nicola Talbot"
+% -src "datetime2.sty\Z=>datetime2.sty"
+% -src "datetime2-calc.sty\Z=>datetime2-calc.sty"
% datetime2
-% Created on 2019/10/21 11:37
+% Created on 2019/11/11 18:31
%\fi
%\iffalse
%<*package>
@@ -47,7 +47,7 @@
pdfauthor={Nicola L.C. Talbot},
pdftitle={datetime2: date and time formats}]{hyperref}
-\CheckSum{2622}
+\CheckSum{2658}
\RecordChanges
\DisableCrossrefs
@@ -91,11 +91,11 @@
%
%\MakeShortVerb{"}
%
-%\title{datetime2 v1.5.4:
+%\title{datetime2 v1.5.5:
%date and time formats}
%\author{Nicola L. C. Talbot\\\url{http://www.dickimaw-books.com/}}
%
-%\date{2019-10-21}
+%\date{2019-11-11}
%\maketitle
%
%\begin{abstract}
@@ -399,6 +399,12 @@
%this is to first save the date and then use it (see
%\sectionref{sec:store}).
%
+%Some regional styles may end the date with a period (full stop).
+%This can cause a problem if the date occurs at the end of a
+%sentence. If the style has used \cs{DTMfinaldot} then you can use
+%\cs{DTMdate*} to suppress the terminating period if required. (See
+%below.)
+%
%Examples (with the \pkgopt{showdow} package option set):
%\begin{itemize}
%\item Ignore day of week:
@@ -531,7 +537,30 @@
%\begin{definition}[\DescribeMacro\DTMDate]
%\cs{DTMDate}\marg{date}
%\end{definition}
-%In these cases the date should be provided as
+%As from v1.5.5 there are also starred versions of these commands:
+%\begin{definition}[\DescribeMacro{\DTMdate*}]
+%\cs{DTMdate*}\marg{date}
+%\end{definition}
+%which essentially behaves like:
+%\begin{display}
+%\string{\cs{let}\cs{DTMfinaldot}\cs{empty}\cs{DTMdate}\marg{date}\string}
+%\end{display}
+%and
+%\begin{definition}[\DescribeMacro{\DTMDate*}]
+%\cs{DTMDate*}\marg{date}
+%\end{definition}
+%which essentially behaves like:
+%\begin{display}
+%\string{\cs{let}\cs{DTMfinaldot}\cs{empty}\cs{DTMDate}\marg{date}\string}
+%\end{display}
+%These commands are provided for date styles that use
+%\cs{DTMfinaldot} to produce a period (full stop) at the end of the date. These
+%two star-commands may be used at the end of a sentence to prevent
+%a double period. Note that there is no equivalent starred form of
+%\cs{DTMdisplaydate} or \cs{DTMDisplaydate}. (It would break their
+%ability to fully expand, which was their principle design feature.)
+%
+%In these cases (starred and unstarred) the date should be provided as
%\meta{YYYY}\texttt{-}\meta{MM}\texttt{-}\meta{DD} in the argument
%\meta{date}. For example:
%\begin{verbatim}
@@ -1300,7 +1329,17 @@
%\end{definition}
%This defines a \term{partial style} that should only modify
%\cs{DTMdisplaydate} and \cs{DTMDisplaydate}. The redefinition of
-%these commands should be placed in \meta{definition}.
+%these commands should be placed in \meta{definition}. If the date
+%should end with a period (full stop) use:
+%\begin{definition}[\DescribeMacro\DTMfinaldot]
+%\cs{DTMfinaldot}
+%\end{definition}
+%at the end of the definitions of \cs{DTMdisplaydate} and
+%\cs{DTMDisplaydate}.
+%
+%This command is simply defined as ``\texttt{.}'' but it's locally
+%redefined to do nothing by the starred versions of \cs{DTMdate} and
+%\cs{DTMDate} allowing the dot to be discarded.
%
%A new \term{time style} can be defined using:
%\begin{definition}[\DescribeMacro\DTMnewtimestyle]
@@ -1608,6 +1647,14 @@
%the currently selected date style.
%\end{important}
%
+%The document languages are detected using \sty{tracklang}'s
+%interface. This has limitations. In particular, it can't detect the
+%region with \sty{polyglossia} nor can it detect languages specified
+%after \sty{tracklang} has been loaded, and it can't pick up \sty{babel}'s new
+%\cs{babelprovide} command. See the \sty{tracklang} documentation for
+%further details. Please check that you have an up-to-date version of
+%\sty{tracklang}.
+%
%Each language module defines a textual style (where the month is
%displayed as a word) for that language or region
%which can be used in the argument of \cs{DTMsetstyle},
@@ -1675,7 +1722,7 @@
%\usepackage[en-GB,en-CA]{datetime2}
%\begin{document}
%\DTMsetstyle{en-GB}\today.
-%\DTMsetstyle{en-CA}\today
+%\DTMsetstyle{en-CA}\today.
%\end{document}
%\end{verbatim}
%
@@ -5686,7 +5733,7 @@
%\changes{1.0}{2015-03-24}{Initial release}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datetime2}[2019/10/21 v1.5.4 (NLCT) date and time formats]
+\ProvidesPackage{datetime2}[2019/11/11 v1.5.5 (NLCT) date and time formats]
% \end{macrocode}
% Use \sty{tracklang} to find out what languages have been loaded.
% \begin{macrocode}
@@ -6100,16 +6147,33 @@
% This will automatically switch the "useregional" setting to
% \texttt{text}.
%\changes{1.3}{2016-01-22}{added predefined dialect test}
+%\changes{1.5.5}{2019-11-11}{add check for \cs{TrackIfKnownLanguage}}
% \begin{macrocode}
\DeclareOptionX*{%
\ifcsundef{@tracklang@add@\CurrentOption}%
{%
- \PackageError{datetime2}{`\CurrentOption' is not a recognised dialect.
- \MessageBreak Perhaps you have misspelt it or the
- \MessageBreak named dialect may be unsupported or
- \MessageBreak perhaps you forgot to use the `style' key}%
- {Any options that aren't described in the manual are assumed
- \MessageBreak to be language or dialect names.}%
+ \ifundef\TrackIfKnownLanguage
+ {%
+ \PackageError{datetime2}{Unrecognised dialect `\CurrentOption'.
+ If you are using a valid ISO language code
+ please update tracklang.sty to at least v1.3.9}%
+ {Any options that aren't described in the manual are assumed
+ \MessageBreak to be language or dialect names.}%
+ }%
+ {%
+ \TrackIfKnownLanguage{\CurrentOption}%
+ {\renewcommand*{\DTMifcaseregional}[3]{#2}}%
+ {%
+ \PackageError{datetime2}{`\CurrentOption' is not a recognised dialect
+ \MessageBreak and doesn't contain a known language code.
+ \MessageBreak Perhaps you have misspelt it or the
+ \MessageBreak named dialect may be unsupported or
+ \MessageBreak perhaps you forgot the `<key>=' part
+ \MessageBreak for example, `style=\CurrentOption'}%
+ {Any options that aren't described in the manual are assumed
+ \MessageBreak to be language or dialect names.}%
+ }%
+ }%
}%
{%
\TrackPredefinedDialect{\CurrentOption}%
@@ -6585,29 +6649,83 @@
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\DTMfinaldot}
+%\changes{1.5.5}{2019-11-11}{new}
+%Some date styles require the date to end with a period (full stop).
+%These styles should use \cs{DTLfinaldot} for the terminating
+%period. This allows the starred version of \cs{DTMdate} to
+%locally redefine this command to do nothing when the date is
+%required at the end of a sentence.
+% \begin{macrocode}
+\newcommand*{\DTMfinaldot}{.}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\DTMdate}
% Display date where date is specified in the format
%\meta{yyyy}-\meta{mm}-\meta{dd}. Use \cs{expandafter} in case
%argument is a control sequence containing the date.
-% This command isn't expandable
+%This command isn't expandable. This now has a starred version that
+%locally redefines \cs{DTMfinaldot} to do nothing.
+%\changes{1.5.5}{2019-11-11}{added starred version}
+% \begin{macrocode}
+\newrobustcmd*{\DTMdate}{\@ifstar\@sDTMdate\@DTMdate}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@DTMdate}
+%\changes{1.5.5}{2019-11-11}{new}
% \begin{macrocode}
-\newrobustcmd*{\DTMdate}[1]{%
+\newcommand*{\@DTMdate}[1]{%
\expandafter\@dtm@parsedate#1\@dtm@endparsedate
\DTMdisplaydate{\@dtm@year}{\@dtm@month}{\@dtm@day}{\@dtm@dow}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@sDTMdate}
+%\changes{1.5.5}{2019-11-11}{new}
+% \begin{macrocode}
+\newcommand*{\@sDTMdate}[1]{%
+ {%
+ \let\DTMfinaldot\empty
+ \@DTMdate{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\DTMDate}
-% Upper case version.
+% Upper case version. This now has a starred version that
+%locally redefines \cs{DTMfinaldot} to do nothing.
+%\changes{1.5.5}{2019-11-11}{added starred version}
+% \begin{macrocode}
+\newrobustcmd*{\DTMDate}{\@ifstar\@sDTMDate\@DTMDate}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@sDTMDate}
+%\changes{1.5.5}{2019-11-11}{new}
% \begin{macrocode}
-\newrobustcmd*{\DTMDate}[1]{%
+\newcommand*{\@DTMDate}[1]{%
\expandafter\@dtm@parsedate#1\@dtm@endparsedate
\DTMDisplaydate{\@dtm@year}{\@dtm@month}{\@dtm@day}{\@dtm@dow}%
}
% \end{macrocode}
%\end{macro}
%
+%\begin{macro}{\@sDTMDate}
+%\changes{1.5.5}{2019-11-11}{new}
+% \begin{macrocode}
+\newcommand*{\@sDTMDate}[1]{%
+ {%
+ \let\DTMfinaldot\empty
+ \@DTMDate{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
%\begin{macro}{\DTMcurrenttime}
% Display the current time.
% \begin{macrocode}
@@ -8862,7 +8980,7 @@
%\section{datetime2-calc.sty code}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{datetime2-calc}[2019/10/21 v1.5.4 (NLCT)]
+\ProvidesPackage{datetime2-calc}[2019/11/11 v1.5.5 (NLCT)]
% \end{macrocode}
% Load other required packages
% \begin{macrocode}
diff --git a/macros/latex/contrib/datetime2/datetime2.ins b/macros/latex/contrib/datetime2/datetime2.ins
index d839777cd7..b7c5abb20c 100644
--- a/macros/latex/contrib/datetime2/datetime2.ins
+++ b/macros/latex/contrib/datetime2/datetime2.ins
@@ -1,4 +1,4 @@
-% datetime2.ins generated using makedtx version 1.2 2019/10/21 11:37
+% datetime2.ins generated using makedtx version 1.2 2019/11/11 18:31
\input docstrip
\preamble
diff --git a/macros/latex/contrib/datetime2/datetime2.pdf b/macros/latex/contrib/datetime2/datetime2.pdf
index e356981288..15d428a37e 100644
--- a/macros/latex/contrib/datetime2/datetime2.pdf
+++ b/macros/latex/contrib/datetime2/datetime2.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-babel.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-babel.pdf
index f0c400e808..bbddda8f9f 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-babel.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-babel.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-calc.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-calc.pdf
index 2fb24bf61e..e6cf98dc88 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-calc.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-calc.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-filedate.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-filedate.pdf
index d4c34cdf2f..269dff73fa 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-filedate.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-filedate.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-hyperref.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-hyperref.pdf
index 1236d2fc42..afbbe3c743 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-hyperref.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-journal.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-journal.pdf
index be21e3c7ac..4c01455430 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-journal.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-journal.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-styles.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-styles.pdf
index 3ed5e296f3..cac832cd51 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-styles.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-styles.pdf
Binary files differ
diff --git a/macros/latex/contrib/datetime2/samples/datetime2-sample-xe.pdf b/macros/latex/contrib/datetime2/samples/datetime2-sample-xe.pdf
index 2e485f20ca..7a78c01c36 100644
--- a/macros/latex/contrib/datetime2/samples/datetime2-sample-xe.pdf
+++ b/macros/latex/contrib/datetime2/samples/datetime2-sample-xe.pdf
Binary files differ
diff --git a/macros/latex/contrib/grffile/README.md b/macros/latex/contrib/grffile/README.md
index 07bb144047..0bc4f41623 100644
--- a/macros/latex/contrib/grffile/README.md
+++ b/macros/latex/contrib/grffile/README.md
@@ -15,4 +15,4 @@ to use the original version of this package (grffile-2017-06-30.sty).
tex grffile.dtx
-will extract graphics.sty and grffile-2017-06-30.sty \ No newline at end of file
+will extract grffile.sty and grffile-2017-06-30.sty \ No newline at end of file
diff --git a/macros/latex/contrib/grffile/grffile.dtx b/macros/latex/contrib/grffile/grffile.dtx
index d2cb7da671..a9016f41dc 100644
--- a/macros/latex/contrib/grffile/grffile.dtx
+++ b/macros/latex/contrib/grffile/grffile.dtx
@@ -136,7 +136,7 @@ and the derived files
\Msg{*}
\Msg{* grffile.sty}
\Msg{*}
-\Msg{* To produce the documentation run the file `grffile.drv'}
+\Msg{* To produce the documentation run the file `grffile.dtx'}
\Msg{* through LaTeX.}
\Msg{*}
\Msg{* Happy TeXing!}
@@ -410,10 +410,12 @@ and the derived files
% \begin{macrocode}
%<*new>
\DeclareRelease{v1}{2017-06-30}{grffile-2017-06-30.sty}
-\DeclareCurrentRelease{}{2019-11-03}
+\DeclareCurrentRelease{}{2019-11-11}
\ProvidesPackage{grffile}%
- [2019/11/03 v2.0 Extended file name support for graphics (legacy)]%
+ [2019/11/11 v2.1 Extended file name support for graphics (legacy)]%
\PackageInfo{grffile}{This package is an empty stub for compatibility}
+\DeclareOption*{}
+\ProcessOptions
\RequirePackage{graphicx}
%</new>
% \end{macrocode}
diff --git a/macros/latex/contrib/grffile/grffile.pdf b/macros/latex/contrib/grffile/grffile.pdf
index 7a7dae93b9..6bd169733c 100644
--- a/macros/latex/contrib/grffile/grffile.pdf
+++ b/macros/latex/contrib/grffile/grffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
index d86a56a2c5..a9c1b2a350 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf
Binary files differ
diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex
index c9980ab829..12d403c379 100644
--- a/macros/latex/contrib/nicematrix/nicematrix-french.tex
+++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex
@@ -1192,9 +1192,9 @@ $\begin{pNiceMatrix}
\section{Les matrices par blocs}
Dans les environnements de \pkg{nicematrix}, on peut utiliser la commande |\Block| pour placer un élément au centre
-d'un rectangle de cellules fusionnées.
+d'un rectangle de cases fusionnées.
-La commande |\Block| doit être utilisée dans la cellule supérieure gauche du bloc avec deux arguments. Le premier
+La commande |\Block| doit être utilisée dans la case supérieure gauche du bloc avec deux arguments. Le premier
argument est la taille de ce bloc avec la syntaxe $i$-$j$ où $i$ est le nombre de rangées et $j$ le nombre de
colonnes du bloc. Le deuxième argument, est, sans surprise, le contenu du bloc (en mode mathématique).
@@ -1303,9 +1303,10 @@ En fait, l'option |small| correspond aux réglages suivants :
\section{Les compteurs iRow et jCol}
Dans les cases du tableau, il est possible d'utiliser les compteurs LaTeX |iRow| et |jCol| qui représentent le
-numéro de la rangée courante et le numéro de la colonne courante\footnote{On rappelle que la «permière rangée» (si
- elle existe) est $0$ et que le numéro de la «première colonne» (si elle existe) est $0$ également.}. Bien entendu,
-l'utilisateur ne doit pas modifier les valeurs de ces compteurs qui sont utilisés en interne par \pkg{nicematrix}.
+numéro de la rangée courante et le numéro de la colonne courante\footnote{On rappelle que le numéro de la «première
+ rangée» (si elle existe) est $0$ et que le numéro de la «première colonne» (si elle existe) est $0$ également.}.
+Bien entendu, l'utilisateur ne doit pas modifier les valeurs de ces compteurs qui sont utilisés en interne par
+\pkg{nicematrix}.
\medskip
\begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
@@ -1336,6 +1337,23 @@ Si des compteurs LaTeX nommés |iRow| ou |jCol| sont créés dans le document pa
\pkg{nicematrix}.
+\bigskip
+L'extension \pkg{nicematrix} propose aussi des commandes pour composer automatiquement des matrices à partir d'un
+motif général. Ces commandes sont nommées |\pAutoNiceMatrix|, |\bAutoNiceMatrix|, |\vAutoNiceMatrix|,
+|\VAutoNiceMatrix| et |\BAutoNiceMatrix|.
+
+Chacune de ces commandes prend deux arguments obligatoires : le premier est la taille de la matrice, sous la forme
+$n$-$p$, où $n$ est le nombre de lignes et $p$ est le nombre de colonnes et le deuxième est le motif (c'est-à-dire
+simplement des tokens qui seront insérés dans chaque case de la matrice, exceptées celles des éventuelles lignes et
+colonnes extérieures).
+
+\medskip
+\begin{Verbatim}
+$C = ~emphase#\pAutoNiceMatrix@{3-3}{C_{\arabic{iRow},\arabic{jCol}}}$
+\end{Verbatim}
+
+
+$C = \pAutoNiceMatrix{3-3}{C_{\arabic{iRow},\arabic{jCol}}}$
\section{L'option hlines}
diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx
index 4f3effcd14..5aa6211092 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.dtx
+++ b/macros/latex/contrib/nicematrix/nicematrix.dtx
@@ -15,8 +15,8 @@
%
% \fi
% \iffalse
-\def\myfileversion{3.6}
-\def\myfiledate{2019/10/29}
+\def\myfileversion{3.7}
+\def\myfiledate{2019/11/11}
%
%
%<*batchfile>
@@ -1362,11 +1362,11 @@ c & c & b & a & e
% \section{The counters iRow and jCol}
%
% In the cells of the array, it's possible to use the LaTeX counters |iRow| and
-% |jCol| which represents the number of the current row and the number of the
+% |jCol| which represent the number of the current row and the number of the
% current col\footnote{We recall that the first row (if it exists) has the
-% number~$0$ and that the first col (if it exists) has also the number~$0$).}. Of
-% course, the user must not change the value of the these counters which are
-% used internally by \pkg{nicematrix}.
+% number~$0$ and that the first col (if it exists) has also the number~$0$).}.
+% Of course, the user must not change the value of these counters which are used
+% internally by \pkg{nicematrix}.
%
% \medskip
% \begin{BVerbatim}[baseline=c,boxwidth=10.6cm]
@@ -1391,10 +1391,30 @@ c & c & b & a & e
% & 9 & 10 & 11 & 12
% \end{pNiceMatrix}$
%
-% \smallskip
+% \medskip
% If LaTeX counters called |iRow| and |jCol| are defined in the document by
% extensions other than \pkg{nicematrix} (or by the user), they are shadowed in
-% the environements of \pkg{nicematrix}.
+% the environments of \pkg{nicematrix}.
+%
+% \bigskip
+% The extension \pkg{nicematrix} also provides commands in order to compose
+% automatically matrices from a general pattern. These commands are
+% |\pAutoNiceMatrix|, |\bAutoNiceMatrix|, |\vAutoNiceMatrix|,
+% |\VAutoNiceMatrix| and |\BAutoNiceMatrix|.
+%
+% These commands take two mandatory arguments. The first is the format of the
+% matrix, with the syntax $n$-$p$ where $n$ is the number of rows and $p$ the
+% number of columns. The second argument is the pattern (it's a list of tokens
+% which are inserted in each cell of the constructed matrix, excepted in the
+% cells of the eventual exterior rows and columns).
+%
+% \medskip
+% \begin{Verbatim}
+% $C = ~emphase#\pAutoNiceMatrix@{3-3}{C_{\arabic{iRow},\arabic{jCol}}}$
+% \end{Verbatim}
+%
+%
+% $C = \pAutoNiceMatrix{3-3}{C_{\arabic{iRow},\arabic{jCol}}}$
%
% \section{The option hlines}
%
@@ -2615,7 +2635,8 @@ c & c & b & a & e
% \end{macrocode}
%
% \bigskip
-% The name of the current environment (will be used only in the error messages).
+% The name of the current environment or the current command (will be used only
+% in the error messages).
% \begin{macrocode}
\str_new:N \g_@@_type_env_str
% \end{macrocode}
@@ -3004,11 +3025,11 @@ c & c & b & a & e
columns-width .value_required:n = true ,
name .code:n =
\unless \ifmeasuring@
- \str_set:Nn \l_tmpa_str { #1 }
- \seq_if_in:NVTF \g_@@_names_seq \l_tmpa_str
- { \@@_error:nn { Duplicate~name } { #1 } }
- { \seq_gput_left:NV \g_@@_names_seq \l_tmpa_str }
- \str_set_eq:NN \l_@@_name_str \l_tmpa_str
+ \str_set:Nn \l_tmpa_str { #1 }
+ \seq_if_in:NVTF \g_@@_names_seq \l_tmpa_str
+ { \@@_error:nn { Duplicate~name } { #1 } }
+ { \seq_gput_left:NV \g_@@_names_seq \l_tmpa_str }
+ \str_set_eq:NN \l_@@_name_str \l_tmpa_str
\fi ,
name .value_required:n = true ,
code-after .tl_gset:N = \g_@@_code_after_tl ,
@@ -3815,7 +3836,10 @@ c & c & b & a & e
\NewDocumentEnvironment { NiceArrayWithDelims } { m m O { } m ! O { } }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { NiceArrayWithDelims } }
+ {
+ \str_gset:Nn \g_@@_type_env_str
+ { environment ~ { NiceArrayWithDelims } }
+ }
\@@_adapt_S_column:
\@@_test_if_math_mode:
\bool_if:NT \l_@@_in_env_bool { \@@_fatal:n { Yet~in~env } }
@@ -4231,7 +4255,21 @@ c & c & b & a & e
\hbox_set:Nw \l_tmpa_box
\c_math_toggle_token
\bool_if:NT \l_@@_small_bool \scriptstyle
- \int_compare:nNnT \c@iRow > \c_zero_int \l_@@_code_for_first_col_tl
+% \end{macrocode}
+% We insert |\l_@@_code_for_first_col_tl|... but we don't insert it in the
+% potential ``first row'' and in the potential ``last row''.
+% \begin{macrocode}
+ \bool_if:nT
+ {
+ \int_compare_p:nNn \c@iRow > \c_zero_int
+ &&
+ (
+ \int_compare_p:nNn \l_@@_last_row_int < 0
+ ||
+ \int_compare_p:nNn \c@iRow < \l_@@_last_row_int
+ )
+ }
+ { \l_@@_code_for_first_col_tl }
}
l
<
@@ -4314,7 +4352,21 @@ c & c & b & a & e
\hbox_set:Nw \l_tmpa_box
\c_math_toggle_token
\bool_if:NT \l_@@_small_bool \scriptstyle
- \l_@@_code_for_last_col_tl
+% \end{macrocode}
+% We insert |\l_@@_code_for_last_col_tl|... but we don't insert it in the
+% potential ``first row'' and in the potential ``last row''.
+% \begin{macrocode}
+ \bool_if:nT
+ {
+ \int_compare_p:nNn \c@iRow > \c_zero_int
+ &&
+ (
+ \int_compare_p:nNn \l_@@_last_row_int < 0
+ ||
+ \int_compare_p:nNn \c@iRow < \l_@@_last_row_int
+ )
+ }
+ { \l_@@_code_for_last_col_tl }
}
l
<
@@ -4385,7 +4437,7 @@ c & c & b & a & e
{
\bool_set_true:N \l_@@_NiceArray_bool
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { NiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { NiceArray } } }
% \end{macrocode}
% We put . and . for the delimiters but, in fact, that doesn't matter because
% these arguments won't be used in |{NiceArrayWithDelims}| (because the flag
@@ -4405,7 +4457,7 @@ c & c & b & a & e
\NewDocumentEnvironment { pNiceArray } { }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { pNiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { pNiceArray } } }
\@@_test_if_math_mode:
\NiceArrayWithDelims ( )
}
@@ -4416,7 +4468,7 @@ c & c & b & a & e
\NewDocumentEnvironment { bNiceArray } { }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { NiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { bNiceArray } } }
\@@_test_if_math_mode:
\NiceArrayWithDelims [ ]
}
@@ -4427,18 +4479,18 @@ c & c & b & a & e
\NewDocumentEnvironment { BNiceArray } { }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { BNiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { BNiceArray } } }
\@@_test_if_math_mode:
\NiceArrayWithDelims \{ \}
}
{ \endNiceArrayWithDelims }
-% \end{macrocode}
+% \end{macrocode}
%
% \begin{macrocode}
\NewDocumentEnvironment { vNiceArray } { }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { vNiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { vNiceArray } } }
\@@_test_if_math_mode:
\NiceArrayWithDelims | |
}
@@ -4449,7 +4501,7 @@ c & c & b & a & e
\NewDocumentEnvironment { VNiceArray } { }
{
\str_if_empty:NT \g_@@_type_env_str
- { \str_gset:Nn \g_@@_type_env_str { VNiceArray } }
+ { \str_gset:Nn \g_@@_type_env_str { environment ~ { VNiceArray } } }
\@@_test_if_math_mode:
\NiceArrayWithDelims \| \|
}
@@ -4464,7 +4516,7 @@ c & c & b & a & e
{
\NewDocumentEnvironment { #1 NiceMatrix } { ! O { } }
{
- \str_gset:Nn \g_@@_type_env_str { #1 NiceMatrix }
+ \str_gset:Nn \g_@@_type_env_str { environment ~ { #1 NiceMatrix } }
\keys_set:nn { NiceMatrix / NiceMatrix } { ##1 }
\begin { #1 NiceArray }
{
@@ -5742,8 +5794,37 @@ c & c & b & a & e
% In the |code-after|, the command |\@@_line:nn| will be linked to |\line|. This
% command takes two arguments which are the specification of two cells in the
% array (in the format $i$-$j$) and draws a dotted line between these cells.
+%
+% \medskip
+% First, we write a command with an argument of the format $i$-$j$ and applies
+% the command |\int_eval:n| to $i$ and~$j$ ; this must \emph{not} be protected
+% (and is, of course fully expandable).\footnote{Indeed, we want that the user
+% may use the command |\line| in |code-after| with LaTeX counters in the
+% arguments --- with the command |\value|.}
+% \begin{macrocode}
+\cs_new:Npn \@@_double_int_eval:n #1-#2 \q_stop
+ { \int_eval:n { #1 } - \int_eval:n { #2 } }
+% \end{macrocode}
+%
+% \medskip
+% With the following construction, the command |\@@_double_int_eval:n| is
+% applied to both arguments before the application of |\@@_line_i:nn| (the
+% construction uses the fact the |\@@_line_i:nn| is protected and that
+% |\@@_double_int_eval:n| is fully expandable).
% \begin{macrocode}
-\cs_new_protected:Nn \@@_line:nn
+\cs_new_protected:Npn \@@_line:nn #1 #2
+ {
+ \use:x
+ {
+ \@@_line_i:nn
+ { \@@_double_int_eval:n #1 \q_stop }
+ { \@@_double_int_eval:n #2 \q_stop }
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_line_i:nn
{
\bool_if:NF \c_@@_draft_bool
{
@@ -5761,13 +5842,13 @@ c & c & b & a & e
}
{
\begin { tikzpicture }
- \path~(#1)~--~(#2)~node[at~start]~(i)~{}~node[at~end]~(f)~{} ;
- \tikz@parse@node \pgfutil@firstofone ( i )
- \dim_gset:Nn \g_@@_x_initial_dim \pgf@x
- \dim_gset:Nn \g_@@_y_initial_dim \pgf@y
- \tikz@parse@node \pgfutil@firstofone ( f )
- \dim_gset:Nn \g_@@_x_final_dim \pgf@x
- \dim_gset:Nn \g_@@_y_final_dim \pgf@y
+ \path~(#1)~--~(#2)~node[at~start]~(i)~{}~node[at~end]~(f)~{} ;
+ \tikz@parse@node \pgfutil@firstofone ( i )
+ \dim_gset:Nn \g_@@_x_initial_dim \pgf@x
+ \dim_gset:Nn \g_@@_y_initial_dim \pgf@y
+ \tikz@parse@node \pgfutil@firstofone ( f )
+ \dim_gset:Nn \g_@@_x_final_dim \pgf@x
+ \dim_gset:Nn \g_@@_y_final_dim \pgf@y
\end { tikzpicture }
\@@_draw_tikz_line:
}
@@ -6403,9 +6484,7 @@ c & c & b & a & e
% command |\multicolumn|.
% \begin{macrocode}
\NewExpandableDocumentCommand \@@_Block: { m D < > { } m }
- {
- \@@_Block_i #1 \q_stop { #2 } { #3 }
- }
+ { \@@_Block_i #1 \q_stop { #2 } { #3 } }
% \end{macrocode}
%
% \medskip
@@ -6413,10 +6492,7 @@ c & c & b & a & e
% It must be of the form $i$|-|$j$ where $i$ and $j$ are the size (in rows and
% columns) of the block.
% \begin{macrocode}
-\cs_new:Npn \@@_Block_i #1-#2 \q_stop
- {
- \@@_Block_ii:nnnn { #1 } { #2 }
- }
+\cs_new:Npn \@@_Block_i #1-#2 \q_stop { \@@_Block_ii:nnnn { #1 } { #2 } }
% \end{macrocode}
%
% \medskip
@@ -6520,7 +6596,7 @@ c & c & b & a & e
}
% \end{macrocode}
%
-% % \subsection{How to draw the dotted lines transparently}
+% \subsection{How to draw the dotted lines transparently}
% \begin{macrocode}
\cs_set_protected:Npn \@@_renew_matrix:
{
@@ -6543,7 +6619,75 @@ c & c & b & a & e
% \end{macrocode}
%
%
+% \medskip
+% \subsection{Automatic arrays}
+%
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_set_size:n #1-#2 \q_stop
+ {
+ \int_set:Nn \l_@@_nb_rows_int { #1 }
+ \int_set:Nn \l_@@_nb_cols_int { #2 }
+ }
+% \end{macrocode}
+%
%
+% \begin{macrocode}
+\NewDocumentCommand \AutoNiceMatrixWithDelims { m m O { } m O { } m ! O { } }
+ {
+ \int_zero_new:N \l_@@_nb_rows_int
+ \int_zero_new:N \l_@@_nb_cols_int
+ \@@_set_size:n #4 \q_stop
+ \begin { NiceArrayWithDelims } { #1 } { #2 }
+ { * { \l_@@_nb_cols_int } { C } } [ #3 , #5 , #7 ]
+ \int_compare:nNnT \l_@@_first_row_int = \c_zero_int
+ {
+ \int_compare:nNnT \l_@@_first_col_int = \c_zero_int { & }
+ \prg_replicate:nn { \l_@@_nb_cols_int - 1 } { & }
+ \int_compare:nNnT \l_@@_last_col_int > { -1 } { & } \\
+ }
+ \prg_replicate:nn \l_@@_nb_rows_int
+ {
+ \int_compare:nNnT \l_@@_first_col_int = \c_zero_int { & }
+% \end{macrocode}
+% You put |{ }| before |#6| to avoid a hasty expansion of an eventual
+% |\arabic{iRow}| at the beginning of the row which would result in an incorrect
+% value of that |iRow| (since |iRow| is incremented in the first cell of the row
+% of the |\halign|).
+% \begin{macrocode}
+ \prg_replicate:nn { \l_@@_nb_cols_int - 1 } { { } #6 & } #6
+ \int_compare:nNnT \l_@@_last_col_int > { -1 } { & } \\
+ }
+ \int_compare:nNnT \l_@@_last_row_int > { -2 }
+ {
+ \int_compare:nNnT \l_@@_first_col_int = \c_zero_int { & }
+ \prg_replicate:nn { \l_@@_nb_cols_int - 1 } { & }
+ \int_compare:nNnT \l_@@_last_col_int > { -1 } { & } \\
+ }
+ \end { NiceArrayWithDelims }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_define_com:nnn #1 #2 #3
+ {
+ \cs_set_protected:cpn { #1 AutoNiceMatrix }
+ {
+ \str_gset:Nx \g_@@_type_env_str
+ { command ~ \c_backslash_str #1 AutoNiceMatrix }
+ \AutoNiceMatrixWithDelims { #2 } { #3 }
+ }
+ }
+% \end{document}
+% \begin{macrocode}
+\@@_define_com:nnn p ( )
+\@@_define_com:nnn b [ ]
+\@@_define_com:nnn v | |
+\@@_define_com:nnn V \| \|
+\@@_define_com:nnn B \{ \}
+% \end{macrocode}
+%
+% \medskip
% \subsection{We process the options}
%
% We process the options when the package is loaded (with |\usepackage|) but we
@@ -6584,9 +6728,8 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { last-col~non~empty~for~NiceArray }
{
- In~the~environment~\{\g_@@_type_env_str\},~you~must~use~the~option~
- 'last-col'~without~value~(the~number~of~columns~is~known~by~the~
- preamble~of~the~environment).\\
+ In~the~\g_@@_type_env_str,~you~must~use~the~option~
+ 'last-col'~without~value.\\
However,~you~can~go~on~for~this~time~
(the~value~'\l_keys_value_tl'~will~be~ignored).
}
@@ -6595,7 +6738,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { last-col~empty~for~NiceMatrix }
{
- In~the~environment~\{\g_@@_type_env_str\}~you~can't~use~the~option~
+ In~the~\g_@@_type_env_str, you~can't~use~the~option~
'last-col'~without~value.~You~must~give~the~number~of~that~last~column.\\
If~you~go~on~this~option~will~be~ignored.
}
@@ -6606,7 +6749,7 @@ c & c & b & a & e
{
You~try~to~draw~a~block~in~the~cell~#1-#2~of~your~matrix~but~the~matrix~is~
too~small~for~that~block.\\
- If~you~go~on,~this~command~line~will~be~ignored.
+ If~you~go~on,~this~command~will~be~ignored.
}
% \end{macrocode}
%
@@ -6623,10 +6766,10 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Wrong~last~row }
{
- You~have~used~'last-row=\int_use:N \l_@@_last_row_int'~but~your~environment~
- \{\g_@@_type_env_str\}~seems~to~have~\int_use:N \c@iRow
- rows.~If~you~go~on,~the~value~of~\int_use:N \c@iRow
- will~be~used~for~last~row.~You~can~avoid~this~problem~by~using~'last-row'~
+ You~have~used~'last-row=\int_use:N \l_@@_last_row_int'~but~your~
+ \g_@@_type_env_str\ seems~to~have~\int_use:N \c@iRow \ rows.~
+ If~you~go~on,~the~value~of~\int_use:N \c@iRow \ will~be~used~for~
+ last~row.~You~can~avoid~this~problem~by~using~'last-row'~
without~value~(more~compilations~might~be~necessary).
}
% \end{macrocode}
@@ -6643,7 +6786,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Outside~math~mode }
{
- The~environment~\{\g_@@_type_env_str\}~can~be~used~only~in~math~mode~
+ The~\g_@@_type_env_str\ can~be~used~only~in~math~mode~
(and~not~in~\token_to_str:N \vcenter).\\
This~error~is~fatal.
}
@@ -6655,6 +6798,9 @@ c & c & b & a & e
The~option~'Transparent'~has~been~renamed~'transparent'.\\
However,~you~can~go~on~for~this~time.
}
+% \end{macrocode}
+%
+% \begin{macrocode}
\@@_msg_new:nn { Option~RenewMatrix~suppressed }
{
The~option~'RenewMatrix'~has~been~renamed~'renew-matrix'.\\
@@ -6744,8 +6890,8 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nnn { Unknown~option~for~NiceMatrix }
{
- The~option~'\tl_use:N\l_keys_key_tl'~is~unknown~for~the~environment~
- \{\g_@@_type_env_str\}. \\
+ The~option~'\tl_use:N\l_keys_key_tl'~is~unknown~for~the~
+ \g_@@_type_env_str. \\
If~you~go~on,~it~will~be~ignored. \\
For~a~list~of~the~available~options,~type~H~<return>.
}
@@ -6805,7 +6951,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Zero~row }
{
- There~is~a~problem.~Maybe~your~environment~\{\g_@@_type_env_str\}~is~empty.~
+ There~is~a~problem.~Maybe~your~\g_@@_type_env_str\ is~empty.~
Maybe~you~have~used~l,~c~and~r~instead~of~L,~C~and~R~in~the~preamble~
of~your~environment. \\
If~you~go~on,~the~result~may~be~incorrect.
@@ -6816,7 +6962,7 @@ c & c & b & a & e
\@@_msg_new:nn { Use~of~:~in~first~position }
{
You~can't~use~the~column~specifier~'\l_@@_letter_for_dotted_lines_str'~in~the~
- first~position~of~the~preamble~of~the~environment~\{\g_@@_type_env_str\}. \\
+ first~position~of~the~preamble~of~the~\g_@@_type_env_str. \\
If~you~go~on,~this~dotted~line~will~be~ignored.
}
% \end{macrocode}
@@ -6827,7 +6973,7 @@ c & c & b & a & e
% \begin{macrocode}
\@@_msg_new:nn { Obsolete~environment }
{
- The~environment~\{\@currenvir\}~is~obsolete.~
+ The~environment~\{\@currenvir\}~is~obsolete~and~will~be~deleted~in~future~version.~
We~should~use~#1~instead.
}
% \end{macrocode}
@@ -7171,6 +7317,15 @@ c & c & b & a & e
%
% There is no longer artificial errors |Duplicate~name| in the environments of
% \pkg{amsmath}.
+%
+% \subsection*{Changes between version 3.6 and 3.7}
+%
+% The four ``corners'' of the matrix are correctly protected against the four
+% codes: |code-for-first-col|, |code-for-last-col|, |code-for-first-row| and
+% |code-for-last-row|.
+%
+% New command |\pAutoNiceMatrix| and its variants (suggestion of Christophe Bal).
+%
% \PrintIndex
%
% \tableofcontents
diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf
index ce320d5eb1..f8b8f28703 100644
--- a/macros/latex/contrib/nicematrix/nicematrix.pdf
+++ b/macros/latex/contrib/nicematrix/nicematrix.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/NEWS b/macros/luatex/generic/luaotfload/NEWS
index 86b9dd9b2d..d8c05e500a 100644
--- a/macros/luatex/generic/luaotfload/NEWS
+++ b/macros/luatex/generic/luaotfload/NEWS
@@ -1,5 +1,10 @@
Change History
--------------
+2019-11-10 luaotfload v3.11
+ * Changed the handling of the script key in harf mode to be more compatible with behaviour of the node mode.
+ It now expects the name of a script that is actually in the font instead of a ISO 15924 script tag. See issue 117.
+ * Corrected a number of small typos and bugs in harf mode.
+
2019-11-04 luaotfload v3.1
* added code to use the harfbuzz library of luahbtex ("mode=harf")
* fonts in ttc can now be indexed by name
diff --git a/macros/luatex/generic/luaotfload/README.md b/macros/luatex/generic/luaotfload/README.md
index ca760b1bab..57cae2d99b 100644
--- a/macros/luatex/generic/luaotfload/README.md
+++ b/macros/luatex/generic/luaotfload/README.md
@@ -1,8 +1,8 @@
# The Luaotfload Package
-VERSION: 3.1
+VERSION: 3.11
-DATE: 2019-11-04
+DATE: 2019-11-10
## Description
diff --git a/macros/luatex/generic/luaotfload/filegraph.pdf b/macros/luatex/generic/luaotfload/filegraph.pdf
index 95b296c599..9fc854a941 100644
--- a/macros/luatex/generic/luaotfload/filegraph.pdf
+++ b/macros/luatex/generic/luaotfload/filegraph.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
index 9538a15bb0..fd4291f67c 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-auxiliary",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / auxiliary functions",
license = "GPL v2.0"
}
@@ -33,6 +33,7 @@ local getmetatable = getmetatable
local setmetatable = setmetatable
local utfcodepoint = utf8.codepoint
local stringlower = string.lower
+local stringupper = string.upper
local stringformat = string.format
local stringgsub = string.gsub
local stringbyte = string.byte
@@ -441,7 +442,7 @@ end
local function get_hbface(tfmdata)
if not tfmdata.hb then return end
- return tfmdata.hbshared.face
+ return tfmdata.hb.shared.face
end
--[[doc--
diff --git a/macros/luatex/generic/luaotfload/luaotfload-colors.lua b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
index ae78130b4f..ddc564b05b 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-colors.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-colors",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Dohyun Kim, David Carlisle",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
index 031fb0987a..0515095402 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
index e9b818df2d..b9ee9a6c7a 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-configuration",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / config file reader",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-database.lua b/macros/luatex/generic/luaotfload/luaotfload-database.lua
index 10a0853c89..ad00bb26f7 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-database.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-database.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-database",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
index 1dc24ba6ee..0df0be7ff5 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-diagnostics",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload-tool submodule / diagnostics",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
index 8d51249976..4e16a992d0 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-embolden",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-features.lua b/macros/luatex/generic/luaotfload/luaotfload-features.lua
index bf56c4e3d1..de129891e3 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-features.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-features.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-features",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / features",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
index 24868eb315..4a1348b5f0 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-filelist",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
index fe655149ad..8e0a2dec5f 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
@@ -1,7 +1,7 @@
local ProvidesLuaModule = {
name = "luaotfload-glyphlist",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / autogenerated glyphlist",
copyright = "derived from https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt",
original = "Adobe Glyph List, version 2.0, September 20, 2002",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
index e8154cb719..ad02cdb99a 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-harf-define",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -23,6 +23,7 @@ local stringupper = string.upper
local gsub = string.gsub
local hb = luaotfload.harfbuzz
+local scriptlang_to_harfbuzz = require'luaotfload-scripts'.to_harfbuzz
local hbfonts = {}
@@ -32,6 +33,9 @@ local os2tag = hb.Tag.new("OS/2")
local posttag = hb.Tag.new("post")
local glyftag = hb.Tag.new("glyf")
+local invalid_l = hb.Language.new()
+local invalid_s = hb.Script.new()
+
local containers = luaotfload.fontloader.containers
local hbcacheversion = 1.0
local facecache = containers.define("fonts", "hb", hbcacheversion, true)
@@ -366,15 +370,23 @@ fonts.readers.harf = function(spec)
local hb_features = {}
spec.hb_features = hb_features
- if rawfeatures.language then
+ if rawfeatures.script then
+ local script = stringlower(rawfeatures.script)
+ if script == "dflt" then -- Probably a noop, HarfBuzz normalizes anyway
+ script = "DFLT"
+ end
+ local language = stringupper(rawfeatures.language or 'dflt')
+ language = language == "DFLT" and "dflt" or language
+ local hb_script, hb_lang = scriptlang_to_harfbuzz(script, language)
+ spec.script, spec.language = hb.Script.new(hb_script), hb.Language.new(hb_lang)
+ elseif rawfeatures.language then
local language = stringupper(rawfeatures.language)
spec.language = hb.Language.new(language == "DFLT" and "dflt"
or language)
- end
- if rawfeatures.script then
- local script = stringlower(rawfeatures.script)
- spec.script = hb.Script.new(script == "dflt" and "DFLT"
- or script)
+ spec.script = invalid_s
+ else
+ spec.script = invalid_s
+ spec.language = invalid_l
end
for key, val in next, rawfeatures do
if key:len() == 4 then
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
index 123a1c4563..528d8c1e60 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-harf-plug",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -98,9 +98,6 @@ local italiccorr_t = 3
local regulardisc_t = 3
local spaceskip_t = 13
-local invalid_l = hb.Language.new()
-local invalid_s = hb.Script.new()
-
local dir_ltr = hb.Direction.new("ltr")
local dir_rtl = hb.Direction.new("rtl")
local fl_unsafe = hb.Buffer.GLYPH_FLAG_UNSAFE_TO_BREAK
@@ -322,8 +319,8 @@ function shape(head, node, run)
local hbshared = hbdata.shared
local hbfont = hbshared.font
- local lang = spec.language or invalid_l
- local script = spec.script or invalid_s
+ local lang = spec.language
+ local script = spec.script
local shapers = options.shaper and { options.shaper } or {}
local buf = hb.Buffer.new()
diff --git a/macros/luatex/generic/luaotfload/luaotfload-init.lua b/macros/luatex/generic/luaotfload/luaotfload-init.lua
index 5f7b710d9b..e136d6cf63 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-init.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-init.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-init",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / initialization",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
index 28391b2e8a..815d215d6b 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
index a58d59ba1a..905fc6acce 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-letterspace",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
copyright = "PRAGMA ADE / ConTeXt Development Team",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
index c2c2320ff8..2865bf5516 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
@@ -8,8 +8,8 @@
local ProvidesLuaModule = {
name = "luaotfload-loaders",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / callback handling",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-log.lua b/macros/luatex/generic/luaotfload/luaotfload-log.lua
index e6bb042b4f..9532877127 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-log.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-log.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-log",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / logging",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-main.lua b/macros/luatex/generic/luaotfload/luaotfload-main.lua
index d17a1d9b26..65fdc9fc00 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-main.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-main.lua
@@ -20,8 +20,8 @@ local authors = "\z
-- version number is used below!
local ProvidesLuaModule = {
name = "luaotfload-main",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload entry point",
author = authors,
copyright = authors,
diff --git a/macros/luatex/generic/luaotfload/luaotfload-main.tex b/macros/luatex/generic/luaotfload/luaotfload-main.tex
index dbc8d73e7d..9fe9060695 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-main.tex
+++ b/macros/luatex/generic/luaotfload/luaotfload-main.tex
@@ -32,7 +32,7 @@
\beginfrontmatter
\setdocumenttitle {The \identifier{luaotfload} package}
- \setdocumentdate {2019-11-04 v3.1}
+ \setdocumentdate {2019-11-10 v3.11}
\setdocumentauthor {LaTeX3 Project\\
Elie Roux · Khaled Hosny · Philipp Gesang · Ulrike Fischer · Marcel Krüger\\
Home: \hyperlink {https://github.com/latex3/luaotfload}}
@@ -62,12 +62,17 @@ Supported is the \identifier{luatex} versions of a current TeXLive 2019 (and a c
\endsection
\beginsection{Changes}
+\beginsubsection {New in version 3.11 (by Ulrike Fischer/Marcel Krüger)}
+\begin{itemize}
+\item Changed the handling of the \identifier{script} key in harf mode to be more compatible with behaviour of the node mode. It now expects the name of a script that is actually in the font instead of a ISO 15924 script tag. See issue 117.
+\item Corrected a number of small typos and bugs in harf mode.
+\end{itemize}
\beginsubsection {New in version 3.1 (by Ulrike Fischer/Marcel Krüger)}
\begin{itemize}
\item The package has been moved to the github of the LaTeX3 Project and is now maintained
officially by the LaTeX3 Project team.
\item Code to use the harfbuzz library of luahbtex has been added. See the description of the harf mode.
-\item fonts in ttc-collections can now be indexed by name.
+\item fonts in ttc-collections can now be indexed by name.
\item To reduce the polution of the global lua enviroment a number of lua tables have been removed.
Only the tables \identifier{luaotfload}, \identifier{fonts} and \identifier{nodes} have been kept there.
\item The fontloader has been synched with the context files from 2019-10-29.
@@ -766,13 +771,13 @@ obviously, \inlinecode{random}.
\identifier{harf} mode is new in version 3.1 and needs the new \identifier{luahbtex} engine (the mode is ignored if \identifier{luahbtex} is not used). With it is possible to render a font using the harfbuzz library in-built in the new engine. \identifier{harf} mode improves greatly the rendering of indic and arabic scripts and is highly recommended for such scripts.
- When using \identifier{harf} mode it is required to set also the script correctly:
+ When using \identifier{harf} mode it is required to set also the script correctly.
\beginlisting
- \font\burmesefont={file:NotoSerifMyanmar-Regular.ttf:mode=harf;script=mymr;}
- \font\devafont={file:NotoSansDevanagari-Regular.ttf:mode=harf;script=deva;}
- \font\banglafont={name:Noto Sans Bengali:mode=harf;script=beng;}
+ \font\burmesefont={file:NotoSerifMyanmar-Regular.ttf:mode=harf;script=mym2;}
+ \font\devafont={file:NotoSansDevanagari-Regular.ttf:mode=harf;script=dev2;}
+ \font\banglafont={name:Noto Sans Bengali:mode=harf;script=ben2;}
\font\tibetanfont={name:Noto Serif Tibetan:mode=harf;script=tibt;}
\endlisting
diff --git a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
index 56d381a911..c2aa664fab 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-multiscript",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / multiscript",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
index 53f4af8e3a..9c0634f90d 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-notdef",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
index 4a2d6305e1..4cf46fe329 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-parsers",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
index 97e85f0a41..61949621cb 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
@@ -11,8 +11,8 @@
local ProvidesLuaModule = {
name = "luaotfload-resolvers",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / resolvers",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-scripts.lua b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
new file mode 100644
index 0000000000..48ececf890
--- /dev/null
+++ b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
@@ -0,0 +1,91 @@
+-----------------------------------------------------------------------
+-- FILE: luaotfload-script.lua
+-- DESCRIPTION: part of luaotfload / script
+-----------------------------------------------------------------------
+
+local ProvidesLuaModule = {
+ name = "luaotfload-script",
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
+ description = "luaotfload submodule / Script helpers",
+ license = "CC0 1.0 Universal",
+ author = "Marcel Krüger"
+}
+
+if luatexbase and luatexbase.provides_module then
+ luatexbase.provides_module (ProvidesLuaModule)
+end
+
+local canonical_name = {
+ dflt = "DFLT",
+ hira = "kana",
+ laoo = "lao",
+ yiii = "yi",
+ nkoo = "nko",
+ yaii = "vai",
+ ["lao "] = "lao",
+ ["yi "] = "yi",
+ ["nko "] = "nko",
+ ["vai "] = "vai",
+}
+local versioned_script = {
+ mym = "mymr", mymr = "mym",
+ bng = "beng", beng = "bng",
+ dev = "deva", deva = "dev",
+ gjr = "gujr", gujr = "gjr",
+ gur = "guru", guru = "gur",
+ knd = "knda", knda = "knd",
+ mlm = "mlym", mlym = "mlm",
+ ory = "orya", orya = "ory",
+ tml = "taml", taml = "tml",
+ tel = "telu", telu = "tel",
+}
+local function get_versioned(original)
+ local base = original:gsub("%d$", "") -- Strip any existing version
+ local versioned = versioned_script[base]
+ if not versioned then
+ return original
+ end
+ if #base == 3 then
+ local t = base
+ base = versioned
+ versioned = t
+ end
+ if base == "mymr" then
+ return "mym2", "mymr"
+ end
+ return versioned .. '3', versioned .. '2', base
+end
+
+-- We never return trailing spaces because I consider them implementation details.
+local function script_to_ot(iso)
+ iso = iso:lower()
+ return get_versioned(canonical_name[iso] or iso)
+end
+
+local function script_to_iso(tag)
+ tag = tag:lower()
+ tag = canonical_name[tag] or tag
+ local stripped, did_strip = tag:gsub("%d$", "")
+ tag = did_strip == 1 and versioned_script[stripped] or tag
+ local tag_length = #tag
+ if tag_length == 4 then return tag end -- Optimization for common case
+ -- I promise you, I am not making this one up
+ return tag .. string.rep(tag:sub(tag_length, tag_length), 4-tag_length)
+end
+
+local function to_harfbuzz(script, language)
+ local otscript = script_to_iso(script)
+ -- if script_to_ot(otscript) == script then
+ -- return otscript, language
+ -- end
+ return otscript, "x-hbot" .. language .. "-hbsc" .. script
+end
+
+return {
+ to_harfbuzz = to_harfbuzz,
+ script = {
+ to_ot = script_to_ot,
+ to_iso = script_to_iso,
+ },
+}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-status.lua b/macros/luatex/generic/luaotfload/luaotfload-status.lua
index 3221986ca7..b4bad63474 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-status.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-status.lua
@@ -55,40 +55,40 @@ return {
{ "fontloader-reference.lua", "5be3565068a1929b173bde862b48a30e" },
{ "fontloader-basics-gen.lua", "b21e91bbd534f77e368f0ec13f865aed" },
{ "mktests", "c7cff7025962922944376acc1ffa9c47" },
- { "mkstatus", "32b8eee5316ca3100e4434db79d08230" },
+ { "mkstatus", "1a9f8bbf36426071b6970678975360a9" },
{ "mkcharacters", "92c24bb582fc84c0365634f29eb89863" },
{ "mkglyphlist", "557836886d4f0e6d656eac3ded4456a2" },
{ "mkimport", "60e0b11a1a68719033e86a3e0f4d5e86" },
- { "luaotfload-glyphlist.lua", "6dc41351ebdb122e044bed6d3fc2ca4b" },
+ { "luaotfload-glyphlist.lua", "bb67952ea9fb1c3766402457bd477629" },
{ "luaotfload-characters.lua", "593ce9dccf6ddc4f7d4be0514f581102" },
- { "luaotfload-tounicode.lua", "b87cab857631c47f5c2bbfa4dc1b5598" },
- { "luaotfload-unicode.lua", "eaf637834d735afce54cf81721b89626" },
- { "luaotfload-resolvers.lua", "7bcd23bf0c4079174679f61c315f54ed" },
- { "luaotfload-parsers.lua", "23b0550fcc6bf872714d882b8d15f465" },
- { "luaotfload-multiscript.lua", "bd0b25f9b9b21ad1e1a24fb88dc5cdbf" },
- { "luaotfload-loaders.lua", "34d130aa4e365639baecfa0481e34d13" },
- { "luaotfload-harf-plug.lua", "59429664d9bebfbf0e0bfa8a8bdd85e3" },
- { "luaotfload-harf-define.lua", "f0aafaecaddbc43f665a076195ed9205" },
- { "luaotfload-notdef.lua", "ce00644d5801c6fac2e274626a52ecf2" },
- { "luaotfload-embolden.lua", "7ff4b7e2970f2748a4d881b23085495d" },
- { "luaotfload-letterspace.lua", "2b24d57529363de4a004510da84bafd9" },
- { "luaotfload-features.lua", "b8c279955bcc473f02ad77b46942eb29" },
- { "luaotfload-database.lua", "131587572dcf49769bec7e085ab61281" },
- { "luaotfload-configuration.lua", "a59a94e07e20998144c91d5eb44b9302" },
- { "luaotfload-colors.lua", "c13f4c88058e2c4869205ad015765070" },
- { "luaotfload-auxiliary.lua", "77bcb55f9d215ad8a61701dc64e9a07e" },
- { "luaotfload-filelist.lua", "96967c2f4ad091f2a8c74a50294c25d5" },
- { "luaotfload-tool.lua", "9a53d4aedf71012530be90303aabe0d9" },
- { "luaotfload-diagnostics.lua", "f521a2b70b24bd23fb23d3d08d7845bf" },
- { "luaotfload-log.lua", "28c5c63d7af789ab7ca5757870dfc595" },
- { "luaotfload-init.lua", "ebb2e936d4c95cab76649897f6af0e25" },
- { "luaotfload-main.lua", "e4208f459c12b57a6996b4c7e9adbb8b" },
+ { "luaotfload-tounicode.lua", "f37eab5828b4aee392de359bf4d57027" },
+ { "luaotfload-unicode.lua", "861eb4a6332e0b7d8e757cab4759a734" },
+ { "luaotfload-resolvers.lua", "5d9e254413ba333a4f559be023355224" },
+ { "luaotfload-parsers.lua", "e1f4a54c2f29550d3c8ff18e19841ee4" },
+ { "luaotfload-multiscript.lua", "05d2f1c9a27afdbc4b9ad95f958cb6cb" },
+ { "luaotfload-loaders.lua", "cc475c8b04368d3f8ef6e52495fb579a" },
+ { "luaotfload-harf-plug.lua", "ec3ad02c41bd174aedc350dc4cabbc54" },
+ { "luaotfload-harf-define.lua", "7e85627ae64b749f41de5863d7c5ca86" },
+ { "luaotfload-notdef.lua", "23d514bea20fcb0343a8382537ab3924" },
+ { "luaotfload-embolden.lua", "bd0cd6e3951dab2862ca2d2dc1c6bccb" },
+ { "luaotfload-letterspace.lua", "352d83726eead3902323d451907aeb66" },
+ { "luaotfload-features.lua", "c60d2fcaab63dc338d9abd82176f96ee" },
+ { "luaotfload-database.lua", "3f126f3acdcf4b90f13d6c3c41b83147" },
+ { "luaotfload-configuration.lua", "fdb8f0e3b826e91b8598d4b4a387aaa5" },
+ { "luaotfload-colors.lua", "7f63ffde97bb798b63f2c94c5a7e474f" },
+ { "luaotfload-auxiliary.lua", "5e027ad1dde5655eaa74204cdb709098" },
+ { "luaotfload-filelist.lua", "3194c19d0618e4784711e87864e625ea" },
+ { "luaotfload-tool.lua", "3f989f7646d8df2aea584d2333cfb894" },
+ { "luaotfload-diagnostics.lua", "b31b30dd151cd2e6c359b56f4c9fd12c" },
+ { "luaotfload-log.lua", "30d00c154254ce70fe7c1a33692110e2" },
+ { "luaotfload-init.lua", "e22c43529440994d0c99734c736dbb65" },
+ { "luaotfload-main.lua", "9fc20061c7af28ccfcfb95a69115c3e4" },
},
["notes"]={
["committer"]="Ulrike Fischer <fischer@troubleshooting-tex.de>",
- ["description"]="v3.1/2019-11-04",
+ ["description"]="v3.11/2019-11-10",
["loader"]="fontloader-2019-10-29.lua",
- ["revision"]="cdc212ae76bc0f839d116c8f66af98445ba9f307",
- ["timestamp"]="2019-11-03 15:29:57 +0100",
+ ["revision"]="d2ab135f432eadbc68f529447aa47b906ff961ab",
+ ["timestamp"]="2019-11-10 21:29:47 +0100",
},
} \ No newline at end of file
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.1 b/macros/luatex/generic/luaotfload/luaotfload-tool.1
index c2d754baa3..03b8373858 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.1
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD-TOOL 1 "2019-11-04" "3.1" "text processing"
+.TH LUAOTFLOAD-TOOL 1 "2019-11-10" "3.11" "text processing"
.SH NAME
luaotfload-tool \- generate and query the Luaotfload font names database
.
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.lua b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
index 12bf2b3a42..b83cbb84bc 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
@@ -9,8 +9,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tool",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload-tool / database functionality",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
index 76c2bb6df8..e810fa2ff6 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.rst b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
index 1c1ec3161e..09e4023882 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
@@ -6,9 +6,9 @@
generate and query the Luaotfload font names database
-----------------------------------------------------------------------
-:Date: 2019-11-04
+:Date: 2019-11-10
:Copyright: GPL v2.0
-:Version: 3.1
+:Version: 3.11
:Manual section: 1
:Manual group: text processing
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
index 3636f79220..560f2c83aa 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tounicode",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / tounicode",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
index c1bdf3cbd2..659e92d938 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-unicode",
- version = "3.1", --TAGVERSION
- date = "2019-11-04", --TAGDATE
+ version = "3.11", --TAGVERSION
+ date = "2019-11-10", --TAGDATE
description = "luaotfload submodule / Unicode helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.5 b/macros/luatex/generic/luaotfload/luaotfload.conf.5
index 9726ad7aac..c6969eaec6 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.5
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.5
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD.CONF 5 "2019-11-04" "3.1" "text processing"
+.TH LUAOTFLOAD.CONF 5 "2019-11-10" "3.11" "text processing"
.SH NAME
luaotfload.conf \- Luaotfload configuration file
.
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.rst b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
index 18042188b8..39faaa5040 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
@@ -6,9 +6,9 @@
Luaotfload configuration file
-----------------------------------------------------------------------
-:Date: 2019-11-04
+:Date: 2019-11-10
:Copyright: GPL v2.0
-:Version: 3.1
+:Version: 3.11
:Manual section: 5
:Manual group: text processing
diff --git a/macros/luatex/generic/luaotfload/luaotfload.sty b/macros/luatex/generic/luaotfload/luaotfload.sty
index 4dc2553d33..2c9582e464 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.sty
+++ b/macros/luatex/generic/luaotfload/luaotfload.sty
@@ -40,7 +40,7 @@
\fi
\ifdefined\ProvidesPackage
\ProvidesPackage{luaotfload}%
- [2019/11/04 v3.1 OpenType layout system]
+ [2019/11/10 v3.11 OpenType layout system]
\fi
\directlua{
if xpcall(function ()%
diff --git a/macros/luatex/generic/luaotfload/scripts-demo.pdf b/macros/luatex/generic/luaotfload/scripts-demo.pdf
index f0f1bb0065..34fb4bad45 100644
--- a/macros/luatex/generic/luaotfload/scripts-demo.pdf
+++ b/macros/luatex/generic/luaotfload/scripts-demo.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/scripts-demo.tex b/macros/luatex/generic/luaotfload/scripts-demo.tex
index 4bbe06064c..63a60e5f9b 100644
--- a/macros/luatex/generic/luaotfload/scripts-demo.tex
+++ b/macros/luatex/generic/luaotfload/scripts-demo.tex
@@ -1,8 +1,8 @@
\documentclass{standalone}
-\font\burmesefont={file:NotoSerifMyanmar-Regular.ttf:mode=harf;script=mymr;}
-\font\devafont={file:NotoSansDevanagari-Regular.ttf:mode=harf;script=deva;}
-\font\banglafont={file:NotoSansBengali-Regular.ttf:mode=harf;script=beng;}
+\font\burmesefont={file:NotoSerifMyanmar-Regular.ttf:mode=harf;script=mym2;}
+\font\devafont={file:NotoSansDevanagari-Regular.ttf:mode=harf;script=dev2;}
+\font\banglafont={file:NotoSansBengali-Regular.ttf:mode=harf;script=bng2;}
\font\tibetanfont={file:NotoSerifTibetan-Regular.ttf:mode=harf;script=tibt;}
\standaloneenv{tabular}
\begin{document}
@@ -12,4 +12,4 @@
\banglafont কণ্যা এখন কি করিবে\\
\tibetanfont སྐྱེས་ཙམ་ཉིད་ནས་ཆེ་མཐོངས་དང༌།
\end{tabular}
-\end{document} \ No newline at end of file
+\end{document}
diff --git a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
index 3c97c23522..b0ca589b30 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/shaper-demo.pdf b/macros/luatex/generic/luaotfload/shaper-demo.pdf
index 183b062e1f..6baf30aa1d 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo.pdf
Binary files differ