summaryrefslogtreecommitdiff
path: root/macros/generic/tracklang/tracklang.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-11-12 03:01:13 +0000
committerNorbert Preining <norbert@preining.info>2019-11-12 03:01:13 +0000
commita6d73b76eb19794e956fe1f3ab1f9bab3915cd7a (patch)
tree26a9e14dec31508c4c4bd3ec69dfccef8c39bad2 /macros/generic/tracklang/tracklang.dtx
parent0e71c26d9aa79c6e92c3095d6c71f28a566e6054 (diff)
CTAN sync 201911120301
Diffstat (limited to 'macros/generic/tracklang/tracklang.dtx')
-rw-r--r--macros/generic/tracklang/tracklang.dtx108
1 files changed, 96 insertions, 12 deletions
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}