texlive[74422] branches/branch2024.final/Master: datatool-english
commits+karl at tug.org
commits+karl at tug.org
Mon Mar 3 22:23:22 CET 2025
Revision: 74422
https://tug.org/svn/texlive?view=revision&revision=74422
Author: karl
Date: 2025-03-03 22:23:22 +0100 (Mon, 03 Mar 2025)
Log Message:
-----------
datatool-english (branch) (3mar25)
Modified Paths:
--------------
branches/branch2024.final/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
Added Paths:
-----------
branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/
branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/DEPENDS.txt
branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/README.md
branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf
branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/
branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.dtx
branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.ins
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/databib-english.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn-utf8.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr-utf8.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-anglosaxon.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-CA.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-ZA.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-ascii.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-latin1.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-utf8.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english.ldf
branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/person-english.ldf
branches/branch2024.final/Master/tlpkg/tlpsrc/datatool-english.tlpsrc
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/DEPENDS.txt
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/DEPENDS.txt (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/DEPENDS.txt 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1 @@
+datatool
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/DEPENDS.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/README.md
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/README.md (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/README.md 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,99 @@
+# English Language Module for datatool v3.0+ (datatool-english)
+
+Version 1.0 (2025-03-01)
+
+Author: Nicola L. C. Talbot [dickimaw-books.com](https://www.dickimaw-books.com/)
+
+Licence: LPPL
+
+Home Page: https://github.com/nlct/datatool-english
+
+Required Packages:
+[datatool](https://ctan.org/pkg/datatool) (3.0+),
+[tracklang](https://ctan.org/pkg/tracklang) (1.6.4+)
+
+Provides English language localisation support for
+the `datatool` package (v3.0+). Encoding support for UTF-8 and ISO-8859-1
+(Latin 1). Any other encoding will be treated as US-ASCII.
+The `*.ldf` files should all be placed on TeX's path.
+
+These files don't require any explicit loading. They will
+automatically be input by `datatool-base.sty` (or relevant
+supplementary package) if they are found and required by the
+`tracklang` localisation settings. See the `datatool` and `tracklang` user
+manuals for further details.
+
+This bundle is specific to language support or particular
+language+region combinations where the region default depends on the
+language. Region files (such as `datatool-GB.ldf`) are provided
+with `datatool-regions` which needs to be installed separately. This
+separation allows arbitrary mix of language and region.
+
+Example:
+
+ \documentclass[en-GB]{article}
+ \usepackage{datatool-base}% v3.0
+ \newcommand{\mylist}{élan,elephant,élite,elk}
+ \begin{document}
+ Currency: \DTLdecimaltocurrency{1234.56}{\result}\result.
+
+ Original list: \DTLformatlist{\mylist}.
+
+ \DTLsortwordlist{\mylist}{\DTLsortwordcasehandler}
+ Sorted list: \DTLformatlist{\mylist}.
+ \end{document}
+
+If `datatool-english` is correctly installed, the result will be:
+
+ > Currency: £1,234.56.
+ > Original list: élan, elephant, élite and elk.
+ > Sorted list: élan, elephant, élite and elk.
+
+Otherwise the result will be:
+
+ > Currency: £1,234.56.
+ > Original list: élan, elephant, élite & elk.
+ > Sorted list: elephant, elk, élan & élite.
+
+(This assumes the region file `datatool-GB.ldf` provided with
+`datatool-regions` is also installed.)
+
+The language doesn't need to be an official language for the region.
+For example:
+
+ \documentclass{article}
+ \usepackage[locales={en-BE}]{datatool-base}% v3.0
+ \newcommand{\mylist}{élan,elephant,élite,elk}
+ \begin{document}
+ Currency: \DTLdecimaltocurrency{1234.56}{\result}\result.
+
+ Original list: \DTLformatlist{\mylist}.
+
+ \DTLsortwordlist{\mylist}{\DTLsortwordcasehandler}
+ Sorted list: \DTLformatlist{\mylist}.
+ \end{document}
+
+If both `datatool-english.ldf` (provided with this bundle) and
+`datatool-BE.ldf` (provided with `datatool-regions`) are installed,
+the result will be:
+
+ > Currency: 1.234,56€.
+ > Original list: élan, elephant, élite and elk.
+ > Sorted list: élan, elephant, élite and elk.
+
+
+See also:
+
+ - [`datatool-regions` (GitHub)](https://github.com/nlct/datatool-regions)
+ - [Localisation with datatool v3.0+](https://www.dickimaw-books.com/latex/tracklang/datatool-locale.shtml).
+
+This bundle also includes limited support for Old English
+(Anglo-Saxon) mainly to provide an example for a language that has
+multiple scripts (in this case, Latin and Runic) or for a language
+that has an extended Latin or non-Latin script. The language codes
+are `ang-Latn` for Anglo-Saxon Latin Script and `ang-Runr` for
+Anglo-Saxon Runic Script. There's only support for UTF-8.
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3 for the details of that
+license.
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf
===================================================================
(Binary files differ)
Index: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf 2025-03-03 21:22:14 UTC (rev 74421)
+++ branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf 2025-03-03 21:23:22 UTC (rev 74422)
Property changes on: branches/branch2024.final/Master/texmf-dist/doc/latex/datatool-english/datatool-english.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.dtx
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.dtx (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.dtx 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,5225 @@
+%\iffalse
+% datatool-english.dtx generated using makedtx version 1.2 (c) Nicola Talbot
+% Command line args:
+% -src "(datatool-english\.ldf)\Z=>\1"
+% -src "(datatool-english-.*\.ldf)\Z=>\1"
+% -src "(datatool-en-.*\.ldf)\Z=>\1"
+% -src "(databib-english\.ldf)\Z=>\1"
+% -src "(person-english\.ldf)\Z=>\1"
+% -src "(datatool-anglosaxon\.ldf)\Z=>\1"
+% -src "(datatool-ang-Latn\.ldf)\Z=>\1"
+% -src "(datatool-ang-Latn-.*\.ldf)\Z=>\1"
+% -src "(datatool-ang-Runr\.ldf)\Z=>\1"
+% -src "(datatool-ang-Runr-.*\.ldf)\Z=>\1"
+% -doc "datatool-english.tex"
+% -author "Nicola Talbot"
+% datatool-english
+% Created on 2025/3/2 22:14
+%\fi
+%\iffalse
+%<*package>
+%% \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 \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2025 Nicola Talbot, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+% arara: lualatex
+% arara: makeindex
+% arara: lualatex
+% arara: makeindex
+% arara: lualatex
+% arara: lualatex
+\PassOptionsToPackage{noprint}{doc}% command names are too long
+\documentclass{ltxdoc}
+
+\usepackage{fontspec}
+\usepackage{tcolorbox}
+\usepackage[left=2.5cm,right=2.5cm]{geometry}
+\usepackage[locales={ang-Runr,ang-Latn,en}]{datatool-base}
+
+\setromanfont{Noto Serif}
+\setsansfont{Noto Sans}
+\setmonofont{Noto Sans Mono}
+\newfontfamily\runefont{Noto Sans Runic}
+\NewDocumentCommand{\textrune}{m}{{\runefont #1}}
+
+\CheckSum{3245}
+
+\newcommand*{\sty}[1]{\textsf{#1}}
+\newcommand*{\file}[1]{\texorpdfstring{\nolinkurl{#1}}{#1}}
+\newcommand*{\filemeta}[3]{%
+ \texorpdfstring
+ {\nolinkurl{#1}\meta{#2}\nolinkurl{#3}}%
+ {#1<#2>#3}%
+}
+\newcommand*{\filemetameta}[5]{%
+ \texorpdfstring
+ {\nolinkurl{#1}\meta{#2}\nolinkurl{#3}\meta{#4}\nolinkurl{#5}}%
+ {#1<#2>#3<#4>#5}%
+}
+\newcommand*{\opt}[1]{\textsf{#1}}
+\newcommand*{\qt}[1]{“#1”}
+\newcommand*{\setlocaleopts}[1]{%
+ \cs{DTLsetLocaleOptions}\allowbreak
+ \texttt{\brackets{\strong{#1}}}\allowbreak
+ \marg{key=val list}%
+}
+
+\definecolor{defbackground}{rgb}{1,1,0.75}
+\newtcolorbox{definition}{colback=defbackground}
+\newtcolorbox{important}{colback=red!5!white,colframe=red}
+
+\tcbuselibrary{documentation}
+\tcbset{verbatim ignore percent}
+
+\RecordChanges
+\PageIndex
+
+\newcommand{\myLatnList}{f, u, þ, o, r, c}
+\newcommand{\myRunrList}{
+ \textrune{ᚠ},
+ \textrune{ᚢ},
+ \textrune{ᚦ},
+ \textrune{ᚩ},
+ \textrune{ᚱ},
+ \textrune{ᚳ}
+}
+\DTLshufflelist\myLatnList
+\DTLshufflelist\myRunrList
+
+\title{English and Old English Localisation Support for \sty{datatool} Package}
+\author{Nicola L. C. Talbot}
+\date{2025-03-01 version 1.0}
+
+\begin{document}
+\DocInput{datatool-english.dtx}
+\end{document}
+%</driver>
+%\fi
+%\maketitle
+%
+%\begin{abstract}
+%This is the English and Old English localisation support for the \sty{datatool}
+%package (version 3.0+). This needs to be installed in addition to
+%\sty{datatool}. To ensure regional support, you will also need to
+%install \sty{datatool-regions}.
+%\end{abstract}
+%
+%\tableofcontents
+%
+%\section{Introduction}
+%\label{sec:intro}
+%
+%This bundle provides the English and Old English modules for \sty{datatool} v3.0+.
+%The files simply need to be installed on \TeX's path.
+%(They will be ignored if a pre-3.0 version of \sty{datatool} is installed.)
+%The \sty{datatool-base} package (which is automatically loaded by
+%\sty{datatool}) uses \sty{tracklang}'s interface for detecting
+%localisation settings and finding the appropriate files.
+%If you use \sty{babel} or \sty{polyglossia}, make sure that you
+%specify the document languages before the first package to load
+%\sty{tracklang}.
+%
+%For example:
+%\begin{dispListing}
+%\usepackage[british]{babel}
+%\usepackage{datatool-base}
+%\end{dispListing}
+%Alternatively, if you are not using a language package, simply use
+%the \opt{locales} option. For example:
+%\begin{dispListing}
+%\usepackage[locales={en-GB}]{datatool-base}
+%\end{dispListing}
+%Any option that can be passed to \sty{datatool-base} can also be
+%passed to \sty{datatool} but if \sty{datatool-base} has already been
+%loaded, it will be too late to use the \opt{locales} option.
+%For example:
+%\begin{dispListing}
+%\usepackage[locales={en-GB}]{datatool}
+%\end{dispListing}
+%But not:
+%\begin{dispListing*}{title={Incorrect!},colframe=red}
+%\usepackage{datatool-base}
+%\usepackage[locales={en-GB}]{datatool}
+%\end{dispListing*}
+%
+%If another package that also loads \sty{tracklang} is loaded first,
+%then \sty{datatool-base} can pick up the settings from that. For
+%example:
+%\begin{dispListing}
+%\usepackage[en-GB]{datetime2}
+%\usepackage{datatool}
+%\end{dispListing}
+%
+%For Old English (Anglo-Saxon), you need the three letter language
+%code \qt{ang} and the four letter script code: \qt{Latn}
+%(Latin) or \qt{Runr} (Runic). Old English support is very limited
+%and mainly provided as an example of how to support extended Latin
+%and non-Latin languages. See section~\ref{sec:anglosaxon} for
+%further information.
+%
+%If the regional file isn't installed or if no region is associated
+%with the locale then only the language settings will be implemented.
+%For example:
+%\begin{dispListing}
+%\usepackage[english]{babel}
+%\usepackage{datatool-base}
+%\end{dispListing}
+%In this case there is no region so only \file{datatool-english.ldf}
+%will be loaded.
+%
+%Supplementary packages provided with \sty{datatool} can also have
+%the locales provided. For example:
+%\begin{dispListing}
+%\documentclass{article}
+%\usepackage[locales={en}]{datagidx}
+%\newgidx{index}{Index}
+%\newterm{élan}
+%\newterm{elephant}
+%\newterm{élite}
+%\newterm{elk}
+%\begin{document}
+%\gls{elk}, \gls{élan} \gls{élite} and \gls{elephant}.
+%\printterms
+%
+%\end{dispListing}
+%As with \sty{datatool}, these supplementary packages internally load
+%\sty{datatool-base} so if that has already been loaded, then the
+%localisation support should already have been set.
+%
+%The \sty{glossaries} package also loads \sty{datatool-base}
+%and, as from \sty{glossaries} version 4.55, it will check for the
+%new \sty{datatool-base} commands. If they are defined then
+%\cs{printnoidxglossary} will switch to this
+%new method of sorting otherwise it will fallback on the old method.
+%So installing \sty{datatool-english} will not only affect
+%\sty{datatool} and its associated packages but also
+%\sty{glossaries}. For example:
+%\begin{dispListing}
+%\documentclass{article}
+%\usepackage[locales={en},index,style=indexgroup]{glossaries}
+%\makenoidxglossaries
+%\newterm{élan}
+%\newterm{elephant}
+%\newterm{élite}
+%\newterm{elk}
+%\begin{document}
+%\gls{elk}, \gls{élan} \gls{élite} and \gls{elephant}.
+%\printnoidxglossary[type=index]
+%
+%\end{dispListing}
+%
+%Each \filemeta{datatool-}{lang}{.ldf} language file should
+%redefine:
+%
+%\begin{docCommand}{DTLandname}{}
+%Should expand to the appropriate translation of \qt{and}
+%(used when formatting comma-separated lists).
+%\end{docCommand}
+%
+%Ideally, the language file should also redefine the
+%following commands, which are used by \cs{DTLgetDataTypeName},
+%although these are mostly provided for debugging.
+%(The Anglo-Saxon support doesn't bother to redefine them.)
+%
+%\begin{docCommand}{DTLdatatypeunsetname}{}
+%Should expand to the appropriate translation of \qt{unknown}
+%(to indicate an unknown data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypestringname}{}
+%Should expand to the appropriate translation of \qt{string}
+%(to indicate a string data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypeintegername}{}
+%Should expand to the appropriate translation of \qt{integer}
+%(to indicate an integer data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypedecimalname}{}
+%Should expand to the appropriate translation of \qt{decimal}
+%(to indicate a decimal data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypecurrencyname}{}
+%Should expand to the appropriate translation of \qt{currency}
+%(to indicate a currency data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypedatetimename}{}
+%Should expand to the appropriate translation of \qt{datetime}
+%(to indicate a datetime data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypedatename}{}
+%Should expand to the appropriate translation of \qt{date}
+%(to indicate a date data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypetimename}{}
+%Should expand to the appropriate translation of \qt{time}
+%(to indicate a time data type).
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLdatatypeinvalidname}{}
+%Should expand to the appropriate translation of \qt{invalid}
+%(to indicate an invalid data type identifier).
+%\end{docCommand}
+%
+%Additionally, the following commands take arguments that may simply
+%ignore the argument and expand to fixed text:
+%
+%\begin{docCommand}{dtlnonlettergroup}{\marg{char}}
+%Used for non-letter groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Symbols}.
+%\end{docCommand}
+%
+%\begin{docCommand}{dtlnumbergroup}{\marg{char}}
+%Used for number groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Numbers}.
+%\end{docCommand}
+%
+%\begin{docCommand}{dtlcurrencygroup}{\marg{char}}
+%Used for currency groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Currency}.
+%\end{docCommand}
+%
+%\begin{docCommand}{dtldatetimegroup}{\marg{char}}
+%Used for datetime groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Timestamps}.
+%\end{docCommand}
+%
+%\begin{docCommand}{dtldategroup}{\marg{char}}
+%Used for date groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Dates}.
+%\end{docCommand}
+%
+%\begin{docCommand}{dtltimegroup}{\marg{char}}
+%Used for time groups. This would typically ignore the argument
+%and expand to the appropriate translation of \qt{Times}.
+%\end{docCommand}
+%
+%The \cs{dtllettergroup} would more typically convert the argument to title
+%case.
+%
+%\section{English (\qt{en})}
+%
+%The \file{datatool-english.ldf} file provides support for English
+%orthography (section~\ref{sec:orthography}), parsing
+%dates and times (experimental, see section~\ref{sec:temporal}),
+%and for providing fixed text translations.
+%
+%Aside from the letter group commands, described in
+%section~\ref{sec:orthography}, the only fixed text for
+%\sty{datatool-base} is \cs{DTLandname} and the textual data types
+%used by \cs{DTLgetDataTypeName}. These are redefined implicitly
+%via the command \cs{DTLenTranslations}, which allows an alternative
+%definition of \cs{DTLandname} to be provided without having to keep
+%appending to the caption hook.
+%
+%\begin{docCommand}{DTLenLocaleHook}{}
+%The \file{datatool-english.ldf} file provides an intermediary command
+%\cs{DTLenLocaleHook} that's automatically added to the captions hook.
+%This performs all the \sty{datatool-base} English language redefinitions.
+%There should be little reason to actually use this command anywhere
+%unless you're not using a language package with caption hooks.
+%\end{docCommand}
+%
+%Options provided by \file{datatool-english.ldf} may be set with
+%\setlocaleopts{en}. Currently, there is only one option.
+%
+%\begin{docKey}{and}{=\meta{setting}}{initial \opt{word}}
+%This determines the definition of \cs{DTLandname} within
+%\cs{DTLenSetAndName} used by the translations hook
+%\cs{DTLenTranslations}. The value may be:
+%\docValue{word} (define \cs{DTLandname} to expand to
+%\qt{and}) or \docValue{amp} (define \cs{DTLandname}
+%to expand to \cs{\&}).
+%\end{docKey}
+%
+%Aside from \file{datatool-english.ldf}, there is also
+%\file{databib-english.ldf} to provide localisation support
+%for \sty{databib} (see section~\ref{sec:databib})
+%and \file{person-english.ldf} to provide localisation support
+%for the \sty{person} package (see section~\ref{sec:person}).
+%
+%\subsection{Orthography}
+%\label{sec:orthography}
+%
+%The \file{datatool-english.ldf} file provides support for English
+%orthography. This deals with how words are sorted according to the
+%English alphabet. The way that the new \sty{datatool} v3.0 sorting
+%commands work is to use a handler function that converts the
+%original content into a byte string. Since there are no byte array
+%data types in \TeX, this is implemented by converting the original
+%string into an ASCII string in such a way that sorting by character
+%code will produce the desired order.
+%
+%With the newer \cs{DTLsortwordlist}, this processing is performed
+%once for each item in the list prior to sorting to allow for a
+%faster character code sort of a temporary sequence variable that
+%stores both the original (actual value) and the transformed (sort
+%value) item. This allows the original item to be restored
+%afterwards. (You can use \cs{show} or \cs{clist\_show:N} on the
+%comma-separated list command afterwards to double-check this
+%information.)
+%
+%For example, suppose the document starts with:
+%\begin{dispListing*}{title={\sty{datatool} v3.0+}}
+%\documentclass{article}
+%\usepackage[locales={en}]{datatool}
+%\end{dispListing*}
+%\DTLenLocaleHook
+%If \file{datatool-english.ldf} is installed:
+%\begin{dispExample*}{title={With Localisation}}
+%\newcommand{\mylist}{élan,zebra,elephant,ant,élite,elk}
+%\DTLsortwordlist{\mylist}{\DTLsortwordcasehandler}
+%Sorted list: \DTLformatlist{\mylist}.
+%\end{dispExample*}
+%However, if \file{datatool-english.ldf} isn't installed (or if
+%English support hasn't been requested) the resulting list would be:
+%\begingroup
+%\DTLresetLanguage
+%\begin{dispExample*}{title={No Localisation}}
+%\newcommand{\mylist}{élan,zebra,elephant,ant,élite,elk}
+%\DTLsortwordlist{\mylist}{\DTLsortwordcasehandler}
+%Sorted list: \DTLformatlist{\mylist}.
+%\end{dispExample*}
+%\endgroup
+%This is because a simple character code comparison has been used.
+%(Note also the use of the default \& instead of \qt{and}.)
+%
+%The \cs{DTLsortwordcasehandler} function is for case-sensitive word
+%sorting, whereas the \cs{DTLsortwordhandler} function is for
+%case-insensitive word sorting and simply converts each element to
+%lowercase before processing using the locale handler. There are
+%analogous functions for letter-order comparisons which strip spaces
+%and hyphens before processing (see the \sty{datatool} manual for
+%further details).
+%
+%The \cs{DTLsortdata} command, provided by \sty{datatool} v3.0+ for
+%sorting databases, works in a similar way to \cs{DTLsortwordlist}
+%and uses the same handler functions. For example:
+%\begin{dispListing}
+%\documentclass{article}
+%\usepackage[locales={en}]{datatool}
+%
+%\DTLaction{new}
+%\DTLaction[ assign = { name = Annie, age = 40 } ]{new row}
+%\DTLaction[ assign = { name = Ele, age = 80 } ]{new row}
+%\DTLaction[ assign = { name = Éleanor, age = 28 } ]{new row}
+%\DTLaction[ assign = { name = Zack, age = 47 } ]{new row}
+%\DTLaction[ assign = { name = Elva, age = 53 } ]{new row}
+%\DTLaction[ assign = { name = Æthelwulf, age = 95 } ]{new row}
+%
+%\DTLsortdata{}{name}
+%\begin{document}
+%\DTLaction{display}
+%
+%\end{dispListing}
+%If \file{datatool-english.ldf} is installed, then the order will be:
+%Æthelwulf, Annie, Ele, Éleanor, Elva, Zack.
+%
+%Without \file{datatool-english.ldf}, the order will be:
+%Annie, Ele, Elva, Zack, Æthelwulf, Éleanor.
+%
+%If letter groups are required, an extra column can be added to the
+%database with the corresponding letter group obtained from sorting:
+%\begin{dispListing}
+%\DTLsortdata[save-group]{}{name}
+%\end{dispListing}
+%The letter group is typically the first letter of the sort value
+%or the actual value but this may not be the case for some languages,
+%so the code for obtaining the first letter of a word is adjusted by
+%the language hook.
+%
+%The groups obtained from sorting are letter groups if the sorted
+%item starts with an alphabetical character. If the value is
+%determined to be a currency, it will be considered part of the
+%currency group, if the value is determined to be a number (without a
+%currency prefix) then it will be considered part of the number
+%group, otherwise it will be in the non-letter group.
+%
+%The titles for all these groups are obtained with the
+%\sty{datatool-base} commands
+%\cs{dtllettergroup}, \cs{dtlnonlettergroup}, \cs{dtlnumbergroup}
+%and \cs{dtlcurrencygroup} which are all redefined by the language
+%hook.
+%
+%In the case of English, the currency group title simply expands to
+%\qt{Currency}, the number group title simply expands to
+%\qt{Numbers}, the non-letter group title simply expands to
+%\qt{Symbols}. The letter group title expands to its argument
+%converted to title case.
+%
+%If you need to make any adjustments, the following commands are
+%provided by \file{datatool-english.ldf} for the handler and
+%groups.
+%
+%\begin{docCommand}{DTLenLocaleHandler}{\marg{tl-var}}
+%Converts the token list variable containing the sort value.
+%You may redefine this command to add support for additional
+%characters, but bear in mind that the more complex the regular
+%expression the longer the document build.
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLenLocaleGetGroupString}{\marg{actual}\marg{sort}\marg{tl-var}}
+%Sets \meta{tl-var} to the applicable content in preparation for
+%extracting the initial letter, where \meta{actual} is the original
+%value and \meta{sort} is the sort value obtained after processing
+%by the handler. (Afterwards, the expansion of \meta{tl-var} will
+%then be passed as the \meta{word} argument of \cs{DTLenLocaleGetInitialLetter}.)
+%
+%For English, this is straight-forward
+%as the sort value is usually appropriate for this.
+%If you redefine this command to set \meta{tl-var} to the actual
+%value then accented characters will be considered separate letter
+%groups. This can lead to odd results.
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLenLocaleGetInitialLetter}{\marg{word}\marg{tl-var}}
+%Gets the initial letter of \meta{word} and stores it in the given
+%token list variable.
+%\end{docCommand}
+%
+%\begin{docCommand}{DTLenSetLetterGroups}{}
+%Redefines the group commands. This can be redefined if different
+%titles are required.
+%\end{docCommand}
+%
+%\subsection{Dates and Times}
+%\label{sec:temporal}
+%
+%This is still an experimental feature. As from v3.0, \sty{datatool}
+%now has additional data types: date, time and datetime.
+%\emph{Parsing for these is \strong{off} by default but may be enabled.}
+%Without the language support, only ISO dates, times and timestamps
+%can be parsed. The order (dmy, mdy, ymd) is usually set by the
+%region file (provided with \sty{datatool-regions}).
+%For example, \file{datatool-GB.ldf} sets the order to dmy
+%whereas \file{datatool-US.ldf} sets the order to mdy.
+%The region files only deal with numeric dates and times but
+%have a hook to allow supporting language files to extend this to
+%parsing temporal values that contain textual content, such as month
+%names.
+%
+%The following commands are provided. Note that they use
+%\LaTeX3 syntax, which needs to be enabled.
+%
+%\begin{docCommand*}{datatool_en_get_monthname_map:n}{ \marg{month}}
+%Gets the number associated with the given English month name.
+%For example, January or Jan should result in 1.
+%\end{docCommand*}
+%
+%\begin{docCommand*}{datatool_en_if_pm:nTF}{ \marg{text} \marg{true} \marg{false}}
+%Tests if \meta{text} represents afternoon (\qt{pm},
+%\qt{in the afternoon}, \qt{in the evening}, \qt{midnight}).
+%This indicates that 12 needs to be added to the hour for 12-hour
+%formats. Not that \qt{noon} is not \emph{after} noon (12 noon +12 would
+%result in 24, which is incorrect for noon) and
+%\qt{midnight} would need to have the hour as 12 not 0 (0 midnight +12 would
+%result in 12, which is incorrect for midnight).
+%\end{docCommand*}
+%
+%\begin{docCommand*}{datatool_en_monthname:n}{ \marg{num}}
+%Expands to the month name for \meta{num} (1 for January, etc).
+%\end{docCommand*}
+%
+%\begin{docCommand*}{datatool_en_shortmonthname:n}{ \marg{num}}
+%Expands to the abbreviated month name. This will be defined to
+%\cs{DTMenglishshortmonthname} if that command exists
+%(\sty{datetime2-english})
+%or to:
+%\end{docCommand*}
+%\begin{docCommand*}{datatool_en_shortmonthname_dotless:n}{ \marg{num}}
+%Expands to a three-letter abbreviation without a trailing dot.
+%\end{docCommand*}
+%An alternative command is also provided:
+%\begin{docCommand*}{datatool_en_shortmonthname_dotted:n}{ \marg{num}}
+%This expands to a three or four letter abbreviation followed by a
+%dot except for short month names, such as May, that aren't
+%abbreviated.
+%\end{docCommand*}
+%
+%\subsection{Support for \sty{databib}}
+%\label{sec:databib}
+%
+%The \sty{datatool-english} bundle provides English language support for
+%the \sty{databib} package. Options may be set with
+%\setlocaleopts{en/databib}.
+%
+%Currently, there is only one option:
+%\begin{docKey}{short-month-style}{=\meta{style}}{initial \opt{dotted}}
+%This determines the month name abbreviations for
+%\sty{databib}'s \opt{abbrv} style.
+%The value may be \docValue{dotted} (use dotted month
+%abbreviations) or \docValue{dotless} (use three letter abbreviations
+%with no dot).
+%\end{docKey}
+%
+%\begin{docCommand}{DataBibEnglish}{}
+%The \file{databib-english.ldf} file defines the
+%intermediary command \cs{DataBibEnglish}
+%that redefines all the fixed text commands. This command
+%is automatically added to the captions hook if \sty{databib}
+%is loaded.
+%\end{docCommand}
+%
+%\subsection{Support for \sty{person}}
+%\label{sec:person}
+%
+%\begin{docCommand}{DataToolPersonEnglish}{}
+%The \sty{datatool-english} bundle provides English language support for
+%the \sty{person} package. There are currently no options.
+%The \file{person-english.ldf} file defines the intermediary
+%command \cs{DataToolPersonEnglish}
+%that redefines all the fixed text commands. This command
+%is automatically added to the captions hook if the \sty{person}
+%package is loaded.
+%\end{docCommand}
+%
+%\section{Old English (Anglo-Saxon, \qt{ang})}
+%\label{sec:anglosaxon}
+%
+%This bundle also supplies very limited support for Old English
+%(Anglo-Saxon). Only UTF-8 encoding is supported. This is primarily
+%to provide an example of how to support a language with multiple
+%scripts (or simply a language with an extended Latin or non-Latin
+%script). You will need to identify the script as well as the
+%language. For the Latin script:
+%\begin{dispListing}
+%\usepackage[locales={ang-Latn}]{datatool-base}
+%\end{dispListing}
+%For the Runic script:
+%\begin{dispListing}
+%\usepackage[locales={ang-Runr}]{datatool-base}
+%\end{dispListing}
+%Note that the script indicates the script of the input or source
+%text. That is, the text used in the document source code, which
+%may not correspond to the glyphs visible in the PDF file.
+%
+%For example, suppose a package provides a command called, say \cs{runic},
+%which expects Latin characters in the argument but the font encoding
+%ensures that those characters appear as runes in the PDF (for
+%example, the hypothetical command
+%\texttt{\cs{runic}\brackets{fuþorc}} in the source code would be
+%rendered as \textrune{ᚠᚢᚦᚩᚱᚳ} in the PDF). In this case, the source
+%is Latin and so \qt{ang-Latn} is needed when specifying the locale.
+%
+%If, however, the source code actually contains characters from
+%the Runic Unicode block (with an appropriate font that supports
+%those characters), then the source is Runic and so \qt{ang-Runr}
+%is needed when specifying the locale.
+%
+%If there is no captions hook, the last locale to be tracked is the
+%one that will be in effect. You can switch using the following:
+%\begin{docCommand}{DTLangLatnLocaleHook}{}
+%Switch to \qt{ang-Latn} (if \file{datatool-ang-Latn.ldf} has been
+%loaded, undefined otherwise).
+%\end{docCommand}
+%\begin{docCommand}{DTLangRunrLocaleHook}{}
+%Switch to \qt{ang-Runr} (if \file{datatool-ang-Runr.ldf} has been
+%loaded, undefined otherwise).
+%\end{docCommand}
+%
+%The \qt{ang-Latn} localisation support provides the following
+%option, which may be set using
+%\setlocaleopts{ang-Latn}.
+%
+%\begin{docKey}[ang-Latn]{order}{=\meta{setting}}{initially \opt{harley}}
+%Determines the letter order. The \meta{setting} may be:
+%\docValue{harley} (A-Z, Ƿ, Ð, Æ, Þ), \docValue{stowe}
+%(ending with Ƿ, Ð, Þ), \docValue{titus}
+%(ending with Ƿ, Þ, Ð) or \docValue{futhorc} (starts f, u, þ, o, r, c).
+%\end{docKey}
+%
+%The \qt{ang-Runr} localisation support provides the following
+%option, which may be set using
+%\setlocaleopts{ang-Runr}.
+%
+%\begin{docKey}[ang-Runr]{order}{=\meta{setting}}{initially \opt{punc-futhorc}}
+%Determines the rune order. The \meta{setting} may be:
+%\docValue{punc-unicode} (punctuation first, followed by Unicode order
+%for the rest),
+%\docValue{punc-futhorc} (Old English Rune Poem order, punctuation
+%first), or
+%\docValue{futhorc-punc} (Old English Rune Poem order, punctuation
+%last).
+%Note that the \qt{punc-unicode} order puts the punctuation first,
+%followed by the other runes, even though the punctuation runes
+%actually come towards the end of the Runic block. The Old English
+%Rune Poem order is fuþorc order, with the additional non-poem runes
+%appended at the end.
+%The Tironian et (which isn't a rune) is added to the end of the
+%non-punctuation runes.
+%\end{docKey}
+%
+%Both ang-Latn and ang-Runr define \cs{DTLandname} to the Tironian
+%et (⁊).
+%This is done via the following hooks:
+%\begin{docCommand}{DTLangLatnTranslations}{}
+%This is defined in \file{datatool-ang-Latn.ldf} to update the
+%definition of \cs{DTLandname} and is implemented by
+%\cs{DTLangLatnLocaleHook}.
+%\end{docCommand}
+%\begin{docCommand}{DTLangRunrTranslations}{}
+%This is defined in \file{datatool-ang-Runr.ldf} to update the
+%definition of \cs{DTLandname} and is implemented by
+%\cs{DTLangRunrLocaleHook}.
+%\end{docCommand}
+%The other language-sensitive name commands aren't provided by the
+%Anglo-Saxon support.
+%
+%There is no other localisation support (that is, no other
+%fixed text or date/time support). The remaining language-sensitive
+%commands are reset with \cs{DTLresetLanguage} back to their initial
+%definitions.
+%
+%Suppose the document uses \sty{fontspec} with fonts that support
+%the required characters, as follows:
+%\begin{dispListing}
+%\usepackage{fontspec}
+%\setromanfont{Noto Serif}
+%\setsansfont{Noto Sans}
+%\setmonofont{Noto Sans Mono}
+%\newfontfamily\runefont{Noto Sans Runic}
+%\NewDocumentCommand{\textrune}{m}{{\runefont #1}}
+%\end{dispListing}
+%and \sty{datatool-base} has been loaded with support for
+%both Latin and Runic Anglo-Saxon:
+%\begin{dispListing}
+%\usepackage[locales={ang-Runr,ang-Latn}]{datatool-base}
+%\end{dispListing}
+%and suppose the command \cs{myLatnList}
+%is defined to expand to the comma-separated list
+%\texttt{\myLatnList}
+%and \cs{myRunrList}
+%is defined to expand to the comma-separated list
+%\texttt{\def\textrune#1{\allowbreak\cs{textrune}\brackets{{\runefont #1}}}\myRunrList}
+%then these lists can be sorted in the document
+%as follows:
+%\begin{dispExample}
+%\DTLangLatnLocaleHook
+%\DTLsetLocaleOptions{ang-Latn}{order=harley}
+%\DTLsortwordlist{\myLatnList}{\DTLsortletterhandler}
+%Sorted list (Harley): \DTLformatlist{\myLatnList}.
+%
+%\DTLsetLocaleOptions{ang-Latn}{order=futhorc}
+%\DTLsortwordlist{\myLatnList}{\DTLsortletterhandler}
+%Sorted list (fuþorc): \DTLformatlist{\myLatnList}.
+%
+%\DTLangRunrLocaleHook
+%\DTLsetLocaleOptions{ang-Runr}{order=futhorc-punc}
+%\DTLsortwordlist{\myRunrList}{\DTLsortwordhandler}
+%Sorted list: \DTLformatlist{\myRunrList}.
+%\end{dispExample}
+%Note that the letter handler is best with \qt{ang-Latn} as there are
+%many Anglo-Saxon words with hyphens. (Bosworth Toller's Anglo-Saxon
+%dictionary ignores hyphens in the order. For example,
+%\qt{á-ǽlan} comes between \qt{aad} and \qt{áǽðan}.)
+%
+%\StopEventually{%
+% \PrintChanges
+% \PrintIndex
+%}
+%
+%
+%\section{The Code}
+%\iffalse
+% \begin{macrocode}
+%<*datatool-english.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English LDF for \sty{datatool-base}
+%(\file{datatool-english.ldf})}
+% Provide support for English (\sty{tracklang} root language
+% \qt{english}).
+% NB number group and decimal symbols and currencies should go in
+% region files.
+% \begin{macrocode}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Try loading \filemeta{datatool-english-}{encoding}{.ldf}
+% \begin{macrocode}
+\TrackLangRequestResource{english-\TrackLangEncodingName}
+{
+% \end{macrocode}
+% Not found, fallback on \file{datatool-english-ascii.ldf}
+% \begin{macrocode}
+ \csuse{datatool_locale_warn:nn}{datatool-english}%
+ {%
+ No support for `english' with
+ encoding `\TrackLangEncodingName'
+ (falling back on US-ASCII)%
+ }%
+ \TrackLangRequireResource{english-ascii}
+}
+% \end{macrocode}
+% Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Any options may be defined with
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { en } { ... }
+%\end{dispListing}
+% or
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { en / subgroup } { ... }
+%\end{dispListing}
+% (Syntax as per \verb|\keys_define:nn| )
+%
+%\subsubsection{Orthography rules}
+%NB \cs{DTLenLocaleHandler} is defined in the applicable encoding
+%file loaded above.
+%
+%\begin{macro}{\DTLenLocaleGetInitialLetter}
+%Get the first letter of the word according to the locale's alphabet and
+%store in token list variable.
+% \begin{macrocode}
+\newcommand \DTLenLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_letter:nN { #1 } #2
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTLenLocaleGetGroupString}
+%\begin{definition}
+%\cs{DTLenLocaleGetGroupString}\marg{actual}\marg{sort value}\marg{tl-var}
+%\end{definition}
+%Use the sort value rather than the actual value.
+%This ensures that the accents are stripped, but it will mean that
+%the currency and punctuation marks will have their initial marker.
+%Bear in mind that this is only used for values that have been
+%identified as strings. It's not used by other data types.
+% \begin{macrocode}
+\newcommand \DTLenLocaleGetGroupString [ 3 ]
+ {
+ \tl_set:Nn #3 { #2 }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%Provide intermediary command that defines the letter group
+%commands for English.
+% \begin{macrocode}
+\newcommand \DTLenSetLetterGroups
+ {
+ \renewcommand \dtllettergroup [ 1 ]
+ { \text_titlecase_first:n { ##1 } }
+ \renewcommand \dtlnonlettergroup [ 1 ] { Symbols }
+ \renewcommand \dtlnumbergroup [ 1 ] { Numbers }
+ \renewcommand \dtlcurrencygroup [ 2 ] { Currency }
+ \renewcommand \dtldatetimegroup [ 1 ] { Timestamps }
+ \renewcommand \dtldategroup [ 1 ] { Dates }
+ \renewcommand \dtltimegroup [ 1 ] { Times }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { and }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\newcommand \DTLenTranslations
+ {
+ \DTLenSetAndName
+ \renewcommand \DTLdatatypeunsetname { unset }
+ \renewcommand \DTLdatatypestringname { string }
+ \renewcommand \DTLdatatypeintegername { integer }
+ \renewcommand \DTLdatatypedecimalname { decimal }
+ \renewcommand \DTLdatatypecurrencyname { currency }
+ \renewcommand \DTLdatatypedatetimename { date-time }
+ \renewcommand \DTLdatatypedatename { date }
+ \renewcommand \DTLdatatypetimename { time }
+ \renewcommand \DTLdatatypeinvalidname { invalid }
+ }
+% \end{macrocode}
+%Provide options
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { en }
+ {
+ and .choice:,
+ and / word .code:n =
+ {
+ \renewcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { and }
+ }
+ \tl_if_eq:NnT \l_datatool_current_language_tl { en }
+ { \DTLenSetAndName }
+ } ,
+ and / amp .code:n =
+ {
+ \renewcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { \& }
+ }
+ \tl_if_eq:NnT \l_datatool_current_language_tl { en }
+ { \DTLenSetAndName }
+ } ,
+ }
+% \end{macrocode}
+%
+%\subsubsection{Dates and Times}
+% This section is still experimental.
+%
+% An appropriate region needs to also be specified and loaded to
+% support parsing English dates. (The region determines dmy, mdy or
+% ymd.)
+%
+%Provide a shortcut command to get the month name to number mapping.
+% \begin{macrocode}
+\cs_new:Nn \datatool_en_get_monthname_map:n
+ {
+ \datatool_region_get_monthname_map:n { en / #1 }
+ }
+% \end{macrocode}
+%Define month name to number mapping for this language.
+% \begin{macrocode}
+\datatool_region_set_monthname_map:nn { en / January } { 01 }
+\datatool_region_set_monthname_map:nn { en / Jan } { 01 }
+\datatool_region_set_monthname_map:nn { en / February } { 02 }
+\datatool_region_set_monthname_map:nn { en / Feb } { 02 }
+\datatool_region_set_monthname_map:nn { en / March } { 03 }
+\datatool_region_set_monthname_map:nn { en / Mar } { 03 }
+\datatool_region_set_monthname_map:nn { en / April } { 04 }
+\datatool_region_set_monthname_map:nn { en / Apr } { 04 }
+\datatool_region_set_monthname_map:nn { en / May } { 05 }
+\datatool_region_set_monthname_map:nn { en / June } { 06 }
+\datatool_region_set_monthname_map:nn { en / Jun } { 06 }
+\datatool_region_set_monthname_map:nn { en / July } { 07 }
+\datatool_region_set_monthname_map:nn { en / Jul } { 07 }
+\datatool_region_set_monthname_map:nn { en / August } { 08 }
+\datatool_region_set_monthname_map:nn { en / Aug } { 08 }
+\datatool_region_set_monthname_map:nn { en / September } { 09 }
+\datatool_region_set_monthname_map:nn { en / Sep } { 09 }
+\datatool_region_set_monthname_map:nn { en / Sept } { 09 }
+\datatool_region_set_monthname_map:nn { en / October } { 10 }
+\datatool_region_set_monthname_map:nn { en / Oct } { 10 }
+\datatool_region_set_monthname_map:nn { en / November } { 11 }
+\datatool_region_set_monthname_map:nn { en / Nov } { 11 }
+\datatool_region_set_monthname_map:nn { en / December } { 12 }
+\datatool_region_set_monthname_map:nn { en / Dec } { 12 }
+% \end{macrocode}
+%
+% This file currently only deals with parsing dates that have month
+% names and possibly weekday names. It does not yet have support for
+% providing formatting (since that can be done with \sty{datetime2}).
+%
+% The functions below that go from month number to name are mainly just for the
+% benefit of \file{databib-english.ldf} although may be used in a custom
+% definition of \cs{DataToolDateFmt} if required.
+%
+%If \sty{datetime2} has already been loaded, use the command
+%provided by \file{datetime2-english-base.ldf}.
+% \begin{macrocode}
+\cs_if_exist:NTF \DTMenglishmonthname
+ {
+ \cs_new:Nn \datatool_en_monthname:n
+ {
+ \DTMenglishmonthname { #1 }
+ }
+ }
+ {
+ \cs_new:Nn \datatool_en_monthname:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { January }
+ { 2 } { February }
+ { 3 } { March }
+ { 4 } { April }
+ { 5 } { May }
+ { 6 } { June }
+ { 7 } { July }
+ { 8 } { August }
+ { 9 } { September }
+ { 10 } { October }
+ { 11 } { November }
+ { 12 } { December }
+ }
+ }
+ }
+% \end{macrocode}
+% Similarly for short month names.
+% \begin{macrocode}
+\cs_if_exist:NTF \DTMenglishshortmonthname
+ {
+ \cs_new:Nn \datatool_en_shortmonthname:n
+ {
+ \DTMenglishshortmonthname { #1 }
+ }
+ }
+ {
+ \cs_new:Nn \datatool_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotless:n { #1 }
+ }
+ }
+% \end{macrocode}
+%Dotless short month style.
+% \begin{macrocode}
+\cs_new:Nn \datatool_en_shortmonthname_dotless:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { Jan }
+ { 2 } { Feb }
+ { 3 } { Mar }
+ { 4 } { Apr }
+ { 5 } { May }
+ { 6 } { Jun }
+ { 7 } { Jul }
+ { 8 } { Aug }
+ { 9 } { Sep }
+ { 10 } { Oct }
+ { 11 } { Nov }
+ { 12 } { Dec }
+ }
+ }
+% \end{macrocode}
+% Dotted short month style.
+% (Abbreviated month names end with a dot.)
+% \begin{macrocode}
+\cs_new:Nn \datatool_en_shortmonthname_dotted:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { Jan. }
+ { 2 } { Feb. }
+ { 3 } { Mar. }
+ { 4 } { Apr. }
+ { 5 } { May }
+ { 6 } { June }
+ { 7 } { July }
+ { 8 } { Aug. }
+ { 9 } { Sept. }
+ { 10 } { Oct. }
+ { 11 } { Nov. }
+ { 12 } { Dec. }
+ }
+ }
+% \end{macrocode}
+%Regular expression to match week day name.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_weekday_name_regex
+ {
+ Monday | Mon\.? | Tuesday | Tues?\.? | Wednesday | Wed\.?
+ | Thursday | Thur?\.? | Friday | Fri\.?
+ | Saturday | Sat\.? | Sunday | Sun\.?
+ }
+% \end{macrocode}
+%Regular expression to match month name.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_month_name_regex
+ {
+ January | Jan\.? | February | Feb\.? | March | Mar\.?
+ | April | Apr\.? | May | June | Jun\.? | July | Jul\.?
+ | August | Aug\.? | September | Sept?\.?
+ | October | Oct\.? | November | Nov\.? | December | Dec\.?
+ }
+% \end{macrocode}
+%Regular expression to match am/pm identifiers.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_am_regex
+ {
+ a \.? m \.? | A \.? M \.? | in \s the \s morning | [nN]oon | [Mm]idday
+ }
+% \end{macrocode}
+% Any match on the following will add 12 to the hour by the
+% pm conditional function:
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_pm_regex
+ {
+ p \.? m \.? | P \.? M \.? | in \s the \s (?: afternoon | evening )
+ | [Mm]idnight
+ }
+% \end{macrocode}
+% Provide conditional.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \datatool_en_if_pm:n #1
+ { T, F, TF }
+ {
+ \regex_match:NnTF \c_datatool_en_pm_regex { #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+% \end{macrocode}
+% Match ordinal suffix.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_ordinal_suffix_regex
+ {
+ st | nd | rd | th
+ }
+% \end{macrocode}
+%
+% The naming scheme for date regex constants needs to be in the form
+%\begin{definition}
+% \verb|\c_datatool_|\meta{language}\verb|_|\meta{style}\verb|_date_regex| (non-anchored)
+%\end{definition}
+% and
+%\begin{definition}
+% \verb|\c_datatool_|\meta{language}\verb|_anchored_|\meta{style}\verb|_date_regex| (anchored)
+%\end{definition}
+% There should be three captured groups in the order that matches
+% \meta{style}
+% For example, the style \opt{ddmmyyyy} should have the day of month
+% number (1-31) in the first captured group, the month
+% in the second group, and the year number in the third.
+% Styles with \opt{yyyy} should have the century included in the year.
+% Styles with \opt{yy} need to have the century added to the two-digit year.
+%
+% Note that the \qt{dd} and \qt{mm} don't mean that two digits are required.
+% (In fact, here the month name not number is expected.)
+% The control sequence names are simply designed to match the
+% naming scheme used by the regionless numeric regex constants
+% provided by \file{datatime-base.sty}.
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_ddmmyyyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ ( \d+ )
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_ddmmyyyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ ( \d+ )
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_ddmmyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_ddmmyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_mmddyyyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ ( \d+ )
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_mmddyyyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ ( \d+ )
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_mmddyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_mmddyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% Year first formats are a bit unlikely with month names but
+% provided for completeness.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_yyyymmdd_date_regex
+ {
+ ( \d+ ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_yyyymmdd_date_regex
+ {
+ \A \s*
+ ( \d+ ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ \s* \Z
+ }
+% \end{macrocode}
+%This is a bit unusual but provided for completeness.
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_yymmdd_date_regex
+ {
+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_anchored_yymmdd_date_regex
+ {
+ \A \s*
+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% The naming scheme for time regex constants needs to be in the form
+%\begin{definition}
+% \verb|\c_datatool_|\meta{language}\verb|_|\meta{variant}\verb|_hhmmss_time_regex| (non-anchored)
+%\end{definition}
+% and
+%\begin{definition}
+% \verb|\c_datatool_|\meta{language}\verb|_|\meta{variant}\verb|_anchored_hhmmss_time_regex| (anchored)
+%\end{definition}
+% Both the minutes and seconds are optional here.
+% These will default to 00 if omitted.
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_colon_hhmmss_time_regex
+ {
+ ( \ur{c_datatool_hour_regex} )
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_colon_anchored_hhmmss_time_regex
+ {
+ \A \s*
+ ( \ur{c_datatool_hour_regex} )
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_dot_hhmmss_time_regex
+ {
+ ( \ur{c_datatool_hour_regex} )
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\regex_const:Nn \c_datatool_en_dot_anchored_hhmmss_time_regex
+ {
+ \A \s*
+ ( \ur{c_datatool_hour_regex} )
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ \s* \Z
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand \DTLenLocaleHook
+ {
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLenLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLenLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLenLocaleGetGroupString }
+ \DTLenSetLetterGroups
+ \let
+ \DTLCurrentLocaleGetMonthNameMap
+ \datatool_en_get_monthname_map:n
+ \let
+ \DTLCurrentLocaleIfpmTF
+ \datatool_en_if_pm:nTF
+% \end{macrocode}
+% Allow region files to construct control sequence names based on
+% this naming scheme:
+% \begin{macrocode}
+ \tl_set:Nn \l_datatool_current_language_tl { en }
+% \end{macrocode}
+% Textual commands:
+% \begin{macrocode}
+ \DTLenTranslations
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DTLenLocaleHook}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-english.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-english-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English US-ASCII LDF for \sty{datatool-base}
+%(\file{datatool-english-ascii.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{english-ascii}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+%Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%Minimal support for \cs{DTLenLocaleHandler}.
+% \begin{macrocode}
+\newcommand \DTLenLocaleHandler [ 1 ]
+ {
+% \end{macrocode}
+%Ensure punctuation characters are grouped together by
+%prefixing them with straight double-quote. This ensures that they
+%will all be placed before any alphabetical characters.
+% \begin{macrocode}
+ \regex_replace_all:nnN { ([[:punct:]]+) } { \cO"\1 } #1
+ }
+% \end{macrocode}
+%Switch off \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-english-ascii.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-english-latin1.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English ISO 8859-1 LDF for \sty{datatool-base}
+%(\file{datatool-english-latin1.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{english-latin1}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+%Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Provide Latin-1 version of \cs{DTLenLocaleHandler}.
+% \begin{macrocode}
+\newcommand \DTLenLocaleHandler [ 1 ]
+{
+ \regex_replace_case_all:nN
+ {
+ { [ \x{C0} - \x{C5} ] } { A }
+ { \x{C6} } { Ae }
+ { \x{C7} } { C }
+ { [ \x{C8} - \x{CB} ] } { E }
+ { [ \x{CC} - \x{CF} ] } { I }
+ { \x{D0} } { D }
+ { \x{D1} } { N }
+ { [ \x{D2} - \x{D6} \x{D8} ] } { O }
+ { [ \x{D9} - \x{DC} ]} { U }
+ { \x{DD} } { Y }
+ { \x{DE} } { Th }
+ { \x{DF} } { ss }
+ { [ \x{E0} - \x{E5} ] } { a }
+ { \x{E6} } { ae }
+ { \x{E7} } { c }
+ { [ \x{E8} - \x{EB} ] } { e }
+ { [ \x{EC} - \x{EF} ] } { i }
+ { \x{F0} } { d }
+ { \x{F1} } { n }
+ { [ \x{F2} - \x{F6} \x{F8} ] } { o }
+ { [ \x{F9} - \x{FC} ] } { u }
+ { [ \x{FD} \x{FF} ] } { y }
+ { \x{FE} } { th }
+% \end{macrocode}
+%Ensure currency symbols are grouped together by prefixing all
+%currency symbols with \verb|$|.
+% \begin{macrocode}
+ { (\ur{l_datatool_currencysigns_regex}) } { \cO\x{24}\1 }
+% \end{macrocode}
+%Ensure punctuation characters are grouped together by
+%prefixing them with straight double-quote. This ensures that they
+%will all be placed before any alphabetical characters.
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+}
+% \end{macrocode}
+%Switch off \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-english-latin1.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-english-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English UTF-8 LDF for \sty{datatool-base}
+%\file{datatool-english-utf8.ldf}}
+% \begin{macrocode}
+\TrackLangProvidesResource{english-utf8}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+%Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% Only provide limited support for extended characters to allow for
+% foreign names. The more cases added, the longer the processing
+% time.
+%
+% \begin{macrocode}
+\newcommand \DTLenLocaleHandler [ 1 ]
+{
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Å} {A}
+ {Æ} {Ae}
+ {Ç} {C}
+ {È|É|Ê|Ë} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ð} {D}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö|Ø} {O}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Þ} {Th}
+ {ß} {ss}
+ {à|á|â|ã|ä|å} {a}
+ {æ} {ae}
+ {ç} {c}
+ {è|é|ê|ë} {e}
+ {ì|í|î|ï} {i}
+ {ð} {d}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö|ø} {o}
+ {ù|ú|û|ü} {u}
+ {ý|ÿ} {y}
+ {þ} {th}
+ {ſ} {s}
+ {IJ} {Ij}
+ {ij} {ij}
+ {Ł} {L}
+ {ł} {l}
+ {Œ} {Oe}
+ {œ} {oe}
+ {Ƿ} {W}
+ {ƿ} {w}
+% \end{macrocode}
+%Ensure currency symbols are grouped together by prefixing all
+%currency symbols with \verb|$|.
+% \begin{macrocode}
+ { (\ur{l_datatool_currencysigns_regex}) } { \cO\x{24}\1 }
+% \end{macrocode}
+%Ensure common punctuation characters are grouped together by
+%prefixing them with straight double-quote. This ensures that they
+%will all be placed before any alphabetical characters.
+%
+%Treat closing quote the same as straight apostrophe.
+% \begin{macrocode}
+ { ’ } { \cO"' }
+% \end{macrocode}
+%Treat opening quote the same as backtick.
+% \begin{macrocode}
+ { ‘ } { \cO"` }
+% \end{macrocode}
+%Treat opening and closing double quotes the same as straight
+%double-quote.
+% \begin{macrocode}
+ { (“|”) } { \cO"\cO" }
+% \end{macrocode}
+%Treat em-dash and en-dash the same as hyphen/minus.
+% \begin{macrocode}
+ { (—|–) } { \cO"- }
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+}
+% \end{macrocode}
+% Switch off \LaTeX3 syntax:
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-english-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-en-CA.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Canadian English LDF for \sty{datatool-base}
+%(\file{datatool-en-CA.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{en-CA}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Load root language file. Note that \sty{datatool-base} should
+% automatically load the region file \file{datatool-CA.ldf} if it is
+% installed, so only \file{datatool-english.ldf} needs to be loaded
+% (if not already done so).
+% \begin{macrocode}
+\TrackLangRequireResource{english}
+% \end{macrocode}
+% Need \LaTeX3 syntax on:
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Provide both official and unofficial options for the number group
+% and decimal characters.
+% Official style has a space number group and a decimal dot.
+% This will allow a normal space, \cs{,} (thin space command) or
+% the thin space Unicode character U+2009 as the number group separator when
+% parsing and will use \cs{,} when formatting.
+% \begin{macrocode}
+\cs_new:Nn \datatool_en_CA_set_numberchars_official:
+ {
+ \datatool_set_thinspace_group_decimal_char:n { . }
+ }
+% \end{macrocode}
+% Unofficial style has a comma number group and a decimal dot.
+% \begin{macrocode}
+\cs_new:Nn \datatool_en_CA_set_numberchars_unofficial:
+ {
+ \DTLsetnumberchars { , } { . }
+ }
+% \end{macrocode}
+%Provide intermediate command to set the applicable number group and
+%decimal character.
+% \begin{macrocode}
+\newcommand \datatoolenCASetNumberChars
+ {
+ \bool_if:NT \l_datatool_region_set_numberchars_bool
+ {
+ \datatool_en_CA_set_numberchars_official:
+ }
+ }
+% \end{macrocode}
+%Provide \cs{DTLsetLocaleOptions} \opt{en-CA} option to switch between styles.
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { en-CA }
+ {
+ number-style .choices:nn =
+ { official , unofficial }
+ {
+ \exp_args:NNe \renewcommand
+ \datatoolenCASetNumberChars
+ {
+ \exp_not:N \bool_if:NT
+ \exp_not:N \l_datatool_region_set_numberchars_bool
+ {
+ \exp_not:c { datatool_en_CA_set_numberchars_ \l_keys_choice_tl : }
+ }
+ }
+ \datatool_if_current_lang_region:nnT { en } { CA }
+ {
+ \datatoolenCASetNumberChars
+ }
+ } ,
+}
+% \end{macrocode}
+%Provide intermediary command to add to the captions hook.
+% \begin{macrocode}
+\newcommand \DTLenCALocaleHook
+ {
+ \datatoolenCASetNumberChars
+ }
+% \end{macrocode}
+% \LaTeX3 syntax no longer needed.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+% Add to captions hook (this is needed for languages but not
+% language-less regions).
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DTLenCALocaleHook}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-en-CA.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-en-ZA.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{South African English LDF for \sty{datatool-base}
+%(\file{datatool-en-ZA.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{en-ZA}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Load root language file. Note that \sty{datatool-base} should
+% automatically load the region file \file{datatool-ZA.ldf} if it is
+% installed, so only \file{datatool-english.ldf} needs to be loaded
+% (if not already done so).
+% \begin{macrocode}
+\TrackLangRequireResource{english}
+% \end{macrocode}
+% Need \LaTeX3 syntax on:
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Provide dialect options for the number group
+% and decimal characters.
+% Space style has a space number group and a decimal dot.
+% This will allow a normal space, \cs{,} (thin space command) or
+% the thin space Unicode character U+2009 as the number group separator when
+% parsing and will use \cs{,} when formatting.
+% \begin{macrocode}
+\cs_new:Npn \datatool_en_ZA_set_numberchars_thinspace:
+ {
+ \datatool_set_thinspace_group_decimal_char:n { . }
+ }
+% \end{macrocode}
+% Comma style has a comma number group and a decimal dot.
+% \begin{macrocode}
+\cs_new:Npn \datatool_en_ZA_set_numberchars_comma:
+ {
+ \DTLsetnumberchars { , } { . }
+ }
+% \end{macrocode}
+%Provide intermediate command to set the applicable number group and
+%decimal character.
+% \begin{macrocode}
+\newcommand \datatoolenZASetNumberChars
+ {
+ \bool_if:NT \l_datatool_region_set_numberchars_bool
+ {
+ \datatool_en_ZA_set_numberchars_thinspace:
+ }
+ }
+% \end{macrocode}
+%Provide \cs{DTLsetLocaleOptions} \opt{en-ZA} option to switch between styles.
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { en-ZA }
+ {
+ number-style .choices:nn =
+ { thinspace , comma }
+ {
+ \exp_args:NNe \renewcommand
+ \datatoolenZASetNumberChars
+ {
+ \exp_not:N \bool_if:NT
+ \exp_not:N \l_datatool_region_set_numberchars_bool
+ {
+ \exp_not:c { datatool_en_ZA_set_numberchars_ \l_keys_choice_tl : }
+ }
+ }
+% \end{macrocode}
+%Note that this will be reset when the dialect changes unless
+%\verb|\DTLsetLocaleOptions{ZA}{number-style=dialect}| is used.
+% \begin{macrocode}
+ \datatool_if_current_lang_region:nnT { en } { ZA }
+ {
+ \datatoolenZASetNumberChars
+ }
+ } ,
+ }
+% \end{macrocode}
+%Provide a hook using the required naming scheme.
+% \begin{macrocode}
+\newcommand \DTLenZALocaleHook
+ {
+ \datatoolenZASetNumberChars
+ }
+% \end{macrocode}
+% \LaTeX3 syntax no longer needed.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+% Add to captions hook (this is needed for languages but not
+% language-less regions).
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DTLenZALocaleHook}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-en-ZA.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*databib-english.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English LDF for \sty{databib}
+%(\file{databib-english.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% \LaTeX3 commands needed:
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Month names used by the \opt{abbrv} style.
+% \begin{macrocode}
+\cs_new:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotted:n { #1 }
+ }
+% \end{macrocode}
+% Define \cs{DTLsetLocaleOptions} options for \opt{en/databib}. The only option deals with
+% switching the short month names for the \opt{abbrv} style between
+% three-letter dotless names and abbreviated names that end with a
+% dot.
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { en / databib }
+ {
+ short-month-style .choice: ,
+ short-month-style / dotted .code:n =
+ {
+ \cs_set:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotted:n { #1 }
+ }
+ } ,
+ short-month-style / dotless .code:n =
+ {
+ \cs_set:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotless:n { #1 }
+ }
+ } ,
+ }
+% \end{macrocode}
+% Fixed text translations.
+% \begin{macrocode}
+\newcommand \DataBibEnglish
+ {
+ \tl_set:Nn \ofname { of }
+ \tl_set:Nn \inname { in }
+ \tl_set:Nn \etalname { et ~ al. }
+ \tl_set:Nn \editorname { editor }
+ \tl_set:Nn \editorsname { editors }
+ \tl_set:Nn \volumename { volume }
+ \tl_set:Nn \numbername { number }
+ \tl_set:Nn \pagesname { pages }
+ \tl_set:Nn \pagename { page }
+ \tl_set:Nn \editionname { edition }
+ \tl_set:Nn \techreportname { Technical ~ report }
+ \tl_set:Nn \mscthesisname { Master's ~ thesis }
+ \tl_set:Nn \phdthesisname { PhD ~ thesis }
+ \tl_set:Nn \DTLbibaccessedname { accessed }
+ \renewcommand \dtl at monthname [ 1 ]
+ {
+ \datatool_en_monthname:n { ##1 }
+ }
+ \renewcommand \dtl at abbrvmonthname [ 1 ]
+ {
+ \databib_en_shortmonthname:n { ##1 }
+ }
+ }
+% \end{macrocode}
+% Finished with \LaTeX3 commands.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+% Add to captions hook.
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DataBibEnglish}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</databib-english.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*person-english.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root English LDF for \sty{person}
+%(\file{person-english.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% If \cs{DTLsetLocaleOptions} options need to be provided, the sub-module should be
+% \qt{person}. For example,
+%
+%\begin{definition}
+%\cs{datatool\_locale\_define\_keys:nn} \brackets{ en / person }
+%\marg{key-value list}
+%\end{definition}
+%
+%Provide intermediate command to add to captions hook.
+% \begin{macrocode}
+\newcommand{\DataToolPersonEnglish}{%
+% \end{macrocode}
+% Third person pronouns
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{pronoun}{he}%
+ \PersonSetLocalisation{female}{pronoun}{she}%
+ \PersonSetLocalisation{nonbinary}{pronoun}{they}%
+ \PersonSetLocalisation{unknown}{pronoun}{they}%
+ \PersonSetLocalisation{male}{pluralpronoun}{they}%
+ \PersonSetLocalisation{female}{pluralpronoun}{they}%
+ \PersonSetLocalisation{nonbinary}{pluralpronoun}{they}%
+ \PersonSetLocalisation{unknown}{pluralpronoun}{they}%
+% \end{macrocode}
+% Third person objective pronouns
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{objpronoun}{him}%
+ \PersonSetLocalisation{female}{objpronoun}{her}%
+ \PersonSetLocalisation{nonbinary}{objpronoun}{them}%
+ \PersonSetLocalisation{unknown}{objpronoun}{them}%
+ \PersonSetLocalisation{male}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{female}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{nonbinary}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{unknown}{pluralobjpronoun}{them}%
+% \end{macrocode}
+% Third person possessive adjectives
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{possadj}{his}%
+ \PersonSetLocalisation{female}{possadj}{her}%
+ \PersonSetLocalisation{nonbinary}{possadj}{their}%
+ \PersonSetLocalisation{unknown}{possadj}{their}%
+ \PersonSetLocalisation{male}{pluralpossadj}{their}%
+ \PersonSetLocalisation{female}{pluralpossadj}{their}%
+ \PersonSetLocalisation{nonbinary}{pluralpossadj}{their}%
+ \PersonSetLocalisation{unknown}{pluralpossadj}{their}%
+% \end{macrocode}
+% Third person possessive pronouns
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{posspronoun}{his}%
+ \PersonSetLocalisation{female}{posspronoun}{hers}%
+ \PersonSetLocalisation{nonbinary}{posspronoun}{theirs}%
+ \PersonSetLocalisation{unknown}{posspronoun}{theirs}%
+ \PersonSetLocalisation{male}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{female}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{nonbinary}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{unknown}{pluralposspronoun}{theirs}%
+% \end{macrocode}
+% Second person pronouns
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{pronoun2}{you}%
+ \PersonSetLocalisation{female}{pronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pronoun2}{you}%
+ \PersonSetLocalisation{male}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{female}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pluralpronoun2}{you}%
+% \end{macrocode}
+% Second person objective pronouns
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{objpronoun2}{you}%
+ \PersonSetLocalisation{female}{objpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{objpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{objpronoun2}{you}%
+ \PersonSetLocalisation{male}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{female}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pluralobjpronoun2}{you}%
+% \end{macrocode}
+% Second person possessive adjective
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{possadj2}{your}%
+ \PersonSetLocalisation{female}{possadj2}{your}%
+ \PersonSetLocalisation{nonbinary}{possadj2}{your}%
+ \PersonSetLocalisation{unknown}{possadj2}{your}%
+ \PersonSetLocalisation{male}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{female}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{nonbinary}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{unknown}{pluralpossadj2}{your}%
+% \end{macrocode}
+% Second person possessive pronoun
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{posspronoun2}{yours}%
+ \PersonSetLocalisation{female}{posspronoun2}{yours}%
+ \PersonSetLocalisation{nonbinary}{posspronoun2}{yours}%
+ \PersonSetLocalisation{unknown}{posspronoun2}{yours}%
+ \PersonSetLocalisation{male}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{female}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{nonbinary}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{unknown}{pluralposspronoun2}{yours}%
+% \end{macrocode}
+% Relationships
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{child}{son}%
+ \PersonSetLocalisation{female}{child}{daughter}%
+ \PersonSetLocalisation{nonbinary}{child}{child}%
+ \PersonSetLocalisation{unknown}{child}{child}%
+ \PersonSetLocalisation{male}{pluralchild}{sons}%
+ \PersonSetLocalisation{female}{pluralchild}{daughters}%
+ \PersonSetLocalisation{nonbinary}{pluralchild}{children}%
+ \PersonSetLocalisation{unknown}{pluralchild}{children}%
+ \PersonSetLocalisation{male}{parent}{father}%
+ \PersonSetLocalisation{female}{parent}{mother}%
+ \PersonSetLocalisation{nonbinary}{parent}{parent}%
+ \PersonSetLocalisation{unknown}{parent}{parent}%
+ \PersonSetLocalisation{male}{pluralparent}{fathers}%
+ \PersonSetLocalisation{female}{pluralparent}{mothers}%
+ \PersonSetLocalisation{nonbinary}{pluralparent}{parents}%
+ \PersonSetLocalisation{unknown}{pluralparent}{parents}%
+ \PersonSetLocalisation{male}{sibling}{brother}%
+ \PersonSetLocalisation{female}{sibling}{sister}%
+ \PersonSetLocalisation{nonbinary}{sibling}{sibling}%
+ \PersonSetLocalisation{unknown}{sibling}{sibling}%
+ \PersonSetLocalisation{male}{pluralsibling}{brothers}%
+ \PersonSetLocalisation{female}{pluralsibling}{sisters}%
+ \PersonSetLocalisation{nonbinary}{pluralsibling}{siblings}%
+ \PersonSetLocalisation{unknown}{pluralsibling}{siblings}%
+% \end{macrocode}
+% Gender translations
+% \begin{macrocode}
+ \PersonSetLocalisation{male}{gender}{male}%
+ \PersonSetLocalisation{female}{gender}{female}%
+ \PersonSetLocalisation{nonbinary}{gender}{non-binary}%
+ \PersonSetLocalisation{unknown}{gender}{unknown}%
+% \end{macrocode}
+% Gender identification labels for \cs{newperson}
+% \begin{macrocode}
+ \PersonSetMaleLabels{Male,MALE,M,m}%
+ \PersonSetFemaleLabels{Female,FEMALE,F,f}%
+ \PersonSetNonBinaryLabels{non-binary,Nonbinary,Non-Binary,NONBINARY,NON-BINARY,N,n}%
+}
+% \end{macrocode}
+% Add to captions hook.
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DataToolPersonEnglish}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</person-english.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-anglosaxon.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root Old English (Anglo Saxon) LDF for \sty{datatool-base}
+%(\file{datatool-anglosaxon.ldf})}
+% Provide support for Old English (\sty{tracklang} root language
+% \qt{anglosaxon}).
+% This is mainly provided as an example for dealing with languages
+% that have multiple scripts and non-ASCII letters.
+% As such, it doesn't provide an translations or date/time
+% formatting.
+%
+% The file \filemeta{datatool-ang-}{script}{.ldf} should already
+% have been found if installed correctly. This is a fallback
+% to catch an unrecognised script and encoding combination.
+% \begin{macrocode}
+\TrackLangProvidesResource{anglosaxon}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Try loading \filemetameta{datatool-ang-}{script}{-}{encoding}{.ldf}
+% \begin{macrocode}
+\TrackLangRequestResource{ang-\CurrentTrackedDialectScript-\TrackLangEncodingName}
+{%
+% \end{macrocode}
+% Not found.
+% \begin{macrocode}
+ \csuse{datatool_locale_warn:n}{datatool-anglosaxon}%
+ {%
+ No support for `anglosaxon' with script `\CurrentTrackedDialectScript'
+ and encoding `\TrackLangEncodingName'%
+ }%
+}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-anglosaxon.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-ang-Latn.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root Old English (Anglo Saxon) Latin Script LDF for
+%\sty{datatool-base} (\file{datatool-ang-Latn.ldf})}
+% Provide support for Old English (\sty{tracklang} root language
+% \qt{anglosaxon}) using Latin script.
+% This is mainly provided as an example for dealing with languages
+% that have multiple scripts and non-ASCII letters.
+% As such, it doesn't provide any translations (except for \qt{and}) or date/time
+% formatting.
+% \begin{macrocode}
+\TrackLangProvidesResource{ang-Latn}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Try loading \filemeta{datatool-ang-Latn-}{encoding}{.ldf}
+% \begin{macrocode}
+\TrackLangRequestResource{ang-Latn-\TrackLangEncodingName}
+{%
+% \end{macrocode}
+% Not found.
+% \begin{macrocode}
+ \csuse{datatool_locale_warn:n}{datatool-ang-Latn}%
+ {%
+ No support for `anglosaxon' with script `Latn'
+ and encoding `\TrackLangEncodingName'.%
+ }%
+ \endinput
+}
+% \end{macrocode}
+% Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Any options may be defined with
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { ang-Latn } { ... }
+%\end{dispListing}
+% or
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { ang-Latn / subgroup } { ... }
+%\end{dispListing}
+% (Syntax as per \verb|\keys_define:nn| )
+%
+%\subsubsection{Orthography rules}
+%NB \cs{DTLangLatnLocaleHandler} is defined in the applicable encoding
+%file loaded above.
+%
+%\begin{macro}{\DTLangLatnLocaleGetInitialLetter}
+%Get the first letter of the word according to the locale's alphabet and
+%store in token list variable.
+% \begin{macrocode}
+\newcommand \DTLangLatnLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_letter:nN { #1 } #2
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTLangLatnLocaleGetGroupString}
+%\begin{definition}
+%\cs{DTLangLatnLocaleGetGroupString}\marg{actual}\marg{sort value}\marg{tl}
+%\end{definition}
+%Get the text that will be used to obtain the letter group
+%(the actual value not the sort value).
+% \begin{macrocode}
+\newcommand \DTLangLatnLocaleGetGroupString [ 3 ]
+ {
+ \datatool_sort_preprocess:Nn #3 { #1 }
+ \datatool_angLatn_process_letter_group:N #3
+ \bool_lazy_and:nnT
+ { \tl_if_head_eq_charcode_p:nN { #1 } - }
+ { \bool_not_p:n { \tl_if_head_eq_charcode_p:nN { #2 } " } }
+ {
+ \exp_args:NNe \tl_set:Nn #3 { \tl_tail:N #3 }
+ }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\newcommand \DTLangLatnLocaleHook
+ {
+ \DTLresetLanguage
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLangLatnLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLangLatnLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLangLatnLocaleGetGroupString }
+ \DTLangLatnTranslations
+% \end{macrocode}
+% Allow region files to construct control sequence names based on
+% this naming scheme:
+% \begin{macrocode}
+ \tl_set:Nn \l_datatool_current_language_tl { angLatn }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DTLangLatnLocaleHook}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-ang-Latn.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-ang-Latn-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root Anglo Saxon Latin Script UTF-8 LDF for \sty{datatool-base}
+%(\file{datatool-ang-Latn-utf8.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{ang-Latn-utf8}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+%Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% Only provide limited support for additional characters to allow for
+% foreign names. The more cases added, the longer the processing
+% time.
+%
+% The extended Latin characters and characters derived from Runic
+% are multi-byte which means that with
+% \sty{inputenc} they will be treated as multiple tokens.
+% This means that the characters need to be converted into
+% single-byte characters such that the character code of those
+% single-byte characters have the same ordering (numerically)
+% as the Latin characters. Remember that the result isn't intended
+% for typesetting but is just intended for a character code
+% comparison.
+% \begin{macrocode}
+\newcommand \DTLangLatnLocaleHandler [ 1 ]
+{
+ \datatool_angLatn_order_harley:N #1
+}
+% \end{macrocode}
+%Harley order: A-Z, Ƿ, Ð, Æ, Þ
+% \begin{macrocode}
+\cs_new:Nn \datatool_angLatn_order_harley:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ā} {A}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ē} {E}
+ {Ì|Í|Î|Ï|Ī} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ù|Ú|Û|Ü|Ū} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\x{5B}}
+ {Ð} {\cL\x{5C}}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {\cL\x{5D}}
+ {Þ|Ꝥ} {\cL\x{5E}}
+ {à|á|â|ã|ä|ā} {a}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ē} {e}
+ {ì|í|î|ï|ī} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ſ} {s}
+ {ß} {ss}
+ {ù|ú|û|ü|ū} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7C}}
+ {æ|ǣ|ǽ|æ̀|æ̂} {\cL\x{7D}}
+ {þ|ꝥ} {\cL\x{7E}}
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%
+% Stowe order has A-Z, Ƿ, Ð, Þ (not sure where Æ goes so I've made it
+% equivalent to AE for now).
+% \begin{macrocode}
+\cs_new:Nn \datatool_angLatn_order_stowe:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ą} {A}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {AE}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ę} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ꞇ|Ꞇ̃} {T}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\cL\x{5B}}
+ {Ð} {\cL\x{5C}}
+ {Þ|Ꝥ} {\cL\x{5D}}
+ {à|á|â|ã|ä|ą} {a}
+ {æ|ǣ|ǽ|æ̀|æ̂} {ae}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ę} {e}
+ {ì|í|î|ï|ı} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ꞇ|ꞇ̃} {t}
+ {ù|ú|û|ü} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7C}}
+ {þ|ꝥ} {\cL\x{7D}}
+ {⁊} {\cL\x{7E}}
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%
+% Titus has order A-Z, Ƿ–Þ–Ð (again, not sure where Æ goes).
+% \begin{macrocode}
+\cs_new:Nn \datatool_angLatn_order_titus:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ą} {A}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {AE}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ę} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ꞇ|Ꞇ̃} {T}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\cL\x{5B}}
+ {Ð} {\cL\x{5D}}
+ {Þ|Ꝥ} {\cL\x{5C}}
+ {à|á|â|ã|ä|ą} {a}
+ {æ|ǣ|ǽ|æ̀|æ̂} {ae}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ę} {e}
+ {ì|í|î|ï|ı} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ꞇ|ꞇ̃} {t}
+ {ù|ú|û|ü} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7D}}
+ {þ|ꝥ} {\cL\x{7C}}
+ {⁊} {\cL\x{7E}}
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%
+% Fuþorc order.
+% \begin{macrocode}
+\cs_new:Nn \datatool_angLatn_order_futhorc:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {f} {\cL\x{31}}
+ {u} {\cL\x{32}}
+ {þ} {\cL\x{33}}
+ {o} {\cL\x{34}}
+ {r} {\cL\x{35}}
+ {c} {\cL\x{36}}
+ {g} {\cL\x{37}}
+ {w} {\cL\x{38}}
+ {h} {\cL\x{39}}
+ {n} {\cL\x{3A}}
+ {i} {\cL\x{3B}}
+ {j} {\cL\x{3C}}
+ {ï} {\cL\x{3D}}
+ {p} {\cL\x{3E}}
+ {x} {\cL\x{40}}
+ {st} {\cL\x{51}}
+ {s} {\cL\x{41}}
+ {t} {\cL\x{42}}
+ {b} {\cL\x{43}}
+ {ea} {\cL\x{4C}}
+ {e} {\cL\x{44}}
+ {m} {\cL\x{45}}
+ {l} {\cL\x{46}}
+ {ŋ} {\cL\x{47}}
+ {œ} {\cL\x{48}}
+ {d} {\cL\x{49}}
+ {a} {\cL\x{4A}}
+ {æ} {\cL\x{4B}}
+ {y} {\cL\x{4D}}
+ {k} {\cL\x{4E}}
+ {ḡ} {\cL\x{4F}}
+ {q} {\cL\x{50}}
+ {ę|ᴇ} {\cL\x{52}}
+ {į} {\cL\x{53}}
+ {ī} {\cL\x{54}}
+ {c̄|k̄} {\cL\x{55}}
+ {⁊} {\cL\x{7E}}
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%
+%We also need to merge accented characters for the letter groups.
+%Note that since we're only concerned with the first letter,
+%we only need a single replace not replace all.
+% \begin{macrocode}
+\cs_new:Nn \datatool_angLatn_process_letter_group:N
+ {
+ \regex_replace_case_once:nN
+ {
+ {À|Á|Â|Ã|Ä|Ā} {A}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ē} {E}
+ {Ì|Í|Î|Ï|Ī} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ù|Ú|Û|Ü|Ū} {U}
+ {Ý} {Y}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {Æ}
+ {Ƿ|Ꝩ} {Ƿ}
+ {Þ|Ꝥ} {Þ}
+ {à|á|â|ã|ä|ā} {a}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ē} {e}
+ {ì|í|î|ï|ī} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ſ} {s}
+ {ß} {ss}
+ {ù|ú|û|ü|ū} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {ƿ}
+ {æ|ǣ|ǽ|æ̀|æ̂} {æ}
+ {þ|ꝥ} {þ}
+ }
+ #1
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { ang-Latn }
+ {
+ order .choice:,
+ order / harley .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_harley:N ##1
+ }
+ },
+ order / stowe .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_stowe:N ##1
+ }
+ },
+ order / titus .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_titus:N ##1
+ }
+ },
+ order / futhorc .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_futhorc:N ##1
+ }
+ },
+ }
+% \end{macrocode}
+%
+%Translations: only providing \qt{and} (Tironian et)
+% \begin{macrocode}
+\newcommand \DTLangLatnTranslations
+{
+ \tl_set:Nn \DTLandname { ⁊ }
+}
+% \end{macrocode}
+%
+%Switch off \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-ang-Latn-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-ang-Runr.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root Old English (Anglo Saxon) Runic Script LDF for
+%\sty{datatool-base} (\file{datatool-ang-Runr.ldf})}
+% Provide support for Old English (\sty{tracklang} root language
+% \qt{anglosaxon}) using Runic script.
+%
+% This is mainly provided as an example for dealing with languages
+% that have multiple scripts and non-ASCII letters.
+% As such, it doesn't provide any translations (except for \qt{and}) or date/time
+% formatting.
+%
+%\begin{important}
+% Identifying \qt{Runr} as the script indicates that the text source uses
+% Runic characters. If a package, such as \sty{allrunes}, is used
+% that maps Latin characters to runes (for example, \verb|\textarm{fuÞark}|)
+% then the script should be set to \qt{Latn}.
+%\end{important}
+%
+% \begin{macrocode}
+\TrackLangProvidesResource{ang-Runr}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+% Try loading \filemeta{datatool-ang-Runr-}{encoding}{.ldf}
+% \begin{macrocode}
+\TrackLangRequestResource{ang-Runr-\TrackLangEncodingName}
+{%
+% \end{macrocode}
+% Not found.
+% \begin{macrocode}
+ \csuse{datatool_locale_warn:n}{datatool-ang-Runr}%
+ {%
+ No support for `anglosaxon' with script `Runr'
+ and encoding `\TrackLangEncodingName'.%
+ }%
+ \endinput
+}
+% \end{macrocode}
+% Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+% Any options may be defined with
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { ang-Runr } { ... }
+%\end{dispListing}
+% or
+%\begin{dispListing}
+%\datatool_locale_define_keys:nn { ang-Runr / subgroup } { ... }
+%\end{dispListing}
+% (Syntax as per \verb|\keys_define:nn| )
+%
+%\subsubsection{Orthography rules}
+%NB \cs{DTLangRunrLocaleHandler} is defined in the applicable encoding
+%file loaded above.
+%
+%\begin{macro}{\DTLangRunrLocaleGetInitialLetter}
+%Get the first letter of the word according to the locale's alphabet and
+%store in token list variable.
+% \begin{macrocode}
+\newcommand \DTLangRunrLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_grapheme:nN { #1 } #2
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\DTLangRunrLocaleGetGroupChar}
+%\begin{definition}
+%\cs{DTLangRunrLocaleGetGroupString}\marg{actual}\marg{sort value}\marg{tl}
+%\end{definition}
+%Get the text that will be used to obtain the letter group
+%(the actual value not the sort value).
+% \begin{macrocode}
+\newcommand \DTLangRunrLocaleGetGroupString [ 3 ]
+ {
+ \datatool_sort_preprocess:Nn #3 { #1 }
+ }
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\newcommand \DTLangRunrLocaleHook
+ {
+ \DTLresetLanguage
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLangRunrLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLangRunrLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLangRunrLocaleGetGroupString }
+ \DTLangRunrTranslations
+% \end{macrocode}
+% Allow region files to construct control sequence names based on
+% this naming scheme:
+% \begin{macrocode}
+ \tl_set:Nn \l_datatool_current_language_tl { angRunr }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+\TrackLangAddToCaptions{\DTLangRunrLocaleHook}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</datatool-ang-Runr.ldf>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*datatool-ang-Runr-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\subsection{Root Anglo Saxon Runic Script UTF-8 LDF for \sty{datatool-base}
+%(\file{datatool-ang-Runr-utf8.ldf})}
+% \begin{macrocode}
+\TrackLangProvidesResource{ang-Runr-utf8}[2025/03/01 v1.0 (NLCT)]
+% \end{macrocode}
+%Switch on \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% The runic characters are multi-byte which means that with
+% \sty{inputenc} they will be treated as multiple tokens.
+% This means that the characters need to be converted into
+% single-byte characters such that the character code of those
+% single-byte characters have the same ordering (numerically)
+% as the runic characters. Remember that the result isn't intended
+% for typesetting but is just intended for a character code
+% comparison.
+%\begin{macro}{\DTLangRunrLocaleHandler}
+% \begin{macrocode}
+\newcommand \DTLangRunrLocaleHandler [ 1 ] {
+ \datatool_angRunr_order_punc_futhorc:n { #1 }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%If PDF\LaTeX, we can't match greater than FF with \cs{x}, so need different
+%regular expressions depending on whether or not we have
+%a native Unicode engine.
+% \begin{macrocode}
+\datatool_if_unicode_engine:TF
+ {
+% \end{macrocode}
+%Unicode order (mostly Unicode order).
+%The punctuation characters are placed first, the rest follows
+%Unicode order.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_punc_unicode:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{16A0} } { \cL\x{31} }
+% \end{macrocode}
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{16A1} } { \cL\x{32} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{16A2} } { \cL\x{33} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{16A3} } { \cL\x{34} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{16A4} } { \cL\x{35} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{16A5} } { \cL\x{36} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{16A6} } { \cL\x{37} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{16A7} } { \cL\x{38} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{16A8} } { \cL\x{39} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{16A9} } { \cL\x{3A} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{16AA} } { \cL\x{3B} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{16AB} } { \cL\x{3C} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{16AC} } { \cL\x{3D} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{16AD} } { \cL\x{3E} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{16AE} } { \cL\x{3F} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{16AF} } { \cL\x{40} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{16B0} } { \cL\x{41} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{16B1} } { \cL\x{42} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{16B2} } { \cL\x{43} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{16B3} } { \cL\x{44} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{16B4} } { \cL\x{45} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{16B5} } { \cL\x{46} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{16B6} } { \cL\x{47} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{16B7} } { \cL\x{48} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{16B8} } { \cL\x{49} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{16B9} } { \cL\x{4A} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{16BA} } { \cL\x{4B} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{16BB} } { \cL\x{4C} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{16BC} } { \cL\x{4D} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{16BD} } { \cL\x{4E} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{16BE} } { \cL\x{4F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{16BF} } { \cL\x{50} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{16C0} } { \cL\x{51} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{16C1} } { \cL\x{52} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{16C2} } { \cL\x{53} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{16C3} } { \cL\x{54} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{16C4} } { \cL\x{55} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{16C5} } { \cL\x{56} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{16C6} } { \cL\x{57} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{16C7} } { \cL\x{58} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{16C8} } { \cL\x{59} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{16C9} } { \cL\x{5A} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{16CA} } { \cL\x{5B} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{16CB} } { \cL\x{5C} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{16CC} } { \cL\x{5D} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{16CD} } { \cL\x{5E} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{16CE} } { \cL\x{5F} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{16CF} } { \cL\x{60} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{16D0} } { \cL\x{61} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{16D1} } { \cL\x{62} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{16D2} } { \cL\x{63} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{16D3} } { \cL\x{64} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{16D4} } { \cL\x{65} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{16D5} } { \cL\x{66} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{16D6} } { \cL\x{67} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{16D7} } { \cL\x{68} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{16D8} } { \cL\x{69} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{16D9} } { \cL\x{6A} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{16DA} } { \cL\x{6B} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{16DB} } { \cL\x{6C} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{16DC} } { \cL\x{6D} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{16DD} } { \cL\x{6F} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{16DE} } { \cL\x{70} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{16DF} } { \cL\x{71} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{16E0} } { \cL\x{72} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{16E1} } { \cL\x{73} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{16E2} } { \cL\x{74} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{16E3} } { \cL\x{75} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{16E4} } { \cL\x{76} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{16E5} } { \cL\x{77} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{16E6} } { \cL\x{78} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{16E7} } { \cL\x{79} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{16E8} } { \cL\x{7A} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{16E9} } { \cL\x{7B} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{16EA} } { \cL\x{7C} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{16EE} } { \cL\x{7D}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{16EF} } { \cL\x{7D}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EB} } { \cO\x{21}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EC} } { \cO\x{21}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{16ED} } { \cO\x{21}\x{23} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{204A} } { \cL\x{7E} }
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%Old English Rune Poem order (fuþorc). Not all characters are included in the
+%poem, so they are appended at the end. Punctuation characters come
+%first.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_punc_futhorc:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{16A0} } { \cL\x{31} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{16A2} } { \cL\x{32} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{16A6} } { \cL\x{33} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{16A9} } { \cL\x{34} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{16B1} } { \cL\x{35} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{16B3} } { \cL\x{36} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{16B7} } { \cL\x{37} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{16B9} } { \cL\x{38} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{16BB} } { \cL\x{39} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{16BE} } { \cL\x{3A} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{16C1} } { \cL\x{3B} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{16C4} } { \cL\x{3C} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{16C7} } { \cL\x{3D} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{16C8} } { \cL\x{3E} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{16C9} } { \cL\x{3F} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{16CB} } { \cL\x{40} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{16CF} } { \cL\x{41} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{16D2} } { \cL\x{42} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{16D6} } { \cL\x{43} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{16D7} } { \cL\x{44} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{16DA} } { \cL\x{45} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{16DD} } { \cL\x{46} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{16DF} } { \cL\x{47} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{16DE} } { \cL\x{48} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{16AA} } { \cL\x{49} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{16AB} } { \cL\x{4A} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{16A3} } { \cL\x{4B} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{16E1} } { \cL\x{4C} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{16E0} } { \cL\x{4D} }
+% \end{macrocode}
+%The remainder are in Unicode order, except for the punctuation.
+%Some of these may need to be merged into the above, as applicable.
+%
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{16A1} } { \cL\x{4E} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{16A4} } { \cL\x{4F} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{16A5} } { \cL\x{50} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{16A7} } { \cL\x{51} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{16A8} } { \cL\x{52} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{16AC} } { \cL\x{53} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{16AD} } { \cL\x{54} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{16AE} } { \cL\x{55} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{16AF} } { \cL\x{56} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{16B0} } { \cL\x{57} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{16B2} } { \cL\x{58} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{16B4} } { \cL\x{59} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{16B5} } { \cL\x{5A} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{16B6} } { \cL\x{5B} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{16B8} } { \cL\x{5C} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{16BA} } { \cL\x{5D} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{16BC} } { \cL\x{5E} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{16BD} } { \cL\x{5F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{16BF} } { \cL\x{60} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{16C0} } { \cL\x{61} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{16C2} } { \cL\x{62} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{16C3} } { \cL\x{63} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{16C5} } { \cL\x{64} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{16C6} } { \cL\x{65} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{16CA} } { \cL\x{66} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{16CC} } { \cL\x{67} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{16CD} } { \cL\x{68} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{16CE} } { \cL\x{69} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{16D0} } { \cL\x{6A} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{16D1} } { \cL\x{6B} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{16D3} } { \cL\x{6C} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{16D4} } { \cL\x{6D} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{16D5} } { \cL\x{6E} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{16D8} } { \cL\x{6F} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{16D9} } { \cL\x{70} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{16DB} } { \cL\x{71} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{16DC} } { \cL\x{72} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{16E2} } { \cL\x{73} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{16E3} } { \cL\x{74} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{16E4} } { \cL\x{75} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{16E5} } { \cL\x{76} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{16E6} } { \cL\x{77} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{16E7} } { \cL\x{78} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{16E8} } { \cL\x{79} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{16E9} } { \cL\x{7A} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{16EA} } { \cL\x{7B} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{16EE} } { \cL\x{7C}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{16EF} } { \cL\x{7C}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EB} } { \cO\x{21}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EC} } { \cO\x{21}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{16ED} } { \cO\x{21}\x{23} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{204A} } { \cL\x{7E} }
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%Old English Rune Poem order (fuþorc, punctuation last). Not all characters are included in the
+%poem, so they are appended at the end.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_futhorc_punc:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{16A0} } { \cL\x{31} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{16A2} } { \cL\x{32} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{16A6} } { \cL\x{33} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{16A9} } { \cL\x{34} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{16B1} } { \cL\x{35} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{16B3} } { \cL\x{36} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{16B7} } { \cL\x{37} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{16B9} } { \cL\x{38} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{16BB} } { \cL\x{39} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{16BE} } { \cL\x{3A} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{16C1} } { \cL\x{3B} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{16C4} } { \cL\x{3C} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{16C7} } { \cL\x{3D} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{16C8} } { \cL\x{3E} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{16C9} } { \cL\x{3F} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{16CB} } { \cL\x{40} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{16CF} } { \cL\x{41} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{16D2} } { \cL\x{42} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{16D6} } { \cL\x{43} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{16D7} } { \cL\x{44} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{16DA} } { \cL\x{45} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{16DD} } { \cL\x{46} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{16DF} } { \cL\x{47} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{16DE} } { \cL\x{48} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{16AA} } { \cL\x{49} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{16AB} } { \cL\x{4A} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{16A3} } { \cL\x{4B} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{16E1} } { \cL\x{4C} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{16E0} } { \cL\x{4D} }
+% \end{macrocode}
+%The remainder are in Unicode order, except for the punctuation.
+%Some of these may need to be merged into the above, as applicable.
+%
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{16A1} } { \cL\x{4E} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{16A4} } { \cL\x{4F} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{16A5} } { \cL\x{50} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{16A7} } { \cL\x{51} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{16A8} } { \cL\x{52} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{16AC} } { \cL\x{53} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{16AD} } { \cL\x{54} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{16AE} } { \cL\x{55} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{16AF} } { \cL\x{56} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{16B0} } { \cL\x{57} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{16B2} } { \cL\x{58} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{16B4} } { \cL\x{59} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{16B5} } { \cL\x{5A} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{16B6} } { \cL\x{5B} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{16B8} } { \cL\x{5C} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{16BA} } { \cL\x{5D} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{16BC} } { \cL\x{5E} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{16BD} } { \cL\x{5F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{16BF} } { \cL\x{60} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{16C0} } { \cL\x{61} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{16C2} } { \cL\x{62} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{16C3} } { \cL\x{63} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{16C5} } { \cL\x{64} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{16C6} } { \cL\x{65} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{16CA} } { \cL\x{66} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{16CC} } { \cL\x{67} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{16CD} } { \cL\x{68} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{16CE} } { \cL\x{69} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{16D0} } { \cL\x{6A} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{16D1} } { \cL\x{6B} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{16D3} } { \cL\x{6C} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{16D4} } { \cL\x{6D} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{16D5} } { \cL\x{6E} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{16D8} } { \cL\x{6F} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{16D9} } { \cL\x{70} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{16DB} } { \cL\x{71} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{16DC} } { \cL\x{72} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{16E2} } { \cL\x{73} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{16E3} } { \cL\x{74} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{16E4} } { \cL\x{75} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{16E5} } { \cL\x{76} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{16E6} } { \cL\x{77} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{16E7} } { \cL\x{78} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{16E8} } { \cL\x{79} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{16E9} } { \cL\x{7A} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{16EA} } { \cL\x{7B} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{16EE} } { \cL\x{7C}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{16EF} } { \cL\x{7C}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{204A} } { \cL\x{7D} \x{2C} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EB} } { \cO\x{7E}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{16EC} } { \cO\x{7E}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{16ED} } { \cO\x{7E}\x{23} }
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{7E}\x{24} \1 }
+ }
+ #1
+ }
+ }
+ {
+% \end{macrocode}
+%Unicode order (mostly Unicode order).
+%The punctuation characters are placed first, the rest follows
+%Unicode order.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_punc_unicode:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+% \end{macrocode}
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{32} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{33} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{34} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{35} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{36} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{37} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{38} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{39} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{3A} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{3B} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{3C} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{3D} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{3E} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{3F} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{40} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{41} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{42} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{43} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{44} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{45} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{46} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{47} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{48} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{49} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{4A} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{4B} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{4C} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{4D} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{4E} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{4F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{50} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{51} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{52} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{53} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{54} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{55} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{56} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{57} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{58} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{59} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{5A} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{5B} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{5C} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{5D} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{5E} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{5F} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{60} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{61} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{62} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{63} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{64} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{65} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{66} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{67} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{68} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{69} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{6A} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{6B} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{6C} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{6D} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{6F} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{70} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{71} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{72} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{73} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{74} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{75} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{76} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{77} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{78} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{79} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{7A} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7B} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7C} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7D}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{21}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{21}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{21}\x{23} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7E} }
+% \end{macrocode}
+%Any character in the punctuation class:
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%Old English Rune Poem order (fuþorc). Not all characters are included in the
+%poem, so they are appended at the end. Punctuation characters come
+%first.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_punc_futhorc:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{32} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{33} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{34} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{35} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{36} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{37} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{38} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{39} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{3A} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{3B} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{3C} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{3D} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{3E} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{3F} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{40} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{41} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{42} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{43} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{44} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{45} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{46} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{47} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{48} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{49} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{4A} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{4B} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{4C} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{4D} }
+% \end{macrocode}
+%The remainder are in Unicode order, except for the punctuation.
+%Some of these may need to be merged into the above, as applicable.
+%
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{4E} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{4F} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{50} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{51} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{52} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{53} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{54} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{55} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{56} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{57} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{58} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{59} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{5A} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{5B} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{5C} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{5D} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{5E} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{5F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{60} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{61} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{62} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{63} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{64} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{65} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{66} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{67} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{68} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{69} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{6A} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{6B} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{6C} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{6D} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{6E} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{6F} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{70} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{71} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{72} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{73} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{74} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{75} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{76} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{77} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{78} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{79} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7A} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7B} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7C}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{21}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{21}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{21}\x{23} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7E} }
+% \end{macrocode}
+%Any character in the punctuation class (unlikely to occur in Runic
+%but added for completeness):
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+% \end{macrocode}
+%Old English Rune Poem order (fuþorc, punctuation last). Not all characters are included in the
+%poem, so they are appended at the end before the punctuation.
+% \begin{macrocode}
+ \cs_new:Nn \datatool_angRunr_order_futhorc_punc:n
+ {
+ \regex_replace_case_all:nN
+ {
+% \end{macrocode}
+% U+16A0 RUNIC LETTER FEHU FEOH FE F
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+% \end{macrocode}
+% U+16A2 RUNIC LETTER URUZ UR U
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{32} }
+% \end{macrocode}
+% U+16A6 RUNIC LETTER THURISAZ THURS THORN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{33} }
+% \end{macrocode}
+% U+16A9 RUNIC LETTER OS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{34} }
+% \end{macrocode}
+% U+16B1 RUNIC LETTER RAIDO RAD REID R
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{35} }
+% \end{macrocode}
+% U+16B3 RUNIC LETTER CEN
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{36} }
+% \end{macrocode}
+% U+16B7 RUNIC LETTER GEBO GYFU G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{37} }
+% \end{macrocode}
+% U+16B9 RUNIC LETTER WUNJO WYNN W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{38} }
+% \end{macrocode}
+% U+16BB RUNIC LETTER HAEGL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{39} }
+% \end{macrocode}
+% U+16BE RUNIC LETTER NAUDIZ NYD NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{3A} }
+% \end{macrocode}
+% U+16C1 RUNIC LETTER ISAZ IS ISS I
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{3B} }
+% \end{macrocode}
+% U+16C4 RUNIC LETTER GER
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{3C} }
+% \end{macrocode}
+% U+16C7 RUNIC LETTER IWAZ EOH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{3D} }
+% \end{macrocode}
+% U+16C8 RUNIC LETTER PERTHO PEORTH P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{3E} }
+% \end{macrocode}
+% U+16C9 RUNIC LETTER ALGIZ EOLHX
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{3F} }
+% \end{macrocode}
+% U+16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{40} }
+% \end{macrocode}
+% U+16CF RUNIC LETTER TIWAZ TIR TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{41} }
+% \end{macrocode}
+% U+16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{42} }
+% \end{macrocode}
+% U+16D6 RUNIC LETTER EHWAZ EH E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{43} }
+% \end{macrocode}
+% U+16D7 RUNIC LETTER MANNAZ MAN M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{44} }
+% \end{macrocode}
+% U+16DA RUNIC LETTER LAUKAZ LAGU LOGR L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{45} }
+% \end{macrocode}
+% U+16DD RUNIC LETTER ING
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{46} }
+% \end{macrocode}
+% U+16DF RUNIC LETTER OTHALAN ETHEL O
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{47} }
+% \end{macrocode}
+% U+16DE RUNIC LETTER DAGAZ DAEG D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{48} }
+% \end{macrocode}
+% U+16AA RUNIC LETTER AC A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{49} }
+% \end{macrocode}
+% U+16AB RUNIC LETTER AESC
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{4A} }
+% \end{macrocode}
+% U+16A3 RUNIC LETTER YR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{4B} }
+% \end{macrocode}
+% U+16E1 RUNIC LETTER IOR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{4C} }
+% \end{macrocode}
+% U+16E0 RUNIC LETTER EAR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{4D} }
+% \end{macrocode}
+%The remainder are in Unicode order, except for the punctuation.
+%Some of these may need to be merged into the above, as applicable.
+%
+% U+16A1 RUNIC LETTER V
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{4E} }
+% \end{macrocode}
+% U+16A4 RUNIC LETTER Y
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{4F} }
+% \end{macrocode}
+% U+16A5 RUNIC LETTER W
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{50} }
+% \end{macrocode}
+% U+16A7 RUNIC LETTER ETH
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{51} }
+% \end{macrocode}
+% U+16A8 RUNIC LETTER ANSUZ A
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{52} }
+% \end{macrocode}
+% U+16AC RUNIC LETTER LONG-BRANCH-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{53} }
+% \end{macrocode}
+% U+16AD RUNIC LETTER SHORT-TWIG-OSS O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{54} }
+% \end{macrocode}
+% U+16AE RUNIC LETTER O
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{55} }
+% \end{macrocode}
+% U+16AF RUNIC LETTER OE
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{56} }
+% \end{macrocode}
+% U+16B0 RUNIC LETTER ON
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{57} }
+% \end{macrocode}
+% U+16B2 RUNIC LETTER KAUNA
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{58} }
+% \end{macrocode}
+% U+16B4 RUNIC LETTER KAUN K
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{59} }
+% \end{macrocode}
+% U+16B5 RUNIC LETTER G
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{5A} }
+% \end{macrocode}
+% U+16B6 RUNIC LETTER ENG
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{5B} }
+% \end{macrocode}
+% U+16B8 RUNIC LETTER GAR
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{5C} }
+% \end{macrocode}
+% U+16BA RUNIC LETTER HAGLAZ H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{5D} }
+% \end{macrocode}
+% U+16BC RUNIC LETTER LONG-BRANCH-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{5E} }
+% \end{macrocode}
+% U+16BD RUNIC LETTER SHORT-TWIG-HAGALL H
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{5F} }
+% \end{macrocode}
+% U+16BF RUNIC LETTER SHORT-TWIG-NAUD N
+% \begin{macrocode}
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{60} }
+% \end{macrocode}
+% U+16C0 RUNIC LETTER DOTTED-N
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{61} }
+% \end{macrocode}
+% U+16C2 RUNIC LETTER E
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{62} }
+% \end{macrocode}
+% U+16C3 RUNIC LETTER JERAN J
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{63} }
+% \end{macrocode}
+% U+16C5 RUNIC LETTER LONG-BRANCH-AR AE
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{64} }
+% \end{macrocode}
+% U+16C6 RUNIC LETTER SHORT-TWIG-AR A
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{65} }
+% \end{macrocode}
+% U+16CA RUNIC LETTER SOWILO S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{66} }
+% \end{macrocode}
+% U+16CC RUNIC LETTER SHORT-TWIG-SOL S
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{67} }
+% \end{macrocode}
+% U+16CD RUNIC LETTER C
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{68} }
+% \end{macrocode}
+% U+16CE RUNIC LETTER Z
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{69} }
+% \end{macrocode}
+% U+16D0 RUNIC LETTER SHORT-TWIG-TYR T
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{6A} }
+% \end{macrocode}
+% U+16D1 RUNIC LETTER D
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{6B} }
+% \end{macrocode}
+% U+16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{6C} }
+% \end{macrocode}
+% U+16D4 RUNIC LETTER DOTTED-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{6D} }
+% \end{macrocode}
+% U+16D5 RUNIC LETTER OPEN-P
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{6E} }
+% \end{macrocode}
+% U+16D8 RUNIC LETTER LONG-BRANCH-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{6F} }
+% \end{macrocode}
+% U+16D9 RUNIC LETTER SHORT-TWIG-MADR M
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{70} }
+% \end{macrocode}
+% U+16DB RUNIC LETTER DOTTED-L
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{71} }
+% \end{macrocode}
+% U+16DC RUNIC LETTER INGWAZ
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{72} }
+% \end{macrocode}
+% U+16E2 RUNIC LETTER CWEORTH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{73} }
+% \end{macrocode}
+% U+16E3 RUNIC LETTER CALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{74} }
+% \end{macrocode}
+% U+16E4 RUNIC LETTER CEALC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{75} }
+% \end{macrocode}
+% U+16E5 RUNIC LETTER STAN
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{76} }
+% \end{macrocode}
+% U+16E6 RUNIC LETTER LONG-BRANCH-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{77} }
+% \end{macrocode}
+% U+16E7 RUNIC LETTER SHORT-TWIG-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{78} }
+% \end{macrocode}
+% U+16E8 RUNIC LETTER ICELANDIC-YR
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{79} }
+% \end{macrocode}
+% U+16E9 RUNIC LETTER Q
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7A} }
+% \end{macrocode}
+% U+16EA RUNIC LETTER X
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7B} }
+% \end{macrocode}
+% U+16EE RUNIC ARLAUG SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7C}\x{21} }
+% \end{macrocode}
+% U+16EF RUNIC TVIMADUR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+% \end{macrocode}
+% U+16F0 RUNIC BELGTHOR SYMBOL
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+% \end{macrocode}
+% U+16F1 RUNIC LETTER K
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+% \end{macrocode}
+% U+16F2 RUNIC LETTER SH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+% \end{macrocode}
+% U+16F3 RUNIC LETTER OO
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+% \end{macrocode}
+% U+16F4 RUNIC LETTER FRANKS CASKET OS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+% \end{macrocode}
+% U+16F5 RUNIC LETTER FRANKS CASKET IS
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+% \end{macrocode}
+% U+16F6 RUNIC LETTER FRANKS CASKET EH
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+% \end{macrocode}
+% U+16F7 RUNIC LETTER FRANKS CASKET AC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+% \end{macrocode}
+% U+16F8 RUNIC LETTER FRANKS CASKET AESC
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+% \end{macrocode}
+% Tironian et
+% \begin{macrocode}
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7D} \x{2C} }
+% \end{macrocode}
+% U+16EB RUNIC SINGLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{7E}\x{21} }
+% \end{macrocode}
+% U+16EC RUNIC MULTIPLE PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{7E}\x{22} }
+% \end{macrocode}
+% U+16ED RUNIC CROSS PUNCTUATION
+% \begin{macrocode}
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{7E}\x{23} }
+% \end{macrocode}
+%Any character in the punctuation class (unlikely to occur in Runic
+%but added for completeness):
+% \begin{macrocode}
+ { ([[:punct:]]+) } { \cO\x{7E}\x{24} \1 }
+ }
+ #1
+ }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\datatool_locale_define_keys:nn { ang-Runr }
+ {
+ order .choice:,
+ order / punc-unicode .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_punc_unicode:n { ##1 }
+ }
+ },
+ order / punc-futhorc .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_punc_futhorc:n { ##1 }
+ }
+ },
+ order / futhorc-punc .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_futhorc_punc:n { ##1 }
+ }
+ },
+ }
+% \end{macrocode}
+%
+%
+%Translations: only providing \qt{and} (Tironian et)
+% \begin{macrocode}
+\newcommand \DTLangRunrTranslations {
+ \tl_set:Nn \DTLandname { ⁊ }
+}
+% \end{macrocode}
+%
+%Switch off \LaTeX3 syntax.
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+
+%\iffalse
+% \begin{macrocode}
+%</datatool-ang-Runr-utf8.ldf>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
Property changes on: branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.ins
===================================================================
--- branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.ins (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/source/latex/datatool-english/datatool-english.ins 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,55 @@
+% datatool-english.ins generated using makedtx version 1.2 2025/3/2 22:14
+\input docstrip
+
+\preamble
+
+ datatool-english.dtx
+ Copyright 2025 Nicola Talbot
+
+ 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 Nicola Talbot.
+
+ This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{datatool-english.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-english.ldf,package}}
+\file{datatool-english-ascii.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-english-ascii.ldf,package}}
+\file{datatool-english-latin1.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-english-latin1.ldf,package}}
+\file{datatool-english-utf8.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-english-utf8.ldf,package}}
+\file{datatool-en-CA.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-en-CA.ldf,package}}
+\file{datatool-en-ZA.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-en-ZA.ldf,package}}
+\file{databib-english.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{databib-english.ldf,package}}
+\file{person-english.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{person-english.ldf,package}}
+\file{datatool-anglosaxon.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-anglosaxon.ldf,package}}
+\file{datatool-ang-Latn.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-ang-Latn.ldf,package}}
+\file{datatool-ang-Latn-utf8.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-ang-Latn-utf8.ldf,package}}
+\file{datatool-ang-Runr.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-ang-Runr.ldf,package}}
+\file{datatool-ang-Runr-utf8.ldf}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{datatool-english.dtx}{datatool-ang-Runr-utf8.ldf,package}}
+}
+
+\endbatchfile
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/databib-english.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/databib-english.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/databib-english.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,94 @@
+%%
+%% This is file `databib-english.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `databib-english.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\cs_new:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotted:n { #1 }
+ }
+\datatool_locale_define_keys:nn { en / databib }
+ {
+ short-month-style .choice: ,
+ short-month-style / dotted .code:n =
+ {
+ \cs_set:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotted:n { #1 }
+ }
+ } ,
+ short-month-style / dotless .code:n =
+ {
+ \cs_set:Nn \databib_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotless:n { #1 }
+ }
+ } ,
+ }
+\newcommand \DataBibEnglish
+ {
+ \tl_set:Nn \ofname { of }
+ \tl_set:Nn \inname { in }
+ \tl_set:Nn \etalname { et ~ al. }
+ \tl_set:Nn \editorname { editor }
+ \tl_set:Nn \editorsname { editors }
+ \tl_set:Nn \volumename { volume }
+ \tl_set:Nn \numbername { number }
+ \tl_set:Nn \pagesname { pages }
+ \tl_set:Nn \pagename { page }
+ \tl_set:Nn \editionname { edition }
+ \tl_set:Nn \techreportname { Technical ~ report }
+ \tl_set:Nn \mscthesisname { Master's ~ thesis }
+ \tl_set:Nn \phdthesisname { PhD ~ thesis }
+ \tl_set:Nn \DTLbibaccessedname { accessed }
+ \renewcommand \dtl at monthname [ 1 ]
+ {
+ \datatool_en_monthname:n { ##1 }
+ }
+ \renewcommand \dtl at abbrvmonthname [ 1 ]
+ {
+ \databib_en_shortmonthname:n { ##1 }
+ }
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DataBibEnglish}
+\endinput
+%%
+%% End of file `databib-english.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/databib-english.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn-utf8.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn-utf8.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn-utf8.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,274 @@
+%%
+%% This is file `datatool-ang-Latn-utf8.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-ang-Latn-utf8.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{ang-Latn-utf8}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\newcommand \DTLangLatnLocaleHandler [ 1 ]
+{
+ \datatool_angLatn_order_harley:N #1
+}
+\cs_new:Nn \datatool_angLatn_order_harley:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ā} {A}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ē} {E}
+ {Ì|Í|Î|Ï|Ī} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ù|Ú|Û|Ü|Ū} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\x{5B}}
+ {Ð} {\cL\x{5C}}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {\cL\x{5D}}
+ {Þ|Ꝥ} {\cL\x{5E}}
+ {à|á|â|ã|ä|ā} {a}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ē} {e}
+ {ì|í|î|ï|ī} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ſ} {s}
+ {ß} {ss}
+ {ù|ú|û|ü|ū} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7C}}
+ {æ|ǣ|ǽ|æ̀|æ̂} {\cL\x{7D}}
+ {þ|ꝥ} {\cL\x{7E}}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+\cs_new:Nn \datatool_angLatn_order_stowe:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ą} {A}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {AE}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ę} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ꞇ|Ꞇ̃} {T}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\cL\x{5B}}
+ {Ð} {\cL\x{5C}}
+ {Þ|Ꝥ} {\cL\x{5D}}
+ {à|á|â|ã|ä|ą} {a}
+ {æ|ǣ|ǽ|æ̀|æ̂} {ae}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ę} {e}
+ {ì|í|î|ï|ı} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ꞇ|ꞇ̃} {t}
+ {ù|ú|û|ü} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7C}}
+ {þ|ꝥ} {\cL\x{7D}}
+ {⁊} {\cL\x{7E}}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+\cs_new:Nn \datatool_angLatn_order_titus:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Ą} {A}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {AE}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ę} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ꞇ|Ꞇ̃} {T}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Ƿ|Ꝩ} {\cL\x{5B}}
+ {Ð} {\cL\x{5D}}
+ {Þ|Ꝥ} {\cL\x{5C}}
+ {à|á|â|ã|ä|ą} {a}
+ {æ|ǣ|ǽ|æ̀|æ̂} {ae}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ę} {e}
+ {ì|í|î|ï|ı} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ꞇ|ꞇ̃} {t}
+ {ù|ú|û|ü} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {\cL\x{7B}}
+ {ð} {\cL\x{7D}}
+ {þ|ꝥ} {\cL\x{7C}}
+ {⁊} {\cL\x{7E}}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+\cs_new:Nn \datatool_angLatn_order_futhorc:N
+ {
+ \regex_replace_case_all:nN
+ {
+ {f} {\cL\x{31}}
+ {u} {\cL\x{32}}
+ {þ} {\cL\x{33}}
+ {o} {\cL\x{34}}
+ {r} {\cL\x{35}}
+ {c} {\cL\x{36}}
+ {g} {\cL\x{37}}
+ {w} {\cL\x{38}}
+ {h} {\cL\x{39}}
+ {n} {\cL\x{3A}}
+ {i} {\cL\x{3B}}
+ {j} {\cL\x{3C}}
+ {ï} {\cL\x{3D}}
+ {p} {\cL\x{3E}}
+ {x} {\cL\x{40}}
+ {st} {\cL\x{51}}
+ {s} {\cL\x{41}}
+ {t} {\cL\x{42}}
+ {b} {\cL\x{43}}
+ {ea} {\cL\x{4C}}
+ {e} {\cL\x{44}}
+ {m} {\cL\x{45}}
+ {l} {\cL\x{46}}
+ {ŋ} {\cL\x{47}}
+ {œ} {\cL\x{48}}
+ {d} {\cL\x{49}}
+ {a} {\cL\x{4A}}
+ {æ} {\cL\x{4B}}
+ {y} {\cL\x{4D}}
+ {k} {\cL\x{4E}}
+ {ḡ} {\cL\x{4F}}
+ {q} {\cL\x{50}}
+ {ę|ᴇ} {\cL\x{52}}
+ {į} {\cL\x{53}}
+ {ī} {\cL\x{54}}
+ {c̄|k̄} {\cL\x{55}}
+ {⁊} {\cL\x{7E}}
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+ }
+\cs_new:Nn \datatool_angLatn_process_letter_group:N
+ {
+ \regex_replace_case_once:nN
+ {
+ {À|Á|Â|Ã|Ä|Ā} {A}
+ {Ç|Ċ} {C}
+ {È|É|Ê|Ë|Ē} {E}
+ {Ì|Í|Î|Ï|Ī} {I}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö} {O}
+ {Œ} {OE}
+ {Ù|Ú|Û|Ü|Ū} {U}
+ {Ý} {Y}
+ {Æ|Ǣ|Ǽ|Æ̀|Æ̂} {Æ}
+ {Ƿ|Ꝩ} {Ƿ}
+ {Þ|Ꝥ} {Þ}
+ {à|á|â|ã|ä|ā} {a}
+ {ç|ċ} {c}
+ {è|é|ê|ë|ē} {e}
+ {ì|í|î|ï|ī} {i}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö} {o}
+ {œ} {oe}
+ {ſ} {s}
+ {ß} {ss}
+ {ù|ú|û|ü|ū} {u}
+ {ý} {y}
+ {ƿ|ꝩ} {ƿ}
+ {æ|ǣ|ǽ|æ̀|æ̂} {æ}
+ {þ|ꝥ} {þ}
+ }
+ #1
+ }
+\datatool_locale_define_keys:nn { ang-Latn }
+ {
+ order .choice:,
+ order / harley .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_harley:N ##1
+ }
+ },
+ order / stowe .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_stowe:N ##1
+ }
+ },
+ order / titus .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_titus:N ##1
+ }
+ },
+ order / futhorc .code:n =
+ {
+ \renewcommand \DTLangLatnLocaleHandler [1]
+ {
+ \datatool_angLatn_order_futhorc:N ##1
+ }
+ },
+ }
+\newcommand \DTLangLatnTranslations
+{
+ \tl_set:Nn \DTLandname { ⁊ }
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-ang-Latn-utf8.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn-utf8.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,86 @@
+%%
+%% This is file `datatool-ang-Latn.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-ang-Latn.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{ang-Latn}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequestResource{ang-Latn-\TrackLangEncodingName}
+{%
+ \csuse{datatool_locale_warn:n}{datatool-ang-Latn}%
+ {%
+ No support for `anglosaxon' with script `Latn'
+ and encoding `\TrackLangEncodingName'.%
+ }%
+ \endinput
+}
+\ExplSyntaxOn
+\newcommand \DTLangLatnLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_letter:nN { #1 } #2
+ }
+\newcommand \DTLangLatnLocaleGetGroupString [ 3 ]
+ {
+ \datatool_sort_preprocess:Nn #3 { #1 }
+ \datatool_angLatn_process_letter_group:N #3
+ \bool_lazy_and:nnT
+ { \tl_if_head_eq_charcode_p:nN { #1 } - }
+ { \bool_not_p:n { \tl_if_head_eq_charcode_p:nN { #2 } " } }
+ {
+ \exp_args:NNe \tl_set:Nn #3 { \tl_tail:N #3 }
+ }
+ }
+\newcommand \DTLangLatnLocaleHook
+ {
+ \DTLresetLanguage
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLangLatnLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLangLatnLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLangLatnLocaleGetGroupString }
+ \DTLangLatnTranslations
+ \tl_set:Nn \l_datatool_current_language_tl { angLatn }
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLangLatnLocaleHook}
+\endinput
+%%
+%% End of file `datatool-ang-Latn.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Latn.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr-utf8.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr-utf8.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr-utf8.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,941 @@
+%%
+%% This is file `datatool-ang-Runr-utf8.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-ang-Runr-utf8.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{ang-Runr-utf8}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\newcommand \DTLangRunrLocaleHandler [ 1 ] {
+ \datatool_angRunr_order_punc_futhorc:n { #1 }
+}
+\datatool_if_unicode_engine:TF
+ {
+ \cs_new:Nn \datatool_angRunr_order_punc_unicode:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{16A0} } { \cL\x{31} }
+ { \x{16A1} } { \cL\x{32} }
+ { \x{16A2} } { \cL\x{33} }
+ { \x{16A3} } { \cL\x{34} }
+ { \x{16A4} } { \cL\x{35} }
+ { \x{16A5} } { \cL\x{36} }
+ { \x{16A6} } { \cL\x{37} }
+ { \x{16A7} } { \cL\x{38} }
+ { \x{16A8} } { \cL\x{39} }
+ { \x{16A9} } { \cL\x{3A} }
+ { \x{16AA} } { \cL\x{3B} }
+ { \x{16AB} } { \cL\x{3C} }
+ { \x{16AC} } { \cL\x{3D} }
+ { \x{16AD} } { \cL\x{3E} }
+ { \x{16AE} } { \cL\x{3F} }
+ { \x{16AF} } { \cL\x{40} }
+ { \x{16B0} } { \cL\x{41} }
+ { \x{16B1} } { \cL\x{42} }
+ { \x{16B2} } { \cL\x{43} }
+ { \x{16B3} } { \cL\x{44} }
+ { \x{16B4} } { \cL\x{45} }
+ { \x{16B5} } { \cL\x{46} }
+ { \x{16B6} } { \cL\x{47} }
+ { \x{16B7} } { \cL\x{48} }
+ { \x{16B8} } { \cL\x{49} }
+ { \x{16B9} } { \cL\x{4A} }
+ { \x{16BA} } { \cL\x{4B} }
+ { \x{16BB} } { \cL\x{4C} }
+ { \x{16BC} } { \cL\x{4D} }
+ { \x{16BD} } { \cL\x{4E} }
+ { \x{16BE} } { \cL\x{4F} }
+ { \x{16BF} } { \cL\x{50} }
+ { \x{16C0} } { \cL\x{51} }
+ { \x{16C1} } { \cL\x{52} }
+ { \x{16C2} } { \cL\x{53} }
+ { \x{16C3} } { \cL\x{54} }
+ { \x{16C4} } { \cL\x{55} }
+ { \x{16C5} } { \cL\x{56} }
+ { \x{16C6} } { \cL\x{57} }
+ { \x{16C7} } { \cL\x{58} }
+ { \x{16C8} } { \cL\x{59} }
+ { \x{16C9} } { \cL\x{5A} }
+ { \x{16CA} } { \cL\x{5B} }
+ { \x{16CB} } { \cL\x{5C} }
+ { \x{16CC} } { \cL\x{5D} }
+ { \x{16CD} } { \cL\x{5E} }
+ { \x{16CE} } { \cL\x{5F} }
+ { \x{16CF} } { \cL\x{60} }
+ { \x{16D0} } { \cL\x{61} }
+ { \x{16D1} } { \cL\x{62} }
+ { \x{16D2} } { \cL\x{63} }
+ { \x{16D3} } { \cL\x{64} }
+ { \x{16D4} } { \cL\x{65} }
+ { \x{16D5} } { \cL\x{66} }
+ { \x{16D6} } { \cL\x{67} }
+ { \x{16D7} } { \cL\x{68} }
+ { \x{16D8} } { \cL\x{69} }
+ { \x{16D9} } { \cL\x{6A} }
+ { \x{16DA} } { \cL\x{6B} }
+ { \x{16DB} } { \cL\x{6C} }
+ { \x{16DC} } { \cL\x{6D} }
+ { \x{16DD} } { \cL\x{6F} }
+ { \x{16DE} } { \cL\x{70} }
+ { \x{16DF} } { \cL\x{71} }
+ { \x{16E0} } { \cL\x{72} }
+ { \x{16E1} } { \cL\x{73} }
+ { \x{16E2} } { \cL\x{74} }
+ { \x{16E3} } { \cL\x{75} }
+ { \x{16E4} } { \cL\x{76} }
+ { \x{16E5} } { \cL\x{77} }
+ { \x{16E6} } { \cL\x{78} }
+ { \x{16E7} } { \cL\x{79} }
+ { \x{16E8} } { \cL\x{7A} }
+ { \x{16E9} } { \cL\x{7B} }
+ { \x{16EA} } { \cL\x{7C} }
+ { \x{16EE} } { \cL\x{7D}\x{21} }
+ { \x{16EF} } { \cL\x{7D}\x{22} }
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+ { \x{16EB} } { \cO\x{21}\x{21} }
+ { \x{16EC} } { \cO\x{21}\x{22} }
+ { \x{16ED} } { \cO\x{21}\x{23} }
+ { \x{204A} } { \cL\x{7E} }
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+ \cs_new:Nn \datatool_angRunr_order_punc_futhorc:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{16A0} } { \cL\x{31} }
+ { \x{16A2} } { \cL\x{32} }
+ { \x{16A6} } { \cL\x{33} }
+ { \x{16A9} } { \cL\x{34} }
+ { \x{16B1} } { \cL\x{35} }
+ { \x{16B3} } { \cL\x{36} }
+ { \x{16B7} } { \cL\x{37} }
+ { \x{16B9} } { \cL\x{38} }
+ { \x{16BB} } { \cL\x{39} }
+ { \x{16BE} } { \cL\x{3A} }
+ { \x{16C1} } { \cL\x{3B} }
+ { \x{16C4} } { \cL\x{3C} }
+ { \x{16C7} } { \cL\x{3D} }
+ { \x{16C8} } { \cL\x{3E} }
+ { \x{16C9} } { \cL\x{3F} }
+ { \x{16CB} } { \cL\x{40} }
+ { \x{16CF} } { \cL\x{41} }
+ { \x{16D2} } { \cL\x{42} }
+ { \x{16D6} } { \cL\x{43} }
+ { \x{16D7} } { \cL\x{44} }
+ { \x{16DA} } { \cL\x{45} }
+ { \x{16DD} } { \cL\x{46} }
+ { \x{16DF} } { \cL\x{47} }
+ { \x{16DE} } { \cL\x{48} }
+ { \x{16AA} } { \cL\x{49} }
+ { \x{16AB} } { \cL\x{4A} }
+ { \x{16A3} } { \cL\x{4B} }
+ { \x{16E1} } { \cL\x{4C} }
+ { \x{16E0} } { \cL\x{4D} }
+ { \x{16A1} } { \cL\x{4E} }
+ { \x{16A4} } { \cL\x{4F} }
+ { \x{16A5} } { \cL\x{50} }
+ { \x{16A7} } { \cL\x{51} }
+ { \x{16A8} } { \cL\x{52} }
+ { \x{16AC} } { \cL\x{53} }
+ { \x{16AD} } { \cL\x{54} }
+ { \x{16AE} } { \cL\x{55} }
+ { \x{16AF} } { \cL\x{56} }
+ { \x{16B0} } { \cL\x{57} }
+ { \x{16B2} } { \cL\x{58} }
+ { \x{16B4} } { \cL\x{59} }
+ { \x{16B5} } { \cL\x{5A} }
+ { \x{16B6} } { \cL\x{5B} }
+ { \x{16B8} } { \cL\x{5C} }
+ { \x{16BA} } { \cL\x{5D} }
+ { \x{16BC} } { \cL\x{5E} }
+ { \x{16BD} } { \cL\x{5F} }
+ { \x{16BF} } { \cL\x{60} }
+ { \x{16C0} } { \cL\x{61} }
+ { \x{16C2} } { \cL\x{62} }
+ { \x{16C3} } { \cL\x{63} }
+ { \x{16C5} } { \cL\x{64} }
+ { \x{16C6} } { \cL\x{65} }
+ { \x{16CA} } { \cL\x{66} }
+ { \x{16CC} } { \cL\x{67} }
+ { \x{16CD} } { \cL\x{68} }
+ { \x{16CE} } { \cL\x{69} }
+ { \x{16D0} } { \cL\x{6A} }
+ { \x{16D1} } { \cL\x{6B} }
+ { \x{16D3} } { \cL\x{6C} }
+ { \x{16D4} } { \cL\x{6D} }
+ { \x{16D5} } { \cL\x{6E} }
+ { \x{16D8} } { \cL\x{6F} }
+ { \x{16D9} } { \cL\x{70} }
+ { \x{16DB} } { \cL\x{71} }
+ { \x{16DC} } { \cL\x{72} }
+ { \x{16E2} } { \cL\x{73} }
+ { \x{16E3} } { \cL\x{74} }
+ { \x{16E4} } { \cL\x{75} }
+ { \x{16E5} } { \cL\x{76} }
+ { \x{16E6} } { \cL\x{77} }
+ { \x{16E7} } { \cL\x{78} }
+ { \x{16E8} } { \cL\x{79} }
+ { \x{16E9} } { \cL\x{7A} }
+ { \x{16EA} } { \cL\x{7B} }
+ { \x{16EE} } { \cL\x{7C}\x{21} }
+ { \x{16EF} } { \cL\x{7C}\x{22} }
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+ { \x{16EB} } { \cO\x{21}\x{21} }
+ { \x{16EC} } { \cO\x{21}\x{22} }
+ { \x{16ED} } { \cO\x{21}\x{23} }
+ { \x{204A} } { \cL\x{7E} }
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+ \cs_new:Nn \datatool_angRunr_order_futhorc_punc:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{16A0} } { \cL\x{31} }
+ { \x{16A2} } { \cL\x{32} }
+ { \x{16A6} } { \cL\x{33} }
+ { \x{16A9} } { \cL\x{34} }
+ { \x{16B1} } { \cL\x{35} }
+ { \x{16B3} } { \cL\x{36} }
+ { \x{16B7} } { \cL\x{37} }
+ { \x{16B9} } { \cL\x{38} }
+ { \x{16BB} } { \cL\x{39} }
+ { \x{16BE} } { \cL\x{3A} }
+ { \x{16C1} } { \cL\x{3B} }
+ { \x{16C4} } { \cL\x{3C} }
+ { \x{16C7} } { \cL\x{3D} }
+ { \x{16C8} } { \cL\x{3E} }
+ { \x{16C9} } { \cL\x{3F} }
+ { \x{16CB} } { \cL\x{40} }
+ { \x{16CF} } { \cL\x{41} }
+ { \x{16D2} } { \cL\x{42} }
+ { \x{16D6} } { \cL\x{43} }
+ { \x{16D7} } { \cL\x{44} }
+ { \x{16DA} } { \cL\x{45} }
+ { \x{16DD} } { \cL\x{46} }
+ { \x{16DF} } { \cL\x{47} }
+ { \x{16DE} } { \cL\x{48} }
+ { \x{16AA} } { \cL\x{49} }
+ { \x{16AB} } { \cL\x{4A} }
+ { \x{16A3} } { \cL\x{4B} }
+ { \x{16E1} } { \cL\x{4C} }
+ { \x{16E0} } { \cL\x{4D} }
+ { \x{16A1} } { \cL\x{4E} }
+ { \x{16A4} } { \cL\x{4F} }
+ { \x{16A5} } { \cL\x{50} }
+ { \x{16A7} } { \cL\x{51} }
+ { \x{16A8} } { \cL\x{52} }
+ { \x{16AC} } { \cL\x{53} }
+ { \x{16AD} } { \cL\x{54} }
+ { \x{16AE} } { \cL\x{55} }
+ { \x{16AF} } { \cL\x{56} }
+ { \x{16B0} } { \cL\x{57} }
+ { \x{16B2} } { \cL\x{58} }
+ { \x{16B4} } { \cL\x{59} }
+ { \x{16B5} } { \cL\x{5A} }
+ { \x{16B6} } { \cL\x{5B} }
+ { \x{16B8} } { \cL\x{5C} }
+ { \x{16BA} } { \cL\x{5D} }
+ { \x{16BC} } { \cL\x{5E} }
+ { \x{16BD} } { \cL\x{5F} }
+ { \x{16BF} } { \cL\x{60} }
+ { \x{16C0} } { \cL\x{61} }
+ { \x{16C2} } { \cL\x{62} }
+ { \x{16C3} } { \cL\x{63} }
+ { \x{16C5} } { \cL\x{64} }
+ { \x{16C6} } { \cL\x{65} }
+ { \x{16CA} } { \cL\x{66} }
+ { \x{16CC} } { \cL\x{67} }
+ { \x{16CD} } { \cL\x{68} }
+ { \x{16CE} } { \cL\x{69} }
+ { \x{16D0} } { \cL\x{6A} }
+ { \x{16D1} } { \cL\x{6B} }
+ { \x{16D3} } { \cL\x{6C} }
+ { \x{16D4} } { \cL\x{6D} }
+ { \x{16D5} } { \cL\x{6E} }
+ { \x{16D8} } { \cL\x{6F} }
+ { \x{16D9} } { \cL\x{70} }
+ { \x{16DB} } { \cL\x{71} }
+ { \x{16DC} } { \cL\x{72} }
+ { \x{16E2} } { \cL\x{73} }
+ { \x{16E3} } { \cL\x{74} }
+ { \x{16E4} } { \cL\x{75} }
+ { \x{16E5} } { \cL\x{76} }
+ { \x{16E6} } { \cL\x{77} }
+ { \x{16E7} } { \cL\x{78} }
+ { \x{16E8} } { \cL\x{79} }
+ { \x{16E9} } { \cL\x{7A} }
+ { \x{16EA} } { \cL\x{7B} }
+ { \x{16EE} } { \cL\x{7C}\x{21} }
+ { \x{16EF} } { \cL\x{7C}\x{22} }
+ { \x{16F0} } { \cL\x{7D}\x{23} }
+ { \x{16F1} } { \cL\x{7D}\x{24} }
+ { \x{16F2} } { \cL\x{7D}\x{25} }
+ { \x{16F3} } { \cL\x{7D}\x{26} }
+ { \x{16F4} } { \cL\x{7D}\x{27} }
+ { \x{16F5} } { \cL\x{7D}\x{28} }
+ { \x{16F6} } { \cL\x{7D}\x{29} }
+ { \x{16F7} } { \cL\x{7D}\x{2A} }
+ { \x{16F8} } { \cL\x{7D}\x{2B} }
+ { \x{204A} } { \cL\x{7D} \x{2C} }
+ { \x{16EB} } { \cO\x{7E}\x{21} }
+ { \x{16EC} } { \cO\x{7E}\x{22} }
+ { \x{16ED} } { \cO\x{7E}\x{23} }
+ { ([[:punct:]]+) } { \cO\x{7E}\x{24} \1 }
+ }
+ #1
+ }
+ }
+ {
+ \cs_new:Nn \datatool_angRunr_order_punc_unicode:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{32} }
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{33} }
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{34} }
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{35} }
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{36} }
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{37} }
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{38} }
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{39} }
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{3A} }
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{3B} }
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{3C} }
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{3D} }
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{3E} }
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{3F} }
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{40} }
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{41} }
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{42} }
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{43} }
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{44} }
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{45} }
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{46} }
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{47} }
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{48} }
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{49} }
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{4A} }
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{4B} }
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{4C} }
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{4D} }
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{4E} }
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{4F} }
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{50} }
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{51} }
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{52} }
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{53} }
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{54} }
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{55} }
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{56} }
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{57} }
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{58} }
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{59} }
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{5A} }
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{5B} }
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{5C} }
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{5D} }
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{5E} }
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{5F} }
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{60} }
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{61} }
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{62} }
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{63} }
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{64} }
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{65} }
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{66} }
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{67} }
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{68} }
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{69} }
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{6A} }
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{6B} }
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{6C} }
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{6D} }
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{6F} }
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{70} }
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{71} }
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{72} }
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{73} }
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{74} }
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{75} }
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{76} }
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{77} }
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{78} }
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{79} }
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{7A} }
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7B} }
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7C} }
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7D}\x{21} }
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{21}\x{21} }
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{21}\x{22} }
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{21}\x{23} }
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7E} }
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+ \cs_new:Nn \datatool_angRunr_order_punc_futhorc:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{32} }
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{33} }
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{34} }
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{35} }
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{36} }
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{37} }
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{38} }
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{39} }
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{3A} }
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{3B} }
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{3C} }
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{3D} }
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{3E} }
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{3F} }
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{40} }
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{41} }
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{42} }
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{43} }
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{44} }
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{45} }
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{46} }
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{47} }
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{48} }
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{49} }
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{4A} }
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{4B} }
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{4C} }
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{4D} }
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{4E} }
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{4F} }
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{50} }
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{51} }
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{52} }
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{53} }
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{54} }
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{55} }
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{56} }
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{57} }
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{58} }
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{59} }
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{5A} }
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{5B} }
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{5C} }
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{5D} }
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{5E} }
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{5F} }
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{60} }
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{61} }
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{62} }
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{63} }
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{64} }
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{65} }
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{66} }
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{67} }
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{68} }
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{69} }
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{6A} }
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{6B} }
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{6C} }
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{6D} }
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{6E} }
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{6F} }
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{70} }
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{71} }
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{72} }
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{73} }
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{74} }
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{75} }
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{76} }
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{77} }
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{78} }
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{79} }
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7A} }
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7B} }
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7C}\x{21} }
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{21}\x{21} }
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{21}\x{22} }
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{21}\x{23} }
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7E} }
+ { ([[:punct:]]+) } { \cO\x{21}\x{24} \1 }
+ }
+ #1
+ }
+ \cs_new:Nn \datatool_angRunr_order_futhorc_punc:n
+ {
+ \regex_replace_case_all:nN
+ {
+ { \x{E1} \x{9A} \x{A0} }
+ { \cL\x{31} }
+ { \x{E1} \x{9A} \x{A2} }
+ { \cL\x{32} }
+ { \x{E1} \x{9A} \x{A6} }
+ { \cL\x{33} }
+ { \x{E1} \x{9A} \x{A9} }
+ { \cL\x{34} }
+ { \x{E1} \x{9A} \x{B1} }
+ { \cL\x{35} }
+ { \x{E1} \x{9A} \x{B3} }
+ { \cL\x{36} }
+ { \x{E1} \x{9A} \x{B7} }
+ { \cL\x{37} }
+ { \x{E1} \x{9A} \x{B9} }
+ { \cL\x{38} }
+ { \x{E1} \x{9A} \x{BB} }
+ { \cL\x{39} }
+ { \x{E1} \x{9A} \x{BE} }
+ { \cL\x{3A} }
+ { \x{E1} \x{9B} \x{81} }
+ { \cL\x{3B} }
+ { \x{E1} \x{9B} \x{84} }
+ { \cL\x{3C} }
+ { \x{E1} \x{9B} \x{87} }
+ { \cL\x{3D} }
+ { \x{E1} \x{9B} \x{88} }
+ { \cL\x{3E} }
+ { \x{E1} \x{9B} \x{89} }
+ { \cL\x{3F} }
+ { \x{E1} \x{9B} \x{8B} }
+ { \cL\x{40} }
+ { \x{E1} \x{9B} \x{8F} }
+ { \cL\x{41} }
+ { \x{E1} \x{9B} \x{92} }
+ { \cL\x{42} }
+ { \x{E1} \x{9B} \x{96} }
+ { \cL\x{43} }
+ { \x{E1} \x{9B} \x{97} }
+ { \cL\x{44} }
+ { \x{E1} \x{9B} \x{9A} }
+ { \cL\x{45} }
+ { \x{E1} \x{9B} \x{9D} }
+ { \cL\x{46} }
+ { \x{E1} \x{9B} \x{9F} }
+ { \cL\x{47} }
+ { \x{E1} \x{9B} \x{9E} }
+ { \cL\x{48} }
+ { \x{E1} \x{9A} \x{AA} }
+ { \cL\x{49} }
+ { \x{E1} \x{9A} \x{AB} }
+ { \cL\x{4A} }
+ { \x{E1} \x{9A} \x{A3} }
+ { \cL\x{4B} }
+ { \x{E1} \x{9B} \x{A1} }
+ { \cL\x{4C} }
+ { \x{E1} \x{9B} \x{A0} }
+ { \cL\x{4D} }
+ { \x{E1} \x{9A} \x{A1} }
+ { \cL\x{4E} }
+ { \x{E1} \x{9A} \x{A4} }
+ { \cL\x{4F} }
+ { \x{E1} \x{9A} \x{A5} }
+ { \cL\x{50} }
+ { \x{E1} \x{9A} \x{A7} }
+ { \cL\x{51} }
+ { \x{E1} \x{9A} \x{A8} }
+ { \cL\x{52} }
+ { \x{E1} \x{9A} \x{AC} }
+ { \cL\x{53} }
+ { \x{E1} \x{9A} \x{AD} }
+ { \cL\x{54} }
+ { \x{E1} \x{9A} \x{AE} }
+ { \cL\x{55} }
+ { \x{E1} \x{9A} \x{AF} }
+ { \cL\x{56} }
+ { \x{E1} \x{9A} \x{B0} }
+ { \cL\x{57} }
+ { \x{E1} \x{9A} \x{B2} }
+ { \cL\x{58} }
+ { \x{E1} \x{9A} \x{B4} }
+ { \cL\x{59} }
+ { \x{E1} \x{9A} \x{B5} }
+ { \cL\x{5A} }
+ { \x{E1} \x{9A} \x{B6} }
+ { \cL\x{5B} }
+ { \x{E1} \x{9A} \x{B8} }
+ { \cL\x{5C} }
+ { \x{E1} \x{9A} \x{BA} }
+ { \cL\x{5D} }
+ { \x{E1} \x{9A} \x{BC} }
+ { \cL\x{5E} }
+ { \x{E1} \x{9A} \x{BD} }
+ { \cL\x{5F} }
+ { \x{E1} \x{9A} \x{BF} }
+ { \cL\x{60} }
+ { \x{E1} \x{9B} \x{80} }
+ { \cL\x{61} }
+ { \x{E1} \x{9B} \x{82} }
+ { \cL\x{62} }
+ { \x{E1} \x{9B} \x{83} }
+ { \cL\x{63} }
+ { \x{E1} \x{9B} \x{85} }
+ { \cL\x{64} }
+ { \x{E1} \x{9B} \x{86} }
+ { \cL\x{65} }
+ { \x{E1} \x{9B} \x{8A} }
+ { \cL\x{66} }
+ { \x{E1} \x{9B} \x{8C} }
+ { \cL\x{67} }
+ { \x{E1} \x{9B} \x{8D} }
+ { \cL\x{68} }
+ { \x{E1} \x{9B} \x{8E} }
+ { \cL\x{69} }
+ { \x{E1} \x{9B} \x{90} }
+ { \cL\x{6A} }
+ { \x{E1} \x{9B} \x{91} }
+ { \cL\x{6B} }
+ { \x{E1} \x{9B} \x{93} }
+ { \cL\x{6C} }
+ { \x{E1} \x{9B} \x{94} }
+ { \cL\x{6D} }
+ { \x{E1} \x{9B} \x{95} }
+ { \cL\x{6E} }
+ { \x{E1} \x{9B} \x{98} }
+ { \cL\x{6F} }
+ { \x{E1} \x{9B} \x{99} }
+ { \cL\x{70} }
+ { \x{E1} \x{9B} \x{9B} }
+ { \cL\x{71} }
+ { \x{E1} \x{9B} \x{9C} }
+ { \cL\x{72} }
+ { \x{E1} \x{9B} \x{A2} }
+ { \cL\x{73} }
+ { \x{E1} \x{9B} \x{A3} }
+ { \cL\x{74} }
+ { \x{E1} \x{9B} \x{A4} }
+ { \cL\x{75} }
+ { \x{E1} \x{9B} \x{A5} }
+ { \cL\x{76} }
+ { \x{E1} \x{9B} \x{A6} }
+ { \cL\x{77} }
+ { \x{E1} \x{9B} \x{A7} }
+ { \cL\x{78} }
+ { \x{E1} \x{9B} \x{A8} }
+ { \cL\x{79} }
+ { \x{E1} \x{9B} \x{A9} }
+ { \cL\x{7A} }
+ { \x{E1} \x{9B} \x{AA} }
+ { \cL\x{7B} }
+ { \x{E1} \x{9B} \x{AE} }
+ { \cL\x{7C}\x{21} }
+ { \x{E1} \x{9B} \x{AF} }
+ { \cL\x{7D}\x{22} }
+ { \x{E1} \x{9B} \x{B0} }
+ { \cL\x{7D}\x{23} }
+ { \x{E1} \x{9B} \x{B1} }
+ { \cL\x{7D}\x{24} }
+ { \x{E1} \x{9B} \x{B2} }
+ { \cL\x{7D}\x{25} }
+ { \x{E1} \x{9B} \x{B3} }
+ { \cL\x{7D}\x{26} }
+ { \x{E1} \x{9B} \x{B4} }
+ { \cL\x{7D}\x{27} }
+ { \x{E1} \x{9B} \x{B5} }
+ { \cL\x{7D}\x{28} }
+ { \x{E1} \x{9B} \x{B6} }
+ { \cL\x{7D}\x{29} }
+ { \x{E1} \x{9B} \x{B7} }
+ { \cL\x{7D}\x{2A} }
+ { \x{E1} \x{9B} \x{B8} }
+ { \cL\x{7D}\x{2B} }
+ { \x{E2} \x{81} \x{8A} }
+ { \cL\x{7D} \x{2C} }
+ { \x{E1} \x{9B} \x{AB} }
+ { \cO\x{7E}\x{21} }
+ { \x{E1} \x{9B} \x{AC} }
+ { \cO\x{7E}\x{22} }
+ { \x{E1} \x{9B} \x{AD} }
+ { \cO\x{7E}\x{23} }
+ { ([[:punct:]]+) } { \cO\x{7E}\x{24} \1 }
+ }
+ #1
+ }
+ }
+\datatool_locale_define_keys:nn { ang-Runr }
+ {
+ order .choice:,
+ order / punc-unicode .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_punc_unicode:n { ##1 }
+ }
+ },
+ order / punc-futhorc .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_punc_futhorc:n { ##1 }
+ }
+ },
+ order / futhorc-punc .code:n =
+ {
+ \renewcommand \DTLangRunrLocaleHandler [1]
+ {
+ \datatool_angRunr_order_futhorc_punc:n { ##1 }
+ }
+ },
+ }
+\newcommand \DTLangRunrTranslations {
+ \tl_set:Nn \DTLandname { ⁊ }
+}
+\ExplSyntaxOff
+
+\endinput
+%%
+%% End of file `datatool-ang-Runr-utf8.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr-utf8.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,79 @@
+%%
+%% This is file `datatool-ang-Runr.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-ang-Runr.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{ang-Runr}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequestResource{ang-Runr-\TrackLangEncodingName}
+{%
+ \csuse{datatool_locale_warn:n}{datatool-ang-Runr}%
+ {%
+ No support for `anglosaxon' with script `Runr'
+ and encoding `\TrackLangEncodingName'.%
+ }%
+ \endinput
+}
+\ExplSyntaxOn
+\newcommand \DTLangRunrLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_grapheme:nN { #1 } #2
+ }
+\newcommand \DTLangRunrLocaleGetGroupString [ 3 ]
+ {
+ \datatool_sort_preprocess:Nn #3 { #1 }
+ }
+\newcommand \DTLangRunrLocaleHook
+ {
+ \DTLresetLanguage
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLangRunrLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLangRunrLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLangRunrLocaleGetGroupString }
+ \DTLangRunrTranslations
+ \tl_set:Nn \l_datatool_current_language_tl { angRunr }
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLangRunrLocaleHook}
+\endinput
+%%
+%% End of file `datatool-ang-Runr.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-ang-Runr.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-anglosaxon.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-anglosaxon.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-anglosaxon.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,52 @@
+%%
+%% This is file `datatool-anglosaxon.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-anglosaxon.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{anglosaxon}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequestResource{ang-\CurrentTrackedDialectScript-\TrackLangEncodingName}
+{%
+ \csuse{datatool_locale_warn:n}{datatool-anglosaxon}%
+ {%
+ No support for `anglosaxon' with script `\CurrentTrackedDialectScript'
+ and encoding `\TrackLangEncodingName'%
+ }%
+}
+\endinput
+%%
+%% End of file `datatool-anglosaxon.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-anglosaxon.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-CA.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-CA.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-CA.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,87 @@
+%%
+%% This is file `datatool-en-CA.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-en-CA.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{en-CA}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequireResource{english}
+\ExplSyntaxOn
+\cs_new:Nn \datatool_en_CA_set_numberchars_official:
+ {
+ \datatool_set_thinspace_group_decimal_char:n { . }
+ }
+\cs_new:Nn \datatool_en_CA_set_numberchars_unofficial:
+ {
+ \DTLsetnumberchars { , } { . }
+ }
+\newcommand \datatoolenCASetNumberChars
+ {
+ \bool_if:NT \l_datatool_region_set_numberchars_bool
+ {
+ \datatool_en_CA_set_numberchars_official:
+ }
+ }
+\datatool_locale_define_keys:nn { en-CA }
+ {
+ number-style .choices:nn =
+ { official , unofficial }
+ {
+ \exp_args:NNe \renewcommand
+ \datatoolenCASetNumberChars
+ {
+ \exp_not:N \bool_if:NT
+ \exp_not:N \l_datatool_region_set_numberchars_bool
+ {
+ \exp_not:c { datatool_en_CA_set_numberchars_ \l_keys_choice_tl : }
+ }
+ }
+ \datatool_if_current_lang_region:nnT { en } { CA }
+ {
+ \datatoolenCASetNumberChars
+ }
+ } ,
+}
+\newcommand \DTLenCALocaleHook
+ {
+ \datatoolenCASetNumberChars
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLenCALocaleHook}
+\endinput
+%%
+%% End of file `datatool-en-CA.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-CA.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-ZA.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-ZA.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-ZA.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,87 @@
+%%
+%% This is file `datatool-en-ZA.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-en-ZA.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{en-ZA}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequireResource{english}
+\ExplSyntaxOn
+\cs_new:Npn \datatool_en_ZA_set_numberchars_thinspace:
+ {
+ \datatool_set_thinspace_group_decimal_char:n { . }
+ }
+\cs_new:Npn \datatool_en_ZA_set_numberchars_comma:
+ {
+ \DTLsetnumberchars { , } { . }
+ }
+\newcommand \datatoolenZASetNumberChars
+ {
+ \bool_if:NT \l_datatool_region_set_numberchars_bool
+ {
+ \datatool_en_ZA_set_numberchars_thinspace:
+ }
+ }
+\datatool_locale_define_keys:nn { en-ZA }
+ {
+ number-style .choices:nn =
+ { thinspace , comma }
+ {
+ \exp_args:NNe \renewcommand
+ \datatoolenZASetNumberChars
+ {
+ \exp_not:N \bool_if:NT
+ \exp_not:N \l_datatool_region_set_numberchars_bool
+ {
+ \exp_not:c { datatool_en_ZA_set_numberchars_ \l_keys_choice_tl : }
+ }
+ }
+ \datatool_if_current_lang_region:nnT { en } { ZA }
+ {
+ \datatoolenZASetNumberChars
+ }
+ } ,
+ }
+\newcommand \DTLenZALocaleHook
+ {
+ \datatoolenZASetNumberChars
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLenZALocaleHook}
+\endinput
+%%
+%% End of file `datatool-en-ZA.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-en-ZA.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-ascii.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-ascii.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-ascii.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,50 @@
+%%
+%% This is file `datatool-english-ascii.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-english-ascii.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english-ascii}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\newcommand \DTLenLocaleHandler [ 1 ]
+ {
+ \regex_replace_all:nnN { ([[:punct:]]+) } { \cO"\1 } #1
+ }
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-english-ascii.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-ascii.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-latin1.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-latin1.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-latin1.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,78 @@
+%%
+%% This is file `datatool-english-latin1.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-english-latin1.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english-latin1}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\newcommand \DTLenLocaleHandler [ 1 ]
+{
+ \regex_replace_case_all:nN
+ {
+ { [ \x{C0} - \x{C5} ] } { A }
+ { \x{C6} } { Ae }
+ { \x{C7} } { C }
+ { [ \x{C8} - \x{CB} ] } { E }
+ { [ \x{CC} - \x{CF} ] } { I }
+ { \x{D0} } { D }
+ { \x{D1} } { N }
+ { [ \x{D2} - \x{D6} \x{D8} ] } { O }
+ { [ \x{D9} - \x{DC} ]} { U }
+ { \x{DD} } { Y }
+ { \x{DE} } { Th }
+ { \x{DF} } { ss }
+ { [ \x{E0} - \x{E5} ] } { a }
+ { \x{E6} } { ae }
+ { \x{E7} } { c }
+ { [ \x{E8} - \x{EB} ] } { e }
+ { [ \x{EC} - \x{EF} ] } { i }
+ { \x{F0} } { d }
+ { \x{F1} } { n }
+ { [ \x{F2} - \x{F6} \x{F8} ] } { o }
+ { [ \x{F9} - \x{FC} ] } { u }
+ { [ \x{FD} \x{FF} ] } { y }
+ { \x{FE} } { th }
+ { (\ur{l_datatool_currencysigns_regex}) } { \cO\x{24}\1 }
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-english-latin1.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-latin1.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-utf8.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-utf8.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-utf8.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,91 @@
+%%
+%% This is file `datatool-english-utf8.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-english-utf8.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english-utf8}[2025/03/01 v1.0 (NLCT)]
+\ExplSyntaxOn
+\newcommand \DTLenLocaleHandler [ 1 ]
+{
+ \regex_replace_case_all:nN
+ {
+ {À|Á|Â|Ã|Ä|Å} {A}
+ {Æ} {Ae}
+ {Ç} {C}
+ {È|É|Ê|Ë} {E}
+ {Ì|Í|Î|Ï} {I}
+ {Ð} {D}
+ {Ñ} {N}
+ {Ò|Ó|Ô|Õ|Ö|Ø} {O}
+ {Ù|Ú|Û|Ü} {U}
+ {Ý} {Y}
+ {Þ} {Th}
+ {ß} {ss}
+ {à|á|â|ã|ä|å} {a}
+ {æ} {ae}
+ {ç} {c}
+ {è|é|ê|ë} {e}
+ {ì|í|î|ï} {i}
+ {ð} {d}
+ {ñ} {n}
+ {ò|ó|ô|õ|ö|ø} {o}
+ {ù|ú|û|ü} {u}
+ {ý|ÿ} {y}
+ {þ} {th}
+ {ſ} {s}
+ {IJ} {Ij}
+ {ij} {ij}
+ {Ł} {L}
+ {ł} {l}
+ {Œ} {Oe}
+ {œ} {oe}
+ {Ƿ} {W}
+ {ƿ} {w}
+ { (\ur{l_datatool_currencysigns_regex}) } { \cO\x{24}\1 }
+ { ’ } { \cO"' }
+ { ‘ } { \cO"` }
+ { (“|”) } { \cO"\cO" }
+ { (—|–) } { \cO"- }
+ { ([[:punct:]]+) } { \cO"\1 }
+ }
+ #1
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `datatool-english-utf8.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english-utf8.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,445 @@
+%%
+%% This is file `datatool-english.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `datatool-english.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+\TrackLangRequestResource{english-\TrackLangEncodingName}
+{
+ \csuse{datatool_locale_warn:nn}{datatool-english}%
+ {%
+ No support for `english' with
+ encoding `\TrackLangEncodingName'
+ (falling back on US-ASCII)%
+ }%
+ \TrackLangRequireResource{english-ascii}
+}
+\ExplSyntaxOn
+\newcommand \DTLenLocaleGetInitialLetter [ 2 ]
+ {
+ \datatool_get_first_letter:nN { #1 } #2
+ }
+\newcommand \DTLenLocaleGetGroupString [ 3 ]
+ {
+ \tl_set:Nn #3 { #2 }
+ }
+\newcommand \DTLenSetLetterGroups
+ {
+ \renewcommand \dtllettergroup [ 1 ]
+ { \text_titlecase_first:n { ##1 } }
+ \renewcommand \dtlnonlettergroup [ 1 ] { Symbols }
+ \renewcommand \dtlnumbergroup [ 1 ] { Numbers }
+ \renewcommand \dtlcurrencygroup [ 2 ] { Currency }
+ \renewcommand \dtldatetimegroup [ 1 ] { Timestamps }
+ \renewcommand \dtldategroup [ 1 ] { Dates }
+ \renewcommand \dtltimegroup [ 1 ] { Times }
+}
+\newcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { and }
+ }
+\newcommand \DTLenTranslations
+ {
+ \DTLenSetAndName
+ \renewcommand \DTLdatatypeunsetname { unset }
+ \renewcommand \DTLdatatypestringname { string }
+ \renewcommand \DTLdatatypeintegername { integer }
+ \renewcommand \DTLdatatypedecimalname { decimal }
+ \renewcommand \DTLdatatypecurrencyname { currency }
+ \renewcommand \DTLdatatypedatetimename { date-time }
+ \renewcommand \DTLdatatypedatename { date }
+ \renewcommand \DTLdatatypetimename { time }
+ \renewcommand \DTLdatatypeinvalidname { invalid }
+ }
+\datatool_locale_define_keys:nn { en }
+ {
+ and .choice:,
+ and / word .code:n =
+ {
+ \renewcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { and }
+ }
+ \tl_if_eq:NnT \l_datatool_current_language_tl { en }
+ { \DTLenSetAndName }
+ } ,
+ and / amp .code:n =
+ {
+ \renewcommand \DTLenSetAndName
+ {
+ \renewcommand \DTLandname { \& }
+ }
+ \tl_if_eq:NnT \l_datatool_current_language_tl { en }
+ { \DTLenSetAndName }
+ } ,
+ }
+\cs_new:Nn \datatool_en_get_monthname_map:n
+ {
+ \datatool_region_get_monthname_map:n { en / #1 }
+ }
+\datatool_region_set_monthname_map:nn { en / January } { 01 }
+\datatool_region_set_monthname_map:nn { en / Jan } { 01 }
+\datatool_region_set_monthname_map:nn { en / February } { 02 }
+\datatool_region_set_monthname_map:nn { en / Feb } { 02 }
+\datatool_region_set_monthname_map:nn { en / March } { 03 }
+\datatool_region_set_monthname_map:nn { en / Mar } { 03 }
+\datatool_region_set_monthname_map:nn { en / April } { 04 }
+\datatool_region_set_monthname_map:nn { en / Apr } { 04 }
+\datatool_region_set_monthname_map:nn { en / May } { 05 }
+\datatool_region_set_monthname_map:nn { en / June } { 06 }
+\datatool_region_set_monthname_map:nn { en / Jun } { 06 }
+\datatool_region_set_monthname_map:nn { en / July } { 07 }
+\datatool_region_set_monthname_map:nn { en / Jul } { 07 }
+\datatool_region_set_monthname_map:nn { en / August } { 08 }
+\datatool_region_set_monthname_map:nn { en / Aug } { 08 }
+\datatool_region_set_monthname_map:nn { en / September } { 09 }
+\datatool_region_set_monthname_map:nn { en / Sep } { 09 }
+\datatool_region_set_monthname_map:nn { en / Sept } { 09 }
+\datatool_region_set_monthname_map:nn { en / October } { 10 }
+\datatool_region_set_monthname_map:nn { en / Oct } { 10 }
+\datatool_region_set_monthname_map:nn { en / November } { 11 }
+\datatool_region_set_monthname_map:nn { en / Nov } { 11 }
+\datatool_region_set_monthname_map:nn { en / December } { 12 }
+\datatool_region_set_monthname_map:nn { en / Dec } { 12 }
+\cs_if_exist:NTF \DTMenglishmonthname
+ {
+ \cs_new:Nn \datatool_en_monthname:n
+ {
+ \DTMenglishmonthname { #1 }
+ }
+ }
+ {
+ \cs_new:Nn \datatool_en_monthname:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { January }
+ { 2 } { February }
+ { 3 } { March }
+ { 4 } { April }
+ { 5 } { May }
+ { 6 } { June }
+ { 7 } { July }
+ { 8 } { August }
+ { 9 } { September }
+ { 10 } { October }
+ { 11 } { November }
+ { 12 } { December }
+ }
+ }
+ }
+\cs_if_exist:NTF \DTMenglishshortmonthname
+ {
+ \cs_new:Nn \datatool_en_shortmonthname:n
+ {
+ \DTMenglishshortmonthname { #1 }
+ }
+ }
+ {
+ \cs_new:Nn \datatool_en_shortmonthname:n
+ {
+ \datatool_en_shortmonthname_dotless:n { #1 }
+ }
+ }
+\cs_new:Nn \datatool_en_shortmonthname_dotless:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { Jan }
+ { 2 } { Feb }
+ { 3 } { Mar }
+ { 4 } { Apr }
+ { 5 } { May }
+ { 6 } { Jun }
+ { 7 } { Jul }
+ { 8 } { Aug }
+ { 9 } { Sep }
+ { 10 } { Oct }
+ { 11 } { Nov }
+ { 12 } { Dec }
+ }
+ }
+\cs_new:Nn \datatool_en_shortmonthname_dotted:n
+ {
+ \int_case:nn { #1 }
+ {
+ { 1 } { Jan. }
+ { 2 } { Feb. }
+ { 3 } { Mar. }
+ { 4 } { Apr. }
+ { 5 } { May }
+ { 6 } { June }
+ { 7 } { July }
+ { 8 } { Aug. }
+ { 9 } { Sept. }
+ { 10 } { Oct. }
+ { 11 } { Nov. }
+ { 12 } { Dec. }
+ }
+ }
+\regex_const:Nn \c_datatool_en_weekday_name_regex
+ {
+ Monday | Mon\.? | Tuesday | Tues?\.? | Wednesday | Wed\.?
+ | Thursday | Thur?\.? | Friday | Fri\.?
+ | Saturday | Sat\.? | Sunday | Sun\.?
+ }
+\regex_const:Nn \c_datatool_en_month_name_regex
+ {
+ January | Jan\.? | February | Feb\.? | March | Mar\.?
+ | April | Apr\.? | May | June | Jun\.? | July | Jul\.?
+ | August | Aug\.? | September | Sept?\.?
+ | October | Oct\.? | November | Nov\.? | December | Dec\.?
+ }
+\regex_const:Nn \c_datatool_en_am_regex
+ {
+ a \.? m \.? | A \.? M \.? | in \s the \s morning | [nN]oon | [Mm]idday
+ }
+\regex_const:Nn \c_datatool_en_pm_regex
+ {
+ p \.? m \.? | P \.? M \.? | in \s the \s (?: afternoon | evening )
+ | [Mm]idnight
+ }
+\prg_new_conditional:Npnn \datatool_en_if_pm:n #1
+ { T, F, TF }
+ {
+ \regex_match:NnTF \c_datatool_en_pm_regex { #1 }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\regex_const:Nn \c_datatool_en_ordinal_suffix_regex
+ {
+ st | nd | rd | th
+ }
+\regex_const:Nn \c_datatool_en_ddmmyyyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ ( \d+ )
+ }
+\regex_const:Nn \c_datatool_en_anchored_ddmmyyyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ ( \d+ )
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_ddmmyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ }
+\regex_const:Nn \c_datatool_en_anchored_ddmmyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_mmddyyyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ ( \d+ )
+ }
+\regex_const:Nn \c_datatool_en_anchored_mmddyyyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ ( \d+ )
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_mmddyy_date_regex
+ {
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ }
+\regex_const:Nn \c_datatool_en_anchored_mmddyy_date_regex
+ {
+ \A \s*
+ (?: \ur{c_datatool_en_weekday_name_regex} \, ? \s+ ) ?
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ \, ? \s+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} )
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_yyyymmdd_date_regex
+ {
+ ( \d+ ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ }
+\regex_const:Nn \c_datatool_en_anchored_yyyymmdd_date_regex
+ {
+ \A \s*
+ ( \d+ ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_yymmdd_date_regex
+ {
+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ }
+\regex_const:Nn \c_datatool_en_anchored_yymmdd_date_regex
+ {
+ \A \s*
+ \ur{c_datatool_apostrophe_regex} ? ( \d{2} ) \s+
+ ( \ur{c_datatool_en_month_name_regex} )
+ \s+
+ ( \ur{c_datatool_day_of_month_regex} )
+ \ur{c_datatool_en_ordinal_suffix_regex} ?
+ (?: \, ? \s+ \ur{c_datatool_en_weekday_name_regex} ) ?
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_colon_hhmmss_time_regex
+ {
+ ( \ur{c_datatool_hour_regex} )
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ }
+\regex_const:Nn \c_datatool_en_colon_anchored_hhmmss_time_regex
+ {
+ \A \s*
+ ( \ur{c_datatool_hour_regex} )
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \: ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ \s* \Z
+ }
+\regex_const:Nn \c_datatool_en_dot_hhmmss_time_regex
+ {
+ ( \ur{c_datatool_hour_regex} )
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ }
+\regex_const:Nn \c_datatool_en_dot_anchored_hhmmss_time_regex
+ {
+ \A \s*
+ ( \ur{c_datatool_hour_regex} )
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \. ( \ur{c_datatool_minsec_regex} ) ) ?
+ (?: \s*
+ (
+ \ur{c_datatool_en_am_regex}
+ | \ur{c_datatool_en_pm_regex}
+ )
+ ) ?
+ \s* \Z
+ }
+\newcommand \DTLenLocaleHook
+ {
+ \renewcommand
+ \DTLCurrentLocaleWordHandler
+ { \DTLenLocaleHandler }
+ \renewcommand
+ \DTLCurrentLocaleGetInitialLetter
+ { \DTLenLocaleGetInitialLetter }
+ \renewcommand
+ \DTLCurrentLocaleGetGroupString
+ { \DTLenLocaleGetGroupString }
+ \DTLenSetLetterGroups
+ \let
+ \DTLCurrentLocaleGetMonthNameMap
+ \datatool_en_get_monthname_map:n
+ \let
+ \DTLCurrentLocaleIfpmTF
+ \datatool_en_if_pm:nTF
+ \tl_set:Nn \l_datatool_current_language_tl { en }
+ \DTLenTranslations
+ }
+\ExplSyntaxOff
+\TrackLangAddToCaptions{\DTLenLocaleHook}
+\endinput
+%%
+%% End of file `datatool-english.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/datatool-english.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/person-english.ldf
===================================================================
--- branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/person-english.ldf (rev 0)
+++ branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/person-english.ldf 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1,142 @@
+%%
+%% This is file `person-english.ldf',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% datatool-english.dtx (with options: `person-english.ldf,package')
+%%
+%% datatool-english.dtx
+%% Copyright 2025 Nicola Talbot
+%%
+%% 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 Nicola Talbot.
+%%
+%% This work consists of the files datatool-english.dtx and datatool-english.ins and the derived files datatool-english.ldf, datatool-english-ascii.ldf, datatool-english-latin1.ldf, datatool-english-utf8.ldf, datatool-en-CA.ldf, datatool-en-ZA.ldf, databib-english.ldf, person-english.ldf, datatool-anglosaxon.ldf, datatool-ang-Latn.ldf, datatool-ang-Latn-utf8.ldf, datatool-ang-Runr.ldf, datatool-ang-Runr-utf8.ldf.
+%%
+%% \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 \~}
+\TrackLangProvidesResource{english}[2025/03/01 v1.0 (NLCT)]
+\newcommand{\DataToolPersonEnglish}{%
+ \PersonSetLocalisation{male}{pronoun}{he}%
+ \PersonSetLocalisation{female}{pronoun}{she}%
+ \PersonSetLocalisation{nonbinary}{pronoun}{they}%
+ \PersonSetLocalisation{unknown}{pronoun}{they}%
+ \PersonSetLocalisation{male}{pluralpronoun}{they}%
+ \PersonSetLocalisation{female}{pluralpronoun}{they}%
+ \PersonSetLocalisation{nonbinary}{pluralpronoun}{they}%
+ \PersonSetLocalisation{unknown}{pluralpronoun}{they}%
+ \PersonSetLocalisation{male}{objpronoun}{him}%
+ \PersonSetLocalisation{female}{objpronoun}{her}%
+ \PersonSetLocalisation{nonbinary}{objpronoun}{them}%
+ \PersonSetLocalisation{unknown}{objpronoun}{them}%
+ \PersonSetLocalisation{male}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{female}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{nonbinary}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{unknown}{pluralobjpronoun}{them}%
+ \PersonSetLocalisation{male}{possadj}{his}%
+ \PersonSetLocalisation{female}{possadj}{her}%
+ \PersonSetLocalisation{nonbinary}{possadj}{their}%
+ \PersonSetLocalisation{unknown}{possadj}{their}%
+ \PersonSetLocalisation{male}{pluralpossadj}{their}%
+ \PersonSetLocalisation{female}{pluralpossadj}{their}%
+ \PersonSetLocalisation{nonbinary}{pluralpossadj}{their}%
+ \PersonSetLocalisation{unknown}{pluralpossadj}{their}%
+ \PersonSetLocalisation{male}{posspronoun}{his}%
+ \PersonSetLocalisation{female}{posspronoun}{hers}%
+ \PersonSetLocalisation{nonbinary}{posspronoun}{theirs}%
+ \PersonSetLocalisation{unknown}{posspronoun}{theirs}%
+ \PersonSetLocalisation{male}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{female}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{nonbinary}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{unknown}{pluralposspronoun}{theirs}%
+ \PersonSetLocalisation{male}{pronoun2}{you}%
+ \PersonSetLocalisation{female}{pronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pronoun2}{you}%
+ \PersonSetLocalisation{male}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{female}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pluralpronoun2}{you}%
+ \PersonSetLocalisation{male}{objpronoun2}{you}%
+ \PersonSetLocalisation{female}{objpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{objpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{objpronoun2}{you}%
+ \PersonSetLocalisation{male}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{female}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{nonbinary}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{unknown}{pluralobjpronoun2}{you}%
+ \PersonSetLocalisation{male}{possadj2}{your}%
+ \PersonSetLocalisation{female}{possadj2}{your}%
+ \PersonSetLocalisation{nonbinary}{possadj2}{your}%
+ \PersonSetLocalisation{unknown}{possadj2}{your}%
+ \PersonSetLocalisation{male}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{female}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{nonbinary}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{unknown}{pluralpossadj2}{your}%
+ \PersonSetLocalisation{male}{posspronoun2}{yours}%
+ \PersonSetLocalisation{female}{posspronoun2}{yours}%
+ \PersonSetLocalisation{nonbinary}{posspronoun2}{yours}%
+ \PersonSetLocalisation{unknown}{posspronoun2}{yours}%
+ \PersonSetLocalisation{male}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{female}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{nonbinary}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{unknown}{pluralposspronoun2}{yours}%
+ \PersonSetLocalisation{male}{child}{son}%
+ \PersonSetLocalisation{female}{child}{daughter}%
+ \PersonSetLocalisation{nonbinary}{child}{child}%
+ \PersonSetLocalisation{unknown}{child}{child}%
+ \PersonSetLocalisation{male}{pluralchild}{sons}%
+ \PersonSetLocalisation{female}{pluralchild}{daughters}%
+ \PersonSetLocalisation{nonbinary}{pluralchild}{children}%
+ \PersonSetLocalisation{unknown}{pluralchild}{children}%
+ \PersonSetLocalisation{male}{parent}{father}%
+ \PersonSetLocalisation{female}{parent}{mother}%
+ \PersonSetLocalisation{nonbinary}{parent}{parent}%
+ \PersonSetLocalisation{unknown}{parent}{parent}%
+ \PersonSetLocalisation{male}{pluralparent}{fathers}%
+ \PersonSetLocalisation{female}{pluralparent}{mothers}%
+ \PersonSetLocalisation{nonbinary}{pluralparent}{parents}%
+ \PersonSetLocalisation{unknown}{pluralparent}{parents}%
+ \PersonSetLocalisation{male}{sibling}{brother}%
+ \PersonSetLocalisation{female}{sibling}{sister}%
+ \PersonSetLocalisation{nonbinary}{sibling}{sibling}%
+ \PersonSetLocalisation{unknown}{sibling}{sibling}%
+ \PersonSetLocalisation{male}{pluralsibling}{brothers}%
+ \PersonSetLocalisation{female}{pluralsibling}{sisters}%
+ \PersonSetLocalisation{nonbinary}{pluralsibling}{siblings}%
+ \PersonSetLocalisation{unknown}{pluralsibling}{siblings}%
+ \PersonSetLocalisation{male}{gender}{male}%
+ \PersonSetLocalisation{female}{gender}{female}%
+ \PersonSetLocalisation{nonbinary}{gender}{non-binary}%
+ \PersonSetLocalisation{unknown}{gender}{unknown}%
+ \PersonSetMaleLabels{Male,MALE,M,m}%
+ \PersonSetFemaleLabels{Female,FEMALE,F,f}%
+ \PersonSetNonBinaryLabels{non-binary,Nonbinary,Non-Binary,NONBINARY,NON-BINARY,N,n}%
+}
+\TrackLangAddToCaptions{\DataToolPersonEnglish}
+\endinput
+%%
+%% End of file `person-english.ldf'.
Property changes on: branches/branch2024.final/Master/texmf-dist/tex/latex/datatool-english/person-english.ldf
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2024.final/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
===================================================================
--- branches/branch2024.final/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-03-03 21:22:14 UTC (rev 74421)
+++ branches/branch2024.final/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc 2025-03-03 21:23:22 UTC (rev 74422)
@@ -315,6 +315,7 @@
depend dashundergaps
depend dataref
depend datatool
+depend datatool-english
depend datatool-regions
depend datax
depend dateiliste
Added: branches/branch2024.final/Master/tlpkg/tlpsrc/datatool-english.tlpsrc
===================================================================
--- branches/branch2024.final/Master/tlpkg/tlpsrc/datatool-english.tlpsrc (rev 0)
+++ branches/branch2024.final/Master/tlpkg/tlpsrc/datatool-english.tlpsrc 2025-03-03 21:23:22 UTC (rev 74422)
@@ -0,0 +1 @@
+depend datatool
More information about the tex-live-commits
mailing list.