diff options
author | Karl Berry <karl@freefriends.org> | 2015-01-30 22:06:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-01-30 22:06:14 +0000 |
commit | 1d5214eef547cee6ca964581213f2ce9e225405f (patch) | |
tree | 8ec01ec0918933109486cc058a6f1ee277d9727b /Master/texmf-dist/source | |
parent | eeb7bfc039d7f1751252a8e2bc1e1fa1701f3d1b (diff) |
l3kernel (30jan15)
git-svn-id: svn://tug.org/texlive/trunk@36174 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
13 files changed, 734 insertions, 985 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 4f602f7daca..4b000250b5b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: expl3.dtx Copyright (C) 1990-2014 The LaTeX3 Project +%% File: expl3.dtx Copyright (C) 1990-2015 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,8 +36,8 @@ %<*driver|generic|package> \def\ExplFileName{expl3} \def\ExplFileDescription{L3 programming layer} -\def\ExplFileDate{2014/11/25} -\def\ExplFileVersion{5471} +\def\ExplFileDate{2015/01/29} +\def\ExplFileVersion{5502} %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3kernel/interface3.tex b/Master/texmf-dist/source/latex/l3kernel/interface3.tex deleted file mode 100644 index 4c0a2761e92..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/interface3.tex +++ /dev/null @@ -1,89 +0,0 @@ -% \iffalse meta-comment -% -%% File: interfaces3.tex Copyright (C) 1990-2011 The LaTeX3 Project -%% -%% It may be distributed and/or modified under the conditions of the -%% LaTeX Project Public License (LPPL), either version 1.3c of this -%% license or (at your option) any later version. The latest version -%% of this license is in the file -%% -%% http://www.latex-project.org/lppl.txt -%% -%% This file is part of the "l3kernel bundle" (The Work in LPPL) -%% and all files in that bundle must be distributed together. -%% -%% The released version of this bundle is available from CTAN. -%% -%% ----------------------------------------------------------------------- -%% -%% The development version of the bundle can be found at -%% -%% http://www.latex-project.org/svnroot/experimental/trunk/ -%% -%% for those people who are interested. -%% -%%%%%%%%%%% -%% NOTE: %% -%%%%%%%%%%% -%% -%% Snapshots taken from the repository represent work in progress and may -%% not work or may contain conflicting material! We therefore ask -%% people _not_ to put them into distributions, archives, etc. without -%% prior consultation with the LaTeX3 Project. -%% -%% ----------------------------------------------------------------------- -% -% \fi - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% This document will typeset the LaTeX3 interface descriptions a single -% document. This will produce quite a large file (more than 170 pages -% currently). -% -% There is also a full version of the sources (source3.tex) which additionally -% also typesets the command implementations. -% -% Do not forget to generate the index (as explained on the terminal output -% near the end of the run)! -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -\documentclass{l3doc} -\listfiles - -\begin{document} - -\title{The \LaTeX3 Interfaces} -\author{% - The \LaTeX3 Project\thanks - {% - E-mail: - \href{mailto:latex-team@latex-project.org} - {latex-team@latex-project.org}% - }% -} - -\pagenumbering{roman} -\maketitle - -% -% First load all modules and typeset the documentation parts -% - -\input{source3body} % all the individual modules - -\clearpage - -\begingroup - \def\endash{--} - \catcode`\-\active - \def-{\futurelet\temp\indexdash} - \def\indexdash{\ifx\temp-\endash\fi} - \DelayPrintIndex -\endgroup - -\end{document} - - diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index ab565a10ab7..5e97b697fdf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3basics.dtx Copyright (C) 1990-2014 The LaTeX3 project +%% File: l3basics.dtx Copyright (C) 1990-2015 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3basics.dtx 5364 2014-08-24 20:19:24Z joseph $ +\GetIdInfo$Id: l3basics.dtx 5500 2015-01-27 14:37:04Z joseph $ {L3 Basic definitions} %</driver|package> %<*driver> @@ -820,7 +820,7 @@ % If one or more tokens are wrapped in braces then in absorbing them % the outer set will be removed. At the same time, the category code % of each token is set when the token is read by a function (if it -% is read more than once, the category code is determined by the +% is read more than once, the category code is determined by % the situation in force when first function absorbs the token). % % \begin{function}[EXP]{\use:n, \use:nn, \use:nnn, \use:nnnn} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 38c88835fab..e5e003f45c7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3bootstrap.dtx Copyright (C) 2011-2014 The LaTeX3 project +%% File: l3bootstrap.dtx Copyright (C) 2011-2015 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -145,7 +145,7 @@ % \end{macro} % \end{macro} % \end{macro} -\GetIdInfo$Id: l3bootstrap.dtx 5354 2014-08-23 01:35:39Z bruno $ +\GetIdInfo$Id: l3bootstrap.dtx 5500 2015-01-27 14:37:04Z joseph $ {L3 Bootstrap code} %</driver|package> %<*driver> @@ -212,7 +212,8 @@ % \cs{ExplSyntaxOn} for the remainder of the code with the file. At the % end of the file, \cs{ExplSyntaxOff} will be called to reverse this. % (This is the same concept as \LaTeXe{} provides in turning on -% \tn{makeatletter} within package and class code.) +% \tn{makeatletter} within package and class code.) The \meta{date} should +% be given in the format \meta{year}/\meta{month}/\meta{day}. % \end{function} % % \begin{function}[updated = 2012-06-04]{\GetIdInfo} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index eb1fa9c4b29..440ceb898bb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3candidates.dtx Copyright(C) 2012-2014 The LaTeX3 Project +%% File: l3candidates.dtx Copyright(C) 2012-2015 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3candidates.dtx 5466 2014-11-23 12:37:29Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 5499 2015-01-27 14:33:48Z joseph $ {L3 Experimental additions to l3kernel} %</driver|package> %<*driver> @@ -1351,7 +1351,8 @@ % % \begin{macro}{\box_resize:Nnn, \box_resize:cnn} % \begin{macro}[aux]{\@@_resize_set_corners:N} -% \begin{macro}[aux]{\@@_resize:Nn} +% \begin{macro}[aux]{\@@_resize:N} +% \begin{macro}[aux]{\@@_resize:NNN} % Resizing a box starts by working out the various dimensions of the % existing box. % \begin{macrocode} @@ -1377,9 +1378,9 @@ / \dim_to_fp:n { \l_@@_top_dim - \l_@@_bottom_dim } } % \end{macrocode} -% Hand off to the auxiliary which does the work. +% Hand off to the auxiliary which does the rest of the work. % \begin{macrocode} - \@@_resize:Nn #1 {#2} + \@@_resize:N #1 \group_end: } } @@ -1394,25 +1395,30 @@ % \end{macrocode} % With at least one real scaling to do, the next phase is to find the new % edge co-ordinates. In the $x$~direction this is relatively easy: just -% scale the right edge. This is done using the absolute value of the -% scale so that the new edge is in the correct place. In the $y$~direction, -% both dimensions have to be scaled, and this again needs the absolute -% scale value. Once that is all done, the common resize/rescale code can -% be employed. -% \begin{macrocode} -\cs_new_protected:Npn \@@_resize:Nn #1#2 - { - \dim_set:Nn \l_@@_right_new_dim { \dim_abs:n {#2} } - \dim_set:Nn \l_@@_bottom_new_dim - { \fp_abs:n { \l_@@_scale_y_fp } \l_@@_bottom_dim } - \dim_set:Nn \l_@@_top_new_dim - { \fp_abs:n { \l_@@_scale_y_fp } \l_@@_top_dim } +% scale the right edge. In the $y$~direction, both dimensions have to be +% scaled, and this again needs the absolute scale value. +% Once that is all done, the common resize/rescale code can be employed. +% \begin{macrocode} +\cs_new_protected:Npn \@@_resize:N #1 + { + \@@_resize:NNN \l_@@_right_new_dim + \l_@@_scale_x_fp \l_@@_right_dim + \@@_resize:NNN \l_@@_bottom_new_dim + \l_@@_scale_y_fp \l_@@_bottom_dim + \@@_resize:NNN \l_@@_top_new_dim + \l_@@_scale_y_fp \l_@@_top_dim \@@_resize_common:N #1 } +\cs_new_protected:Npn \@@_resize:NNN #1#2#3 + { + \dim_set:Nn #1 + { \fp_to_dim:n { \fp_abs:n { #2 } * \dim_to_fp:n { #3 } } } + } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\box_resize_to_ht:Nn, \box_resize_to_ht:cn} % \begin{macro}{\box_resize_to_ht_plus_dp:Nn, \box_resize_to_ht_plus_dp:cn} @@ -1436,7 +1442,7 @@ / \dim_to_fp:n { \l_@@_top_dim } } \fp_set_eq:NN \l_@@_scale_x_fp \l_@@_scale_y_fp - \@@_resize:Nn #1 {#2} + \@@_resize:N #1 \group_end: } } @@ -1453,7 +1459,7 @@ / \dim_to_fp:n { \l_@@_top_dim - \l_@@_bottom_dim } } \fp_set_eq:NN \l_@@_scale_x_fp \l_@@_scale_y_fp - \@@_resize:Nn #1 {#2} + \@@_resize:N #1 \group_end: } } @@ -1467,7 +1473,7 @@ \fp_set:Nn \l_@@_scale_x_fp { \dim_to_fp:n {#2} / \dim_to_fp:n { \l_@@_right_dim } } \fp_set_eq:NN \l_@@_scale_y_fp \l_@@_scale_x_fp - \@@_resize:Nn #1 {#2} + \@@_resize:N #1 \group_end: } } @@ -1485,7 +1491,7 @@ \dim_to_fp:n {#3} / \dim_to_fp:n { \l_@@_top_dim } } - \@@_resize:Nn #1 {#2} + \@@_resize:N #1 \group_end: } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 701a2ab6b02..7d708c411ac 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3expan.dtx 5349 2014-08-22 21:46:59Z bruno $ +\GetIdInfo$Id: l3expan.dtx 5472 2014-11-27 09:10:40Z joseph $ {L3 Argument expansion} %</driver|package> %<*driver> @@ -222,6 +222,26 @@ % you should stick to using |TF| type functions only as it does not % try to finish any |\if... \fi:| itself! % +% If is important to not that both \texttt{f}- and \texttt{o}-type +% expansion are concerned with the expansion of tokens from left to +% right in their arguments. In particular, \texttt{o}-type expansion +% applies to the first \emph{token} in the argument it receives: it +% is conceptually similar to +% \begin{verbatim} +% \exp_after:wN <base function> \exp_after:wN { <argument> } +% \end{verbatim} +% At the same time, \texttt{f}-type expansion stops at the emph{first} +% non-expandable token. This means for example that both +% \begin{verbatim} +% \tl_set:No \l_tmpa_tl { { \l_tmpa_tl } } +% \end{verbatim} +% and +% \begin{verbatim} +% \tl_set:Nf \l_tmpa_tl { { \l_tmpa_tl } } +% \end{verbatim} +% leave |\l_tmpa_tl| unchanged: |{| is the first token in the +% argument and is non-expandable. +% % \section{Manipulating the first argument} % % These functions are described in detail: expansion of multiple tokens follows diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 49b443977de..c64d2a7dd3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3keys.dtx Copyright (C) 2006-2014 The LaTeX3 Project +%% File: l3keys.dtx Copyright (C) 2006-2015 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3keys.dtx 5354 2014-08-23 01:35:39Z bruno $ +\GetIdInfo$Id: l3keys.dtx 5500 2015-01-27 14:37:04Z joseph $ {L3 Key-value interfaces} %</driver|package> %<*driver> @@ -235,7 +235,7 @@ % \begin{syntax} % \meta{key} .code:n = \Arg{code} % \end{syntax} -% Stores the \meta{code} for execution when \meta{key} is used. The +% Stores the \meta{code} for execution when \meta{key} is used. % The \meta{code} can include one parameter (|#1|), which will be the % \meta{value} given for the \meta{key}. The \texttt{x}-type variant % will expand \meta{code} at the point where the \meta{key} is diff --git a/Master/texmf-dist/source/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/source/latex/l3kernel/l3styleguide.tex deleted file mode 100644 index c37c9e24dff..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3styleguide.tex +++ /dev/null @@ -1,242 +0,0 @@ -\iffalse meta-comment - -File l3styleguide.tex Copyright (C) 2011,2012 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), either version 1.3c of this -license or (at your option) any later version. The latest version -of this license is in the file - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3kernel bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -The released version of this bundle is available from CTAN. - -\fi - -\documentclass{l3doc} -\usepackage{svn-multi} - -\svnid{$Id: l3styleguide.tex 2772 2011-09-07 15:07:41Z joseph $} -\def\filedate{\svnfileyear/\svnfilemonth/\svnfileday} - -\title{% - The \LaTeX3 kernel: style guide for code authors% - \thanks - {% - This file describes v\svnfilerev, - last revised \filedate. - }% -} -\author{% - The \LaTeX3 Project\thanks - {% - E-mail: - \href{mailto:latex-team@latex-project.org}% - {latex-team@latex-project.org}% - }% -} -\date{Released \filedate} - -\begin{document} - -\maketitle - -\tableofcontents - -\section{Introduction} - -This document is intended as a style guide for authors of code and -documentation for the \LaTeX3 kernel. It covers both aspects of coding -style and the formatting of the sources. The aim of providing these -guidelines is help ensure consistency of the code and sources from -different authors. Experience suggests that in the long-term this helps -with maintenance. There will of course be places where there are -exceptions to these guidelines: common sense should always be -applied! - -\section{Documentation style} - -\LaTeX3 source and documentation should be written using the document -class \cls{l3doc} in \file{dtx} format. This class provides a number -of logical mark up elements, which should be used where possible. -In the main, this is standard \LaTeX{} practice, but there are a -few points to highlight: -\begin{itemize} - \item - Where possible, use \cs{cs} to mark up control sequences - rather than using a verbatim environment. - \item - Arguments which are given in braces should be marked using - \cs{Arg} when code-level functions are discussed, but using - \cs{marg} for document functions. - \item - The names \TeX{}, \LaTeX{}, \emph{etc}.\ use the normal logical mark - up followed by an empty group (|{}|), with the exception of |\LaTeX3|, - where the number should follow directly. - \item - Where in line verbatim text is used, it should be marked up - using the \verb=|...|= construct (\emph{i.e.}~vertical bars delimit - the verbatim text). - \item In line quotes should be marked up using the \cs{enquote} - function. - \item - Where numbers in the source have a mathematical meaning, - they should be included in math mode. Such in-line math mode - material should be marked up using |$...$| and \emph{not} - |\(...\)|. -\end{itemize} - -Line length in the source files should be under $80$ -characters where possible, as this helps keep everything on the screen -when editing files. In the \file{dtx} format, documentation lines start -with a \texttt{\%}, which is usually followed by a space to leave a -\enquote{comment margin} at the start of each line. - -As with code indenting (see later), nested environments and arguments -should be indented by (at least) two spaces to make the nature of the nesting -clear. Thus for example a typical arrangement for the \env{function} -environment might be -\begin{verbatim*} -\begin{function}{\seq_gclear:N, \seq_gclear:c} - \begin{syntax} - \cs{seq_gclear:N} \meta{sequence} - \end{syntax} - Clears all entries from the \meta{sequence} globally. -\end{function} -\end{verbatim*} -The \enquote{outer} \verb*|% \begin{function}| should have the customary -space after the |%| character at the start of the line. - -In general, a single \env{function} or \env{macro} environment should be -used for a group of closely-related functions, for example argument -specification variants. In such cases, a comma-separated list should be -used, as shown in the preceding example. - -\section{Format of the code itself} - -The requirement for less than $80$ characters per line applies to the code -itself as well as the surrounding documentation. A number of the general -style principles for \LaTeX3 code apply: these are described in the following -paragraph and an example is then given. - -With the exception of simple runs of parameter (|{#1}|, |#1#2|, -\emph{etc.}), everything should be divided up using spaces to make the code -more readable. In general, these will be single spaces, but in some -places it makes more sense to align parts of the code to emphasise -similarity. (Tabs should not be used for introducing white space.) - -Each conceptually-separate step in a function should be on a separate -line, to make the meaning clearer. Hence the \texttt{false} branch -in the example uses two lines for the two auxiliary function uses. - -Within the definition, a two-space indent should be used to show each -\enquote{level} of code. Thus in the example \cs{tl_if_empty:nTF} is -indented by two spaces, but the two branches are indented by four -spaces. Within the \texttt{false} branch, the need for multiple lines -means that an additional two-space indent should be used to show that -these lines are all part of the brace group. - -The result of these lay-out conventions is code which will in general -look like the example: -\begin{verbatim*} -\cs_new:Npn \module_foo:nn #1#2 - { - \tl_if_empty:nTF {#1} - { \module_foo_aux:n { X #2 } } - { - \module_foo_aux:nn {#1} {#2} - \module_foo_aux:n { #1 #2 } - } - } -\end{verbatim*} - -\section{Code conventions} - -All code-level functions should be \enquote{long} if they accept any -arguments, even if it seems \enquote{very unlikely} that a \cs{par} token -will be passed. Thus \cs{cs_new_nopar:Npn} and so forth should only be used -to create functions which accept no arguments at all. - -The expandability of each function should be well-defined. Functions which -cannot be fully expanded must be \texttt{protected}. This means that expandable -functions must themselves only contain expandable material. Functions which -use any non-expandable material must be defined using \cs{cs_new_protected:Npn} -or similar. - -When using \cs{cs_generate_variant:Nn}, group related variants together -to make the pattern clearer. A common example is variants of a function -which has an \texttt{N}-type first argument: -\begin{verbatim} - \cs_generate_variant:Nn \foo:Nn { NV , No } - \cs_generate_variant:Nn \foo:Nn { c , cV , co } -\end{verbatim} - -There may be cases where omitting braces from \texttt{o}-type arguments -is desirable for performance reasons. This should only be done if the -argument is a single token, thus for example -\begin{verbatim} - \tl_set:No \l_some_tl \l_some_other_tl -\end{verbatim} -remains clear and can be used where appropriate. - -\section{Private and internal functions} - -Private functions (those starting \cs{__}) should not be used between modules. -The only exception is where a \enquote{family} of modules share some -\enquote{internal} methods: this happens most obviously in the kernel itself. -Any internal functions or variables \emph{must} be documented in the same way -as public ones. - -The \pkg{l3docstrip} method should be used for internal functions in a module. -This requires a line -\begin{quote} - \ttfamily - \%<@@=\meta{module}> -\end{quote} -at the start of the source (\texttt{.dtx}) file, with internal functions -then written in the form -\begin{verbatim} - \cs_new_protected:Npn \@@_function:nn #1#2 - ... -\end{verbatim} - -\section{Auxiliary functions} - -In general, the team encourages the use of descriptive names in \LaTeX3 code. -Thus many helper functions will have names which describe briefly what they do, -rather than simply indicating that they are auxiliary to some higher-level -function. However, there are places where one or more \texttt{aux} functions -are required. Where possible, these should be differentiated by signature -\begin{verbatim} - \cs_new_protected:Npn \@@_function:nn #1#2 - { - ... - } - \cs_new_protected:Npn \@@_function_aux:nn #1#2 - { - ... - } - \cs_new_protected:Npn \@@_function_aux:w #1#2 \q_stop - { - ... - } -\end{verbatim} -Where more than one auxiliary shares the same signature, the recommended naming -scheme is \texttt{auxi}, \texttt{auxii} and so on. -\begin{verbatim} - \cs_new_protected:Npn \@@_function_auxi:nn #1#2 - { - ... - } - \cs_new_protected:Npn \@@_function_auxii:nn #1#2 - { - ... - } -\end{verbatim} -The use of \texttt{aux_i}, \texttt{aux_ii}, \emph{etc.}\ is discouraged as this -conflicts with the convention used by \cs{use_i:nn} and related functions. - -\end{document} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/source/latex/l3kernel/l3syntax-changes.tex deleted file mode 100644 index 4dfc70e0e97..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3syntax-changes.tex +++ /dev/null @@ -1,110 +0,0 @@ -\iffalse meta-comment - -File l3syntax-changes.tex Copyright (C) 2011-2012 The LaTeX3 Project - -It may be distributed and/or modified under the conditions of the -LaTeX Project Public License (LPPL), either version 1.3c of this -license or (at your option) any later version. The latest version -of this license is in the file - - http://www.latex-project.org/lppl.txt - -This file is part of the "l3kernel bundle" (The Work in LPPL) -and all files in that bundle must be distributed together. - -The released version of this bundle is available from CTAN. - -\fi - -\documentclass{l3doc} - -\usepackage{svn-multi} - -\svnid{$Id: l3syntax-changes.tex 4048 2012-08-02 09:49:10Z joseph $} -\def\filedate{\svnfileyear/\svnfilemonth/\svnfileday} - -\title{% - Syntax changes in \LaTeX3 functions - \thanks - {% - This file describes v\svnfilerev, - last revised \filedate. - }% -} -\author{% - The \LaTeX3 Project\thanks - {% - E-mail: - \href{mailto:latex-team@latex-project.org}% - {latex-team@latex-project.org}% - }% -} -\date{Released \filedate} - -\newcommand{\TF}{\textit{(TF)}} - -\begin{document} - -\maketitle - -This file lists functions whose syntax has changed after August 2011, -with an approximate date. - -\section{August 2011} - -\begin{itemize} - \item \cs{tl_if_single:n\TF} recognized any non-zero number of - explicit spaces as \meta{true}, and did not ignore trailing spaces. - Now it is \meta{true} for - \[ - \meta{optional spaces} - \meta{normal token or brace group} - \meta{optional spaces}. - \] - \item \cs{tl_reverse:n} stripped outer braces and lost unprotected spaces. - Now it keeps spaces, leaves unbraced single tokens unbraced, and - braced groups braced. - \item \cs{tl_trim_spaces:n} only removed one leading and trailing space. - Now removes recursively. Also, on the left it used to strip implicit - and explicit spaces with any character code. Now it strips only explicit - space characters $(32,10)$. -\end{itemize} - -\section{September 2011} - -\begin{itemize} -\item clist functions which receive an \texttt{n}-type comma list argument - now trim spaces from each item in the argument. -\end{itemize} - -\section{June 2012} - -\begin{itemize} - \item Access to list functions now indexes from~$1$, not from~$0$. - This applies to multiple choices in the \pkg{l3keys} module and - the \cs{clist_item:Nn}, \cs{seq_item:Nn} and \cs{tl_item:Nn} - functions. - \item \cs{tl_trim_spaces:n} now requires a variable number of - expansions to fully expand, rather than exactly two. Of course, - \texttt{x}-type expansion still correctly evaluates this function. -\end{itemize} - -\section{July 2012} - -\begin{itemize} - \item The \cs{tl_if_head_eq_meaning:nN}, \cs{tl_if_head_eq_catcode:nN} - and \cs{tl_if_head_eq_charcode:nN} conditionals now never match when - their first argument is empty. -\end{itemize} - -\section{August 2012} - -\begin{itemize} - \item \cs{lua_now:x} is now a standard \texttt{x}-type expansion of - \cs{lua_now:n}, which does no expansion. Engine-level expansion is moved - to \cs{lua_now_x:n}, reflecting the fact that this is non-standard in the - same way as for example \cs{str_if_eq_x:nn(TF)}. -\end{itemize} - - -\end{document} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 59e49c70cd7..0d781af663c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3tl.dtx Copyright (C) 1990-2014 The LaTeX3 Project +%% File: l3tl.dtx Copyright (C) 1990-2015 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3tl.dtx 5460 2014-11-19 10:09:42Z joseph $ +\GetIdInfo$Id: l3tl.dtx 5500 2015-01-27 14:37:04Z joseph $ {L3 Token lists} %</driver|package> %<*driver> @@ -1202,20 +1202,9 @@ % \begin{variable}{\c_job_name_tl} % Inherited from the \LaTeX3 name for the primitive: this needs to % actually contain the text of the job name rather than the name of -% the primitive, of course. \LuaTeX{} does not quote file names containing -% spaces, whereas \pdfTeX{} and \XeTeX{} do. So there may be a correction to -% make in the \LuaTeX{} case. +% the primitive, of course. % \begin{macrocode} %<*initex> -\luatex_if_engine:T - { - \tex_everyjob:D \exp_after:wN - { - \tex_the:D \tex_everyjob:D - \lua_now_x:n - { dofile ( assert ( kpse.find_file ("lualatexquotejobname.lua" ) ) ) } - } - } \tex_everyjob:D \exp_after:wN { \tex_the:D \tex_everyjob:D diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode-data.def b/Master/texmf-dist/source/latex/l3kernel/l3unicode-data.def deleted file mode 100644 index c2629626578..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode-data.def +++ /dev/null @@ -1,389 +0,0 @@ -%% This is the file l3unicode-data.def -%% generated using the script l3unicode-data.dtx. -%% -%% The data here are derived from the files -%% - UnicodeData.txt -%% - SpecialCasing.txt -%% - CaseFolding.txt -%% which are maintained by the Unicode Consortium. -%% -%% Generated on 2014-11-23. -%% -\ProvidesExplFile {l3unicode-data.def} {2014/11/23} {5465} {L3 Unicode data} -\clist_const:Nn \c__tl_after_final_sigma_clist - { 0021 , 0022 , 0029 , 002C , 002E , 003A , 003B , 003F , 005D , 007D } -\clist_const:Nn \c__tl_mixed_skip_clist - { 0028 , 005B , 0060 , 007B } -\pdftex_if_engine:T - { - \group_begin: - \cs_set_protected:Npn \__unicode_tmp:NN #1#2 - { - \quark_if_recursion_tail_stop:N #1 - \exp_after:wN \__unicode_tmp:NNNNNNN - \tex_number:D \__int_eval:w `#1 \exp_after:wN \__int_eval_end: - \tex_number:D \__int_eval:w 100 + `#2 \__int_eval_end: - #1 #2 - \__unicode_tmp:NN - } - \cs_set_protected:Npn \__unicode_tmp:NNNNNNN #1#2#3#4#5#6#7 - { - \tl_const:cx { c__str_fold_ #1 _X_ #2 _ tl } - { \tl_to_str:n { #6#7 } } - \tl_const:cn { c__tl_lower_ #1 _X_ #2 _ tl } { #6#7 } - \tl_const:cn { c__tl_upper_ #4 _X_ #5 _ tl } { #7#6 } - } - \__unicode_tmp:NN - AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz - \q_recursion_tail ? \q_recursion_stop - \group_end: - \int_step_inline:nnnn { 0 } { 1 } { 9 } - { - \int_step_inline:nnnn { 0 } { 1 } { 9 } - { - \tl_if_exist:cF { c__str_fold_ #1 _X_ ##1 _ tl } - { - \tl_const:cn { c__str_fold_ #1 _X_ ##1 _ tl } { } - } - \tl_if_exist:cF { c__tl_lower_ #1 _X_ ##1 _ tl } - { - \tl_const:cn { c__tl_lower_ #1 _X_ ##1 _ tl } { } - } - \tl_if_exist:cF { c__tl_upper_ #1 _X_ ##1 _ tl } - { - \tl_const:cn { c__tl_upper_ #1 _X_ ##1 _ tl } { } - } - } - } - \tl_const:Nn \c__tl_mixed_exceptions_tl { } - \tl_const:Nn \c__tl_std_sigma_tl { } - \tl_const:Nn \c__tl_final_sigma_tl { } - \tl_const:Nn \c__tl_accents_lt_tl { } - \tl_const:Nn \c__tl_dot_above_tl { } - \tl_const:Nn \c__tl_dotless_i_tl { I } - \tl_const:Nn \c__tl_dotted_I_tl { i } - \tex_endinput:D - } -\tl_const:cn { c__tl_upper_0_X_0_tl } { dDьЬոՈὀὈᾤ{ὬΙ}ⳬⳫ𐐨𐐀𑣜𑢼 } -\tl_const:cn { c__tl_upper_0_X_1_tl } { eEĭĬǵǴəƏϩϨэЭұҰԕԔչՉḕḔṹṸờỜὁὉᾥ{ὭΙ}ⲉⲈꙩꙨ𐐩𐐁𑣝𑢽 } -\tl_const:cn { c__tl_upper_0_X_2_tl } { fFƒƑюЮպՊὂὊᾦ{ὮΙ}ⳮⳭ𐐪𐐂𑣞𑢾 } -\tl_const:cn { c__tl_upper_0_X_3_tl } { gGįĮɛƐϫϪяЯҳҲԗԖջՋḗḖṻṺởỞὃὋᾧ{ὯΙ}ⲋⲊꙫꙪꜳꜲꞗꞖ𐐫𐐃𑣟𑢿 } -\tl_const:cn { c__tl_upper_0_X_4_tl } { hHɜꞫѐЀռՌὄὌᾨ{ὨΙ}𐐬𐐄 } -\tl_const:cn { c__tl_upper_0_X_5_tl } { iIıIƕǶǹǸϭϬёЁҵҴԙԘսՍḙḘṽṼỡỠὅὍᾩ{ὩΙ}ⲍⲌꙭꙬꜵꜴꞙꞘ𐐭𐐅 } -\tl_const:cn { c__tl_upper_0_X_6_tl } { jJђЂվՎᾪ{ὪΙ}𐐮𐐆 } -\tl_const:cn { c__tl_upper_0_X_7_tl } { kK{ij}{IJ}ǻǺϯϮѓЃҷҶԛԚտՏḛḚṿṾợỢᾫ{ὫΙ}ⲏⲎⳳⳲꜷꜶꞛꞚ𐐯𐐇 } -\tl_const:cn { c__tl_upper_0_X_8_tl } { lLɠƓϰΚєЄրՐᾬ{ὬΙ}𐐰𐐈 } -\tl_const:cn { c__tl_upper_0_X_9_tl } { mMĵĴƙƘǽǼɡꞬϱΡѕЅҹҸԝԜցՑḝḜẁẀụỤᾭ{ὭΙ}ⲑⲐꜹꜸꞝꞜ𐐱𐐉 } -\tl_const:cn { c__tl_upper_1_X_0_tl } { nNƚȽϲϹіІւՒᾮ{ὮΙ}𐐲𐐊 } -\tl_const:cn { c__tl_upper_1_X_1_tl } { oOķĶǿǾɣƔϳͿїЇһҺԟԞփՓḟḞẃẂủỦᾯ{ὯΙ}ⲓⲒꜻꜺꞟꞞ𐐳𐐋 } -\tl_const:cn { c__tl_upper_1_X_2_tl } { pPΐ{Ϊ́}јЈքՔᾰᾸⰰⰀ𐐴𐐌 } -\tl_const:cn { c__tl_upper_1_X_3_tl } { qQȁȀɥꞍϵΕљЉҽҼԡԠօՕḡḠẅẄứỨᾱᾹⰱⰁⲕⲔꜽꜼꞡꞠ𐐵𐐍 } -\tl_const:cn { c__tl_upper_1_X_4_tl } { rRĺĹƞȠɦꞪњЊֆՖᾲ{ᾺΙ}ⰲⰂ𐐶𐐎 } -\tl_const:cn { c__tl_upper_1_X_5_tl } { sSȃȂћЋҿҾԣԢ{և}{{ԵՒ}}ḣḢẇẆừỪᾳ{ΑΙ}ⰳⰃⲗⲖꜿꜾꞣꞢ𐐷𐐏 } -\tl_const:cn { c__tl_upper_1_X_6_tl } { tTļĻɨƗϸϷќЌὐ{Υ̓}ᾴ{ΆΙ}ⰴⰄ𐐸𐐐 } -\tl_const:cn { c__tl_upper_1_X_7_tl } { uUơƠȅȄɩƖѝЍԥԤḥḤẉẈửỬὑὙⰵⰅⲙⲘꝁꝀꞥꞤ𐐹𐐑 } -\tl_const:cn { c__tl_upper_1_X_8_tl } { vVľĽўЎӂӁὒ{Υ̓̀}ᾶ{Α͂}ⰶⰆ𐐺𐐒 } -\tl_const:cn { c__tl_upper_1_X_9_tl } { wWƣƢȇȆɫⱢϻϺџЏԧԦḧḦẋẊữỮὓὛᾷ{Α͂Ι}ⰷⰇⲛⲚꝃꝂꞧꞦ𐐻𐐓 } -\tl_const:cn { c__tl_upper_2_X_0_tl } { xX{ŀ}{Ŀ}ɬꞭӄӃὔ{Υ̓́}ⰸⰈⴀႠ𐐼𐐔 } -\tl_const:cn { c__tl_upper_2_X_1_tl } { yYƥƤȉȈѡѠԩԨḩḨẍẌựỰὕὝⰹⰉⲝⲜⴁႡꝅꝄꞩꞨ𐐽𐐕 } -\tl_const:cn { c__tl_upper_2_X_2_tl } { zZłŁӆӅὖ{Υ̓͂}ⰺⰊⴂႢ𐐾𐐖 } -\tl_const:cn { c__tl_upper_2_X_3_tl } { ß{SS}ȋȊɯƜѣѢԫԪḫḪẏẎỳỲὗὟⰻⰋⲟⲞⴃႣꝇꝆ𐐿𐐗 } -\tl_const:cn { c__tl_upper_2_X_4_tl } { àÀńŃƨƧӈӇᾼ{ΑΙ}ⓐⒶⰼⰌⴄႤ𐑀𐐘 } -\tl_const:cn { c__tl_upper_2_X_5_tl } { áÁȍȌɱⱮѥѤԭԬḭḬẑẐỵỴⓑⒷⰽⰍⲡⲠⴅႥꚁꚀꝉꝈ𐑁𐐙 } -\tl_const:cn { c__tl_upper_2_X_6_tl } { âÂņŅɲƝӊӉιΙⅎℲⓒⒸⰾⰎⴆႦ𐑂𐐚 } -\tl_const:cn { c__tl_upper_2_X_7_tl } { ãÃȏȎѧѦԯԮḯḮẓẒỷỶⓓⒹⰿⰏⲣⲢⴇႧꚃꚂꝋꝊ𐑃𐐛 } -\tl_const:cn { c__tl_upper_2_X_8_tl } { äÄňŇӌӋⓔⒺⱀⰐⴈႨ𐑄𐐜 } -\tl_const:cn { c__tl_upper_2_X_9_tl } { åÅ{ʼn}{{ʼN}}ƭƬȑȐɵƟѩѨḱḰẕẔỹỸⓕⒻⱁⰑⲥⲤⴉႩꚅꚄꝍꝌ𐑅𐐝 } -\tl_const:cn { c__tl_upper_3_X_0_tl } { æÆӎӍẖ{H̱}ῂ{ῊΙ}ⓖⒼⱂⰒⴊႪ𐑆𐐞 } -\tl_const:cn { c__tl_upper_3_X_1_tl } { çÇŋŊȓȒѫѪӏӀḳḲẗ{T̈}ỻỺῃ{ΗΙ}ⓗⒽⱃⰓⲧⲦⴋႫꚇꚆꝏꝎ𐑇𐐟 } -\tl_const:cn { c__tl_upper_3_X_2_tl } { èÈưƯẘ{W̊}ὠὨῄ{ΉΙ}ⓘⒾⱄⰔⴌႬ𐑈𐐠 } -\tl_const:cn { c__tl_upper_3_X_3_tl } { éÉōŌȕȔѭѬӑӐḵḴẙ{Y̊}ỽỼὡὩⓙⒿⱅⰕⲩⲨⴍႭꚉꚈꝑꝐ𐑉𐐡 } -\tl_const:cn { c__tl_upper_3_X_4_tl } { êÊẚ{Aʾ}ὢὪῆ{Η͂}ⓚⓀⱆⰖⴎႮ𐑊𐐢 } -\tl_const:cn { c__tl_upper_3_X_5_tl } { ëËŏŎȗȖѯѮӓӒḷḶẛṠỿỾὣὫῇ{Η͂Ι}ⓛⓁⱇⰗⲫⲪⴏႯꚋꚊꝓꝒ𐑋𐐣 } -\tl_const:cn { c__tl_upper_3_X_6_tl } { ìÌƴƳἀἈὤὬⓜⓂⱈⰘⴐႰ𐑌𐐤 } -\tl_const:cn { c__tl_upper_3_X_7_tl } { íÍőŐșȘɽⱤͅΙѱѰӕӔḹḸἁἉὥὭⓝⓃⱉⰙⲭⲬⴑႱꚍꚌꝕꝔ𐑍𐐥 } -\tl_const:cn { c__tl_upper_3_X_8_tl } { îÎƶƵἂἊὦὮⓞⓄⱊⰚⴒႲ𐑎𐐦 } -\tl_const:cn { c__tl_upper_3_X_9_tl } { ïÏœŒțȚѳѲӗӖḻḺἃἋὧὯⓟⓅⱋⰛⲯⲮⴓႳꚏꚎꝗꝖ𐑏𐐧 } -\tl_const:cn { c__tl_upper_4_X_0_tl } { ðÐʀƦάΆἄἌῌ{ΗΙ}ⓠⓆⱌⰜⴔႴ } -\tl_const:cn { c__tl_upper_4_X_1_tl } { ñÑŕŔƹƸȝȜέΈѵѴәӘḽḼạẠἅἍⓡⓇⱍⰝⲱⲰⴕႵꚑꚐꝙꝘ } -\tl_const:cn { c__tl_upper_4_X_2_tl } { òÒήΉἆἎⓢⓈⱎⰞⴖႶ } -\tl_const:cn { c__tl_upper_4_X_3_tl } { óÓŗŖȟȞʃƩίΊѷѶӛӚḿḾảẢἇἏⓣⓉⱏⰟⲳⲲⴗႷꚓꚒꝛꝚ } -\tl_const:cn { c__tl_upper_4_X_4_tl } { ôÔΰ{Ϋ́}ῐῘⓤⓊⱐⰠⴘႸ } -\tl_const:cn { c__tl_upper_4_X_5_tl } { õÕřŘƽƼαΑѹѸӝӜᵹꝽṁṀấẤῑῙⓥⓋⱑⰡⲵⲴⴙႹꚕꚔꝝꝜaA } -\tl_const:cn { c__tl_upper_4_X_6_tl } { öÖβΒῒ{Ϊ̀}ⓦⓌⱒⰢⴚႺbB } -\tl_const:cn { c__tl_upper_4_X_7_tl } { śŚƿǷȣȢʇꞱγΓѻѺӟӞṃṂầẦΐ{Ϊ́}ⓧⓍⱓⰣⲷⲶⴛႻꚗꚖꝟꝞcC } -\tl_const:cn { c__tl_upper_4_X_8_tl } { øØʈƮδΔὰᾺⓨⓎⱔⰤⴜႼdD } -\tl_const:cn { c__tl_upper_4_X_9_tl } { ùÙŝŜȥȤʉɄεΕѽѼӡӠᵽⱣṅṄẩẨάΆⓩⓏⱕⰥⲹⲸⴝႽꚙꚘꝡꝠeE } -\tl_const:cn { c__tl_upper_5_X_0_tl } { úÚʊƱζΖὲῈῖ{Ι͂}ⱖⰦⴞႾfF } -\tl_const:cn { c__tl_upper_5_X_1_tl } { ûÛşŞȧȦʋƲηΗѿѾӣӢṇṆẫẪέΈῗ{Ϊ͂}ⱗⰧⲻⲺⴟႿꚛꚚꝣꝢgG } -\tl_const:cn { c__tl_upper_5_X_2_tl } { üÜʌɅθΘἐἘὴῊⱘⰨⴠჀhH } -\tl_const:cn { c__tl_upper_5_X_3_tl } { ýÝšŠDžDŽȩȨιΙҁҀӥӤṉṈậẬἑἙήΉⱙⰩⲽⲼⴡჁꝥꝤiI } -\tl_const:cn { c__tl_upper_5_X_4_tl } { þÞdžDŽκΚἒἚὶῚⱚⰪⴢჂjJ } -\tl_const:cn { c__tl_upper_5_X_5_tl } { ÿŸţŢȫȪλΛӧӦṋṊắẮἓἛίΊⱛⰫⲿⲾⴣჃꝧꝦkK } -\tl_const:cn { c__tl_upper_5_X_6_tl } { LjLJμΜἔἜὸῸⱜⰬⴤჄff{FF}lL } -\tl_const:cn { c__tl_upper_5_X_7_tl } { āĀťŤljLJȭȬνΝөӨṍṌằẰἕἝόΌⱝⰭⳁⳀⴥჅꝩꝨfi{FI}mM } -\tl_const:cn { c__tl_upper_5_X_8_tl } { ʒƷξΞὺῪⱞⰮfl{FL}nN } -\tl_const:cn { c__tl_upper_5_X_9_tl } { ăĂŧŦNjNJȯȮοΟӫӪṏṎẳẲύΎⳃⳂⴧჇꝫꝪffi{FFI}oO } -\tl_const:cn { c__tl_upper_6_X_0_tl } { njNJπΠὼῺῠῨⅰⅠffl{FFL}pP } -\tl_const:cn { c__tl_upper_6_X_1_tl } { ąĄũŨȱȰρΡӭӬṑṐẵẴώΏῡῩ{ⅱ}{Ⅱ}ⱡⱠⳅⳄꙁꙀꝭꝬſt{ST}qQ } -\tl_const:cn { c__tl_upper_6_X_2_tl } { ǎǍςΣῢ{Ϋ̀}{ⅲ}{Ⅲ}st{ST}rR } -\tl_const:cn { c__tl_upper_6_X_3_tl } { ćĆūŪȳȲσΣҋҊӯӮṓṒặẶΰ{Ϋ́}{ⅳ}{Ⅳ}ⳇⳆꙃꙂꝯꝮsS } -\tl_const:cn { c__tl_upper_6_X_4_tl } { ǐǏτΤᾀ{ἈΙ}ῤ{Ρ̓}ⅴⅤtT } -\tl_const:cn { c__tl_upper_6_X_5_tl } { ĉĈŭŬυΥҍҌӱӰṕṔẹẸᾁ{ἉΙ}ῥῬ{ⅵ}{Ⅵ}ⱥȺⳉⳈⴭჍꙅꙄuU } -\tl_const:cn { c__tl_upper_6_X_6_tl } { ǒǑφΦᾂ{ἊΙ}ῦ{Υ͂}{ⅶ}{Ⅶ}ⱦȾvV } -\tl_const:cn { c__tl_upper_6_X_7_tl } { ċĊůŮχΧҏҎӳӲṗṖẻẺᾃ{ἋΙ}ῧ{Ϋ͂}{ⅷ}{Ⅷ}ⳋⳊꙇꙆwW } -\tl_const:cn { c__tl_upper_6_X_8_tl } { ǔǓψΨἠἨᾄ{ἌΙ}{ⅸ}{Ⅸ}ⱨⱧxX } -\tl_const:cn { c__tl_upper_6_X_9_tl } { čČűŰωΩґҐӵӴṙṘẽẼἡἩᾅ{ἍΙ}ⅹⅩⳍⳌꙉꙈyY } -\tl_const:cn { c__tl_upper_7_X_0_tl } { ǖǕʞꞰϊΪἢἪᾆ{ἎΙ}ⅺⅪⱪⱩzZ } -\tl_const:cn { c__tl_upper_7_X_1_tl } { ďĎųŲϋΫғҒӷӶṛṚếẾἣἫᾇ{ἏΙ}ⅻⅫⳏⳎꙋꙊ } -\tl_const:cn { c__tl_upper_7_X_2_tl } { ǘǗȼȻόΌаАἤἬᾈ{ἈΙ}ⅼⅬⱬⱫ𑣀𑢠 } -\tl_const:cn { c__tl_upper_7_X_3_tl } { đĐŵŴύΎбБҕҔӹӸṝṜềỀἥἭᾉ{ἉΙ}ⅽⅭⳑⳐꙍꙌ𑣁𑢡 } -\tl_const:cn { c__tl_upper_7_X_4_tl } { ǚǙώΏвВἦἮᾊ{ἊΙ}ⅾⅮꝺꝹ𑣂𑢢 } -\tl_const:cn { c__tl_upper_7_X_5_tl } { ēĒŷŶȿⱾгГҗҖӻӺṟṞểỂἧἯᾋ{ἋΙ}ⅿⅯⳓⳒꙏꙎﬓ{ՄՆ}𑣃𑢣 } -\tl_const:cn { c__tl_upper_7_X_6_tl } { ǜǛɀⱿϐΒдДᾌ{ἌΙ}ꝼꝻﬔ{ՄԵ}𑣄𑢤 } -\tl_const:cn { c__tl_upper_7_X_7_tl } { ĕĔǝƎϑΘеЕҙҘӽӼաԱṡṠễỄᾍ{ἍΙ}ⳕⳔꙑꙐﬕ{ՄԻ}𑣅𑢥 } -\tl_const:cn { c__tl_upper_7_X_8_tl } { źŹɂɁжЖբԲᾎ{ἎΙ}ῲ{ῺΙ}ﬖ{ՎՆ}𑣆𑢦 } -\tl_const:cn { c__tl_upper_7_X_9_tl } { ėĖǟǞзЗқҚӿӾգԳṣṢệỆᾏ{ἏΙ}ῳ{ΩΙ}ⱳⱲⳗⳖꙓꙒꝿꝾﬗ{ՄԽ}𑣇𑢧 } -\tl_const:cn { c__tl_upper_8_X_0_tl } { żŻиИդԴᾐ{ἨΙ}ῴ{ΏΙ}ↄↃ𑣈𑢨 } -\tl_const:cn { c__tl_upper_8_X_1_tl } { µΜęĘǡǠͱͰϕΦйЙҝҜԁԀեԵḁḀṥṤỉỈᾑ{ἩΙ}ⳙⳘꙕꙔꞁꞀ𑣉𑢩 } -\tl_const:cn { c__tl_upper_8_X_2_tl } { žŽϖΠкКզԶᾒ{ἪΙ}ῶ{Ω͂}ⱶⱵ𑣊𑢪 } -\tl_const:cn { c__tl_upper_8_X_3_tl } { ěĚſSǣǢɇɆͳͲϗϏлЛҟҞԃԂէԷḃḂṧṦịỊᾓ{ἫΙ}ῷ{Ω͂Ι}ⳛⳚꙗꙖꞃꞂ𑣋𑢫 } -\tl_const:cn { c__tl_upper_8_X_4_tl } { ƀɃмМըԸἰἸᾔ{ἬΙ}𑣌𑢬 } -\tl_const:cn { c__tl_upper_8_X_5_tl } { ĝĜǥǤɉɈϙϘнНҡҠԅԄթԹḅḄṩṨọỌἱἹᾕ{ἭΙ}ⳝⳜꙙꙘꞅꞄ𑣍𑢭 } -\tl_const:cn { c__tl_upper_8_X_6_tl } { оОժԺἲἺᾖ{ἮΙ}𑣎𑢮 } -\tl_const:cn { c__tl_upper_8_X_7_tl } { ğĞƃƂǧǦɋɊͷͶϛϚпПңҢԇԆիԻḇḆṫṪỏỎἳἻᾗ{ἯΙ}ⳟⳞꙛꙚꜣꜢꞇꞆ𑣏𑢯 } -\tl_const:cn { c__tl_upper_8_X_8_tl } { рРլԼἴἼᾘ{ἨΙ}ῼ{ΩΙ}𑣐𑢰 } -\tl_const:cn { c__tl_upper_8_X_9_tl } { ġĠƅƄǩǨɍɌϝϜсСҥҤԉԈխԽḉḈṭṬốỐἵἽᾙ{ἩΙ}ⳡⳠꙝꙜꜥꜤ𑣑𑢱 } -\tl_const:cn { c__tl_upper_9_X_0_tl } { тТծԾἶἾᾚ{ἪΙ}𑣒𑢲 } -\tl_const:cn { c__tl_upper_9_X_1_tl } { ģĢǫǪɏɎͻϽϟϞуУҧҦԋԊկԿḋḊṯṮồỒἷἿᾛ{ἫΙ}ⳣⳢꙟꙞꜧꜦ𑣓𑢳 } -\tl_const:cn { c__tl_upper_9_X_2_tl } { ƈƇɐⱯͼϾфФհՀᾜ{ἬΙ}ꞌꞋ𑣔𑢴 } -\tl_const:cn { c__tl_upper_9_X_3_tl } { ĥĤǭǬɑⱭͽϿϡϠхХҩҨԍԌձՁḍḌṱṰổỔᾝ{ἭΙ}ⲁⲀꙡꙠꜩꜨ𑣕𑢵 } -\tl_const:cn { c__tl_upper_9_X_4_tl } { ɒⱰцЦղՂᾞ{ἮΙ}𑣖𑢶 } -\tl_const:cn { c__tl_upper_9_X_5_tl } { ħĦǯǮɓƁϣϢчЧҫҪԏԎճՃḏḎṳṲỗỖᾟ{ἯΙ}ⲃⲂꙣꙢꜫꜪ𑣗𑢷 } -\tl_const:cn { c__tl_upper_9_X_6_tl } { ƌƋǰ{J̌}ɔƆшШմՄᾠ{ὨΙ}𑣘𑢸 } -\tl_const:cn { c__tl_upper_9_X_7_tl } { aAĩĨϥϤщЩҭҬԑԐյՅḑḐṵṴộỘᾡ{ὩΙ}ⲅⲄꙥꙤꜭꜬꞑꞐ𑣙𑢹 } -\tl_const:cn { c__tl_upper_9_X_8_tl } { bBDzDZɖƉъЪնՆᾢ{ὪΙ}𑣚𑢺 } -\tl_const:cn { c__tl_upper_9_X_9_tl } { cCīĪdzDZɗƊϧϦыЫүҮԓԒշՇḓḒṷṶớỚᾣ{ὫΙ}ⲇⲆꙧꙦꜯꜮꞓꞒ𑣛𑢻 } -\tl_const:cn { c__tl_lower_0_X_0_tl } { ÈèĬĭƐɛǴǵϨϩҰұԔԕḔḕṸṹỜờⒸⓒⰤⱔⲈⲉꙨꙩ } -\tl_const:cn { c__tl_lower_0_X_1_tl } { ÉéƑƒჍⴭⒹⓓⰥⱕⳭⳮ } -\tl_const:cn { c__tl_lower_0_X_2_tl } { ÊêĮįǶƕΆάϪϫҲҳԖԗḖḗṺṻỞởⒺⓔⰦⱖⲊⲋꙪꙫꜲꜳꞖꞗ } -\tl_const:cn { c__tl_lower_0_X_3_tl } { ËëƓɠǷƿⒻⓕⰧⱗ } -\tl_const:cn { c__tl_lower_0_X_4_tl } { Ììİ{i̇}ƔɣǸǹΈέϬϭҴҵԘԙḘḙṼṽỠỡᾨᾠⒼⓖⰨⱘⲌⲍꙬꙭꜴꜵꞘꞙ } -\tl_const:cn { c__tl_lower_0_X_5_tl } { ÍíΉήᾩᾡⒽⓗⰩⱙ } -\tl_const:cn { c__tl_lower_0_X_6_tl } { Îî{IJ}{ij}ƖɩǺǻΊίϮϯҶҷԚԛḚḛṾṿỢợᾪᾢⒾⓘⰪⱚⲎⲏⳲⳳꜶꜷꞚꞛ } -\tl_const:cn { c__tl_lower_0_X_7_tl } { ÏïƗɨᾫᾣⒿⓙⰫⱛ } -\tl_const:cn { c__tl_lower_0_X_8_tl } { ÐðĴĵƘƙǼǽΌόҸҹԜԝḜḝẀẁỤụὈὀᾬᾤⓀⓚⰬⱜⲐⲑꜸꜹꞜꞝ } -\tl_const:cn { c__tl_lower_0_X_9_tl } { ÑñὉὁᾭᾥⓁⓛⰭⱝ } -\tl_const:cn { c__tl_lower_1_X_0_tl } { ÒòĶķǾǿΎύҺһԞԟḞḟẂẃỦủὊὂᾮᾦⓂⓜⰮⱞⲒⲓꜺꜻꞞꞟ } -\tl_const:cn { c__tl_lower_1_X_1_tl } { ÓóΏώὋὃᾯᾧⓃⓝ } -\tl_const:cn { c__tl_lower_1_X_2_tl } { ÔôƜɯȀȁϴθҼҽԠԡḠḡẄẅỨứὌὄⓄⓞⲔⲕꜼꜽꞠꞡ } -\tl_const:cn { c__tl_lower_1_X_3_tl } { ÕõĹĺƝɲΑαὍὅⓅⓟAa } -\tl_const:cn { c__tl_lower_1_X_4_tl } { ÖöȂȃΒβҾҿԢԣḢḣẆẇỪừⓆⓠⲖⲗꜾꜿꞢꞣBb } -\tl_const:cn { c__tl_lower_1_X_5_tl } { ĻļƟɵΓγϷϸⓇⓡCc } -\tl_const:cn { c__tl_lower_1_X_6_tl } { ØøƠơȄȅΔδӀӏԤԥḤḥẈẉỬửⓈⓢⲘⲙꝀꝁꞤꞥDd } -\tl_const:cn { c__tl_lower_1_X_7_tl } { ÙùĽľΕεϹϲӁӂⓉⓣEe } -\tl_const:cn { c__tl_lower_1_X_8_tl } { ÚúƢƣȆȇΖζϺϻԦԧḦḧẊẋỮữⓊⓤⲚⲛꝂꝃꞦꞧFf } -\tl_const:cn { c__tl_lower_1_X_9_tl } { ÛûĿŀΗηӃӄⓋⓥGg } -\tl_const:cn { c__tl_lower_2_X_0_tl } { ÜüƤƥȈȉΘθѠѡԨԩḨḩẌẍỰựᾸᾰⓌⓦⲜⲝꝄꝅꞨꞩHh } -\tl_const:cn { c__tl_lower_2_X_1_tl } { ÝýŁłΙιϽͻӅӆᾹᾱⓍⓧIi } -\tl_const:cn { c__tl_lower_2_X_2_tl } { ÞþƦʀȊȋΚκϾͼѢѣԪԫḪḫẎẏỲỳᾺὰⓎⓨⲞⲟꝆꝇꞪɦJj } -\tl_const:cn { c__tl_lower_2_X_3_tl } { ŃńƧƨΛλϿͽӇӈΆάⓏⓩꞫɜKk } -\tl_const:cn { c__tl_lower_2_X_4_tl } { ȌȍΜμЀѐѤѥԬԭḬḭẐẑỴỵᾼᾳⲠⲡꚀꚁꝈꝉꞬɡLl } -\tl_const:cn { c__tl_lower_2_X_5_tl } { ŅņƩʃΝνЁёӉӊὙὑꞭɬMm } -\tl_const:cn { c__tl_lower_2_X_6_tl } { ȎȏΞξЂђѦѧԮԯḮḯẒẓỶỷⲢⲣꚂꚃꝊꝋNn } -\tl_const:cn { c__tl_lower_2_X_7_tl } { ŇňΟοЃѓӋӌὛὓOo } -\tl_const:cn { c__tl_lower_2_X_8_tl } { ƬƭȐȑΠπЄєѨѩḰḱẔẕỸỹⲤⲥꚄꚅꝌꝍꞰʞPp } -\tl_const:cn { c__tl_lower_2_X_9_tl } { ΡρЅѕӍӎԱաὝὕꞱʇQq } -\tl_const:cn { c__tl_lower_3_X_0_tl } { ŊŋƮʈȒȓІіѪѫԲբḲḳỺỻⲦⲧꚆꚇꝎꝏRr } -\tl_const:cn { c__tl_lower_3_X_1_tl } { ƯưΣσЇїԳգὟὗSs } -\tl_const:cn { c__tl_lower_3_X_2_tl } { ŌōȔȕΤτЈјѬѭӐӑԴդḴḵỼỽⲨⲩꚈꚉꝐꝑTt } -\tl_const:cn { c__tl_lower_3_X_3_tl } { ƱʊΥυЉљԵեUu } -\tl_const:cn { c__tl_lower_3_X_4_tl } { ŎŏƲʋȖȗΦφЊњѮѯӒӓԶզḶḷỾỿⲪⲫꚊꚋꝒꝓVv } -\tl_const:cn { c__tl_lower_3_X_5_tl } { ƳƴΧχЋћԷէWw } -\tl_const:cn { c__tl_lower_3_X_6_tl } { ŐőȘșΨψЌќѰѱӔӕԸըḸḹῈὲⲬⲭꚌꚍꝔꝕXx } -\tl_const:cn { c__tl_lower_3_X_7_tl } { ƵƶΩωЍѝԹթΈέYy } -\tl_const:cn { c__tl_lower_3_X_8_tl } { ŒœȚțΪϊЎўѲѳӖӗԺժḺḻẞßῊὴⲮⲯꚎꚏꝖꝗZz } -\tl_const:cn { c__tl_lower_3_X_9_tl } { ƷʒΫϋЏџԻիΉή } -\tl_const:cn { c__tl_lower_4_X_0_tl } { ŔŕƸƹȜȝАаѴѵӘәԼլḼḽẠạὨὠῌῃⲰⲱꚐꚑꝘꝙ𑢠𑣀 } -\tl_const:cn { c__tl_lower_4_X_1_tl } { БбԽխὩὡ𑢡𑣁 } -\tl_const:cn { c__tl_lower_4_X_2_tl } { ŖŗȞȟВвѶѷӚӛԾծḾḿẢảὪὢⲲⲳꚒꚓꝚꝛ𑢢𑣂 } -\tl_const:cn { c__tl_lower_4_X_3_tl } { ГгԿկὫὣ𑢣𑣃 } -\tl_const:cn { c__tl_lower_4_X_4_tl } { ŘřƼƽȠƞДдѸѹӜӝՀհṀṁẤấἈἀὬὤⅠⅰⲴⲵꚔꚕꝜꝝ𑢤𑣄 } -\tl_const:cn { c__tl_lower_4_X_5_tl } { ЕеՁձἉἁὭὥ{Ⅱ}{ⅱ}𑢥𑣅 } -\tl_const:cn { c__tl_lower_4_X_6_tl } { ŚśȢȣЖжѺѻӞӟՂղṂṃẦầἊἂὮὦ{Ⅲ}{ⅲ}ⲶⲷꚖꚗꝞꝟ𑢦𑣆 } -\tl_const:cn { c__tl_lower_4_X_7_tl } { ЗзՃճἋἃὯὧ{Ⅳ}{ⅳ}𑢧𑣇 } -\tl_const:cn { c__tl_lower_4_X_8_tl } { ŜŝȤȥИиѼѽӠӡՄմṄṅẨẩἌἄⅤⅴⲸⲹꚘꚙꝠꝡ𑢨𑣈 } -\tl_const:cn { c__tl_lower_4_X_9_tl } { ЙйՅյἍἅ{Ⅵ}{ⅵ}𑢩𑣉 } -\tl_const:cn { c__tl_lower_5_X_0_tl } { ŞşȦȧКкѾѿӢӣՆնṆṇẪẫἎἆ{Ⅶ}{ⅶ}ⲺⲻꚚꚛꝢꝣ𑢪𑣊 } -\tl_const:cn { c__tl_lower_5_X_1_tl } { ЛлՇշἏἇ{Ⅷ}{ⅷ}𑢫𑣋 } -\tl_const:cn { c__tl_lower_5_X_2_tl } { ŠšDŽdžȨȩМмҀҁӤӥՈոṈṉẬậῘῐ{Ⅸ}{ⅸ}ⲼⲽꝤꝥ𑢬𑣌 } -\tl_const:cn { c__tl_lower_5_X_3_tl } { DždžНнՉչῙῑⅩⅹ𑢭𑣍 } -\tl_const:cn { c__tl_lower_5_X_4_tl } { ŢţȪȫОоӦӧՊպṊṋẮắῚὶⅪⅺⲾⲿꝦꝧ𑢮𑣎 } -\tl_const:cn { c__tl_lower_5_X_5_tl } { LJljПпՋջΊίⅫⅻ𑢯𑣏 } -\tl_const:cn { c__tl_lower_5_X_6_tl } { ĀāŤťLjljȬȭРрӨөՌռႠⴀṌṍẰằⅬⅼⳀⳁꝨꝩ𑢰𑣐 } -\tl_const:cn { c__tl_lower_5_X_7_tl } { СсՍսႡⴁⅭⅽ𑢱𑣑 } -\tl_const:cn { c__tl_lower_5_X_8_tl } { ĂăŦŧNJnjȮȯТтӪӫՎվႢⴂṎṏẲẳⅮⅾⳂⳃꝪꝫ𑢲𑣒 } -\tl_const:cn { c__tl_lower_5_X_9_tl } { NjnjУуՏտႣⴃⅯⅿ𑢳𑣓 } -\tl_const:cn { c__tl_lower_6_X_0_tl } { ĄąŨũȰȱФфӬӭՐրႤⴄṐṑẴẵἘἐⱠⱡⳄⳅꙀꙁꝬꝭ𐐀𐐨𑢴𑣔 } -\tl_const:cn { c__tl_lower_6_X_1_tl } { ǍǎХхՑցႥⴅἙἑ𐐁𐐩𑢵𑣕 } -\tl_const:cn { c__tl_lower_6_X_2_tl } { ĆćŪūȲȳЦцҊҋӮӯՒւႦⴆṒṓẶặἚἒⱢɫⳆⳇꙂꙃꝮꝯ𐐂𐐪𑢶𑣖 } -\tl_const:cn { c__tl_lower_6_X_3_tl } { ǏǐЧчՓփႧⴇἛἓⱣᵽ𐐃𐐫𑢷𑣗 } -\tl_const:cn { c__tl_lower_6_X_4_tl } { ĈĉŬŭШшҌҍӰӱՔքႨⴈṔṕẸẹἜἔⰀⰰⱤɽⳈⳉꙄꙅ𐐄𐐬𑢸𑣘 } -\tl_const:cn { c__tl_lower_6_X_5_tl } { AaǑǒЩщՕօႩⴉἝἕⰁⰱ𐐅𐐭𑢹𑣙 } -\tl_const:cn { c__tl_lower_6_X_6_tl } { BbĊċŮůЪъҎҏӲӳՖֆႪⴊṖṗẺẻⰂⰲⳊⳋꙆꙇ𐐆𐐮𑢺𑣚 } -\tl_const:cn { c__tl_lower_6_X_7_tl } { CcǓǔЫыႫⴋⰃⰳⱧⱨ𐐇𐐯𑢻𑣛 } -\tl_const:cn { c__tl_lower_6_X_8_tl } { DdČčŰűЬьҐґӴӵႬⴌṘṙẼẽῨῠⰄⰴⳌⳍꙈꙉ𐐈𐐰𑢼𑣜 } -\tl_const:cn { c__tl_lower_6_X_9_tl } { EeǕǖЭэႭⴍῩῡⰅⰵⱩⱪ𐐉𐐱𑢽𑣝 } -\tl_const:cn { c__tl_lower_7_X_0_tl } { FfĎďŲųȺⱥЮюҒғӶӷႮⴎṚṛẾếῪὺⰆⰶⳎⳏꙊꙋ𐐊𐐲𑢾𑣞 } -\tl_const:cn { c__tl_lower_7_X_1_tl } { GgǗǘȻȼЯяႯⴏΎύⰇⰷⱫⱬ𐐋𐐳𑢿𑣟 } -\tl_const:cn { c__tl_lower_7_X_2_tl } { HhĐđŴŵҔҕӸӹႰⴐṜṝỀềᾈᾀῬῥⰈⰸⳐⳑꙌꙍ𐐌𐐴 } -\tl_const:cn { c__tl_lower_7_X_3_tl } { IiǙǚȽƚႱⴑᾉᾁⰉⰹⱭɑꝹꝺ𐐍𐐵 } -\tl_const:cn { c__tl_lower_7_X_4_tl } { JjĒēŶŷȾⱦҖҗӺӻႲⴒṞṟỂểᾊᾂⰊⰺⱮɱⳒⳓꙎꙏ𐐎𐐶 } -\tl_const:cn { c__tl_lower_7_X_5_tl } { KkǛǜϏϗႳⴓᾋᾃⰋⰻⱯɐꝻꝼ𐐏𐐷 } -\tl_const:cn { c__tl_lower_7_X_6_tl } { LlĔĕŸÿҘҙӼӽႴⴔṠṡỄễἨἠᾌᾄⰌⰼⱰɒⳔⳕꙐꙑ𐐐𐐸 } -\tl_const:cn { c__tl_lower_7_X_7_tl } { MmŹźɁɂႵⴕἩἡᾍᾅⰍⰽꝽᵹ𐐑𐐹 } -\tl_const:cn { c__tl_lower_7_X_8_tl } { NnĖėǞǟҚқӾӿႶⴖṢṣỆệἪἢᾎᾆⰎⰾⱲⱳⳖⳗꙒꙓꝾꝿ𐐒𐐺 } -\tl_const:cn { c__tl_lower_7_X_9_tl } { OoŻżɃƀႷⴗἫἣᾏᾇↃↄⰏⰿ𐐓𐐻 } -\tl_const:cn { c__tl_lower_8_X_0_tl } { PpĘęǠǡɄʉͰͱҜҝԀԁႸⴘḀḁṤṥỈỉἬἤⰐⱀⳘⳙꙔꙕꞀꞁ𐐔𐐼 } -\tl_const:cn { c__tl_lower_8_X_1_tl } { QqŽžɅʌႹⴙἭἥⰑⱁⱵⱶ𐐕𐐽 } -\tl_const:cn { c__tl_lower_8_X_2_tl } { RrĚěǢǣɆɇͲͳҞҟԂԃႺⴚḂḃṦṧỊịἮἦⰒⱂⳚⳛꙖꙗꞂꞃ𐐖𐐾 } -\tl_const:cn { c__tl_lower_8_X_3_tl } { SsႻⴛἯἧⰓⱃ𐐗𐐿 } -\tl_const:cn { c__tl_lower_8_X_4_tl } { TtĜĝǤǥɈɉϘϙҠҡԄԅႼⴜḄḅṨṩỌọῸὸⰔⱄⳜⳝꙘꙙꞄꞅ𐐘𐑀 } -\tl_const:cn { c__tl_lower_8_X_5_tl } { UuƁɓႽⴝΌόⰕⱅ𐐙𐑁 } -\tl_const:cn { c__tl_lower_8_X_6_tl } { VvĞğƂƃǦǧɊɋͶͷϚϛҢңԆԇႾⴞḆḇṪṫỎỏῺὼΩωⰖⱆⳞⳟꙚꙛꜢꜣꞆꞇ𐐚𐑂 } -\tl_const:cn { c__tl_lower_8_X_7_tl } { WwႿⴟΏώⰗⱇ𐐛𐑃 } -\tl_const:cn { c__tl_lower_8_X_8_tl } { XxĠġƄƅǨǩɌɍϜϝҤҥԈԉჀⴠḈḉṬṭỐốᾘᾐῼῳⰘⱈⳠⳡꙜꙝꜤꜥ𐐜𐑄 } -\tl_const:cn { c__tl_lower_8_X_9_tl } { YyჁⴡᾙᾑⰙⱉ𐐝𐑅 } -\tl_const:cn { c__tl_lower_9_X_0_tl } { ZzĢģƆɔǪǫɎɏϞϟҦҧԊԋჂⴢḊḋṮṯỒồᾚᾒKkⰚⱊⱾȿⳢⳣꙞꙟꜦꜧ𐐞𐑆 } -\tl_const:cn { c__tl_lower_9_X_1_tl } { ƇƈჃⴣᾛᾓÅåⰛⱋⱿɀꞋꞌ𐐟𐑇 } -\tl_const:cn { c__tl_lower_9_X_2_tl } { ÀàĤĥǬǭϠϡҨҩԌԍჄⴤḌḍṰṱỔổἸἰᾜᾔⰜⱌⲀⲁꙠꙡꜨꜩ𐐠𐑈 } -\tl_const:cn { c__tl_lower_9_X_3_tl } { ÁáƉɖჅⴥἹἱᾝᾕⰝⱍꞍɥ𐐡𐑉 } -\tl_const:cn { c__tl_lower_9_X_4_tl } { ÂâĦħƊɗǮǯϢϣҪҫԎԏḎḏṲṳỖỗἺἲᾞᾖⰞⱎⲂⲃꙢꙣꜪꜫ𐐢𐑊 } -\tl_const:cn { c__tl_lower_9_X_5_tl } { ÃãƋƌͿϳჇⴧἻἳᾟᾗⰟⱏ𐐣𐑋 } -\tl_const:cn { c__tl_lower_9_X_6_tl } { ÄäĨĩϤϥҬҭԐԑḐḑṴṵỘộἼἴⰠⱐⲄⲅꙤꙥꜬꜭꞐꞑ𐐤𐑌 } -\tl_const:cn { c__tl_lower_9_X_7_tl } { ÅåDZdzἽἵⰡⱑ𐐥𐑍 } -\tl_const:cn { c__tl_lower_9_X_8_tl } { ÆæĪīƎǝDzdzϦϧҮүԒԓḒḓṶṷỚớἾἶℲⅎⒶⓐⰢⱒⲆⲇꙦꙧꜮꜯꞒꞓ𐐦𐑎 } -\tl_const:cn { c__tl_lower_9_X_9_tl } { ÇçƏəἿἷⒷⓑⰣⱓⳫⳬ𐐧𐑏 } -\tl_const:Nn \c__tl_mixed_exceptions_tl { {ß}{Ss}{ff}{Ff}{fi}{Fi}{fl}{Fl}{ffi}{Ffi}{ffl}{Ffl}{ſt}{St}{st}{St}{և}{Եւ}{ﬓ}{Մն}{ﬔ}{Մե}{ﬕ}{Մի}{ﬖ}{Վն}{ﬗ}{Մխ}{ᾲ}{Ὰͅ}{ᾴ}{Άͅ}{ῂ}{Ὴͅ}{ῄ}{Ήͅ}{ῲ}{Ὼͅ}{ῴ}{Ώͅ}{ᾷ}{ᾼ͂}{ῇ}{ῌ͂}{ῷ}{ῼ͂}{Dž}{Dž}{dž}{Dž}{Lj}{Lj}{lj}{Lj}{Nj}{Nj}{nj}{Nj}{Dz}{Dz}{dz}{Dz} } -\tl_const:Nn \c__tl_std_sigma_tl { σ } -\tl_const:Nn \c__tl_final_sigma_tl { ς } -\tl_const:Nn \c__tl_dotless_i_tl { ı } -\tl_const:Nn \c__tl_dot_above_tl { ̇ } -\tl_const:Nn \c__tl_dotted_I_tl { İ } -\tl_const:Nn \c__tl_accents_lt_tl {Ì{i̇̀}Í{i̇́}Ĩ{i̇̃}} -\group_begin: - \cs_set_protected:Npn \__str_tmp:NNn #1#2#3 - { - \tl_const:cx { c__str_fold_#1 _X_ #2_tl } - { \__str_tmp:Nw #3 \q_recursion_tail { } \q_recursion_stop } - } - \cs_set:Npn \__str_tmp:Nw #1#2 - { - \quark_if_recursion_tail_stop:N #1 - \tl_to_str:N #1 - \tl_if_blank:oT { \use_none:n #2 } - { \use:n } - { \tl_to_str:n {#2} } - \__str_tmp:Nw - } - \__str_tmp:NNn 0 0 { ÈèĬĭƐɛǴǵϨϩҰұԔԕḔḕṸṹỜờᾤ{ὤι}ⒸⓒⰤⱔⲈⲉꙨꙩ } - \__str_tmp:NNn 0 1 { ÉéƑƒჍⴭᾥ{ὥι}ⒹⓓⰥⱕⳭⳮ } - \__str_tmp:NNn 0 2 { ÊêĮįǶƕΆάϪϫҲҳԖԗḖḗṺṻỞởᾦ{ὦι}ⒺⓔⰦⱖⲊⲋꙪꙫꜲꜳꞖꞗ } - \__str_tmp:NNn 0 3 { ËëƓɠǷƿᾧ{ὧι}ⒻⓕⰧⱗ } - \__str_tmp:NNn 0 4 { Ììİ{i̇}ƔɣǸǹΈέϬϭҴҵԘԙḘḙṼṽỠỡᾨ{ὠι}ⒼⓖⰨⱘⲌⲍꙬꙭꜴꜵꞘꞙ } - \__str_tmp:NNn 0 5 { ÍíΉήᾩ{ὡι}ⒽⓗⰩⱙ } - \__str_tmp:NNn 0 6 { Îî{IJ}{ij}ƖɩǺǻΊίϮϯҶҷԚԛḚḛṾṿỢợᾪ{ὢι}ⒾⓘⰪⱚⲎⲏⳲⳳꜶꜷꞚꞛ } - \__str_tmp:NNn 0 7 { ÏïƗɨᾫ{ὣι}ⒿⓙⰫⱛ } - \__str_tmp:NNn 0 8 { ÐðĴĵƘƙǼǽΌόϰκҸҹԜԝḜḝẀẁỤụὈὀᾬ{ὤι}ⓀⓚⰬⱜⲐⲑꜸꜹꞜꞝ } - \__str_tmp:NNn 0 9 { ÑñϱρὉὁᾭ{ὥι}ⓁⓛⰭⱝ } - \__str_tmp:NNn 1 0 { ÒòĶķǾǿΎύҺһԞԟḞḟẂẃỦủὊὂᾮ{ὦι}ⓂⓜⰮⱞⲒⲓꜺꜻꞞꞟ } - \__str_tmp:NNn 1 1 { ÓóΏώὋὃᾯ{ὧι}Ⓝⓝ } - \__str_tmp:NNn 1 2 { ÔôƜɯȀȁΐ{ΐ}ϴθҼҽԠԡḠḡẄẅỨứὌὄⓄⓞⲔⲕꜼꜽꞠꞡ } - \__str_tmp:NNn 1 3 { ÕõĹĺƝɲΑαϵεὍὅⓅⓟAa } - \__str_tmp:NNn 1 4 { ÖöȂȃΒβҾҿԢԣḢḣẆẇỪừᾲ{ὰι}ⓆⓠⲖⲗꜾꜿꞢꞣBb } - \__str_tmp:NNn 1 5 { ĻļƟɵΓγϷϸ{և}{եւ}ᾳ{αι}ⓇⓡCc } - \__str_tmp:NNn 1 6 { ØøƠơȄȅΔδӀӏԤԥḤḥẈẉỬửὐ{ὐ}ᾴ{άι}ⓈⓢⲘⲙꝀꝁꞤꞥDd } - \__str_tmp:NNn 1 7 { ÙùĽľΕεϹϲӁӂⓉⓣEe } - \__str_tmp:NNn 1 8 { ÚúƢƣȆȇΖζϺϻԦԧḦḧẊẋỮữὒ{ὒ}ᾶ{ᾶ}ⓊⓤⲚⲛꝂꝃꞦꞧFf } - \__str_tmp:NNn 1 9 { Ûû{Ŀ}{ŀ}ΗηӃӄᾷ{ᾶι}ⓋⓥGg } - \__str_tmp:NNn 2 0 { ÜüƤƥȈȉΘθѠѡԨԩḨḩẌẍỰựὔ{ὔ}ᾸᾰⓌⓦⲜⲝꝄꝅꞨꞩHh } - \__str_tmp:NNn 2 1 { ÝýŁłΙιϽͻӅӆᾹᾱⓍⓧIi } - \__str_tmp:NNn 2 2 { ÞþƦʀȊȋΚκϾͼѢѣԪԫḪḫẎẏỲỳὖ{ὖ}ᾺὰⓎⓨⲞⲟꝆꝇꞪɦJj } - \__str_tmp:NNn 2 3 { ß{ss}ŃńƧƨΛλϿͽӇӈΆάⓏⓩꞫɜKk } - \__str_tmp:NNn 2 4 { ȌȍΜμЀѐѤѥԬԭḬḭẐẑỴỵᾼ{αι}ⲠⲡꚀꚁꝈꝉꞬɡLl } - \__str_tmp:NNn 2 5 { ŅņƩʃΝνЁёӉӊὙὑꞭɬMm } - \__str_tmp:NNn 2 6 { ȎȏΞξЂђѦѧԮԯḮḯẒẓỶỷιιⲢⲣꚂꚃꝊꝋNn } - \__str_tmp:NNn 2 7 { ŇňΟοЃѓӋӌὛὓOo } - \__str_tmp:NNn 2 8 { ƬƭȐȑΠπЄєѨѩḰḱẔẕỸỹⲤⲥꚄꚅꝌꝍꞰʞPp } - \__str_tmp:NNn 2 9 { {ʼn}{ʼn}ΡρЅѕӍӎԱաὝὕꞱʇQq } - \__str_tmp:NNn 3 0 { ŊŋƮʈȒȓІіѪѫԲբḲḳẖ{ẖ}Ỻỻῂ{ὴι}ⲦⲧꚆꚇꝎꝏRr } - \__str_tmp:NNn 3 1 { ƯưΣσЇїԳգẗ{ẗ}Ὗὗῃ{ηι}Ss } - \__str_tmp:NNn 3 2 { ŌōȔȕΤτЈјѬѭӐӑԴդḴḵẘ{ẘ}Ỽỽῄ{ήι}ⲨⲩꚈꚉꝐꝑTt } - \__str_tmp:NNn 3 3 { ƱʊΥυЉљԵեẙ{ẙ}Uu } - \__str_tmp:NNn 3 4 { ŎŏƲʋȖȗΦφЊњѮѯӒӓԶզḶḷ{ẚ}{aʾ}Ỿỿῆ{ῆ}ⲪⲫꚊꚋꝒꝓVv } - \__str_tmp:NNn 3 5 { ƳƴΧχЋћԷէẛṡῇ{ῆι}Ww } - \__str_tmp:NNn 3 6 { ŐőȘșΨψЌќѰѱӔӕԸըḸḹῈὲⲬⲭꚌꚍꝔꝕXx } - \__str_tmp:NNn 3 7 { ƵƶͅιΩωЍѝԹթΈέYy } - \__str_tmp:NNn 3 8 { ŒœȚțΪϊЎўѲѳӖӗԺժḺḻẞ{ss}ῊὴⲮⲯꚎꚏꝖꝗZz } - \__str_tmp:NNn 3 9 { ƷʒΫϋЏџԻիΉή } - \__str_tmp:NNn 4 0 { ŔŕƸƹȜȝАаѴѵӘәԼլḼḽẠạὨὠῌ{ηι}ⲰⲱꚐꚑꝘꝙ𑢠𑣀 } - \__str_tmp:NNn 4 1 { БбԽխὩὡ𑢡𑣁 } - \__str_tmp:NNn 4 2 { ŖŗȞȟВвѶѷӚӛԾծḾḿẢảὪὢⲲⲳꚒꚓꝚꝛ𑢢𑣂 } - \__str_tmp:NNn 4 3 { ГгԿկὫὣ𑢣𑣃 } - \__str_tmp:NNn 4 4 { ŘřƼƽȠƞΰ{ΰ}ДдѸѹӜӝՀհṀṁẤấἈἀὬὤⅠⅰⲴⲵꚔꚕꝜꝝ𑢤𑣄 } - \__str_tmp:NNn 4 5 { ЕеՁձἉἁὭὥ{Ⅱ}{ⅱ}𑢥𑣅 } - \__str_tmp:NNn 4 6 { ŚśȢȣЖжѺѻӞӟՂղṂṃẦầἊἂὮὦῒ{ῒ}{Ⅲ}{ⅲ}ⲶⲷꚖꚗꝞꝟ𑢦𑣆 } - \__str_tmp:NNn 4 7 { ЗзՃճἋἃὯὧΐ{ΐ}{Ⅳ}{ⅳ}𑢧𑣇 } - \__str_tmp:NNn 4 8 { ŜŝȤȥИиѼѽӠӡՄմṄṅẨẩἌἄⅤⅴⲸⲹꚘꚙꝠꝡ𑢨𑣈 } - \__str_tmp:NNn 4 9 { ЙйՅյἍἅ{Ⅵ}{ⅵ}𑢩𑣉 } - \__str_tmp:NNn 5 0 { ŞşȦȧКкѾѿӢӣՆնṆṇẪẫἎἆῖ{ῖ}{Ⅶ}{ⅶ}ⲺⲻꚚꚛꝢꝣ𑢪𑣊 } - \__str_tmp:NNn 5 1 { ЛлՇշἏἇῗ{ῗ}{Ⅷ}{ⅷ}𑢫𑣋 } - \__str_tmp:NNn 5 2 { Šš{DŽ}{dž}ȨȩМмҀҁӤӥՈոṈṉẬậῘῐ{Ⅸ}{ⅸ}ⲼⲽꝤꝥ𑢬𑣌 } - \__str_tmp:NNn 5 3 { {Dž}{dž}НнՉչῙῑⅩⅹ𑢭𑣍 } - \__str_tmp:NNn 5 4 { ŢţȪȫОоӦӧՊպṊṋẮắῚὶ{Ⅺ}{ⅺ}ⲾⲿꝦꝧ𑢮𑣎 } - \__str_tmp:NNn 5 5 { {LJ}{lj}ПпՋջΊί{Ⅻ}{ⅻ}𑢯𑣏 } - \__str_tmp:NNn 5 6 { ĀāŤť{Lj}{lj}ȬȭРрӨөՌռႠⴀṌṍẰằⅬⅼⳀⳁꝨꝩ{ff}{ff}𑢰𑣐 } - \__str_tmp:NNn 5 7 { СсՍսႡⴁⅭⅽ{fi}{fi}𑢱𑣑 } - \__str_tmp:NNn 5 8 { ĂăŦŧ{NJ}{nj}ȮȯТтӪӫՎվႢⴂṎṏẲẳⅮⅾⳂⳃꝪꝫ{fl}{fl}𑢲𑣒 } - \__str_tmp:NNn 5 9 { {Nj}{nj}УуՏտႣⴃⅯⅿ{ffi}{ffi}𑢳𑣓 } - \__str_tmp:NNn 6 0 { ĄąŨũȰȱФфӬӭՐրႤⴄṐṑẴẵἘἐⱠⱡⳄⳅꙀꙁꝬꝭ{ffl}{ffl}𐐀𐐨𑢴𑣔 } - \__str_tmp:NNn 6 1 { ǍǎХхՑցႥⴅἙἑ{ſt}{st}𐐁𐐩𑢵𑣕 } - \__str_tmp:NNn 6 2 { ĆćŪūȲȳςσЦцҊҋӮӯՒւႦⴆṒṓẶặἚἒῢ{ῢ}ⱢɫⳆⳇꙂꙃꝮꝯ{st}{st}𐐂𐐪𑢶𑣖 } - \__str_tmp:NNn 6 3 { ǏǐЧчՓփႧⴇἛἓΰ{ΰ}Ᵽᵽ𐐃𐐫𑢷𑣗 } - \__str_tmp:NNn 6 4 { ĈĉŬŭШшҌҍӰӱՔքႨⴈṔṕẸẹἜἔᾀ{ἀι}ῤ{ῤ}ⰀⰰⱤɽⳈⳉꙄꙅ𐐄𐐬𑢸𑣘 } - \__str_tmp:NNn 6 5 { AaǑǒЩщՕօႩⴉἝἕᾁ{ἁι}Ⰱⰱ𐐅𐐭𑢹𑣙 } - \__str_tmp:NNn 6 6 { BbĊċŮůЪъҎҏӲӳՖֆႪⴊṖṗẺẻᾂ{ἂι}ῦ{ῦ}ⰂⰲⳊⳋꙆꙇ𐐆𐐮𑢺𑣚 } - \__str_tmp:NNn 6 7 { CcǓǔЫыႫⴋᾃ{ἃι}ῧ{ῧ}ⰃⰳⱧⱨ𐐇𐐯𑢻𑣛 } - \__str_tmp:NNn 6 8 { DdČčŰűЬьҐґӴӵႬⴌṘṙẼẽᾄ{ἄι}ῨῠⰄⰴⳌⳍꙈꙉ𐐈𐐰𑢼𑣜 } - \__str_tmp:NNn 6 9 { EeǕǖЭэႭⴍᾅ{ἅι}ῩῡⰅⰵⱩⱪ𐐉𐐱𑢽𑣝 } - \__str_tmp:NNn 7 0 { FfĎďŲųȺⱥЮюҒғӶӷႮⴎṚṛẾếᾆ{ἆι}ῪὺⰆⰶⳎⳏꙊꙋ𐐊𐐲𑢾𑣞 } - \__str_tmp:NNn 7 1 { GgǗǘȻȼЯяႯⴏᾇ{ἇι}ΎύⰇⰷⱫⱬ𐐋𐐳𑢿𑣟 } - \__str_tmp:NNn 7 2 { HhĐđŴŵҔҕӸӹႰⴐṜṝỀềᾈ{ἀι}ῬῥⰈⰸⳐⳑꙌꙍ𐐌𐐴 } - \__str_tmp:NNn 7 3 { IiǙǚȽƚႱⴑᾉ{ἁι}ⰉⰹⱭɑꝹꝺ𐐍𐐵 } - \__str_tmp:NNn 7 4 { JjĒēŶŷȾⱦҖҗӺӻႲⴒṞṟỂểᾊ{ἂι}ⰊⰺⱮɱⳒⳓꙎꙏ𐐎𐐶 } - \__str_tmp:NNn 7 5 { KkǛǜϏϗႳⴓᾋ{ἃι}ⰋⰻⱯɐꝻꝼ{ﬓ}{մն}𐐏𐐷 } - \__str_tmp:NNn 7 6 { LlĔĕŸÿϐβҘҙӼӽႴⴔṠṡỄễἨἠᾌ{ἄι}ⰌⰼⱰɒⳔⳕꙐꙑ{ﬔ}{մե}𐐐𐐸 } - \__str_tmp:NNn 7 7 { MmŹźɁɂϑθႵⴕἩἡᾍ{ἅι}ⰍⰽꝽᵹ{ﬕ}{մի}𐐑𐐹 } - \__str_tmp:NNn 7 8 { NnĖėǞǟҚқӾӿႶⴖṢṣỆệἪἢᾎ{ἆι}ῲ{ὼι}ⰎⰾⱲⱳⳖⳗꙒꙓꝾꝿ{ﬖ}{վն}𐐒𐐺 } - \__str_tmp:NNn 7 9 { OoŻżɃƀႷⴗἫἣᾏ{ἇι}ῳ{ωι}ↃↄⰏⰿ{ﬗ}{մխ}𐐓𐐻 } - \__str_tmp:NNn 8 0 { PpĘęǠǡɄʉͰͱҜҝԀԁႸⴘḀḁṤṥỈỉἬἤᾐ{ἠι}ῴ{ώι}ⰐⱀⳘⳙꙔꙕꞀꞁ𐐔𐐼 } - \__str_tmp:NNn 8 1 { QqµμŽžɅʌϕφႹⴙἭἥᾑ{ἡι}ⰑⱁⱵⱶ𐐕𐐽 } - \__str_tmp:NNn 8 2 { RrĚěǢǣɆɇͲͳϖπҞҟԂԃႺⴚḂḃṦṧỊịἮἦᾒ{ἢι}ῶ{ῶ}ⰒⱂⳚⳛꙖꙗꞂꞃ𐐖𐐾 } - \__str_tmp:NNn 8 3 { SsſsႻⴛἯἧᾓ{ἣι}ῷ{ῶι}Ⱃⱃ𐐗𐐿 } - \__str_tmp:NNn 8 4 { TtĜĝǤǥɈɉϘϙҠҡԄԅႼⴜḄḅṨṩỌọᾔ{ἤι}ῸὸⰔⱄⳜⳝꙘꙙꞄꞅ𐐘𐑀 } - \__str_tmp:NNn 8 5 { UuƁɓႽⴝᾕ{ἥι}ΌόⰕⱅ𐐙𐑁 } - \__str_tmp:NNn 8 6 { VvĞğƂƃǦǧɊɋͶͷϚϛҢңԆԇႾⴞḆḇṪṫỎỏᾖ{ἦι}ῺὼΩωⰖⱆⳞⳟꙚꙛꜢꜣꞆꞇ𐐚𐑂 } - \__str_tmp:NNn 8 7 { WwႿⴟᾗ{ἧι}ΏώⰗⱇ𐐛𐑃 } - \__str_tmp:NNn 8 8 { XxĠġƄƅǨǩɌɍϜϝҤҥԈԉჀⴠḈḉṬṭỐốᾘ{ἠι}ῼ{ωι}ⰘⱈⳠⳡꙜꙝꜤꜥ𐐜𐑄 } - \__str_tmp:NNn 8 9 { YyჁⴡᾙ{ἡι}Ⱉⱉ𐐝𐑅 } - \__str_tmp:NNn 9 0 { ZzĢģƆɔǪǫɎɏϞϟҦҧԊԋჂⴢḊḋṮṯỒồᾚ{ἢι}KkⰚⱊⱾȿⳢⳣꙞꙟꜦꜧ𐐞𐑆 } - \__str_tmp:NNn 9 1 { ƇƈჃⴣᾛ{ἣι}ÅåⰛⱋⱿɀꞋꞌ𐐟𐑇 } - \__str_tmp:NNn 9 2 { ÀàĤĥǬǭϠϡҨҩԌԍჄⴤḌḍṰṱỔổἸἰᾜ{ἤι}ⰜⱌⲀⲁꙠꙡꜨꜩ𐐠𐑈 } - \__str_tmp:NNn 9 3 { ÁáƉɖჅⴥἹἱᾝ{ἥι}ⰝⱍꞍɥ𐐡𐑉 } - \__str_tmp:NNn 9 4 { ÂâĦħƊɗǮǯϢϣҪҫԎԏḎḏṲṳỖỗἺἲᾞ{ἦι}ⰞⱎⲂⲃꙢꙣꜪꜫ𐐢𐑊 } - \__str_tmp:NNn 9 5 { ÃãƋƌͿϳჇⴧἻἳᾟ{ἧι}Ⱏⱏ𐐣𐑋 } - \__str_tmp:NNn 9 6 { ÄäĨĩǰ{ǰ}ϤϥҬҭԐԑḐḑṴṵỘộἼἴᾠ{ὠι}ⰠⱐⲄⲅꙤꙥꜬꜭꞐꞑ𐐤𐑌 } - \__str_tmp:NNn 9 7 { Åå{DZ}{dz}Ἵἵᾡ{ὡι}Ⱑⱑ𐐥𐑍 } - \__str_tmp:NNn 9 8 { ÆæĪīƎǝ{Dz}{dz}ϦϧҮүԒԓḒḓṶṷỚớἾἶᾢ{ὢι}ℲⅎⒶⓐⰢⱒⲆⲇꙦꙧꜮꜯꞒꞓ𐐦𐑎 } - \__str_tmp:NNn 9 9 { ÇçƏəἿἷᾣ{ὣι}ⒷⓑⰣⱓⳫⳬ𐐧𐑏 } -\group_end: diff --git a/Master/texmf-dist/source/latex/l3kernel/ltunicode.dtx b/Master/texmf-dist/source/latex/l3kernel/ltunicode.dtx new file mode 100644 index 00000000000..7dd0591d4b6 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3kernel/ltunicode.dtx @@ -0,0 +1,669 @@ +% \iffalse meta-comment +% +% Copyright 2014-2015 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% 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.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% ----------------------------------------------------------------------------- +% +% The same approach as used in \pkg{DocStrip}: if \cs{documentclass} +% is undefined then skip the driver, allowing the file to be used directly. +% This works as the \cs{fi} is only seen if \LaTeX{} is not in use. The odd +% \cs{jobname} business allows the extraction to work with \LaTeX{} provided +% an appropriate \texttt{.ins} file is set up. +%<*gobble> +\ifx\jobname\relax + \let\documentclass\undefined +\fi +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname documentclass\endcsname\relax +\else + \csname fi\endcsname +%</gobble> +% +%<*driver> +\ProvidesFile{ltunicode.dtx} + [2015/01/01 v1.0 LaTeX Kernel (Unicode data)] +\documentclass{ltxdoc} +\begin{document} +\DocInput{\jobname.dtx} +\end{document} +%<*gobble> +\fi +%</gobble> +%</driver> +% \fi +% +% \GetFileInfo{ltunicode.dtx} +% \title{The \texttt{ltunicode.dtx} file\thanks +% {This file has version number \fileversion, dated \filedate.}\\ +% for use with \LaTeXe} +% \author{The \LaTeX3 Project} +% +% \maketitle +% +% This script extracts data from the Unicode Consortium files +% \texttt{UnicodeData.txt}, \texttt{EastAsianWidth.txt} and +% \texttt{LineBreak.txt} to be used for setting up \LaTeXe{} with sane +% default settings when using the Xe\TeX{} and Lua\TeX{} engines. Details +% of the process are included in the code comments. +% +% To create the extracted file, run this file in a location containing +% the three input data files using a plain \TeX{} system with the e-\TeX{} +% extensions enabled (\texttt{pdftex}, \texttt{xetex} or \texttt{luatex} +% in any modern \TeX{} distribution). +% +% \StopEventually{} +% +% \begin{macrocode} +%<*script> +% \end{macrocode} +% +% \section{General set up} +% +% The script is designed to work with plain \TeX{} and so |@| is made into +% a `letter' using the primitive approach. +% \begin{macrocode} +\catcode`\@=11 % +% \end{macrocode} +% +% \begin{macro}{\gobble} +% \begin{macro}{\firsttoken} +% Standard utilities. +% \begin{macrocode} +\long\def\gobble#1{} +\long\def\firsttoken#1#2\relax{#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\storedpar} +% A simple piece of test set up: the final line of the read file will be +% tokenized by \TeX{} as \cs{par} which can be tested by \cs{ifx} provided +% we have an equivalent available. +% \begin{macrocode} +\def\storedpar{\par} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\return} +% A stored |^^M| for string comparisons. +% \begin{macrocode} +\begingroup + \catcode`\^^M=12 % + \gdef\return{^^M}% +\endgroup% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sourceforhex} +% \begin{macro}{\sethex} +% \begin{macro}{\dohex} +% \begin{macro}{\hexdigit} +% Some parts of the code here will need to be able to convert integers +% to their hexadecimal equivalent. That is easiest to do for the requirements +% here using a modified version of some code from Appendix~D of \emph{The +% \TeX{}book}. +% \begin{macrocode} +\newcount\sourceforhex +\def\sethex#1#2{% + \def#1{}% + \sourceforhex=#2\relax + \ifnum\sourceforhex=0 % + \def#1{0}% + \else + \dohex#1% + \fi +} +\def\dohex#1{% + \begingroup + \count0=\sourceforhex + \divide\sourceforhex by 16 % + \ifnum\sourceforhex>0 % + \dohex#1% + \fi + \count2=\sourceforhex + \multiply\count2 by -16 % + \advance\count0 by\count2 + \hexdigit#1% + \expandafter\endgroup + \expandafter\def\expandafter#1\expandafter{#1}% +} +\def\hexdigit#1{% + \ifnum\count0<10 % + \edef#1{#1\number\count0}% + \else + \advance\count0 by -10 % + \edef#1{#1\ifcase\count0 A\or B\or C\or D\or E\or F\fi}% + \fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\unicoderead, \unicodewrite} +% Set up the streams for data. +% \begin{macrocode} +\newread\unicoderead +\newwrite\unicodewrite +% \end{macrocode} +% \end{macro} +% +% \section{Verbatim copying} +% +% \begin{macro}{\verbatimcopy} +% \begin{macro}{\endverbatimcopy} +% \begin{macro}{\verbatimcopy@auxii} +% \begin{macro}{\verbatimcopy@auxii} +% \begin{macro}{\verbatim@endmarker} +% Set up to read some material verbatim and write it to the output stream. +% There needs to be a dedicated `clean up first line' macro, but other than +% that life is simple enough. +% \begin{macrocode} +\begingroup + \catcode`\^^M=12 % + \gdef\verbatimcopy{% + \begingroup% + \catcode`\^^M=12 % + \catcode`\\=12 % + \catcode`\{=12 % + \catcode`\}=12 % + \catcode`\#=12 % + \catcode`\%=12 % + \catcode`\ =12 % + \endlinechar=`\^^M % + \verbatimcopy@auxi + }% + \gdef\verbatimcopy@auxi#1^^M{% + \expandafter\verbatimcopy@auxii\gobble#1^^M% + }% + \gdef\verbatimcopy@auxii#1^^M{% + \def\temp{#1}% + \ifx\temp\verbatim@endmarker% + \expandafter\endgroup% + \else% + \ifx\temp\empty\else% + \immediate\write\unicodewrite{#1}% + \fi% + \expandafter\verbatimcopy@auxii% + \fi% + }% +\endgroup% +\edef\verbatim@endmarker{\expandafter\gobble\string\\} +\edef\verbatim@endmarker{\verbatim@endmarker endverbatimcopy} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \section{File header section} +% +% With the mechanisms set up, open the data file for writing. +% \begin{macrocode} +\immediate\openout\unicodewrite=ltunicode.ltx % +% \end{macrocode} +% There are various lines that now need to go at the start of the file. +% First, there is some header information. +% \begin{macrocode} +\verbatimcopy +%% This is the file `ltunicode.ltx', +%% generated using the script ltunicode.dtx. +%% +%% The data here are derived from the files +%% - UnicodeData.txt +%% which are maintained by the Unicode Consortium. +%% +%% Copyright 2014 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% This file is part of the LaTeX base system. +%% ------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This file has the LPPL maintenance status "maintained". +%% +%% The list of all files belonging to the LaTeX base distribution is +%% given in the file `manifest.txt'. See also `legal.txt' for additional +%% information. +\endverbatimcopy +% \end{macrocode} +% Automatically include the current date. +% \begin{macrocode} +\immediate\write\unicodewrite{% + \expandafter\gobble\string\%\expandafter\gobble\string\% + Generated on \the\year-\the\month-\the\day. +} +\immediate\write\unicodewrite{% + \expandafter\gobble\string\%\expandafter\gobble\string\% +} +% \end{macrocode} +% +% \section{Unicode character data} +% +% \begin{macro}{\parseunicodedata} +% \begin{macro}{\parseunicodedata@auxi} +% \begin{macro}{\parseunicodedata@auxii} +% \begin{macro}{\parseunicodedata@auxiii} +% The first step of parsing a line of data is to check that it's not come +% from a blank in the source, which will have been tokenized as \cs{par}. +% Assuming that is not the case, there are lots of data items separated by +% |;|. Of those, only a few are needed so they are picked out and everything +% else is dropped. +% \begin{macrocode} +\def\parseunicodedata#1{% + \ifx#1\storedpar + \else + \expandafter\parseunicodedata@auxi#1\relax + \fi +} +\def\parseunicodedata@auxi#1;#2;#3;#4;#5;#6;#7;#8;#9;{% + \parseunicodedata@auxii#1;#3; +} +\def\parseunicodedata@auxii#1;#2;#3;#4;#5;#6;#7;#8\relax{% + \parseunicodedata@auxiii{#1}{#2}{#6}{#7}% +} +% \end{macrocode} +% At this stage we have only four pieces of data +% \begin{enumerate} +% \item The code value +% \item The general class +% \item The uppercase mapping +% \item The lowercase mapping +% \end{enumerate} +% where both one or both of the last two may be empty. Everything here could +% be done in a single conditional within a \cs{write}, but that would be +% tricky to follow. Instead, a series of defined auxiliaries are used to +% show the flow. Notice that combining marks are treated as letters here +% (the second `letter' test). +% \begin{macrocode} +\def\parseunicodedata@auxiii#1#2#3#4{% + \if L\firsttoken#2?\relax + \expandafter\unicodeletter + \else + \if M\firsttoken#2?\relax + \expandafter\expandafter\expandafter\unicodeletter + \else + \expandafter\expandafter\expandafter\unicodenonletter + \fi + \fi + {#1}{#3}{#4}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\unicodeletter, \unicodenonletter} +% \begin{macro}{\writeunicodedata} +% For `letters', we always want to write the data to file, and the only +% question here is if the character has case mappings or these point back +% to the character itself. +% \begin{macrocode} +\def\unicodeletter#1#2#3{% + \writeunicodedata\L{#1}{#2}{#3}% +} +% \end{macrocode} +% Cased non-letters can also exist: they can be detected as they have at +% least one case mapping. Write these in much the same way as letters. +% \begin{macrocode} +\def\unicodenonletter#1#2#3{% + \ifx\relax#2#3\relax + \else + \writeunicodedata\C{#1}{#2}{#3}% + \fi +} +% \end{macrocode} +% Actually write the data. In all cases both upper- and lower-case mappings +% are given, so there is a need to test that both were actually available and +% if not set up to do nothing. +% \begin{macrocode} +\def\writeunicodedata#1#2#3#4{% + \immediate\write\unicodewrite{% + \space\space + \string#1\space + #2 % + \ifx\relax#3\relax + #2 % + \else + #3 % + \fi + \ifx\relax#4\relax + #2 % + \else + #4 % + \fi + \expandafter\gobble\string\% + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% There is now a lead-in section which creates the macros which take the +% processed data and do the code assignments. Everything is done within a +% group so that there is no need to worry about names. +% \begin{macrocode} +\verbatimcopy +\begingroup +\endverbatimcopy +% \end{macrocode} +% Cased non-letters simply need to have the case mappings set. +% For letters, there are a few things to sort out. First, the case mappings are +% defined as for non-letters. Category code is then set to $11$ before a check +% to see if this is an upper case letter. If it is then the \cs{sfcode} is set +% to $999$. Finally there is a need to deal with Unicode math codes, where base +% plane letters are class $7$ but supplementary plane letters are class~$1$. +% Older versions of Xe\TeX{} used a different name here: easy to pick up as +% we know that this primitive must be defined in some way. There is also an issue +% with the supplementary plane and older Xe\TeX{} versions, which is dealt with +% using a check at run time. +% \begin{macrocode} +\verbatimcopy + \def\C#1 #2 #3 {% + \XeTeXcheck{#1}% + \global\uccode"#1="#2 % + \global\lccode"#1="#3 % + } + \def\L#1 #2 #3 {% + \C #1 #2 #3 % + \catcode"#1=11 % + \ifnum"#1="#3 % + \else + \global\sfcode"#1=999 % + \fi + \ifnum"#1<"10000 % + \global\Umathcode"#1="7"01"#1 % + \else + \global\Umathcode"#1="0"01"#1 % + \fi + } + \ifx\Umathcode\undefined + \let\Umathcode\XeTeXmathcode + \fi + \def\XeTeXcheck#1{} + \ifx\XeTeXversion\undefined + \else + \def\XeTeXcheck.#1.#2-#3\relax{#1} + \ifnum\expandafter\XeTeXcheck\XeTeXrevision.-\relax>996 % + \def\XeTeXcheck#1{} + \else + \def\XeTeXcheck#1{% + \ifnum"#1>"FFFF % + \long\def\XeTeXcheck##1\endgroup{\endgroup} + \expandafter\XeTeXcheck + \fi + } + \fi + \fi +\endverbatimcopy +% \end{macrocode} +% Read the data and write the resulting code assignments to the file. +% \begin{macrocode} +\openin\unicoderead=UnicodeData.txt % +\ifeof\unicoderead + \errmessage{Data file missing: UnicodeData.txt}% +\fi +\loop\unless\ifeof\unicoderead + \read\unicoderead to \unicodedataline + \parseunicodedata\unicodedataline +\repeat +% \end{macrocode} +% End the group for setting character codes and assign a couple of special +% cases. +% \begin{macrocode} +\verbatimcopy +\endgroup +\global\sfcode"2019=0 % +\global\sfcode"201D=0 % +\endverbatimcopy +% \end{macrocode} +% Lua\TeX{} and older versions of Xe\TeX{} stop here: character classes are a +% Xe\TeX{}-only concept. +% \begin{macrocode} +\verbatimcopy +\ifx\XeTeXcharclass\@undefined + \expandafter\endinput +\fi +\endverbatimcopy +% \end{macrocode} +% +% \section{Xe\TeX{} Character classes} +% +% The Xe\TeX{} engine includes the concept of character classes, which allow +% insertion of tokens into the input stream at defined boundaries. Setting +% up this data requires a two-part process as the information is split over +% two input files. +% +% \begin{macro}{\parseunicodedata} +% \begin{macro}{\parseunicodedata@auxi} +% \begin{macro}{\parseunicodedata@auxii} +% The parsing system is redefined to parse a detokenized input line which +% may be a comment starting with |#|. Assuming that is not the case, the +% data line with start with a code point potentially forming part of a range. +% The range is extracted and the width stored for each code point. +% \begin{macrocode} +\def\parseunicodedata#1{% + \ifx#1\return + \else + \wlog{#1}% + \if\expandafter\gobble\string\#\expandafter\firsttoken#1?\relax + \else + \expandafter\parseunicodedata@auxi#1\relax + \fi + \fi +} +\def\parseunicodedata@auxi#1;#2 #3\relax{% + \parseunicodedata@auxii#1....\relax{#2}% +} +\def\parseunicodedata@auxii#1..#2..#3\relax#4{% + \expandafter\gdef\csname EAW@#1\endcsname{#4}% + \ifx\relax#2\relax + \else + \count@="#1 % + \begingroup + \loop + \ifnum\count@<"#2 % + \advance\count@\@ne + \sethex\temp{\count@}% + \expandafter\gdef\csname EAW@\temp\endcsname{#4}% + \repeat + \endgroup + \fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% With the right parser in place, read the data file. +% \begin{macrocode} +\openin\unicoderead=EastAsianWidth.txt % +\ifeof\unicoderead + \errmessage{Data file missing: EastAsianWidth.txt}% +\fi +\loop\unless\ifeof\unicoderead + \readline\unicoderead to \unicodedataline + \parseunicodedata\unicodedataline +\repeat +% \end{macrocode} +% +% \begin{macro}{\parseunicodedata@auxii} +% \begin{macro}{\parseunicodedata@auxiii} +% \begin{macro}{\parseunicodedata@auxiv} +% \begin{macro}{\ID} +% \begin{macro}{\OP} +% \begin{macro}{\CL} +% \begin{macro}{\EX} +% \begin{macro}{\IS} +% \begin{macro}{\NS} +% \begin{macro}{\CM} +% The final file to read, |LineBreaking.txt|, uses the same format as +% |EastAsianWidth.txt|. As such, only the final parts of the parser have to be +% redefined. +% \begin{macrocode} +\def\parseunicodedata@auxii#1..#2..#3\relax#4{% + \parseunicodedata@auxiii{#1}{#4}% + \ifx\relax#2\relax + \else + \count@="#1 % + \begingroup + \loop + \ifnum\count@<"#2 % + \advance\count@\@ne + \sethex\temp{\count@}% + \expandafter\parseunicodedata@auxiii\expandafter{\temp}{#4}% + \repeat + \endgroup + \fi +} +% \end{macrocode} +% Adding data to the processed file depends on two factors: the +% classification in the line-breaking file and (possibly) the width data +% too. Any characters of class \texttt{ID} (ideograph) are stored: they +% always need special treatment. For characters of classes \texttt{OP} +% (opener), \texttt{CL} (closer), \texttt{EX} (exclamation), \texttt{IS} +% (infix sep) and \texttt{NS} (non-starter) the data is stored if the +% character is full, half or wide width. The same is true for +% \texttt{CM} (combining marks) characters, which need to be transparent +% to the mechanism. +% \begin{macrocode} +\def\parseunicodedata@auxiii#1#2{% + \ifcsname #2\endcsname + \ifnum\csname #2\endcsname=1 % + \parseunicodedata@auxiv{#1}{#2}% + \else + \ifnum 0% + \if F\csname EAW@#1\endcsname 1\fi + \if H\csname EAW@#1\endcsname 1\fi + \if W\csname EAW@#1\endcsname 1\fi + >0 % + \parseunicodedata@auxiv{#1}{#2}% + \fi + \fi + \fi +} +\def\parseunicodedata@auxiv#1#2{% + \immediate\write\unicodewrite{% + \space\space + \expandafter\string\csname #2\endcsname + \space + #1 % + \expandafter\gobble\string\% + }% +} +\def\ID{1} +\def\OP{2} +\def\CL{3} +\let\EX\CL +\let\IS\CL +\let\NS\CL +\def\CM{256} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Before actually reading the line breaking data file, the appropriate +% temporary code is added to the output. As described above, only a limited +% number of classes need to be covered: they are hard-coded as classes +% $1$, $2$ and $3$ following the convention adopted by plain Xe\TeX{}. +% \begin{macrocode} +\verbatimcopy +\begingroup + \def\ID#1 {\global\XeTeXcharclass"#1=1 \global\catcode"#1=11 } + \def\OP#1 {\global\XeTeXcharclass"#1=2 } + \def\CL#1 {\global\XeTeXcharclass"#1=3 } + \def\EX#1 {\global\XeTeXcharclass"#1=3 } + \def\IS#1 {\global\XeTeXcharclass"#1=3 } + \def\NS#1 {\global\XeTeXcharclass"#1=3 } + \def\CM#1 {\global\XeTeXcharclass"#1=256 } +\endverbatimcopy +% \end{macrocode} +% +% Read the line breaking data and save to the output. +% \begin{macrocode} +\openin\unicoderead=LineBreak.txt % +\ifeof\unicoderead + \errmessage{Data file missing: LineBreak.txt}% +\fi +\loop\unless\ifeof\unicoderead + \readline\unicoderead to \unicodedataline + \parseunicodedata\unicodedataline +\repeat +% \end{macrocode} +% +% Set up material to be inserted between character classes. Other than +% using \cs{hspace} here in place of \cs{hskip} this code is identical to +% that provided by plain Xe\TeX{}. +% \begin{macrocode} +\verbatimcopy +\endgroup +\gdef\xtxHanGlue{\hspace{0pt plus 0.1em}} +\gdef\xtxHanSpace{\hspace{0.2em plus 0.2em minus 0.1em}} +\global\XeTeXinterchartoks 0 1 = {\xtxHanSpace} +\global\XeTeXinterchartoks 0 2 = {\xtxHanSpace} +\global\XeTeXinterchartoks 0 3 = {\nobreak\xtxHanSpace} +\global\XeTeXinterchartoks 1 0 = {\xtxHanSpace} +\global\XeTeXinterchartoks 2 0 = {\nobreak\xtxHanSpace} +\global\XeTeXinterchartoks 3 0 = {\xtxHanSpace} +\global\XeTeXinterchartoks 1 1 = {\xtxHanGlue} +\global\XeTeXinterchartoks 1 2 = {\xtxHanGlue} +\global\XeTeXinterchartoks 1 3 = {\nobreak\xtxHanGlue} +\global\XeTeXinterchartoks 2 1 = {\nobreak\xtxHanGlue} +\global\XeTeXinterchartoks 2 2 = {\nobreak\xtxHanGlue} +\global\XeTeXinterchartoks 2 3 = {\xtxHanGlue} +\global\XeTeXinterchartoks 3 1 = {\xtxHanGlue} +\global\XeTeXinterchartoks 3 2 = {\xtxHanGlue} +\global\XeTeXinterchartoks 3 3 = {\nobreak\xtxHanGlue} +\endverbatimcopy +% \end{macrocode} +% +% Done: end the script. +% \begin{macrocode} +\bye +% \end{macrocode} +% +% \begin{macrocode} +%</script> +% \end{macrocode}
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/l3kernel/source3.tex b/Master/texmf-dist/source/latex/l3kernel/source3.tex deleted file mode 100644 index 22c3c44048d..00000000000 --- a/Master/texmf-dist/source/latex/l3kernel/source3.tex +++ /dev/null @@ -1,106 +0,0 @@ -% \iffalse meta-comment -% -%% File: source3.tex Copyright (C) 1990-2011 The LaTeX3 Project -%% -%% It may be distributed and/or modified under the conditions of the -%% LaTeX Project Public License (LPPL), either version 1.3c of this -%% license or (at your option) any later version. The latest version -%% of this license is in the file -%% -%% http://www.latex-project.org/lppl.txt -%% -%% This file is part of the "l3kernel bundle" (The Work in LPPL) -%% and all files in that bundle must be distributed together. -%% -%% The released version of this bundle is available from CTAN. -%% -%% ----------------------------------------------------------------------- -%% -%% The development version of the bundle can be found at -%% -%% http://www.latex-project.org/svnroot/experimental/trunk/ -%% -%% for those people who are interested. -%% -%%%%%%%%%%% -%% NOTE: %% -%%%%%%%%%%% -%% -%% Snapshots taken from the repository represent work in progress and may -%% not work or may contain conflicting material! We therefore ask -%% people _not_ to put them into distributions, archives, etc. without -%% prior consultation with the LaTeX3 Project. -%% -%% ----------------------------------------------------------------------- -% -% \fi - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% This document will typeset the LaTeX3 sources as a single document. -% This will produce quite a large file (more than 780 pages). -% -% There is also a shorter version (interface3.tex) that only typesets the -% command % interface descriptions. -% -% Do not forget to generate the index (as explained on the terminal output -% near the end of the run)! -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\documentclass{l3doc} -\listfiles - -\begin{document} - -\title{The \LaTeX3 Sources} -\author{% - The \LaTeX3 Project\thanks - {% - E-mail: - \href{mailto:latex-team@latex-project.org} - {latex-team@latex-project.org}% - }% -} - -\pagenumbering{roman} -\maketitle - -% -% First load all modules and typeset the documentation parts -% - -\input{source3body} % all the individual modules - -% -% Now reload all modules and typeset the implementation parts -% - -\part{Implementation} - -\def\maketitle{} -\EnableImplementation -\DisableDocumentation -\DocInputAgain - -\clearpage -\pagestyle{headings} - -% Make TeX shut up. -\hbadness=10000 -\newcount\hbadness -\hfuzz=\maxdimen - -\PrintChanges -\clearpage - -\begingroup - \def\endash{--} - \catcode`\-\active - \def-{\futurelet\temp\indexdash} - \def\indexdash{\ifx\temp-\endash\fi} - - \DelayPrintIndex -\endgroup - -\end{document} |