From a6d73b76eb19794e956fe1f3ab1f9bab3915cd7a Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Tue, 12 Nov 2019 03:01:13 +0000
Subject: CTAN sync 201911120301

---
 macros/generic/tracklang/tracklang.dtx | 108 +++++++++++++++++++++++++++++----
 1 file changed, 96 insertions(+), 12 deletions(-)

(limited to 'macros/generic/tracklang/tracklang.dtx')

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}
-- 
cgit v1.2.3

