summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-05-22 17:46:23 +0000
committerKarl Berry <karl@freefriends.org>2007-05-22 17:46:23 +0000
commitf4eb27d3314d15838f674a3872000159d029f88b (patch)
tree6e9ab33c5a2d702912b4a969ade4e4e2ac586d62 /Master/texmf-dist/tex/latex
parent14af3f447439750920f754792b89f113d019076a (diff)
update expl3
git-svn-id: svn://tug.org/texlive/trunk@4335 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3basics.sty611
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3box.sty149
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3calc.sty431
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3chk.sty83
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3clist.sty243
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3doc.cls343
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3expan.sty118
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3int.sty358
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3io.sty74
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3keyval.sty217
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3messages.sty313
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3names.sty259
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3num.sty155
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3precom.sty143
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3prg.sty394
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3prop.sty214
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3quark.sty117
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3seq.sty116
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3skip.sty204
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3tlp.sty420
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3token.sty552
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3toks.sty118
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3xref.sty111
23 files changed, 5183 insertions, 560 deletions
diff --git a/Master/texmf-dist/tex/latex/expl3/l3basics.sty b/Master/texmf-dist/tex/latex/expl3/l3basics.sty
index fb4f3de9da0..161ac199227 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3basics.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3basics.sty
@@ -15,202 +15,509 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3basics.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3basics}
- [1998/05/04 v1.0i L3 Experimental basic definitions]
-\RequirePackage{l3names}\par
+%% File: l3basics.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3basics.dtx 583 2006-12-12 17:26:44Z morten $
+ {L3 Experimental basic definitions}
\tex_let:D \let:NwN \tex_let:D
-\let:NwN \def:Npn \tex_def:D
-\let:NwN \gdef:Npn \tex_gdef:D
-\let:NwN \def:Npx \tex_edef:D
-\let:NwN \gdef:Npx \tex_xdef:D
-\let:NwN \if:w \tex_if:D
-\let:NwN \if_num:w \tex_ifnum:D
-\let:NwN \if_meaning:NN \tex_ifx:D
+\let:NwN \if_true: \tex_iftrue:D
\let:NwN \if_false: \tex_iffalse:D
\let:NwN \else: \tex_else:D
\let:NwN \fi: \tex_fi:D
+\let:NwN \reverse_if:N \etex_unless:D
+\let:NwN \if:w \tex_if:D
+\let:NwN \if_charcode:w \tex_if:D
+\let:NwN \if_catcode:w \tex_ifcat:D
+\let:NwN \if_meaning:NN \tex_ifx:D
+\let:NwN \if_token_eq:NN \tex_ifx:D
+\let:NwN \if_cs_meaning_eq:NN\tex_ifx:D
+\let:NwN \if_mode_math: \tex_ifmmode:D
+\let:NwN \if_mode_horizontal:\tex_ifhmode:D
+\let:NwN \if_mode_vertical: \tex_ifvmode:D
+\let:NwN \if_mode_inner: \tex_ifinner:D
+\let:NwN \if_cs_exist:N \etex_ifdefined:D
+\let:NwN \if_cs_exist:w \etex_ifcsname:D
+\let:NwN \exp_after:NN \tex_expandafter:D
+\let:NwN \exp_not:N \tex_noexpand:D
+\let:NwN \exp_not:n \etex_unexpanded:D
\let:NwN \io_put_deferred:Nx \tex_write:D
\let:NwN \token_to_meaning:N \tex_meaning:D
\let:NwN \token_to_string:N \tex_string:D
\let:NwN \cs:w \tex_csname:D
\let:NwN \cs_end: \tex_endcsname:D
-\let:NwN \exp_after:NN \tex_expandafter:D
+\let:NwN \cs_meaning:N \tex_meaning:D
+\tex_def:D \cs_meaning:c #1{\exp_after:NN\cs_meaning:N\cs:w #1\cs_end:}
+\let:NwN \cs_show:N \tex_show:D
+\tex_def:D \cs_show:c #1{\exp_after:NN\cs_show:N\cs:w #1\cs_end:}
\let:NwN \scan_stop: \tex_relax:D
-\let:NwN \exp_not:N \tex_noexpand:D
\let:NwN \group_begin: \tex_begingroup:D
\let:NwN \group_end: \tex_endgroup:D
+\let:NwN \group_execute_after:N \tex_aftergroup:D
\let:NwN \the_internal:D \tex_the:D
\let:NwN \pref_global:D \tex_global:D
-\let:NwN\c_minus_one\m@ne
-\tex_chardef:D \c_one = 1\scan_stop:
+\let:NwN \pref_long:D \tex_long:D
+\let:NwN \pref_protected:D \etex_protected:D
+\let:NwN \def:Npn \tex_def:D
+\let:NwN \def:Npx \tex_edef:D
+\pref_protected:D \def:Npn \def_long:Npn {\pref_long:D \def:Npn}
+\pref_protected:D \def:Npn \def_long:Npx {\pref_long:D \def:Npx}
+\pref_protected:D \def:Npn \def_protected:Npn {\pref_protected:D \def:Npn}
+\pref_protected:D \def:Npn \def_protected:Npx {\pref_protected:D \def:Npx}
+\def_protected:Npn \def_protected_long:Npn {
+ \pref_protected:D \pref_long:D \def:Npn
+}
+\def_protected:Npn \def_protected_long:Npx {
+ \pref_protected:D \pref_long:D \def:Npx
+}
+\let:NwN \gdef:Npn \tex_gdef:D
+\let:NwN \gdef:Npx \tex_xdef:D
+\def_protected:Npn \gdef_long:Npn {\pref_long:D \gdef:Npn}
+\def_protected:Npn \gdef_long:Npx {\pref_long:D \gdef:Npx}
+\def_protected:Npn \gdef_protected:Npn {\pref_protected:D \gdef:Npn}
+\def_protected:Npn \gdef_protected:Npx {\pref_protected:D \gdef:Npx}
+\def_protected:Npn \gdef_protected_long:Npn {
+ \pref_protected:D \pref_long:D \gdef:Npn
+}
+\def_protected:Npn \gdef_protected_long:Npx {
+ \pref_protected:D \pref_long:D \gdef:Npx
+}
+\def:Npn \c_true {00}
+\def:Npn \c_false {01}
+\let:NwN \c_minus_one\m@ne
\tex_chardef:D \c_sixteen = 16\scan_stop:
-\tex_mathchardef:D \c_two_hundred_fifty_six = 256\scan_stop:
\def:Npn \io_put_log:x{
\tex_immediate:D\io_put_deferred:Nx \c_minus_one }
\def:Npn \io_put_term:x{
\tex_immediate:D\io_put_deferred:Nx \c_sixteen }
-\def:Npn\err_latex_bug:n#1{
+\def:Npn\err_latex_bug:x#1{
\io_put_term:x{This~is~a~LaTeX~bug!~Check~coding!}\tex_errmessage:D{#1}}
\def:Npn \cs_record_meaning:N#1{}
+\def_long:Npn \use_none:n #1{}
+\def_long:Npn \use_arg_i:n #1{#1}
\def:Npn \chk_new_cs:N #1{
- \if_meaning:NN #1\c_undefined
- \else:
- \if_meaning:NN #1\scan_stop:
- \else:
- \err_latex_bug:n {Command~name~`\token_to_string:N #1'~
- already~defined!~
- Current~meaning:~\token_to_meaning:N #1
- }
- \fi:
- \fi:
- \cs_record_meaning:N#1
- \io_put_log:x{Defining~\token_to_string:N #1~on~
- line~\tex_the:D \tex_inputlineno:D}
- }
-\def:Npn \cs_exist_p:N #1{
- \if:w \cs_free_p:N #1
+ \if:w \cs_if_free_p:N #1
+ \exp_after:NN \use_none:n
+ \else:
+ \exp_after:NN \use_arg_i:n
+ \fi:
+ {
+ \err_latex_bug:x {Command~name~`\token_to_string:N #1'~
+ already~defined!~
+ Current~meaning:~\token_to_meaning:N #1
+ }
+ }
+ \cs_record_meaning:N#1
+ \io_put_log:x{Defining~\token_to_string:N #1~on~
+ line~\tex_the:D \tex_inputlineno:D}
+}
+\def:Npn \cs_if_exist_p:N #1{
+ \if:w \cs_if_free_p:N #1
\c_false
\else:
\c_true \fi:}
-\def:Npn \chk_exist_cs:N #1 {
- \if:w \cs_exist_p:N #1
+\def:Npn \chk_if_exist_cs:N #1 {
+ \if:w \cs_if_exist_p:N #1
\else:
- \err_latex_bug:n{Command~ `\token_to_string:N #1'~
+ \err_latex_bug:x{Command~ `\token_to_string:N #1'~
not~ yet~ defined!}
\fi:}
-\def:Npn \cs_free_p:N #1{
- \if_meaning:NN#1\c_undefined
- \if:w\cs_eq_p:NN #1\c_undefined \c_false
- \else: \c_true \fi:
- \else:
+\def:Npn \chk_if_exist_cs:c #1 {
+ \exp_after:NN \chk_if_exist_cs:N \cs:w #1\cs_end: }
+\def:Npn \cs_if_free_p:N #1{
+ \if_cs_exist:N #1
\if_meaning:NN#1\scan_stop:
- \if:w\cs_eq_p:NN #1\scan_stop: \c_false
- \else: \c_true \fi:
- \else:
- \c_false \fi:\fi:}
-\tex_long:D\def:Npn \let:NN #1{
- \let:NwN #1=~}
-\def:Npn\let:cN #1 {\exp_after:NN\let:NwN\cs:w#1\cs_end:=~}
-\def:Npn\let:Nc{\exp_args:NNc\let:NN}
-\def:Npn\let:cc{\exp_args:Ncc\let:NN}
-\def:Npn \def_new:Npn #1{\chk_new_cs:N #1
+ \if:w\cs_if_eq_name_p:NN #1\scan_stop:
+ \c_false \else: \c_true \fi:
+ \else:
+ \c_false
+ \fi:
+ \else:
+ \if:w \cs_if_eq_name_p:NN #1\c_undefined
+ \c_false \else: \c_true \fi:
+ \fi:
+}
+\let:NwN \cs_free_p:N \cs_if_free_p:N
+\def:Npn \str_if_eq_p:nn #1#2{
+ \str_if_eq_p_aux:w #1\scan_stop:\\#2\scan_stop:\\
+}
+\def:Npn \str_if_eq_p_aux:w #1#2\\#3#4\\{
+ \if_meaning:NN#1#3
+ \if_meaning:NN#1\scan_stop:\c_true \else:
+ \if_meaning:NN#3\scan_stop:\c_false \else:
+ \str_if_eq_p_aux:w #2\\#4\\\fi:\fi:
+ \else:\c_false \fi:}
+\def_long:Npn \cs_if_eq_name_p:NN #1#2{
+ \exp_after:NN\exp_after:NN
+ \exp_after:NN\str_if_eq_p_aux:w
+ \exp_after:NN\token_to_string:N
+ \exp_after:NN#1
+ \exp_after:NN\scan_stop:
+ \exp_after:NN\\
+ \token_to_string:N#2\scan_stop:\\}
+\def:Npn \str_if_eq_var_p:nf#1{
+ \if:w \tex_number:D\str_if_eq_var_start:nnN{}{}#1\scan_stop:
+}
+\def:Npn\str_if_eq_var_start:nnN#1#2#3{
+ \if:w#3\scan_stop:\exp_after:NN\str_if_eq_var_stop:w\fi:
+ \str_if_eq_var_start:nnN{\if:w#3#1}{#2\fi:}
+}
+\def:Npn\str_if_eq_var_stop:w\str_if_eq_var_start:nnN#1#2#3{
+ #1#3\scan_stop:'#213~\c_true\else:\c_false\fi:
+}
+\def_protected:Npn \def_new:Npn #1{\chk_new_cs:N #1
\def:Npn #1}
-\def:Npn \def_new:Npx #1{\chk_new_cs:N #1
+\def_protected:Npn \def_new:Npx #1{\chk_new_cs:N #1
\def:Npx #1}
+\def_protected:Npn \def_long_new:Npn #1{\chk_new_cs:N #1
+ \def_long:Npn #1}
+\def_protected:Npn \def_long_new:Npx #1{\chk_new_cs:N #1
+ \def_long:Npx #1}
+\def_protected:Npn \def_protected_new:Npn #1{\chk_new_cs:N #1
+ \def_protected:Npn #1}
+\def_protected:Npn \def_protected_new:Npx #1{\chk_new_cs:N #1
+ \def_protected:Npx #1}
+\def_protected:Npn \def_protected_long_new:Npn #1{\chk_new_cs:N #1
+ \def_protected_long:Npn #1}
+\def_protected:Npn \def_protected_long_new:Npx #1{\chk_new_cs:N #1
+ \def_protected_long:Npx #1}
+\def_protected_new:Npn \gdef_new:Npn #1{\chk_new_cs:N #1
+ \gdef:Npn #1}
+\def_protected_new:Npn \gdef_new:Npx #1{\chk_new_cs:N #1
+ \gdef:Npx #1}
+\def_protected_new:Npn \gdef_long_new:Npn #1{\chk_new_cs:N #1
+ \gdef_long:Npn #1}
+\def_protected_new:Npn \gdef_long_new:Npx #1{\chk_new_cs:N #1
+ \gdef_long:Npx #1}
+\def_protected_new:Npn \gdef_protected_new:Npn #1{\chk_new_cs:N #1
+ \gdef_protected:Npn #1}
+\def_protected_new:Npn \gdef_protected_new:Npx #1{\chk_new_cs:N #1
+ \gdef_protected:Npx #1}
+\def_protected_new:Npn \gdef_protected_long_new:Npn #1{\chk_new_cs:N #1
+ \gdef_protected_long:Npn #1}
+\def_protected_new:Npn \gdef_protected_long_new:Npx #1{\chk_new_cs:N #1
+ \gdef_protected_long:Npx #1}
+\def_new:Npn \def:cpn #1{\exp_after:NN \def:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def:cpx #1{\exp_after:NN \def:Npx \cs:w #1\cs_end:}
+\def_new:Npn \gdef:cpn #1{\exp_after:NN \gdef:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef:cpx #1{\exp_after:NN \gdef:Npx \cs:w #1\cs_end:}
+\def_new:Npn \def_new:cpn #1{\exp_after:NN \def_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_new:cpx #1{\exp_after:NN \def_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \gdef_new:cpn #1{\exp_after:NN \gdef_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_new:cpx #1{\exp_after:NN \gdef_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \def_long:cpn #1{\exp_after:NN \def_long:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_long:cpx #1{
+ \exp_after:NN\def_long:Npx\cs:w #1\cs_end:}
+\def_new:Npn \gdef_long:cpn #1{
+ \exp_after:NN \gdef_long:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_long:cpx #1{
+ \exp_after:NN\gdef_long:Npx\cs:w #1\cs_end:}
+\def_new:Npn \def_long_new:cpn #1{
+ \exp_after:NN \def_long_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_long_new:cpx #1{
+ \exp_after:NN \def_long_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \gdef_long_new:cpn #1{
+ \exp_after:NN \gdef_long_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_long_new:cpx #1{
+ \exp_after:NN \gdef_long_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \def_protected:cpn #1{
+ \exp_after:NN \def_protected:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_protected:cpx #1{
+ \exp_after:NN\def_protected:Npx\cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected:cpn #1{
+ \exp_after:NN \gdef_protected:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected:cpx #1{
+ \exp_after:NN\gdef_protected:Npx\cs:w #1\cs_end:}
+\def_new:Npn \def_protected_new:cpn #1{
+ \exp_after:NN \def_protected_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_protected_new:cpx #1{
+ \exp_after:NN \def_protected_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_new:cpn #1{
+ \exp_after:NN \gdef_protected_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_new:cpx #1{
+ \exp_after:NN \gdef_protected_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \def_protected_long:cpn #1{
+ \exp_after:NN \def_protected_long:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_protected_long:cpx #1{
+ \exp_after:NN\def_protected_long:Npx\cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_long:cpn #1{
+ \exp_after:NN \gdef_protected_long:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_long:cpx #1{
+ \exp_after:NN\gdef_protected_long:Npx\cs:w #1\cs_end:}
+\def_new:Npn \def_protected_long_new:cpn #1{
+ \exp_after:NN \def_protected_long_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \def_protected_long_new:cpx #1{
+ \exp_after:NN \def_protected_long_new:Npx \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_long_new:cpn #1{
+ \exp_after:NN \gdef_protected_long_new:Npn \cs:w #1\cs_end:}
+\def_new:Npn \gdef_protected_long_new:cpx #1{
+ \exp_after:NN \gdef_protected_long_new:Npx \cs:w #1\cs_end:}
+\def_new:cpn {def_aux_0:NNn} #1#2 {#1 #2 }
+\def_new:cpn {def_aux_1:NNn} #1#2 {#1 #2 ##1 }
+\def_new:cpn {def_aux_2:NNn} #1#2 {#1 #2 ##1##2 }
+\def_new:cpn {def_aux_3:NNn} #1#2 {#1 #2 ##1##2##3 }
+\def_new:cpn {def_aux_4:NNn} #1#2 {#1 #2 ##1##2##3##4 }
+\def_new:cpn {def_aux_5:NNn} #1#2 {#1 #2 ##1##2##3##4##5 }
+\def_new:cpn {def_aux_6:NNn} #1#2 {#1 #2 ##1##2##3##4##5##6 }
+\def_new:cpn {def_aux_7:NNn} #1#2 {#1 #2 ##1##2##3##4##5##6##7 }
+\def_new:cpn {def_aux_8:NNn} #1#2 {#1 #2 ##1##2##3##4##5##6##7##8 }
+\def_new:cpn {def_aux_9:NNn} #1#2 {#1 #2 ##1##2##3##4##5##6##7##8##9 }
+\def_protected_long_new:Npn \def_aux:NNnn #1#2#3#4 {
+ \cs_if_really_exist:cTF {def_aux_\tex_the:D\etex_numexpr:D #3 :NNn}
+ {
+ \cs_use:c {def_aux_\tex_the:D\etex_numexpr:D #3 :NNn} #1 #2 {#4}
+ }
+ { \def_arg_number_error_msg:Nn #2{#3} }
+}
+\def_new:Npn \def_aux:Ncnn #1#2{
+ \exp_after:NN \def_aux:NNnn \exp_after:NN #1 \cs:w #2\cs_end:}
+\def_new:Npn \def_arg_number_error_msg:Nn #1#2 {
+ \err_latex_bug:x{
+ You're~ trying~ to~ define~ the~ command~ `\token_to_string:N #1'~
+ with~ \use_arg_i:n{\tex_the:D\etex_numexpr:D #2\scan_stop:} ~
+ arguments~ but~ I~ only~ allow~ 0-9~ arguments.~ I~ can~ probably~
+ not~ help~ you~ here
+ }
+}
+\def:cpn{def_aux_use_0_parameter:}{}
+\def:cpn{def_aux_use_1_parameter:}{{##1}}
+\def:cpn{def_aux_use_2_parameter:}{{##1}{##2}}
+\def:cpn{def_aux_use_3_parameter:}{{##1}{##2}{##3}}
+\def:cpn{def_aux_use_4_parameter:}{{##1}{##2}{##3}{##4}}
+\def:cpn{def_aux_use_5_parameter:}{{##1}{##2}{##3}{##4}{##5}}
+\def:cpn{def_aux_use_6_parameter:}{{##1}{##2}{##3}{##4}{##5}{##6}}
+\def:cpn{def_aux_use_7_parameter:}{{##1}{##2}{##3}{##4}{##5}{##6}{##7}}
+\def:cpn{def_aux_use_8_parameter:}{
+ {##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}}
+\def:cpn{def_aux_use_9_parameter:}{
+ {##1}{##2}{##3}{##4}{##5}{##6}{##7}{##8}{##9}}
+\def_new:Npn \def:NNn { \def_aux:NNnn \def:Npn }
+\def_new:Npn \def:NNx { \def_aux:NNnn \def:Npx }
+\def_new:Npn \def:cNn { \def_aux:Ncnn \def:Npn }
+\def_new:Npn \def:cNx { \def_aux:Ncnn \def:Npx }
+\def_new:Npn \gdef:NNn { \def_aux:NNnn \gdef:Npn }
+\def_new:Npn \gdef:NNx { \def_aux:NNnn \gdef:Npx }
+\def_new:Npn \gdef:cNn { \def_aux:Ncnn \gdef:Npn }
+\def_new:Npn \gdef:cNx { \def_aux:Ncnn \gdef:Npx }
+\def_new:Npn \def_new:NNn { \def_aux:NNnn \def_new:Npn }
+\def_new:Npn \def_new:NNx { \def_aux:NNnn \def_new:Npx }
+\def_new:Npn \def_new:cNn { \def_aux:Ncnn \def_new:Npn }
+\def_new:Npn \def_new:cNx { \def_aux:Ncnn \def_new:Npx }
+\def_new:Npn \gdef_new:NNn { \def_aux:NNnn \gdef_new:Npn }
+\def_new:Npn \gdef_new:NNx { \def_aux:NNnn \gdef_new:Npx }
+\def_new:Npn \gdef_new:cNn { \def_aux:Ncnn \gdef_new:Npn }
+\def_new:Npn \gdef_new:cNx { \def_aux:Ncnn \gdef_new:Npx }
+\def_new:Npn \def_long:NNn { \def_aux:NNnn \def_long:Npn }
+\def_new:Npn \def_long:NNx { \def_aux:NNnn \def_long:Npx }
+\def_new:Npn \def_long:cNn { \def_aux:Ncnn \def_long:Npn }
+\def_new:Npn \def_long:cNx { \def_aux:Ncnn \def_long:Npx }
+\def_new:Npn \gdef_long:NNn { \def_aux:NNnn \gdef_long:Npn }
+\def_new:Npn \gdef_long:NNx { \def_aux:NNnn \gdef_long:Npx }
+\def_new:Npn \gdef_long:cNn { \def_aux:Ncnn \gdef_long:Npn }
+\def_new:Npn \gdef_long:cNx { \def_aux:Ncnn \gdef_long:Npx }
+\def_new:Npn \def_long_new:NNn { \def_aux:NNnn \def_long_new:Npn }
+\def_new:Npn \def_long_new:NNx { \def_aux:NNnn \def_long_new:Npx }
+\def_new:Npn \def_long_new:cNn { \def_aux:Ncnn \def_long_new:Npn }
+\def_new:Npn \def_long_new:cNx { \def_aux:Ncnn \def_long_new:Npx }
+\def_new:Npn \gdef_long_new:NNn { \def_aux:NNnn \gdef_long_new:Npn }
+\def_new:Npn \gdef_long_new:NNx { \def_aux:NNnn \gdef_long_new:Npx }
+\def_new:Npn \gdef_long_new:cNn { \def_aux:Ncnn \gdef_long_new:Npn }
+\def_new:Npn \gdef_long_new:cNx { \def_aux:Ncnn \gdef_long_new:Npx }
+\def_new:Npn \def_protected:NNn { \def_aux:NNnn \def_protected:Npn }
+\def_new:Npn \def_protected:NNx { \def_aux:NNnn \def_protected:Npx }
+\def_new:Npn \def_protected:cNn { \def_aux:Ncnn \def_protected:Npn }
+\def_new:Npn \def_protected:cNx { \def_aux:Ncnn \def_protected:Npx }
+\def_new:Npn \gdef_protected:NNn { \def_aux:NNnn \gdef_protected:Npn }
+\def_new:Npn \gdef_protected:NNx { \def_aux:NNnn \gdef_protected:Npx }
+\def_new:Npn \gdef_protected:cNn { \def_aux:Ncnn \gdef_protected:Npn }
+\def_new:Npn \gdef_protected:cNx { \def_aux:Ncnn \gdef_protected:Npx }
+\def_new:Npn \def_protected_new:NNn { \def_aux:NNnn \def_protected_new:Npn }
+\def_new:Npn \def_protected_new:NNx { \def_aux:NNnn \def_protected_new:Npx }
+\def_new:Npn \def_protected_new:cNn { \def_aux:Ncnn \def_protected_new:Npn }
+\def_new:Npn \def_protected_new:cNx { \def_aux:Ncnn \def_protected_new:Npx }
+\def_new:Npn \gdef_protected_new:NNn { \def_aux:NNnn \gdef_protected_new:Npn }
+\def_new:Npn \gdef_protected_new:NNx { \def_aux:NNnn \gdef_protected_new:Npx }
+\def_new:Npn \gdef_protected_new:cNn { \def_aux:Ncnn \gdef_protected_new:Npn }
+\def_new:Npn \gdef_protected_new:cNx { \def_aux:Ncnn \gdef_protected_new:Npx }
+\def_new:Npn \def_protected_long:NNn { \def_aux:NNnn \def_protected_long:Npn }
+\def_new:Npn \def_protected_long:NNx { \def_aux:NNnn \def_protected_long:Npx }
+\def_new:Npn \def_protected_long:cNn { \def_aux:Ncnn \def_protected_long:Npn }
+\def_new:Npn \def_protected_long:cNx { \def_aux:Ncnn \def_protected_long:Npx }
+\def_new:Npn \gdef_protected_long:NNn { \def_aux:NNnn \gdef_protected_long:Npn }
+\def_new:Npn \gdef_protected_long:NNx { \def_aux:NNnn \gdef_protected_long:Npx }
+\def_new:Npn \gdef_protected_long:cNn { \def_aux:Ncnn \gdef_protected_long:Npn }
+\def_new:Npn \gdef_protected_long:cNx { \def_aux:Ncnn \gdef_protected_long:Npx }
+\def_new:Npn \def_protected_long_new:NNn {
+ \def_aux:NNnn \def_protected_long_new:Npn }
+\def_new:Npn \def_protected_long_new:NNx {
+ \def_aux:NNnn \def_protected_long_new:Npx }
+\def_new:Npn \def_protected_long_new:cNn {
+ \def_aux:Ncnn \def_protected_long_new:Npn }
+\def_new:Npn \def_protected_long_new:cNx {
+ \def_aux:Ncnn \def_protected_long_new:Npx }
+\def_new:Npn \gdef_protected_long_new:NNn {
+ \def_aux:NNnn \gdef_protected_long_new:Npn }
+\def_new:Npn \gdef_protected_long_new:NNx {
+ \def_aux:NNnn \gdef_protected_long_new:Npx }
+\def_new:Npn \gdef_protected_long_new:cNn {
+ \def_aux:Ncnn \gdef_protected_long_new:Npn }
+\def_new:Npn \gdef_protected_long_new:cNx {
+ \def_aux:Ncnn \gdef_protected_long_new:Npx }
+\def_protected_long_new:Npn \let:NN #1{
+ \let:NwN #1=~}
+\def_new:Npn\let:cN #1 {\exp_after:NN\let:NN\cs:w#1\cs_end:}
+\def_new:Npn\let:Nc{\exp_args:NNc\let:NN}
+\def_new:Npn\let:cc{\exp_args:Ncc\let:NN}
\def_new:Npn \let_new:NN #1{\chk_new_cs:N #1
\let:NN #1}
-\def_new:Npn \def:cpn #1{\exp_after:NN
- \def:Npn
- \cs:w #1\cs_end:}
-\def_new:Npn \def:cpx #1{\exp_after:NN
- \def:Npx
- \cs:w #1\cs_end:}
-\def_new:Npn \def_new:cpn #1{\exp_after:NN
- \def_new:Npn
- \cs:w #1\cs_end:}
-\def_new:Npn \def_new:cpx #1{\exp_after:NN
- \def_new:Npx
- \cs:w #1\cs_end:}
-\def_new:Npn \def:No{\exp_args:NNo\def:Npn}
-\def_new:Npn \def_long:Npn {\tex_long:D\def:Npn}
-\def_new:Npn \def_long_new:Npn #1{\chk_new_cs:N #1
- \def_long:Npn #1}
-\def_new:Npn \def_long:cpn #1{\exp_after:NN
- \def_long:Npn
- \cs:w #1\cs_end:}
-\def_new:Npn \def_long:Npx {\tex_long:D\def:Npx}
-\def_new:Npn \glet:NN {\tex_global:D \let:NN}
+\def_new:Npn \let_new:cN {\exp_args:Nc \let_new:NN}
+\def_new:Npn \let_new:Nc {\exp_args:NNc \let_new:NN}
+\def_new:Npn \let_new:cc {\exp_args:Ncc \let_new:NN}
+\def_protected_new:Npn \glet:NN {\pref_global:D \let:NN}
+\def_protected_new:Npn \glet:Nc {\exp_args:NNc \glet:NN}
+\def_protected_new:Npn \glet:cN {\exp_args:Nc \glet:NN}
+\def_new:Npn \glet:cc {\exp_args:Ncc \glet:NN}
\def_new:Npn \glet_new:NN #1{\chk_new_cs:N #1
\tex_global:D\let:NN #1}
-\def_new:Npn \gdef_new:Npn #1{\chk_new_cs:N #1
- \gdef:Npn #1}
-\def_new:Npn \gdef:cpn {\tex_global:D \def:cpn}
-\def_new:Npn \gdef:cpx {\tex_global:D \def:cpx}
+\def_new:Npn \glet_new:cN {\exp_args:Nc \glet_new:NN}
+\def_new:Npn \glet_new:Nc {\exp_args:NNc \glet_new:NN}
+\def_new:Npn \glet_new:cc {\exp_args:Ncc \glet_new:NN}
+\def_new:Npn \def:No{\exp_args:NNo\def:Npn}
\def_new:Npn \gdef:No {\exp_args:NNo\gdef:Npn}
-
-\def_new:Npn \gdef_long:Npn {\tex_long:D\gdef:Npn}
-\def_new:Npn \gdef_long:Npx {\tex_long:D\gdef:Npx}
-\def_new:Npn \gfuturelet:NNN{\tex_global:D \let_peek_after:NNN}
-\def_long_new:Npn \cs_free:NTF #1{\if:w\cs_free_p:N #1
- \exp_after:NN \use_choice_i:nn \else:
- \exp_after:NN \use_choice_ii:nn \fi:}
-\def_long_new:Npn \cs_free:NT #1{\if:w\cs_free_p:N #1
- \exp_after:NN \use:n \else:
- \exp_after:NN \use_none:n \fi:}
-\def_long_new:Npn \cs_free:NF #1{\if:w\cs_free_p:N #1
- \exp_after:NN \use_none:n \else:
- \exp_after:NN \use:n \fi:}
-\def_long_new:Npn \cs_free:cTF #1{
- \exp_after:NN
- \if_meaning:NN
- \cs:w#1\cs_end:
- \scan_stop:
- \exp_after:NN \use_choice_i:nn
- \else:
- \exp_after:NN \use_choice_ii:nn
- \fi:}
-\def_long_new:Npn \cs_free:cF #1{\exp_after:NN
- \if_meaning:NN \cs:w#1\cs_end: \scan_stop:
- \exp_after:NN \use_none:nn \fi: \use:n}
-\def_long_new:Npn \cs_free:cT #1{\exp_after:NN
- \if_meaning:NN \cs:w#1\cs_end: \scan_stop:
- \else:
- \exp_after:NN \use_none:nn \fi: \use:n}
-\def_new:Npn \gundefine:N #1{\glet:NN #1\c_undefined}
-\def_long_new:Npn \use_none:n #1{}
-\def_long_new:Npn \use_none:nn #1#2{}
-\def_long_new:Npn \use_none:nnn #1{\use_none:nn}
-\def_long_new:Npn \use_none:nnnn
- {\exp_after:NN\use_none:nn \use_none:nn}
-\def_long_new:Npn \use:n #1{#1}
+\def_long_new:Npn \def_test_function_aux:Nnnn #1#2#3#4{
+ #1 {#2TF} #3 {#4
+ \exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:}
+ #1 {#2T} #3 {#4
+ \else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n}
+ #1 {#2F} #3 {#4
+ \exp_after:NN\use_none:nn\fi:\use_arg_i:n}}
+\def_long_new:Npn \def_test_function_aux:Nnnx #1#2#3#4{
+ #1 {#2TF} #3 {#4
+ \exp_not:n{\exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:}}
+ #1 {#2T} #3 {#4
+ \exp_not:n{\else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n}}
+ #1 {#2F} #3 {#4
+ \exp_not:n{\exp_after:NN\use_none:nn\fi:\use_arg_i:n}}}
+\def_long_new:Npn \def_test_function:npn #1#2#{
+ \def_test_function_aux:Nnnn \def:cpn {#1}{#2}
+}
+\def_long_new:Npn \def_test_function:npx #1#2#{
+ \def_test_function_aux:Nnnx \def:cpx {#1}{#2}
+}
+\def_long_new:Npn \def_long_test_function:npn #1#2#{
+ \def_test_function_aux:Nnnn \def_long:cpn {#1}{#2}
+}
+\def_long_new:Npn \def_long_test_function:npx #1#2#{
+ \def_test_function_aux:Nnnx \def_long:cpx {#1}{#2}
+}
+\def_long_new:Npn \def_test_function_new:npn #1#2#{
+ \def_test_function_aux:Nnnn \def_new:cpn {#1}{#2}
+}
+\def_long_new:Npn \def_long_test_function_new:npn #1#2#{
+ \def_test_function_aux:Nnnn \def_long_new:cpn {#1}{#2}
+}
+\def_long_new:Npn \def_test_function_new:npx #1#2#{
+ \def_test_function_aux:Nnnx \def_new:cpx {#1}{#2}
+}
+\def_long_new:Npn \def_long_test_function_new:npx #1#2#{
+ \def_test_function_aux:Nnnx \def_long_new:cpx {#1}{#2}
+}
+\def_long_test_function_new:npn {cs_if_free:N}#1{\if:w\cs_if_free_p:N #1}
+\let:NN \cs_free:NTF \cs_if_free:NTF
+\let:NN \cs_free:NT \cs_if_free:NT
+\let:NN \cs_free:NF \cs_if_free:NF
+\def_long_test_function_new:npn {cs_if_free:c}#1{
+ \exp_after:NN \if_meaning:NN \cs:w#1\cs_end: \scan_stop:}
+\let:NN \cs_free:cTF \cs_if_free:cTF
+\let:NN \cs_free:cT \cs_if_free:cT
+\let:NN \cs_free:cF \cs_if_free:cF
+\def_long_test_function_new:npn {cs_if_really_free:c}#1{
+ \reverse_if:N\if_cs_exist:w #1\cs_end:}
+\let:NN \cs_really_free:cTF \cs_if_really_free:cTF
+\let:NN \cs_really_free:cT \cs_if_really_free:cT
+\let:NN \cs_really_free:cF \cs_if_really_free:cF
+\def_long_test_function_new:npn {cs_if_exist:N}#1{\if:w\cs_if_exist_p:N #1}
+\def_long_test_function_new:npn {cs_if_exist:c}#1{
+ \exp_after:NN\reverse_if:N
+ \exp_after:NN \if_meaning:NN \cs:w#1\cs_end: \scan_stop:}
+\def_long_test_function_new:npn {cs_if_really_exist:c}#1{
+ \if_cs_exist:w #1\cs_end:}
+\def_new:Npn \cs_gundefine:N #1{\glet:NN #1\c_undefined}
+\def_test_function_new:npn {engine_aleph:}{\if_cs_exist:N \aleph_textdir:D}
\def_new:Npn \use:c #1{\cs:w #1\cs_end:}
-
+\def_new:Npn \cs_use:c #1 { \cs:w#1\cs_end: }
\def_new:Npn \use:cc #1#2
{\cs:w #1\exp_after:NN\cs_end:\cs:w #2\cs_end:}
-\def_long_new:Npn \use_choice_i:nn #1#2{#1}
-\def_long_new:Npn \use_choice_ii:nn #1#2{#2}
-\def_long_new:Npn\use_choice_i:nnn#1#2#3{#1}
-\def_long_new:Npn\use_choice_ii:nnn#1#2#3{#2}
-\def_long_new:Npn\use_choice_iii:nnn#1#2#3{#3}
+\def_long_new:Npn \use_arg_i:nn #1#2{#1}
+\def_long_new:Npn \use_arg_ii:nn #1#2{#2}
+\def_long_new:NNn \use_arg_i:nnn 3{#1}
+\def_long_new:NNn \use_arg_ii:nnn 3{#2}
+\def_long_new:NNn \use_arg_iii:nnn 3{#3}
+\def_long_new:NNn \use_arg_i:nnnn 4{#1}
+\def_long_new:NNn \use_arg_ii:nnnn 4{#2}
+\def_long_new:NNn \use_arg_iii:nnnn 4{#3}
+\def_long_new:NNn \use_arg_iv:nnnn 4{#4}
+\def_long_new:NNn\use_arg_i_ii:nn 2{#1#2}
+\def_long_new:Npn \use_none_delimit_by_q_nil:w #1\q_nil{}
+\def_long_new:Npn \use_none_delimit_by_q_stop:w #1\q_stop{}
+\def_long_new:Npn \use_arg_i_delimit_by_q_nil:nw #1#2\q_nil{#1}
+\def_long_new:Npn \use_arg_i_delimit_by_q_stop:nw #1#2\q_stop{#1}
+\def_long_new:Npn \use_arg_i_after_fi:nw #1\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_i_after_else:nw #1\else:#2\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_i_after_or:nw #1\or: #2\fi: {\or:\fi:#1}
+\def_long_new:NNn \use_none:nn 2{}
+\def_long_new:NNn \use_none:nnn 3{}
+\def_long_new:NNn \use_none:nnnn 4{}
+\def_long_new:NNn \use_none:nnnnn 5{}
+\def_long_new:NNn \use_none:nnnnnn 6{}
+\def_long_new:NNn \use_none:nnnnnnn 7{}
+\def_long_new:NNn \use_none:nnnnnnnn 8{}
+\def_long_new:NNn \use_none:nnnnnnnnn 9{}
\def_new:Npn \gtmp:w {}
\def_new:Npn \tmp:w {}
\def_new:Npn \use_noop: {}
\def_new:Npn \cs_to_str:N {\exp_after:NN\use_none:n \token_to_string:N}
-\def_new:Npn \tlist_eq:nnTF #1#2{
- \tlp_gset:Nn \g_testa_tlp {#1}
- \tlp_gset:Nn \g_testb_tlp {#2}
- \if_meaning:NN\g_testa_tlp \g_testb_tlp
- \exp_after:NN\use_choice_i:nn \else:
- \exp_after:NN\use_choice_ii:nn \fi:}
-\def_new:Npn \tlist_eq:onTF {\exp_args:No \tlist_eq:nnTF}
-\def_new:Npn \tlist_empty:nTF #1{\tlp_gset:Nn \g_testa_tlp {#1}
- \if_meaning:NN\g_testa_tlp \c_empty_tlp
- \exp_after:NN \use_choice_i:nn \else:
- \exp_after:NN \use_choice_ii:nn \fi:}
-\def_new:Npn \tlist_empty:nF #1{\tlp_gset:Nn \g_testa_tlp {#1}
- \if_meaning:NN\g_testa_tlp \c_empty_tlp
- \exp_after:NN \use_none:nn \fi: \use:n}
-\def_new:Npn \str_eq_p:nn #1#2{\str_eq_p_aux:w #1\scan_stop:\\#2\scan_stop:\\}
-\def_new:Npn \str_eq_p_aux:w #1#2\\#3#4\\{
- \if_meaning:NN#1#3
- \if_meaning:NN#1\scan_stop:\c_true \else:
- \if_meaning:NN#3\scan_stop:\c_false \else:
- \str_eq_p_aux:w #2\\#4\\\fi:\fi:
- \else:\c_false \fi:}
-\def:Npn \cs_eq_p:NN #1#2{
- \exp_after:NN\exp_after:NN
- \exp_after:NN\str_eq_p_aux:w
- \exp_after:NN\token_to_string:N
- \exp_after:NN#1
- \exp_after:NN\scan_stop:
- \exp_after:NN\\
- \token_to_string:N#2\scan_stop:\\}
+\def_test_function_new:npn {cs_if_eq:NN} #1#2{\if_meaning:NN #1#2}
+\def_new:Npn \cs_if_eq:cNTF {\exp_args:Nc \cs_if_eq:NNTF}
+\def_new:Npn \cs_if_eq:cNT {\exp_args:Nc \cs_if_eq:NNT}
+\def_new:Npn \cs_if_eq:cNF {\exp_args:Nc \cs_if_eq:NNF}
+\def_new:Npn \cs_if_eq:NcTF {\exp_args:NNc \cs_if_eq:NNTF}
+\def_new:Npn \cs_if_eq:NcT {\exp_args:NNc \cs_if_eq:NNT}
+\def_new:Npn \cs_if_eq:NcF {\exp_args:NNc \cs_if_eq:NNF}
+\def_new:Npn \cs_if_eq:ccTF {\exp_args:Ncc \cs_if_eq:NNTF}
+\def_new:Npn \cs_if_eq:ccT {\exp_args:Ncc \cs_if_eq:NNT}
+\def_new:Npn \cs_if_eq:ccF {\exp_args:Ncc \cs_if_eq:NNF}
\def_new:Npn\file_not_found:nTF #1#2#3{\IfFileExists{#1}{#3}{#2}}
-\def_new:Npn \c_true {TT}
-\def_new:Npn \c_false {TF}
-
%%
%%
%% End of file `l3basics.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3box.sty b/Master/texmf-dist/tex/latex/expl3/l3box.sty
new file mode 100644
index 00000000000..e155345519f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3box.sty
@@ -0,0 +1,149 @@
+%%
+%% This is file `l3box.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3box.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3box.dtx Copyright (C) 2005-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3box.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental Box module}
+\RequirePackage{l3prg}\par
+\let_new:NN \box_new:N \newbox
+\def_new:Npn \box_new:c {\exp_args:Nc \box_new:N}
+\let_new:NN \if_hbox:N \tex_ifhbox:D
+\let_new:NN \if_vbox:N \tex_ifvbox:D
+\let_new:NN \if_box_empty:N \tex_ifvoid:D
+\def_test_function_new:npn {box_if_empty:N}#1{\if_box_empty:N #1}
+\def_new:Npn \box_if_empty:cTF {\exp_args:Nc \box_if_empty:NTF}
+\def_new:Npn \box_if_empty:cT {\exp_args:Nc \box_if_empty:NT}
+\def_new:Npn \box_if_empty:cF {\exp_args:Nc \box_if_empty:NF}
+\def_new:Npn \box_set_eq:NN #1#2 {\tex_setbox:D #1 \tex_box:D #2}
+\def_new:Npn \box_set_eq:cN {\exp_args:Nc \box_set_eq:NN}
+\def_new:Npn \box_set_eq:Nc {\exp_args:NNc \box_set_eq:NN}
+\def_new:Npn \box_set_eq:cc {\exp_args:Ncc \box_set_eq:NN}
+\def_new:Npn \box_gset_eq:NN {\pref_global:D\box_set_eq:NN}
+\def_new:Npn \box_gset_eq:cN {\exp_args:Nc \box_gset_eq:NN}
+\def_new:Npn \box_gset_eq:Nc {\exp_args:NNc \box_gset_eq:NN}
+\def_new:Npn \box_gset_eq:cc {\exp_args:Ncc \box_gset_eq:NN}
+\let_new:NN \R_previous_box \tex_lastbox:D
+\def_new:Npn \box_set_to_previous:N #1{\tex_setbox:D#1\R_previous_box}
+\def_new:Npn \box_set_to_previous:c {\exp_args:Nc \box_set_to_previous:N}
+\def_new:Npn \box_gset_to_previous:N {\pref_global:D \box_set_to_previous:N}
+\def_new:Npn \box_gset_to_previous:c {\exp_args:Nc \box_gset_to_previous:N}
+\def_long_new:Npn \box_move_left:nn #1#2{\tex_moveleft:D\dim_eval:n{#1}{#2}}
+\def_long_new:Npn \box_move_right:nn #1#2{\tex_moveright:D\dim_eval:n{#1}{#2}}
+\def_long_new:Npn \box_move_up:nn #1#2{\tex_raise:D\dim_eval:n{#1}{#2}}
+\def_long_new:Npn \box_move_down:nn #1#2{\tex_lower:D\dim_eval:n{#1}{#2}}
+\def_new:Npn \box_clear:N #1{\box_set_eq:NN #1 \c_empty_box }
+\def_new:Npn \box_clear:c {\exp_args:Nc \box_clear:N }
+\def_new:Npn \box_gclear:N {\pref_global:D\box_clear:N}
+\def_new:Npn \box_gclear:c {\exp_args:Nc \box_gclear:c }
+\let_new:NN \box_ht:N \tex_ht:D
+\def_new:Npn \box_ht:c {\exp_args:Nc \box_ht:N}
+\let_new:NN \box_dp:N \tex_dp:D
+\def_new:Npn \box_dp:c {\exp_args:Nc \box_dp:N}
+\let_new:NN \box_wd:N \tex_wd:D
+\def_new:Npn \box_wd:c {\exp_args:Nc \box_wd:N}
+\let_new:NN \box_use_clear:N \tex_box:D
+\def_new:Npn \box_use_clear:c {\exp_args:Nc \box_use_clear:N}
+\let_new:NN \box_use:N \tex_copy:D
+\def_new:Npn \box_use:c {\exp_args:Nc \box_use:N}
+\let:NN \box_show:N \tex_showbox:D
+\def_new:Npn \box_show:c {\exp_args:Nc \box_show:N}
+\let:NN \c_empty_box \voidb@x
+\let_new:NN \l_tmpa_box \@tempboxa
+\box_new:N \l_tmpb_box
+\def_new:Npn \vbox:n {\tex_vbox:D \scan_stop:}
+\def_long_new:Npn \vbox_set:Nn #1#2 {\tex_setbox:D #1 \tex_vbox:D {#2}}
+\def_new:Npn \vbox_set:cn {\exp_args:Nc \vbox_set:Nn}
+\def_new:Npn \vbox_gset:Nn {\pref_global:D \vbox_set:Nn}
+\def_new:Npn \vbox_gset:cn {\exp_args:Nc \vbox_gset:Nn}
+\def_long_new:Npn \vbox_set_to_ht:Nnn #1#2#3 {
+ \tex_setbox:D #1 \tex_vbox:D to #2 {#3}}
+\def_new:Npn \vbox_set_to_ht:cnn{\exp_args:Nc \vbox_set_to_ht:Nnn }
+\def_new:Npn \vbox_gset_to_ht:Nnn {\pref_global:D \vbox_set_to_ht:Nnn }
+\def_new:Npn \vbox_gset_to_ht:cnn{\exp_args:Nc \vbox_gset_to_ht:Nnn }
+\def_new:Npn \vbox_gset_to_ht:ccn {\exp_args:Ncc \vbox_gset_to_ht:Nnn}
+\def_new:Npn \vbox_set_inline_begin:N #1 {
+ \tex_setbox:D #1 \tex_vbox:D \c_group_begin_token }
+\let_new:NN \vbox_set_inline_end: \c_group_end_token
+\def_new:Npn \vbox_gset_inline_begin:N {
+ \pref_global:D \vbox_set_inline_begin:N }
+\let_new:NN \vbox_gset_inline_end: \c_group_end_token
+\def_long_new:Npn \vbox_to_ht:nn #1#2{\tex_vbox:D to \dim_eval:n{#1}{#2}}
+\def_long_new:Npn \vbox_to_zero:n #1 {\tex_vbox:D to \c_zero_dim {#1}}
+\def_new:Npn \vbox_set_split_to_ht:NNn #1#2#3{
+ \tex_setbox:D #1 \tex_vsplit:D #2 to #3
+}
+\let_new:NN \vbox_unpack:N \tex_unvcopy:D
+\def_new:Npn \vbox_unpack:c {\exp_args:Nc \vbox_unpack:N}
+\let_new:NN \vbox_unpack_clear:N \tex_unvbox:D
+\def_new:Npn \vbox_unpack_clear:c {\exp_args:Nc \vbox_unpack_clear:N}
+\def_new:Npn \hbox:n {\tex_hbox:D \scan_stop:}
+\def_long_new:Npn \hbox_set:Nn #1#2 {\tex_setbox:D #1 \tex_hbox:D {#2}}
+\def_new:Npn \hbox_set:cn {\exp_args:Nc \hbox_set:Nn}
+\def_new:Npn \hbox_gset:Nn {\pref_global:D \hbox_set:Nn}
+\def_new:Npn \hbox_gset:cn {\exp_args:Nc \hbox_gset:Nn}
+\def_long_new:Npn \hbox_set_to_wd:Nnn #1#2#3 {
+ \tex_setbox:D #1 \tex_hbox:D to \dim_eval:n{#2} {#3}}
+\def_new:Npn \hbox_set_to_wd:cnn{\exp_args:Nc \hbox_set_to_wd:Nnn }
+\def_new:Npn \hbox_gset_to_wd:Nnn {\pref_global:D \hbox_set_to_wd:Nnn }
+\def_new:Npn \hbox_gset_to_wd:cnn{\exp_args:Nc \hbox_gset_to_wd:Nnn }
+\def_new:Npn \hbox_set_inline_begin:N #1 {
+ \tex_setbox:D #1 \tex_hbox:D \c_group_begin_token }
+\let_new:NN \hbox_set_inline_end: \c_group_end_token
+\def_new:Npn \hbox_gset_inline_begin:N {
+ \pref_global:D \hbox_set_inline_begin:N }
+\let_new:NN \hbox_gset_inline_end: \c_group_end_token
+\def_long_new:Npn \hbox_to_wd:nn #1#2 {\tex_hbox:D to #1 {#2}}
+\def_long_new:Npn \hbox_to_zero:n #1 {\tex_hbox:D to \c_zero_skip {#1}}
+\let_new:NN \hbox_unpack:N \tex_unhcopy:D
+\def_new:Npn \hbox_unpack:c {\exp_args:Nc \hbox_unpack:N}
+\let_new:NN \hbox_unpack_clear:N \tex_unhbox:D
+\def_new:Npn \hbox_unpack_clear:c {\exp_args:Nc \hbox_unpack_clear:N}
+%%
+%%
+%% End of file `l3box.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3calc.sty b/Master/texmf-dist/tex/latex/expl3/l3calc.sty
new file mode 100644
index 00000000000..d3d2ef07937
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3calc.sty
@@ -0,0 +1,431 @@
+%%
+%% This is file `l3calc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3calc.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3calc.dtx Copyright (C) 2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3calc.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental calc module}
+\RequirePackage{l3int}
+\RequirePackage{l3skip}
+\RequirePackage{l3box}
+\tlp_new:Nn\l_calc_expression_tlp{}
+\def_new:Npn \g_calc_A_register{}
+\def_new:Npn \l_calc_B_register{}
+\int_new:N \l_calc_current_type_int
+\int_new:N \g_calc_A_int
+\int_new:N \l_calc_B_int
+\int_new:N \l_calc_C_int
+\dim_new:N \g_calc_A_dim
+\dim_new:N \l_calc_B_dim
+\dim_new:N \l_calc_C_dim
+\skip_new:N \g_calc_A_skip
+\skip_new:N \l_calc_B_skip
+\skip_new:N \l_calc_C_skip
+\muskip_new:N \g_calc_A_muskip
+\muskip_new:N \l_calc_B_muskip
+\muskip_new:N \l_calc_C_muskip
+\def_long_new:Npn \calc_assign_generic:NNNNNn#1#2#3#4#5#6{
+ \let:NN\g_calc_A_register#2\let:NN\l_calc_B_register#3
+ \int_set:Nn \l_calc_current_type_int {#1}
+ \tlp_set:Nx\l_calc_expression_tlp{#6}
+ \exp_after:NN\calc_open:w\exp_after:NN(\l_calc_expression_tlp!
+ \pref_global:D\g_calc_A_register\l_calc_B_register
+ \group_end:
+ #4#5\l_calc_B_register
+}
+\def_new:Npn\calc_int_set:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_set:Nn
+}
+\def_new:Npn\calc_int_gset:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gset:Nn
+}
+\def_new:Npn\calc_int_add:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_add:Nn
+}
+\def_new:Npn\calc_int_gadd:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gadd:Nn
+}
+\def_new:Npn\calc_int_sub:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_sub:Nn
+}
+\def_new:Npn\calc_int_gsub:Nn{
+ \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gsub:Nn
+}
+\def_new:Npn\calc_dim_set:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_set:Nn
+}
+\def_new:Npn\calc_dim_gset:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gset:Nn
+}
+\def_new:Npn\calc_dim_add:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_add:Nn
+}
+\def_new:Npn\calc_dim_gadd:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gadd:Nn
+}
+\def_new:Npn\calc_dim_sub:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_int\l_calc_B_int\dim_sub:Nn
+}
+\def_new:Npn\calc_dim_gsub:Nn{
+ \calc_assign_generic:NNNNNn\c_one\g_calc_A_int\l_calc_B_int\dim_gsub:Nn
+}
+\def_new:Npn\calc_skip_set:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_set:Nn
+}
+\def_new:Npn\calc_skip_gset:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gset:Nn
+}
+\def_new:Npn\calc_skip_add:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_add:Nn
+}
+\def_new:Npn\calc_skip_gadd:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gadd:Nn
+}
+\def_new:Npn\calc_skip_sub:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_sub:Nn
+}
+\def_new:Npn\calc_skip_gsub:Nn{
+ \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gsub:Nn
+}
+\def_new:Npn\calc_muskip_set:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_set:Nn
+}
+\def_new:Npn\calc_muskip_gset:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gset:Nn
+}
+\def_new:Npn\calc_muskip_add:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_add:Nn
+}
+\def_new:Npn\calc_muskip_gadd:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gadd:Nn
+}
+\def_new:Npn\calc_muskip_sub:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_add:Nn
+}
+\def_new:Npn\calc_muskip_gsub:Nn{
+ \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gadd:Nn
+}
+\def_new:Npn \calc_pre_scan:N #1{
+ \if_meaning:NN(#1
+ \exp_after:NN\calc_open:w
+ \else:
+ \if_meaning:NN \calc_textsize:Nn #1
+ \else:
+ \if_meaning:NN \calc_maxmin_operation:Nnn #1
+ \else:
+ \calc_numeric:
+ \fi:
+ \fi:
+ \fi:
+ #1}
+\def_new:Npn \calc_open:w({
+ \group_begin:\group_execute_after:N\calc_init_B:
+ \group_begin:\group_execute_after:N\calc_init_B:
+ \calc_pre_scan:N
+}
+\def_new:Npn\calc_init_B:{\l_calc_B_register\g_calc_A_register}
+\def_new:Npn\calc_numeric:{
+ \tex_afterassignment:D\calc_post_scan:N
+ \pref_global:D\g_calc_A_register
+}
+\def_new:Npn\calc_close:{
+ \group_end:\pref_global:D\g_calc_A_register\l_calc_B_register
+ \group_end:\pref_global:D\g_calc_A_register\l_calc_B_register
+ \calc_post_scan:N}
+\def_new:Npn\calc_post_scan:N#1{
+ \if_meaning:NN#1!\let:NN\calc_next:w\group_end: \else:
+ \if_meaning:NN#1+\let:NN\calc_next:w\calc_add: \else:
+ \if_meaning:NN#1-\let:NN\calc_next:w\calc_subtract: \else:
+ \if_meaning:NN#1*\let:NN\calc_next:w\calc_multiply:N \else:
+ \if_meaning:NN#1/\let:NN\calc_next:w\calc_divide:N \else:
+ \if_meaning:NN#1)\let:NN\calc_next:w\calc_close: \else:
+ \let:NN \calc_next:w \scan_stop:
+ \calc_error:N#1
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \calc_next:w}
+\def_new:Npn \calc_multiply:N #1{
+ \if_meaning:NN \calc_maxmin_operation:Nnn #1
+ \let:NN \calc_next:w \calc_maxmin_multiply:
+ \else:
+ \if_meaning:NN \calc_ratio_multiply:nn #1
+ \let:NN \calc_next:w \calc_ratio_multiply:nn
+ \else:
+ \if_meaning:NN \calc_real_evaluate:nn #1
+ \let:NN \calc_next:w \calc_real_multiply:n
+ \else:
+ \def:Npn \calc_next:w{\calc_multiply: #1}
+ \fi:
+ \fi:
+ \fi:
+ \calc_next:w
+}
+\def_new:Npn \calc_divide:N #1{
+ \if_meaning:NN \calc_maxmin_operation:Nnn #1
+ \let:NN \calc_next:w \calc_maxmin_divide:
+ \else:
+ \if_meaning:NN \calc_ratio_multiply:nn #1
+ \let:NN \calc_next:w \calc_ratio_divide:nn
+ \else:
+ \if_meaning:NN \calc_real_evaluate:nn #1
+ \let:NN \calc_next:w \calc_real_divide:n
+ \else:
+ \def:Npn \calc_next:w{\calc_divide: #1}
+ \fi:
+ \fi:
+ \fi:
+ \calc_next:w
+}
+\def_new:Npn\calc_generic_add_or_subtract:N#1{
+ \group_end:
+ \pref_global:D\g_calc_A_register\l_calc_B_register\group_end:
+ \group_begin:\group_execute_after:N#1\group_begin:
+ \group_execute_after:N\calc_init_B:
+ \calc_pre_scan:N}
+\def_new:Npn\calc_add:{\calc_generic_add_or_subtract:N\calc_add_A_to_B:}
+\def_new:Npn\calc_subtract:{
+ \calc_generic_add_or_subtract:N\calc_subtract_A_from_B:}
+\def_new:Npn\calc_add_A_to_B:{
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register + \g_calc_A_register\scan_stop:
+}
+\def_new:Npn\calc_subtract_A_from_B:{
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register - \g_calc_A_register\scan_stop:
+}
+\def_new:Npn\calc_generic_multiply_or_divide:N#1{
+ \group_end:
+ \group_begin:
+ \let:NN\g_calc_A_register\g_calc_A_int
+ \let:NN\l_calc_B_register\l_calc_B_int
+ \group_execute_after:N#1\calc_pre_scan:N
+}
+\def_new:Npn\calc_multiply_B_by_A:{
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register*\g_calc_A_int\scan_stop:
+}
+\def_new:Npn\calc_divide_B_by_A:{
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register/\g_calc_A_int\scan_stop:
+}
+\def_new:Npn\calc_multiply:{
+ \calc_generic_multiply_or_divide:N\calc_multiply_B_by_A:}
+\def_new:Npn\calc_divide:{
+ \calc_generic_multiply_or_divide:N\calc_divide_B_by_A:}
+\def_long_new:Npn \calc_calculate_box_size:nnn #1#2#3{
+ \hbox_set:Nn \l_tmpa_box {{#3}}
+ #2{\c_zero_dim \tlist_map_function:nN{#1}\calc_calculate_box_size_aux:n}
+}
+\def:Npn \calc_calculate_box_size_aux:n#1{ + #1\l_tmpa_box}
+\def_protected_long:Npn \calc_textsize:Nn#1#2{
+ \group_begin:
+ \let:NN\widthof\box_wd:N
+ \let:NN\heightof\box_ht:N
+ \let:NN\depthof\box_dp:N
+ \def:Npn\totalheightof{\box_ht:N\box_dp:N}
+ \exp_args:No\calc_calculate_box_size:nnn{#1}
+ {\dim_gset:Nn\g_calc_A_register}
+ {
+ \let:NN \depthof\calc_depthof:n
+ \let:NN \widthof\calc_widthof:n
+ \let:NN \heightof\calc_heightof:n
+ \let:NN \totalheightof\calc_totalheightof:n
+ #2
+ }
+ \group_end:
+ \calc_post_scan:N
+}
+\def_protected_long:Npn\calc_ratio_multiply:nn#1#2{
+ \group_end:\group_begin:
+ \if_num:w\l_calc_current_type_int < \c_three
+ \calc_dim_set:Nn\l_calc_B_int{#1}
+ \calc_dim_set:Nn\l_calc_C_int{#2}
+ \else:
+ \calc_dim_muskip:Nn{\l_calc_B_int\etex_mutoglue:D}{#1}
+ \calc_dim_muskip:Nn{\l_calc_C_int\etex_mutoglue:D}{#2}
+ \fi:
+ \gdef:Npx\calc_calculated_ratio:{
+ \int_use:N\l_calc_B_int/\int_use:N\l_calc_C_int
+ }
+ \group_end:
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register*\calc_calculated_ratio:\scan_stop:
+ \group_begin:
+ \calc_post_scan:N}
+\def_long_new:Npn \calc_ratio_divide:nn#1#2{\calc_ratio_multiply:nn{#2}{#1}}
+\def_protected_new:Npn\calc_real_evaluate:nn #1#2{
+ \group_end:
+ \l_calc_B_register
+ \if_case:w\l_calc_current_type_int
+ \etex_numexpr:D\or:
+ \etex_dimexpr:D\or:
+ \etex_glueexpr:D\or:
+ \etex_muexpr:D\fi:
+ \l_calc_B_register *
+ \tex_number:D \dim_eval:n{#1pt}/
+ \tex_number:D\dim_eval:n{#2pt}
+ \scan_stop:
+ \group_begin:
+ \calc_post_scan:N}
+\def_new:Npn \calc_real_multiply:n #1{\calc_real_evaluate:nn{#1}{1}}
+\def_new:Npn \calc_real_divide:n {\calc_real_evaluate:nn{1}}
+\def_protected_long:Npn\calc_maxmin_operation:Nnn#1#2#3{
+ \group_begin:
+ \calc_maxmin_generic:Nnn#1{#2}{#3}
+ \group_end:
+ \calc_post_scan:N
+}
+\def_protected_long_new:Npn \calc_maxmin_generic:Nnn#1#2#3{
+ \group_begin:
+ \if_case:w\l_calc_current_type_int
+ \calc_int_set:Nn\l_calc_C_int{#2}%
+ \calc_int_set:Nn\l_calc_B_int{#3}%
+ \pref_global:D\g_calc_A_register
+ \if_num:w\l_calc_C_int#1\l_calc_B_int
+ \l_calc_C_int\else:\l_calc_B_int\fi:
+ \or:
+ \calc_dim_set:Nn\l_calc_C_dim{#2}%
+ \calc_dim_set:Nn\l_calc_B_dim{#3}%
+ \pref_global:D\g_calc_A_register
+ \if_dim:w\l_calc_C_dim#1\l_calc_B_dim
+ \l_calc_C_dim\else:\l_calc_B_dim\fi:
+ \or:
+ \calc_skip_set:Nn\l_calc_C_skip{#2}%
+ \calc_skip_set:Nn\l_calc_B_skip{#3}%
+ \pref_global:D\g_calc_A_register
+ \if_dim:w\l_calc_C_skip#1\l_calc_B_skip
+ \l_calc_C_skip\else:\l_calc_B_skip\fi:
+ \else:
+ \calc_muskip_set:Nn\l_calc_C_muskip{#2}%
+ \calc_muskip_set:Nn\l_calc_B_muskip{#3}%
+ \pref_global:D\g_calc_A_register
+ \if_dim:w\l_calc_C_muskip#1\l_calc_B_muskip
+ \l_calc_C_muskip\else:\l_calc_B_muskip\fi:
+ \fi:
+ \group_end:
+}
+\def_long_new:Npn\calc_maxmin_div_or_mul:NNnn#1#2#3#4{
+ \group_end:
+ \group_begin:
+ \int_zero:N\l_calc_current_type_int
+ \group_execute_after:N#1
+ \calc_maxmin_generic:Nnn#2{#3}{#4}
+ \group_end:
+ \group_begin:
+ \calc_post_scan:N
+}
+\def_new:Npn\calc_maxmin_multiply:{
+ \calc_maxmin_div_or_mul:NNnn\calc_multiply_B_by_A:}
+\def_new:Npn\calc_maxmin_divide: {
+ \calc_maxmin_div_or_mul:NNnn\calc_divide_B_by_A:}
+\def_new:Npn\calc_error:N#1{
+ \PackageError{calc}
+ {`\token_to_string:N#1'~ invalid~ at~ this~ point}
+ {I~ expected~ to~ see~ one~ of:~ +~ -~ *~ /~ )}
+}
+\def_long_new:Npn \calc_maxof:nn#1#2{
+ \calc_maxmin_operation:Nnn > \exp_not:n{{#1}{#2}}
+}
+\def_long_new:Npn \calc_minof:nn#1#2{
+ \calc_maxmin_operation:Nnn < \exp_not:n{{#1}{#2}}
+}
+\let_new:NN \maxof \calc_maxof:nn
+\let_new:NN \minof \calc_minof:nn
+\def_long_new:Npn \calc_widthof:n#1{
+ \calc_textsize:Nn \exp_not:N\widthof\exp_not:n{{#1}}
+}
+\def_long_new:Npn \calc_heightof:n#1{
+ \calc_textsize:Nn \exp_not:N\heightof\exp_not:n{{#1}}
+}
+\def_long_new:Npn \calc_depthof:n#1{
+ \calc_textsize:Nn \exp_not:N\depthof\exp_not:n{{#1}}
+}
+\def_long_new:Npn \calc_totalheightof:n#1{
+ \calc_textsize:Nn \exp_not:N\totalheightof\exp_not:n{{#1}}
+}
+\let:NN \depthof\calc_depthof:n
+\let:NN \widthof\calc_widthof:n
+\let:NN \heightof\calc_heightof:n
+\let:NN \totalheightof\calc_totalheightof:n
+\def_long_new:Npn \calc_ratio:nn#1#2{
+ \calc_ratio_multiply:nn\exp_not:n{{#1}{#2}}}
+\let_new:NN \calc_real:n \calc_real_evaluate:nn
+\let_new:NN \ratio\calc_ratio:nn
+\let_new:NN \real\calc_real:n
+%%
+%%
+%% End of file `l3calc.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3chk.sty b/Master/texmf-dist/tex/latex/expl3/l3chk.sty
index 936ddb833c0..1c2a8319d85 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3chk.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3chk.sty
@@ -15,23 +15,56 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3chk.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3chk}
- [1998/04/20 v1.0e L3 Experimental check module]
+%% File: l3chk.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%%
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3chk.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental check module}
\RequirePackage{l3basics}
-\RequirePackage{l3int}
-\def_new:Npn \chk_local:N #1{\exp_after:NN
- \chk_local_aux:w \token_to_string:N#1\q_stop}
+\RequirePackage{l3int,l3prg}
+\def_new:Npn \chk_local:N #1{
+ \exp_after:NN \chk_local_aux:w \token_to_string:N#1\q_stop}
+
\def_new:Npn \chk_local_aux:w #1#2#3\q_stop{
\if_num:w\tex_uccode:D`#2=`G\scan_stop:
- \err_latex_bug:n{Local~mismatch:~local~function~called~with~
+ \err_latex_bug:x{Local~mismatch:~local~function~called~with~
global~variable:^^J\text_put_four_sp: #1#2#3~
on~line~\tex_the:D\tex_inputlineno:D}
\else:
\if_num:w\tex_uccode:D`#2=`L\scan_stop:
\else:
- \err_latex_bug:n{Variable~mismatch:~function~not~called~with~
+ \err_latex_bug:x{Variable~mismatch:~function~not~called~with~
proper~variable:^^J\text_put_four_sp: #1#2#3~
on~line~\tex_the:D\tex_inputlineno:D}\fi:
\fi:}
@@ -40,13 +73,13 @@
\chk_global_aux:w \token_to_string:N#1\q_stop}
\def_new:Npn \chk_global_aux:w #1#2#3\q_stop{
\if_num:w\tex_uccode:D`#2=`L\scan_stop:
- \err_latex_bug:n{Global~mismatch:~global~function~called~with~
+ \err_latex_bug:x{Global~mismatch:~global~function~called~with~
local~variable:~#1#2#3~
on~line~\tex_the:D\tex_inputlineno:D}
\else:
\if_num:w\tex_uccode:D`#2=`G\scan_stop:
\else:
- \err_latex_bug:n{Variable~mismatch:~function~not~called~with~
+ \err_latex_bug:x{Variable~mismatch:~function~not~called~with~
proper~variable:~#1#2#3~
on~line~\tex_the:D\tex_inputlineno:D}\fi:\fi:}
\def_new:Npn \pref_global_chk: {
@@ -64,9 +97,9 @@
\else:
\if_num:w\tex_uccode:D`#2=`C\scan_stop:
\else:
- \if_char_code:w#2q\scan_stop:
+ \if_charcode:w#2q\scan_stop:
\else:
- \err_latex_bug:n{Variable~mismatch:~function~not~called~with~
+ \err_latex_bug:x{Variable~mismatch:~function~not~called~with~
proper~variable:^^J\text_put_four_sp: #1#2#3~
on~line~\tex_the:D\tex_inputlineno:D}\fi:\fi:\fi:
\fi:}
@@ -95,7 +128,7 @@
\pref_global:D\g_trace_box_breadth_int\c_ten_thousand
\pref_global:D\g_trace_box_depth_int\c_ten_thousand
\pref_global:D\g_trace_online_status\c_one
- \mode_errorstop:D}
+ \tex_errorstopmode:D}
\def_new:Npn\tracingoff{
\pref_global:D\g_trace_online_status\c_zero
\pref_global:D\g_trace_commands_status\c_zero
@@ -109,16 +142,18 @@
\pref_global:D\g_trace_box_breadth_int\c_zero
\pref_global:D\g_trace_box_depth_int\c_zero
}
-\def_new:Npn\traceon#1{\for_clist:Nnn\l_tmpa_tlp{#1}
- {
- \cs_free:cF{g_trace_\l_tmpa_tlp _status}
- {\int_gincr:c{g_trace_\l_tmpa_tlp _status}}
- }}
-\def_new:Npn\traceoff#1{\for_clist:Nnn\l_tmpa_tlp{#1}
- {
- \cs_free:cF{g_trace_\l_tmpa_tlp _status}
- {\int_gdecr:c{g_trace_\l_tmpa_tlp _status}}
- }}
+\def_new:Npn\traceon#1{
+ \clist_map_inline:nn {#1}{
+ \cs_free:cF{g_trace_ ##1 _status}
+ {\int_gincr:c{g_trace_ ##1 _status}}
+ }
+}
+\def_new:Npn\traceoff#1{
+ \clist_map_inline:nn {#1}{
+ \cs_free:cF{g_trace_ ##1 _status}
+ {\int_gdecr:c{g_trace_ ##1 _status}}
+ }
+}
%%
%%
%% End of file `l3chk.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3clist.sty b/Master/texmf-dist/tex/latex/expl3/l3clist.sty
new file mode 100644
index 00000000000..5d66009175a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3clist.sty
@@ -0,0 +1,243 @@
+%%
+%% This is file `l3clist.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3clist.dtx (with options: `package,trace')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3clist.dtx Copyright (C) 2005-2006 Frank Mittelbach, 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3clist.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental comma separated lists}
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{l3prg,l3quark}
+\def_new:Npn \clist_new:N #1{\tlp_new:Nn #1{}}
+\def_new:Npn \clist_new:c {\exp_args:Nc \clist_new:N}
+\let_new:NN \clist_clear:N \tlp_clear:N
+\let_new:NN \clist_clear:c \tlp_clear:c
+\let_new:NN \clist_gclear:N \tlp_gclear:N
+\let_new:NN \clist_gclear:c \tlp_gclear:c
+\let_new:NN \clist_set_eq:NN \let:NN
+\let_new:NN \clist_gset_eq:NN \glet:NN
+\def_new:Npn \clist_gset_eq:cN {\exp_args:Nc \clist_gset_eq:NN}
+\def_new:Npn \clist_gset_eq:Nc {\exp_args:NNc \clist_gset_eq:NN}
+\def_new:Npn \clist_gset_eq:cc {\exp_args:Ncc \clist_gset_eq:NN}
+\let_new:NN \clist_if_empty_p:N \tlp_if_empty_p:N
+\def_test_function_new:npn {clist_if_empty:N}#1{\if_meaning:NN#1\c_empty_tlp}
+\def_new:Npn \clist_if_empty:cTF {\exp_args:Nc\clist_if_empty:NTF}
+\def_new:Npn \clist_if_empty:cT {\exp_args:Nc\clist_if_empty:NT}
+\def_new:Npn \clist_if_empty:cF {\exp_args:Nc\clist_if_empty:NF}
+\def_new:Npn \clist_if_empty_err:N #1{
+ \if_meaning:NN#1\c_empty_tlp
+ \tlp_clear:N \l_testa_tlp % catch prefixes
+ \err_latex_bug:x{Empty~comma-list~`\token_to_string:N#1'}
+ \fi:}
+\let_new:NN \clist_if_eq:NNTF \tlp_if_eq:NNTF
+\def_new:Npn \clist_get:NN #1{
+ \clist_if_empty_err:N #1
+ \exp_after:NN\clist_get_aux:w #1,\q_stop}
+\def_new:Npn \clist_get_aux:w #1,#2\q_stop #3{\tlp_set:Nn #3{#1}}
+\def_new:Npn \clist_get:cN {\exp_args:Nc \clist_get:NN}
+\def_new:Npn \clist_pop_aux:nnNN #1#2#3{
+ \clist_if_empty_err:N #3
+ \exp_after:NN\clist_pop_aux:w #3,\q_nil\q_stop #1#2#3}
+\def_new:Npn \clist_pop_aux:w #1,#2\q_stop #3#4#5#6{
+ #4#6{#1}
+ #3#5{#2}
+ \quark_if_nil:NTF #5
+ { #3#5{} }
+ { \clist_pop_auxi:w #2 #3#5 }
+}
+\def_new:Npn\clist_pop_auxi:w #1,\q_nil #2#3 {#2#3{#1}}
+\def_new:Npn \clist_put_aux:NNnnNn #1#2#3#4#5#6{
+ \clist_if_empty:NTF#5 {#1 #5{#6}}
+ { \tlist_if_empty:nF {#6}{ #2 #5{#3#6#4} } }
+}
+\def_new:Npn \clist_put_left:Nn {
+ \clist_put_aux:NNnnNn \tlp_set:Nn \tlp_put_left:Nn {} ,
+}
+\def_new:Npn \clist_put_left:cn {\exp_args:Nc \clist_put_left:Nn}
+\def_new:Npn \clist_put_left:No {\exp_args:NNo\clist_put_left:Nn}
+\def_new:Npn \clist_put_left:Nx {\exp_args:Nnx\clist_put_left:Nn}
+\def_new:Npn \clist_gput_left:Nn {
+ \clist_put_aux:NNnnNn \tlp_gset:Nn \tlp_gput_left:Nn {} ,
+}
+\def_new:Npn \clist_put_right:Nn {
+ \clist_put_aux:NNnnNn \tlp_set:Nn \tlp_put_right:Nn , {}
+}
+\def_new:Npn \clist_put_right:cn {\exp_args:Nc \clist_put_right:Nn}
+\def_new:Npn \clist_put_right:No {\exp_args:Nno\clist_put_right:Nn}
+\def_new:Npn \clist_put_right:Nx {\exp_args:Nnx\clist_put_right:Nn}
+\def_new:Npn \clist_gput_right:Nn {
+ \clist_put_aux:NNnnNn \tlp_set:Nn \tlp_put_right:Nn , {}
+}
+\def_new:Npn \clist_gput_right:No {\exp_args:NNo \clist_gput_right:Nn}
+\def_new:Npn \clist_gput_right:cn {\exp_args:Nc \clist_gput_right:Nn}
+\def_new:Npn \clist_gput_right:co {\exp_args:Nco \clist_gput_right:Nn}
+\def_new:Npn \clist_gput_right:cc {\exp_args:Ncc \clist_gput_right:Nn}
+\def_new:Npn \clist_gput_right:NC {\exp_args:NNC \clist_gput_right:Nn}
+\def_new:Npn \clist_map_function:NN #1#2{
+ \clist_if_empty:NF #1
+ {
+ \exp_after:NN \clist_map_function_aux:Nw
+ \exp_after:NN #2 #1 , \q_nil , \q_stop
+ }
+}
+\def_new:Npn \clist_map_function:cN{\exp_args:Nc\clist_map_function:NN}
+\def_new:Npn \clist_map_function:nN #1#2{
+ \tlist_if_empty:nF {#1}
+ { \clist_map_function_aux:Nw #2 #1 , \q_nil , \q_stop }
+}
+\def_new:Npn \clist_map_function_aux:Nw #1#2,{
+ \quark_if_nil:nT{#2} \clist_map_break:w
+ #1{#2}
+ \clist_map_function_aux:Nw #1
+}
+\let_new:NN \clist_map_break:w \use_none_delimit_by_q_stop:w
+\int_new:N \l_clist_inline_level_int
+\def_new:Npn \clist_map_inline:Nn #1#2{
+ \clist_if_empty:NF #1
+ {
+ \int_incr:N \l_clist_inline_level_int
+ \def:cpn {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n}
+ ##1{#2}
+ \exp_args:NcE \clist_map_function_aux:Nw
+ {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n}
+ #1 , \q_nil , \q_stop
+ \int_decr:N \l_clist_inline_level_int
+ }
+}
+\def_new:Npn \clist_map_inline:cn{\exp_args:Nc\clist_map_inline:Nn}
+\def_new:Npn \clist_map_inline:nn #1#2{
+ \tlist_if_empty:nF {#1}
+ {
+ \int_incr:N \l_clist_inline_level_int
+ \def:cpn {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n}
+ ##1{#2}
+ \exp_args:Nc \clist_map_function_aux:Nw
+ {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n}
+ #1 , \q_nil , \q_stop
+ \int_decr:N \l_clist_inline_level_int
+ }
+}
+\def_new:Npn \clist_map_variable:nNn #1#2#3{
+ \tlist_if_empty:nF{#1}
+ {
+ \clist_map_variable_aux:Nnw #2 {#3} #1 , \q_nil , \q_stop
+ }
+}
+\def_new:Npn \clist_map_variable:NNn {\exp_args:No \clist_map_variable:nNn}
+\def_new:Npn \clist_map_variable:cNn {\exp_args:Nc \clist_map_variable:NNn}
+\def_new:Npn \clist_map_variable_aux:Nnw #1#2#3,{
+ \def:Npn #1{#3}
+ \quark_if_nil:NT #1 \clist_map_break:w
+ #2 \clist_map_variable_aux:Nnw #1{#2}
+}
+\def_new:Npn \clist_concat_aux:NNNN #1#2#3#4{
+ \toks_set:No \l_tmpa_toks {#3}
+ \toks_set:No \l_tmpb_toks {#4}
+ #1 #2 {
+ \toks_use:N \l_tmpa_toks
+ \toks_if_empty:NF \l_tmpa_toks {\toks_if_empty:NF \l_tmpb_toks ,}
+ \toks_use:N \l_tmpb_toks
+ }
+}
+\def_new:Npn \clist_concat:NNN {\clist_concat_aux:NNNN \tlp_set:Nx}
+\def_new:Npn \clist_gconcat:NNN {\clist_concat_aux:NNNN \tlp_gset:Nx}
+\def_new:Npn \clist_gconcat:NNc{\exp_args:Nnnc\clist_gconcat:NNN}
+\def_new:Npn \clist_gconcat:ccc{\exp_args:Nccc\clist_gconcat:NNN}
+\def:Npn \clist_remove_duplicates_aux:NN #1#2 {
+ \clist_clear:N \l_clist_remove_duplicates_clist
+ \clist_map_function:NN #2 \clist_remove_duplicates_aux:n
+ #1 #2 \l_clist_remove_duplicates_clist
+}
+\def:Npn \clist_remove_duplicates_aux:n #1 {
+ \clist_if_in:NnTF \l_clist_remove_duplicates_clist {#1} {}
+ {\clist_put_right:Nn \l_clist_remove_duplicates_clist {#1}}
+}
+\def_new:Npn \clist_remove_duplicates:N {
+ \clist_remove_duplicates_aux:NN \clist_set_eq:NN
+}
+\def_new:Npn \clist_gremove_duplicates:N {
+ \clist_remove_duplicates_aux:NN \clist_gset_eq:NN
+}
+\clist_new:N \l_clist_remove_duplicates_clist
+\def_new:Npn \clist_use:N #1 {
+ \if_meaning:NN #1 \scan_stop:
+ \err_latex_bug:x {Comma~list~ `\token_to_string:N #1'~
+ has~ an~ erroneous~ structure!}
+ \else:
+ \exp_after:NN #1
+ \fi:
+}
+\def_new:Npn \clist_use:c {\exp_args:Nc \clist_use:N}
+\def_new:Npn \clist_if_in:NnTF #1#2{
+ \def:Npn \tmp:w ##1 ,#2, ##2##3\q_stop{
+ \if_meaning:NN\q_no_value##2
+ \exp_after:NN\use_arg_ii:nn
+ \else:
+ \exp_after:NN\use_arg_i:nn
+ \fi:
+ }
+ \exp_after:NN \tmp:w
+ \exp_after:NN , #1, #2, \q_no_value \q_stop
+}
+\def_new:Npn \clist_if_in:NoTF {\exp_args:NNo \clist_if_in:NnTF}
+\def_new:Npn \clist_if_in:coTF {\exp_args:Nco \clist_if_in:NnTF}
+\def_new:Npn \clist_if_in:cnTF {\exp_args:Nc \clist_if_in:NnTF}
+\let_new:NN \clist_push:Nn \clist_put_left:Nn
+\let_new:NN \clist_push:No \clist_put_left:No
+\let_new:NN \clist_push:cn \clist_put_left:cn
+\def_new:Npn \clist_pop:NN {\clist_pop_aux:nnNN \tlp_set:Nn \tlp_set:Nn}
+\def_new:Npn \clist_pop:cN {\exp_args:Nc \clist_pop:NN}
+\let_new:NN \clist_gpush:Nn \clist_gput_left:Nn
+\def_new:Npn \clist_gpush:No {\exp_args:NNo \clist_gpush:Nn}
+\def_new:Npn \clist_gpush:cn {\exp_args:Nc \clist_gpush:Nn}
+\def_new:Npn \clist_gpop:NN {\clist_pop_aux:nnNN \tlp_gset:Nn \tlp_set:Nn}
+\def_new:Npn \clist_gpop:cN {\exp_args:Nc \clist_gpop:NN}
+\let_new:NN \clist_top:NN \clist_get:NN
+\let_new:NN \clist_top:cN \clist_get:cN
+%%
+%%
+%% End of file `l3clist.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3doc.cls b/Master/texmf-dist/tex/latex/expl3/l3doc.cls
index 7b747d4e10c..ebe379a580a 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/expl3/l3doc.cls
@@ -1,23 +1,109 @@
-
+% \iffalse
+%% File: l3doc.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%% \fi
+% \iffalse
+% \begin{macrocode}
+%<*class>
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{l3doc}
- [1998/04/12 v0.0c class for documenting experimental stuff]
-
+ [2006/01/17 v0.0h class for documenting experimental stuff]
+%
+\NeedsTeXFormat{LaTeX2e}
+%</class>
+% \end{macrocode}
+%
+% \section{Options}
+%
+% \begin{macrocode}
+%<*class>
+\DeclareOption{a5paper}{\@latexerr{Option not supported}%
+ {}}
+\DeclareOption{full}{\AtBeginDocument{\input{l3full.cfg}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareOption*{\PassOptionstoClass{\CurrentOption}{article}}
-
+% \end{macrocode}
+%
+% \section{Option Processing}
+%
+% \begin{macrocode}
\ProcessOptions
-
+% \end{macrocode}
+%
+% \section{Loading article and doc}
+%
+% \begin{macrocode}
\LoadClass{article}
+% \end{macrocode}
+% We need eTeX. Otherwise stop processing now.
+% \begin{macrocode}
+\@ifundefined{eTeXversion}{%
+ \ClassError{l3doc}{This document class requires eTeX extensions}%
+ {I'm going to stop now.}%
+ \endinput\stop
+}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
\RequirePackage{doc}
-
-\RequirePackage[T1]{fontenc}
+\renewcommand\MakePrivateLetters{\makeatletter
+ \catcode`\_=11\relax
+ \catcode`\:=11\relax}
+% \end{macrocode}
+%
+% \section{Configuration}
+% Input a local configuration file, if it exists.
+% \begin{macrocode}
+\InputIfFileExists{l3doc.cfg}
+ {\typeout{*************************************^^J%
+ * Local config file l3doc.cfg used^^J%
+ *************************************}}
+ {}
+% \end{macrocode}
+%
+% taken out for the moment as my laptop doesn't have a full set of
+% type 1 fonts installed right now --- fmi
+%\RequirePackage[T1]{fontenc}
%% The Guilty Parties
\def\Team{%
The \LaTeX3 Project\thanks{%
Frank Mittelbach, Denys Duchier, Chris Rowley,
Rainer Sch\"opf, Johannes Braams, Michael Downes,
- David Carlisle, Alan Jeffrey}}
+ David Carlisle, Alan Jeffrey, Morten H\o gholm, Thomas Lotze,
+ Javier Bezos}}
%% You do not want to look at the mess below this line.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -25,13 +111,104 @@
\catcode`\_=11
+% \end{macrocode}
+%
+% Make \verb+|+ and \verb+"+ be `short verb' characters, but not in
+% the document preamble, where an active character may interfere
+% with packages that are loaded.
+% \begin{macrocode}
\MakeShortVerb\"
\MakeShortVerb\|
+% \end{macrocode}
+%
+% As `doc' documents tend to have a lot of monospaced material,
+% Set up some |tt| substitutions to occur silently.
+% \begin{macrocode}
+\DeclareFontShape{OT1}{cmtt}{bx}{n}{<-> ssub * cmtt/m/n}{}
+\DeclareFontFamily{OMS}{cmtt}{\skewchar\font 48} % '60
+\DeclareFontShape{OMS}{cmtt}{m}{n}{<-> ssub * cmsy/m/n}{}
+\DeclareFontShape{OMS}{cmtt}{bx}{n}{<-> ssub * cmsy/b/n}{}
+% \end{macrocode}
+% This substitution is in the standard fd file, but not silent.
+% \begin{macrocode}
+\DeclareFontShape{OT1}{cmss}{m}{it}{<->ssub*cmss/m/sl}{}
+% \begin{macrocode}
+\CodelineNumbered
+\DisableCrossrefs
+% \end{macrocode}
+%
+% Increase the text width slightly so that width the standard fonts
+% 72 columns of code may appear in a |macrocode| environment.
+% \changes{v2.0c}{1994/03/15}{Set \cs{textwidth}.}
+% \begin{macrocode}
+\setlength{\textwidth}{355pt}
+% \end{macrocode}
+%
+% Increase the marginpar width slightly, for long command names.
+% And increase the left margin by a similar amount
+% \changes{v2.0l}
+% {1994/05/25}{Increase \cs{marginparwidth}}
+% \changes{v2.0q}{1995/11/28}
+% {Increase \cs{marginparwidth} and page margin.}
+% \begin{macrocode}
+\addtolength\marginparwidth{30pt}
+\addtolength\oddsidemargin{20pt}
+\addtolength\evensidemargin{20pt}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\setcounter{StandardModuleDepth}{1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand{\tn}[1]{{\ttfamily\bslash #1}%
+ \index{TeX and LaTeX2e commands\actualchar
+ \string\TeX{} and \string\LaTeXe{} commands:\levelchar
+ #1\actualchar{\string\ttfamily\string\bslash{}#1}}}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+% This command will be used to input the patch file
+% if that file exists.
+\newcommand{\includeltpatch}{%
+ \def\currentfile{l3patch.ltx}
+ \part{l3patch}
+ {\let\ttfamily\relax
+ \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
+ Things we did wrong\ldots
+ \IndexInput{l3patch.ltx}}
+
+% Get the date from ltvers.dtx
+\let\patchdate=\@empty
+\begingroup
+ %%\def\ProvidesFile#1\fmtversion#2{\date{#2}\endinput}
+ \def\ProvidesFile#1[#2 #3]{\date{#2}\endinput}
+ \input{l3vers.dtx}
+\global\let\X@date=\@date
+
+% Add the patch version if available.
+ \long\def\Xdef#1#2#3\def#4#5{%
+ \xdef\X@date{#2}%
+ \xdef\patchdate{#5}%
+ \endinput}%
+ \InputIfFileExists{l3patch.ltx}
+ {\let\def\Xdef}{\global\let\includeltpatch\relax}
+\endgroup
+
+\ifx\@date\X@date
+ \def\Xpatch{0}
+ \ifx\patchdate\Xpatch\else
+ \edef\@date{\@date\space Patch level \patchdate}
+ \fi
+\else
+ \@warning{l3patch.ltx does not match l3tvers.dtx!}
+ \let\includeltpatch\relax
+\fi
-\newcommand{\tn}[1]{{\tt\bslash #1}%
- \index{ \actualchar\string\TeX{} and \string\LaTeX2.09 commands:\levelchar
- #1\actualchar{\string\tt\string\bslash{}#1}}}
+\providecommand*\eTeX{%
+ \if b\expandafter\@car\f@series\@nil\boldmath\fi
+ $\m@th\varepsilon$-\TeX}
+\providecommand*\file{\texttt}
\def\vindex#1>#2\@nil{%
@@ -39,28 +216,46 @@
\ifx\temp\space\else
\expandafter\SpecialMainIndexB\expandafter{\temp}\fi}
-% Cant remember why I switched from \SpecialMainIndexB
-\gdef\SpecialMainIndexB#1{\index{\@gobble#1\space\actualchar{\string\verb+#1+}}}
-
% remove <foo> from index (quick hack, could be better)
\def\foo#1<#2>#3\@nil{%
#1\ifx\foo#3\foo
\else#2\expandafter\foo\fi#3\@nil}
-\def\foo#1<#2>#3\@nil{#1<#2>#3}
+%\def\foo#1<#2>#3\@nil{#1<#2>#3}
+\def\foo#1<#2>#3\@nil{#1}
+
+% Cant remember why I switched from \SpecialMainIndexB
+%%\gdef\SpecialMainIndexB#1{\index{\@gobble#1\space\actualchar{\string\verb+#1+}}}
+
+\gdef\SpecialMainIndexB#1{\index{\@gobble#1\actualchar\string\verb
+ \quotechar*\verbatimchar#1\verbatimchar\encapchar usage}}
+
+% A helper for later on.
+\def\q@nil{\q@nil}
+\long\def\tlist@if@blank@p@n #1{%
+ \expandafter\tlist@if@blank@p@aux@w\detokenize{#1}aa..\q@nil}
+\def\tlist@if@blank@p@aux@w #1#2a#3#4\q@nil{%
+ \ifx #3#400\else01\fi}
+
\let\m\meta
\newenvironment{texnote}%
- {\endgraf\vspace{3mm}{\bf \TeX{}hackers~ note:}\small}
+ {\endgraf\vspace{3mm}\textbf{\TeX{}hackers~note:}\small}
{\vspace{3mm}}
% stick the function names in a box.
{\catcode`\|=\active\catcode`\<=\active
+
+
% index fuction lists (could be better...)
-\gdef\funcindex#1 |{%
- \def\yyy{#1}%
- \ifx\yyy\empty\else
- \expandafter\vindex\meaning\yyy\@nil
- \expandafter\funcindex\fi}
+\gdef\funcindex#1|{%
+ \if\tlist@if@blank@p@n{#1}%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\@ifnextchar|{\@gobble}{}}% at the end, look for extra | and remove it
+ {\def\yyy{#1}\expandafter\vindex\meaning\yyy\@nil \funcindex}%
+}
\gdef\function{%
\catcode`\<=\active\def<##1>{\meta{##1}}%
@@ -75,13 +270,13 @@
\@function}
\gdef\@function#1{%
\ifx\@function#1\@function\else
- \funcindex#1 | |%
+ \funcindex#1| |%
\fi
- \tt
+ \ttfamily
\endgraf
\noindent\hspace*{-2\parindent}%
\tabular[b]%
- {@{\vline\hskip\tabcolsep}l@{\hskip\tabcolsep\vline}}
+ {@{\vline\hskip\tabcolsep}l@{\hskip\tabcolsep\vline}}%
\hline
#1\crcr
\hline
@@ -117,3 +312,103 @@
\setlength{\itemindent}{0pt}
\setlength{\parskip}{\medskipamount}
+% \section{DocInclude}
+%
+% \begin{macrocode}
+\@addtoreset{CodelineNo}{part}
+% \end{macrocode}
+%
+% \begin{macro}{\DocInclude}
+% More or less exactly the same as |\include|, but uses |\DocInput|
+% on a |dtx| file, not |\input| on a |tex| file.
+% \changes{v2.0b}{1994/03/14}{Rename from \cs{docinclude}}
+% \changes{v2.0f}{1994/03/25}{Use \cs{part}}
+% \changes{v2.0u}{1999/08/08}{Also works for .fdd (M. Schroeder)}
+% \begin{macrocode}
+\def\partname{File}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*{\DocInclude}[1]{%
+ \relax
+ \clearpage
+ \docincludeaux
+ \IfFileExists{#1.fdd}{\def\currentfile{#1.fdd}}{\def\currentfile{#1.dtx}}%
+ \ifnum\@auxout=\@partaux
+ \@latexerr{\string\include\space cannot be nested}\@eha
+ \else \@docinclude#1 \fi}
+\def\@docinclude#1 {\clearpage
+\if@filesw \immediate\write\@mainaux{\string\@input{#1.aux}}\fi
+\@tempswatrue\if@partsw \@tempswafalse\edef\@tempb{#1}\@for
+\@tempa:=\@partlist\do{\ifx\@tempa\@tempb\@tempswatrue\fi}\fi
+\if@tempswa \let\@auxout\@partaux \if@filesw
+\immediate\openout\@partaux #1.aux
+\immediate\write\@partaux{\relax}\fi
+% \end{macrocode}
+% We need to save (and later restore) various index-related
+% commands which might be changed by the included file.
+% \begin{macrocode}
+\let\@ltxdoc@PrintIndex\PrintIndex
+\let\PrintIndex\relax
+\let\@ltxdoc@PrintChanges\PrintChanges
+\let\PrintChanges\relax
+\let\@ltxdoc@theglossary\theglossary
+\let\@ltxdoc@endtheglossary\endtheglossary
+\part{\currentfile}%
+ {\let\ttfamily\relax
+ \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}%
+\DocInput{\currentfile}%
+\let\PrintIndex\@ltxdoc@PrintIndex
+\let\PrintChanges\@ltxdoc@PrintChanges
+\let\theglossary\@ltxdoc@theglossary
+\let\endtheglossary\@ltxdoc@endtheglossary
+\clearpage
+\@writeckpt{#1}\if@filesw \immediate\closeout\@partaux \fi
+\else\@nameuse{cp@#1}\fi\let\@auxout\@mainaux}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\gdef\codeline@wrindex#1{\if@filesw
+ \immediate\write\@indexfile
+ {\string\indexentry{#1}%
+ {\filesep\number\c@CodelineNo}}\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\let\filesep\@empty
+% \end{macrocode}
+%
+% \begin{macro}{\docincludeaux}
+% \changes{v2.06}{1994/03/31}{Use \cs{footnotesize} in file key.}
+% \changes{v2.0k}{1994/05/21}{Use \cs{aalph}}
+% \begin{macrocode}
+\def\docincludeaux{%
+ \def\thepart{\aalph{part}}\def\filesep{\thepart-}%
+ \let\filekey\@gobble
+ \g@addto@macro\index@prologue{%
+ \gdef\@oddfoot{\parbox{\textwidth}{\strut\footnotesize
+ \raggedright{\bfseries File Key:} \filekey}}%
+ \let\@evenfoot\@oddfoot}%
+ \global\let\docincludeaux\relax
+ \gdef\@oddfoot{%
+ \expandafter\ifx\csname ver@\currentfile\endcsname\relax
+ File \thepart: {\ttfamily\currentfile} %
+ \else
+ \GetFileInfo{\currentfile}%
+ File \thepart: {\ttfamily\filename} %
+ Date: \filedate\ %
+ Version \fileversion
+ \fi
+ \hfill\thepage}%
+ \let\@evenfoot\@oddfoot}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+\def\task#1#2{}
+%</class>
+% \end{macrocode}
+% \Finale
+%
diff --git a/Master/texmf-dist/tex/latex/expl3/l3expan.sty b/Master/texmf-dist/tex/latex/expl3/l3expan.sty
index 3632bb179d1..f6e65f0ade6 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3expan.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3expan.sty
@@ -15,28 +15,68 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3expan.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3expan}
- [1998/04/20 v1.0e L3 Experimental Argument Expansion module]
-\RequirePackage{l3basics}
+%% File: l3expan.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3expan.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental Argument Expansion module}
\RequirePackage{l3tlp}
\tlp_new:Nn\l_exp_tlp{}
-\def_new:Npn\exp_arg_next:nnn#1#2#3{%
- #2\:::{#3#1}}
-\def_new:Npn\::n#1\:::#2#3{%
- #1\:::{#2{#3}}}
-\def_new:Npn\::N#1\:::#2#3{%
- #1\:::{#2#3}}
-\def_new:Npn\::c#1\:::#2#3{%
- \exp_after:NN\exp_arg_next:nnn\cs:w #3\cs_end:{#1}{#2}}
-\def_new:Npn\::o#1\:::#2#3{%
- \exp_after:NN\exp_arg_next:nnn\exp_after:NN{\exp_after:NN{#3}}{#1}{#2}}
-\def_new:Npn\::x#1\:::#2#3{%
- \tlp_set:Nx\l_exp_tlp{{{#3}}}%
+\def_new:Npn\exp_arg_next:nnn#1#2#3{
+ #2\:::{#3#1}
+}
+\def_new:Npn\::n#1\:::#2#3{
+ #1\:::{#2{#3}}
+}
+\def_new:Npn\::N#1\:::#2#3{
+ #1\:::{#2#3}
+}
+\def_new:Npn\::c#1\:::#2#3{
+ \exp_after:NN\exp_arg_next:nnn\cs:w #3\cs_end:{#1}{#2}
+}
+\def_new:Npn\::o#1\:::#2#3{
+ \exp_after:NN\exp_arg_next:nnn\exp_after:NN{\exp_after:NN{#3}}{#1}{#2}
+}
+\def_new:Npn\::f#1\:::#2#3{
+ \exp_after:NN\exp_arg_next:nnn
+ \exp_after:NN{\exp_after:NN{\int_to_roman:w -`0 #3}}
+ {#1}{#2}
+}
+\def_new:Npn\::x#1\:::#2#3{
+ \tlp_set:Nx\l_exp_tlp{{{#3}}}
\exp_after:NN\exp_arg_next:nnn\l_exp_tlp{#1}{#2}}
\def_new:Npn\:::#1{#1}
-\def_new:Npn\::C#1\:::#2#3{%
+\def_new:Npn\::C#1\:::#2#3{
\exp_after:NN\exp_C_aux:nnn\cs:w #3\cs_end:{#1}{#2}}
\def_new:Npn\exp_C_aux:nnn #1
{
@@ -48,10 +88,39 @@
{#1}
}
}
+\def:Npn\::E#1\:::#2#3{
+ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2}
+}
+\def:Npn\::e#1\:::#2#3{
+ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2}
+}
+\def:Npn\::d#1\:::#2#3{
+ \exp_after:NN\exp_after:NN\exp_after:NN\exp_arg_next:nnn
+ \exp_after:NN\exp_after:NN\exp_after:NN{
+ \exp_after:NN\exp_after:NN\exp_after:NN{#3}}{#1}{#2}
+}
+\let:NN \exp_args:NE \exp_after:NN
+\def:Npn \exp_args:NNE #1{\exp_args:NE#1\exp_args:NE}
+\def:Npn \exp_args:NNNE #1#2{\exp_args:NE#1\exp_args:NE#2\exp_args:NE}
+\def:Npn \exp_args:NEE #1{\exp_args:NE\exp_args:NE\exp_args:NE#1\exp_args:NE}
+\def:Npn \exp_args:NcE #1#2{\exp_after:NN #1\cs:w #2\exp_after:NN\cs_end:}
+\def:Npn \exp_args:Nd {\::d\:::}
+\def:Npn \exp_args:NNd {\::N\::d\:::}
\def:Npn \exp_args:NC {\::C\:::}
+\def:Npn \exp_args:Ncx {\::c\::x\:::}
+\def:Npn \exp_args:Ncco {\::c\::c\::o\:::}
\def:Npn \exp_args:Nccx {\::c\::c\::x\:::}
\def:Npn \exp_args:Ncnx {\::c\::n\::x\:::}
+\def:Npn \exp_args:NcNc {\::c\::N\::c\:::}
+\def:Npn \exp_args:NcNo {\::c\::N\::o\:::}
+\def:Npn \exp_args:Ncco {\::c\::c\::o\:::}
+\def:Npn \exp_args:Nf {\::f\:::}
+\def:Npn \exp_args:NNf {\::N\::f\:::}
+\def:Npn \exp_args:Nfo{\::f\::o\:::}
+\def:Npn \exp_args:Nnf {\::n\::f\:::}
\def:Npn \exp_args:NNno {\::N\::n\::o\:::}
+%% Strange one this next one...
+\def:Npn \exp_args:NnnN {\::n\::n\::N\:::}
\def:Npn \exp_args:Nnno {\::n\::n\::o\:::}
\def:Npn \exp_args:Nnnx {\::n\::n\::x\:::}
\def:Npn \exp_args:Nno {\::n\::o\:::}
@@ -64,7 +133,10 @@
\def:Npn \exp_args:Nx {\::x\:::}
\def:Npn \exp_args:Nxo {\::x\::o\:::}
\def:Npn \exp_args:Nxx {\::x\::x\:::}
-\def_new:Npn\exp_not:o{\exp_after:NN\exp_not:N}
+\def:Npn \exp_args:NNC {\::N\::C\:::}
+\def:Npn \exp_args:Nnnc {\::n\::n\::c\:::}
+\def_new:Npn\exp_not:o#1{\exp_not:n\exp_after:NN{#1}}
+\def_new:Npn\exp_not:E{\exp_after:NN\exp_not:N}
\def_new:Npn\exp_not:c#1{\exp_after:NN\exp_not:N\cs:w#1\cs_end:}
\def_new:Npn \exp_args:No #1#2{\exp_after:NN#1\exp_after:NN{#2}}
\def_new:Npn \exp_args:NOo #1#2#3{\exp_after:NN\exp_args:No \exp_after:NN#1
@@ -73,6 +145,8 @@
\exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}}
\def_new:Npn \exp_args:NNo #1#2#3{\exp_after:NN#1\exp_after:NN#2
\exp_after:NN{#3}}
+\def_new:Npn \exp_args:NNO #1#2#3 {\exp_after:NN#1
+ \exp_after:NN#2 #3}
\def_new:Npn \exp_args:NNOo #1#2#3#4{\exp_after:NN\exp_args:NNo
\exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}}
\def_new:Npn \exp_args:NNNo #1#2#3#4{\exp_after:NN#1\exp_after:NN#2
@@ -106,20 +180,18 @@
#1:#2
\cs_end:
}
- \cs_free:cT
+ \cs_if_free:cT
{exp_args:N#3}
{\def:cpx {exp_args:N#3}
{\exp_args_form_x:w #3 :}
}
}
\def_new:Npn\exp_args_form_x:w #1 {
- \exp_after:NN \exp_not:N \cs:w ::#1 \cs_end:
+ \exp_not:c{::#1}
\if_meaning:NN #1 :
\else:
\exp_after:NN\exp_args_form_x:w
\fi:}
-
-
%%
%%
%% End of file `l3expan.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3int.sty b/Master/texmf-dist/tex/latex/expl3/l3int.sty
index e745beceb25..cbbfa2e9590 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3int.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3int.sty
@@ -15,14 +15,49 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3int.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3int}
- [1998/04/20 v1.0c L3 Experimental Integer module]
-\RequirePackage{l3basics}\par
-\def_new:Npn \int_incr:N #1{\tex_advance:D#1\c_one
+%% File: l3int.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3int.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental Integer module}
+
+\RequirePackage{l3num}
+\let_new:NN \int_to_roman:w \tex_romannumeral:D
+\let_new:NN \int_to_number:w \tex_number:D
+\let_new:NN \int_advance:w \tex_advance:D
+\def_new:Npn \int_incr:N #1{\int_advance:w#1\c_one
}
-\def_new:Npn \int_decr:N #1{\tex_advance:D#1\c_minus_one
+\def_new:Npn \int_decr:N #1{\int_advance:w#1\c_minus_one
}
\def_new:Npn \int_gincr:N {
\pref_global:D
@@ -34,22 +69,25 @@
\def:Npn \int_decr:N #1{\int_add:Nn#1\c_minus_one}
\def:Npn \int_gincr:N #1{\int_gadd:Nn#1\c_one}
\def:Npn \int_gdecr:N #1{\int_gadd:Nn#1\c_minus_one}
-\def_new:Npn \int_new:N {} % but since we don't distribute
-\let:NN \int_new:N \newcount % allocation better nick the LaTeX one ...
+\let:NN \int_new:N \newcount% allocation better nick the LaTeX one...
\def_new:Npn \int_new:c {\exp_args:Nc \int_new:N}
-\def_new:Npn \int_set:Nn #1#2{#1#2\scan_stop:
+\def_new:Npn \int_set:Nn #1#2{#1 \int_eval:w #2\scan_stop:
}
\def_new:Npn \int_gset:Nn {
\pref_global:D
\int_set:Nn }
\def_new:Npn \int_set:cn {\exp_args:Nc \int_set:Nn }
\def_new:Npn \int_gset:cn {\exp_args:Nc \int_gset:Nn }
+\def_new:Npn \int_zero:N #1 {#1=\c_zero}
+\def_new:Npn \int_zero:c #1 {\exp_args:Nc \int_zero:N}
+\def_new:Npn \int_gzero:N #1 {\pref_global:D #1=\c_zero}
+\def_new:Npn \int_gzero:c {\exp_args:Nc \int_gzero:N}
\def_new:Npn \int_add:Nn #1#2{
- \tex_advance:D#1#2\scan_stop:
+ \int_advance:w #1 by \int_eval:w #2\scan_stop:
}
\def_new:Npn\int_add:cn{\exp_args:Nc\int_add:Nn}
\def_new:Npn \int_sub:Nn #1#2{
- \tex_advance:D#1-#2\scan_stop:
+ \int_advance:w #1-\int_eval:w #2\scan_stop:
}
\def_new:Npn \int_gadd:Nn {
\pref_global:D
@@ -59,68 +97,258 @@
\int_sub:Nn }
\let_new:NN \int_use:N \tex_the:D
\def_new:Npn \int_use:c #1{\int_use:N \cs:w#1\cs_end:}
-
\def_new:Npn \int_gincr:c {\exp_args:Nc \int_gincr:N}
\def_new:Npn \int_gdecr:c {\exp_args:Nc \int_gdecr:N}
-\chk_new_cs:N \l_tmpa_int
-\tex_countdef:D\l_tmpa_int 255
+\def_new:Npn \int_to_arabic:n #1{\int_to_number:w \int_eval:n{#1}}
+\def_new:Npn \int_roman_lcuc_mapping:Nnn #1#2#3{
+ \def:cpn {int_to_lc_roman_#1:}{#2}
+ \def:cpn {int_to_uc_roman_#1:}{#3}
+}
+\int_roman_lcuc_mapping:Nnn i i I
+\int_roman_lcuc_mapping:Nnn v v V
+\int_roman_lcuc_mapping:Nnn x x X
+\int_roman_lcuc_mapping:Nnn l l L
+\int_roman_lcuc_mapping:Nnn c c C
+\int_roman_lcuc_mapping:Nnn d d D
+\int_roman_lcuc_mapping:Nnn m m M
+\int_roman_lcuc_mapping:Nnn Q \use_none:nn \use_none:nn
+\def_new:Npn \int_to_roman:n #1 {
+ \exp_after:NN \int_to_roman_lcuc:NN \exp_after:NN l
+ \int_to_roman:w \int_eval:n {#1} Q
+}
+\def_new:Npn \int_to_Roman:n #1 {
+ \exp_after:NN \int_to_roman_lcuc:NN \exp_after:NN u
+ \int_to_roman:w \int_eval:n {#1} Q
+}
+\def_new:Npn \int_to_roman_lcuc:NN #1#2{
+ \cs_use:c {int_to_#1c_roman_#2:}
+ \int_to_roman_lcuc:NN #1
+}
+\def:Npn \int_convert_number_with_rule:nnN #1#2#3{
+ \int_compare:nNnTF {#1}>{#2}
+ {
+ \exp_args:No \int_convert_number_with_rule:nnN
+ { \int_use:N\int_div_truncate:nn {#1-1}{#2} }{#2}
+ #3
+ \exp_args:No #3 { \int_use:N\int_eval:n{1+\int_mod:nn {#1-1}{#2}} }
+ }
+ { \exp_args:No #3{ \int_use:N\int_eval:n{#1} } }
+}
+\def_new:Npn \int_alph_default_conversion_rule:n #1{
+ \if_case:w #1
+ \or: a\or: b\or: c\or: d\or: e\or: f
+ \or: g\or: h\or: i\or: j\or: k\or: l
+ \or: m\or: n\or: o\or: p\or: q\or: r
+ \or: s\or: t\or: u\or: v\or: w\or: x
+ \or: y\or: z
+ \fi:
+}
+\def_new:Npn \int_Alph_default_conversion_rule:n #1{
+ \if_case:w #1
+ \or: A\or: B\or: C\or: D\or: E\or: F
+ \or: G\or: H\or: I\or: J\or: K\or: L
+ \or: M\or: N\or: O\or: P\or: Q\or: R
+ \or: S\or: T\or: U\or: V\or: W\or: X
+ \or: Y\or: Z
+ \fi:
+}
+\def_new:Npn \int_to_alph:n #1{
+ \int_convert_number_with_rule:nnN {#1}{26}
+ \int_alph_default_conversion_rule:n
+}
+\def_new:Npn \int_to_Alph:n #1{
+ \int_convert_number_with_rule:nnN {#1}{26}
+ \int_Alph_default_conversion_rule:n
+}
+\def_new:Npn \int_to_symbol:n #1{
+ \mode_math:TF
+ {
+ \int_convert_number_with_rule:nnN {#1}{9}
+ \int_symbol_math_conversion_rule:n
+ }
+ {
+ \int_convert_number_with_rule:nnN {#1}{9}
+ \int_symbol_text_conversion_rule:n
+ }
+}
+\def_new:Npn \int_symbol_math_conversion_rule:n #1 {
+ \if_case:w #1
+ \or: *
+ \or: \dagger
+ \or: \ddagger
+ \or: \mathsection
+ \or: \mathparagraph
+ \or: \|
+ \or: **
+ \or: \dagger\dagger
+ \or: \ddagger\ddagger
+ \fi:
+}
+\def_new:Npn \int_symbol_text_conversion_rule:n #1 {
+ \if_case:w #1
+ \or: \textasteriskcentered
+ \or: \textdagger
+ \or: \textdaggerdbl
+ \or: \textsection
+ \or: \textparagraph
+ \or: \textbardbl
+ \or: \textasteriskcentered\textasteriskcentered
+ \or: \textdagger\textdagger
+ \or: \textdaggerdbl\textdaggerdbl
+ \fi:
+}
+\int_new:N \l_tmpa_int
\int_new:N \l_tmpb_int
\int_new:N \l_tmpc_int
\int_new:N \g_tmpa_int
\int_new:N \g_tmpb_int
-\tex_chardef:D \c_zero = 0 \scan_stop:
-\tex_chardef:D \c_one = 1 \scan_stop:
-\tex_chardef:D \c_two = 2 \scan_stop:
-\tex_chardef:D \c_three = 3 \scan_stop:
-\tex_chardef:D \c_four = 4 \scan_stop:
-\tex_chardef:D \c_sixteen = 16 \scan_stop:
-\tex_chardef:D \c_thirty_two = 32 \scan_stop:
-\tex_chardef:D \c_twohundred_fifty_five = 255 \scan_stop:
-\tex_mathchardef:D \c_twohundred_fifty_six = 256 \scan_stop:
-\tex_mathchardef:D \c_thousand = 1000 \scan_stop:
-\tex_mathchardef:D \c_ten_thousand = 10000 \scan_stop:
-\tex_mathchardef:D \c_ten_thousand_one = 10001 \scan_stop:
-\tex_mathchardef:D \c_ten_thousand_two = 10002 \scan_stop:
-\tex_mathchardef:D \c_ten_thousand_three = 10003 \scan_stop:
-\tex_mathchardef:D \c_ten_thousand_four = 10004 \scan_stop:
-\tex_mathchardef:D \c_twenty_thousand = 20000 \scan_stop:
-\let_new:NN \fint_new:N \newmuskip % nicked from LaTeX
-\def_new:Npn \fint_use:N {\exp_after:NN\fint_use_aux:w\the_internal:D}
-\tex_lccode:D`\!=`\m \tex_lccode:D`\?=`\u
-\tex_lowercase:D{\def_new:Npn \fint_use_aux:w #1.0!?{#1}}
-\tex_lccode:D`\!=0\scan_stop: \tex_lccode:D`\?=0\scan_stop:
-\def_new:Npn \fint_set:Nn #1#2{#1#2~mu\scan_stop:
-}
-\def_new:Npn \fint_gset:Nn{
- \pref_global:D
- \fint_set:Nn}
-\def_new:Npn \fint_set_eq:NN #1#2{#1#2
+\int_new:N \l_loop_int % a variable for use in loops (whilenum etc)
+\let_new:NN \int_eval:n \num_eval:n
+\let_new:NN \int_eval:w \num_eval:w
+\const_new:Nn \c_max_int {2147483647}
+\def:Npn \int_pre_eval_one_arg:Nnn #1#2{\exp_args:No#1{\int_eval:w#2}}
+\def:Npn \int_pre_eval_two_args:Nnn #1#2#3{
+ \exp_args:Noo#1{\int_use:N\int_eval:w#2}{\int_use:N\int_eval:w#3}
}
-\def_new:Npn \fint_gset_eq:NN {
- \pref_global:D
- \fint_set_eq:NN}
-\def_new:Npn \fint_add:Nn #1#2{\int_add:Nn#1{#2mu}}
-\def_new:Npn \fint_gadd:Nn {
- \pref_global:D
- \fint_add:Nn}
-\def_new:Npn \fint_sub:Nn #1#2{\int_sub:Nn#1{#2mu}}
-\def_new:Npn \fint_gsub:Nn {
- \pref_global:D
- \fint_sub:Nn}
-\def_new:Npn \fint_incr:N #1{\advance:D#1\c_one mu\scan_stop:
+\def_new:Npn \int_div_truncate:nn {
+ \int_pre_eval_two_args:Nnn\int_div_truncate_raw:nn
}
-\def_new:Npn \fint_decr:N #1{\advance:D#1\c_minus_one mu\scan_stop:
+\def_new:Npn \int_div_truncate_raw:nn #1#2 {
+ \int_eval:n{ (2*#1 - #2) / (2* #2) }
+}
+\def_new:Npn \int_div_round:nn {
+ \int_pre_eval_two_args:Nnn\int_div_round_raw:nn
+}
+\def_new:Npn \int_div_round_raw:nn #1#2 {\int_eval:n{#1/#2}}
+\def_new:Npn \int_mod:nn {\int_pre_eval_two_args:Nnn\int_mod_raw:nn}
+\def_new:Npn \int_mod_raw:nn #1#2 {
+ \int_eval:n{ #1 - \int_div_truncate_raw:nn {#1}{#2} * #2 }
+}
+\let_new:NN \int_compare:nNnTF \num_compare:nNnTF
+\let_new:NN \int_compare:nNnT \num_compare:nNnT
+\let_new:NN \int_compare:nNnF \num_compare:nNnF
+\let_new:NN \int_compare_p:nNn \num_compare_p:nNn
+\def_new:Npn \int_if_odd_p:n #1 {
+ \if_num_odd:w \int_eval:n{#1}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {int_if_odd:n}#1{\if_num_odd:w \int_eval:n{#1}}
+\def_new:Npn \int_whiledo:nNnT #1#2#3#4{
+ \int_compare:nNnT {#1}#2{#3}{#4 \int_whiledo:nNnT {#1}#2{#3}{#4}}
+}
+\def_new:Npn \int_whiledo:nNnF #1#2#3#4{
+ \int_compare:nNnF {#1}#2{#3}{#4 \int_whiledo:nNnF {#1}#2{#3}{#4}}
+}
+\def_new:Npn \int_dowhile:nNnT #1#2#3#4{
+ #4 \int_compare:nNnT {#1}#2{#3}{\int_dowhile:nNnT {#1}#2{#3}{#4}}
+}
+\def_new:Npn \int_dowhile:nNnF #1#2#3#4{
+ #4 \int_compare:nNnF {#1}#2{#3}{\int_dowhile:nNnF {#1}#2{#3}{#4}}
+}
+\def_new:Npn \int_get_sign_and_digits:n #1{
+ \int_get_sign_and_digits_aux:nNNN {#1} \c_true \c_true \c_true
+}
+\def_new:Npn \int_get_sign:n #1{
+ \int_get_sign_and_digits_aux:nNNN {#1} \c_true \c_true \c_false
+}
+\def_new:Npn \int_get_digits:n #1{
+ \int_get_sign_and_digits_aux:nNNN {#1} \c_true \c_false \c_true
+}
+\def_new:Npn \int_get_sign_and_digits_aux:nNNN #1#2#3#4{
+ \tlist_if_head_eq_charcode:fNTF {#1} -
+ {
+ \bool_if:NTF #2
+ { \int_get_sign_and_digits_aux:oNNN {\use_none:n #1} \c_false #3#4 }
+ { \int_get_sign_and_digits_aux:oNNN {\use_none:n #1} \c_true #3#4 }
+ }
+ {
+ \tlist_if_head_eq_charcode:fNTF {#1} +
+ { \int_get_sign_and_digits_aux:oNNN {\use_none:n #1} #2#3#4}
+ {
+ \bool_double_if:NNnnnn #3#4
+ { \bool_if:NF #2 - #1 }
+ { \bool_if:NF #2 - }
+ { #1 } { }
+ }
+ }
+}
+\def_new:Npn \int_get_sign_and_digits_aux:oNNN{
+ \exp_args:No\int_get_sign_and_digits_aux:nNNN
+}
+\def:Npn \int_convert_from_base_ten:nn#1#2{
+ \num_compare:nNnTF {#1}<\c_zero
+ {
+ - \int_convert_from_base_ten_aux:non {}
+ { \int_use:N \int_eval:n {-#1} }
+ }
+ {
+ \int_convert_from_base_ten_aux:non {}
+ { \int_use:N \int_eval:n {#1} }
+ }
+ {#2}
+}
+\def_new:Npn \int_convert_from_base_ten_aux:nnn#1#2#3{
+ \num_compare:nNnTF {#2}<{#3}
+ { \int_convert_number_to_letter:n{#2} #1 }
+ {
+ \int_convert_from_base_ten_aux:fon
+ {
+ \int_convert_number_to_letter:n {\int_use:N\int_mod_raw:nn {#2}{#3}}
+ #1
+ }
+ {\int_use:N \int_div_truncate_raw:nn{#2}{#3}}
+ {#3}
+ }
+}
+\def:Npn \int_convert_from_base_ten_aux:non{
+ \exp_args:Nno\int_convert_from_base_ten_aux:nnn
+}
+\def:Npn \int_convert_from_base_ten_aux:fon{
+ \exp_args:Nfo\int_convert_from_base_ten_aux:nnn
+}
+\def:Npn \int_convert_number_to_letter:n #1{ \if_case:w \int_eval:w
+ #1-10\scan_stop: \exp_after:NN A \or: \exp_after:NN B \or:
+ \exp_after:NN C \or: \exp_after:NN D \or: \exp_after:NN E \or:
+ \exp_after:NN F \or: \exp_after:NN G \or: \exp_after:NN H \or:
+ \exp_after:NN I \or: \exp_after:NN J \or: \exp_after:NN K \or:
+ \exp_after:NN L \or: \exp_after:NN M \or: \exp_after:NN N \or:
+ \exp_after:NN O \or: \exp_after:NN P \or: \exp_after:NN Q \or:
+ \exp_after:NN R \or: \exp_after:NN S \or: \exp_after:NN T \or:
+ \exp_after:NN U \or: \exp_after:NN V \or: \exp_after:NN W \or:
+ \exp_after:NN X \or: \exp_after:NN Y \or: \exp_after:NN Z \else:
+ \use_arg_i_after_fi:nw{ #1 }\fi: }
+\def:Npn \int_convert_to_base_ten:nn #1#2 {
+ \int_use:N\int_eval:n{
+ \int_get_sign:n{#1}
+ \exp_args:Nf\int_convert_to_base_ten_aux:nn {\int_get_digits:n{#1}}{#2}
+ }
+}
+\def_new:Npn \int_convert_to_base_ten_aux:nn #1#2{
+ \int_convert_to_base_ten_auxi:nnN {0}{#2} #1 \q_nil
+}
+\def_new:Npn \int_convert_to_base_ten_auxi:nnN#1#2#3{
+ \quark_if_nil:NTF #3
+ {#1}
+ {\exp_args:No\int_convert_to_base_ten_auxi:nnN
+ {\int_use:N \int_eval:n{ #1*#2+\int_convert_letter_to_number:N #3} }
+ {#2}
+ }
+}
+\def:Npn \int_convert_letter_to_number:N #1{
+ \int_compare:nNnTF{`#1}<{58}{#1}
+ {
+ \int_eval:n{ `#1 -
+ \if:w\int_compare_p:nNn{`#1}<{91}
+ 55
+ \else:
+ 87
+ \fi:
+ }
+ }
}
-\def_new:Npn \fint_gincr:N {
- \pref_global:D
- \fint_incr:N}
-\def_new:Npn \fint_gdecr:N {
- \pref_global:D
- \fint_decr:N}
-\def:Npn \fint_incr:N #1{\fint_add:Nn#1\c_one}
-\def:Npn \fint_decr:N #1{\fint_add:Nn#1\c_minus_one}
-\tex_mathchardef:D\c_fint_max=16383 \scan_stop:
-
%%
%%
%% End of file `l3int.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3io.sty b/Master/texmf-dist/tex/latex/expl3/l3io.sty
index 3e9d643dda6..d20b5d05f85 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3io.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3io.sty
@@ -15,12 +15,42 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3io.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3io}
- [1998/04/20 v1.0c L3 Experimental i/o module]
+%% File: l3io.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3io.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental i/o module}
\RequirePackage{l3toks}\par
-\def_new:Npn \iow_new:N {}
\let:NN \iow_new:N \newwrite
\def_new:Npn \iow_new:c {\exp_args:Nc \iow_new:N}
\def_new:Npn \iow_open:Nn #1#2{\iow_close:N #1
@@ -30,8 +60,8 @@
\let_new:NN \c_io_term_stream \c_sixteen
\let_new:NN \c_iow_log_stream \c_minus_one
\def_new:Npn \iow_expanded:Nn {\tex_immediate:D\iow_deferred_expanded:Nn}
-\def_new:Npn \iow_unexpanded:Nn #1#2{\toks_gset:Nn \g_tmpa_toks {#2}
- \iow_expanded:Nn #1{\toks_use:N \g_tmpa_toks}}
+\def_new:Npn \iow_unexpanded:Nn #1#2{
+ \iow_expanded:Nn #1{\exp_not:n{#2}}}
\def:Npn \iow_expanded_log:n {\iow_expanded:Nn \c_iow_log_stream}
\def:Npn \iow_expanded_term:n{\iow_expanded:Nn \c_io_term_stream}
@@ -41,38 +71,34 @@
\def_new:Npn \iow_unexpanded_if_avail:cn {
\exp_args:Nc \iow_unexpanded_if_avail:Nn }
\def_new:Npn \iow_long_expanded_aux:w #1#2#3{
- \group_begin:\g_iow_newline_code`\ #1#2{#3}\group_end:}
+ \group_begin:\tex_newlinechar:D`\ #1#2{#3}\group_end:}
\def_new:Npn \iow_long_expanded:Nn {\iow_long_expanded_aux:w
\iow_expanded:Nn}
\def_new:Npn \iow_long_unexpanded:Nn {\iow_long_expanded_aux:w
\iow_unexpanded:Nn}
\let:NN \iow_deferred_expanded:Nn \tex_write:D
\def_new:Npn \iow_deferred_unexpanded:Nn #1#2{
- \tlp_set:Nn \l_tmpa_tlp {#2}
- \tlp_set:Nx \l_tmpb_tlp
- {\iow_deferred_expanded:Nn #1{\tlp_to_str:N \l_tmpa_tlp}}
- \l_tmpb_tlp}
-\tex_catcode:D `\%= 12 \scan_stop:
-\tlp_new:Nn \c_iow_comment_char {%}
-\tex_catcode:D `\%= 14 \scan_stop:
-\tlp_new:Nn \c_iow_lbrace_char{}
-\tlp_new:Nn \c_iow_rbrace_char{}
-\def:Npx\c_iow_lbrace_char {\token_to_string:N{}
-\def:Npx\c_iow_rbrace_char {\token_to_string:N}}
-\def_new:Npn \ior_new:N {}
+ \iow_deferred_expanded:Nn{\exp_not:n{#2}}
+}
+%% Old implementation:
+\def_new:Npn \iow_newline: {^^J}
+\tlp_new:Nx \c_iow_comment_char {\cs_to_str:N\%}
+\tlp_new:Nx \c_iow_lbrace_char{\cs_to_str:N\{}
+\tlp_new:Nx \c_iow_rbrace_char{\cs_to_str:N\}}
\let:NN \ior_new:N \newread
+\let:NN \ior_close:N \tex_closein:D
\def_new:Npn \ior_open:Nn #1#2{\ior_close:N #1\scan_stop:
\tex_openin:D#1#2\scan_stop:}
\def_new:Npn \ior_eof:NTF #1{\if_eof:w#1
- \exp_after:NN\use_choice_i:nn \else:
- \exp_after:NN\use_choice_ii:nn \fi:}
+ \exp_after:NN\use_arg_i:nn \else:
+ \exp_after:NN\use_arg_ii:nn \fi:}
+\let:NN \if_eof:w \tex_ifeof:D
\def_new:Npn \ior_eof:NF #1{\if_eof:w#1
- \exp_after:NN \use_none:nn \fi: \use:n}
+ \exp_after:NN \use_none:nn \fi: \use_arg_i:n}
\def_new:Npn \ior_to:NN #1{\tex_read:D#1to}
\def_new:Npn \ior_gto:NN {
\pref_global:D
\ior_to:NN}
-
%%
%%
%% End of file `l3io.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3keyval.sty b/Master/texmf-dist/tex/latex/expl3/l3keyval.sty
new file mode 100644
index 00000000000..d5612e7e120
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3keyval.sty
@@ -0,0 +1,217 @@
+%%
+%% This is file `l3keyval.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3keyval.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3keyval.dtx Copyright (C) 2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3keyval.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental keyval processing}
+\RequirePackage{l3quark}
+\RequirePackage{l3toks}
+\RequirePackage{l3int}
+\RequirePackage{l3token}
+\tlp_new:Nn\l_KV_tmpa_tlp{}
+\tlp_new:Nn\l_KV_tmpb_tlp{}
+\tlp_new:Nn \c_KV_single_equal_sign_tlp{=}
+\toks_new:N \l_KV_parse_toks
+\toks_new:N \l_KV_currkey_toks
+\toks_new:N \l_KV_currval_toks
+\bool_new:N \l_KV_remove_one_level_of_braces_bool
+\bool_set_true:N \l_KV_remove_one_level_of_braces_bool
+\group_begin:
+\char_set_catcode:nn{`\=}{13}
+\char_set_catcode:nn{`\,}{13}
+\char_set_lccode:nn{`\8}{`\=}
+\char_set_lccode:nn{`\9}{`\,}
+\tlist_to_lowercase:n{\group_end:
+\def_new:Npn \KV_sanitize_outerlevel_active_equals:N #1{
+ \tlp_replace_all_in:Nnn #1 = 8
+}
+\def_new:Npn \KV_sanitize_outerlevel_active_commas:N #1{
+ \tlp_replace_all_in:Nnn #1 , 9
+}
+}
+\group_begin:
+\char_set_catcode:nn{`\Q}{3}
+\gdef_long_new:Npn\KV_remove_surrounding_spaces:nw#1#2\q_nil{
+ #1{\KV_remove_surrounding_spaces_auxi:w \exp_not:N#2Q~Q}
+}
+\gdef_long_new:Npn\KV_remove_surrounding_spaces_auxi:w#1~Q{
+ \KV_remove_surrounding_spaces_auxii:w #1 Q
+}
+\gdef_long_new:Npn\KV_remove_surrounding_spaces_auxii:w#1Q#2{#1}
+\gdef_long_new:Npn\KV_add_value_element:w\q_stop#1\q_nil{
+ \toks_set:Nf\l_KV_currval_toks {
+ \KV_remove_surrounding_spaces_auxi:w \exp_not:N#1Q~Q
+ }
+ \toks_put_right:No\l_KV_parse_toks{
+ \exp_after:NN {\toks_use:N \l_KV_currval_toks}
+ }
+}
+\gdef_long_new:Npn\KV_set_key_element:w#1\q_nil{
+ \toks_set:Nf\l_KV_currkey_toks
+ {
+ \exp_after:NN\KV_remove_surrounding_spaces_auxi:w
+ \exp_after:NN\exp_not:N\use_none:n #1Q~Q
+ }
+ \bool_if:NT \l_KV_remove_one_level_of_braces_bool
+ {
+ \toks_set:Nd \l_KV_currkey_toks{
+ \exp_after:NN \KV_add_element_aux:w
+ \toks_use:N \l_KV_currkey_toks \q_nil
+ }
+ }
+}
+\group_end:
+\def_long_new:Npn \KV_add_element_aux:w#1\q_nil{#1}
+\def_long_new:Npn \KV_parse_sanitize_aux:n #1{
+ \group_begin:
+ \toks_clear:N \l_KV_parse_toks
+ \tlp_set:Nx\l_KV_tmpa_tlp{\exp_not:n{#1}}
+ \KV_sanitize_outerlevel_active_equals:N\l_KV_tmpa_tlp
+ \KV_sanitize_outerlevel_active_commas:N\l_KV_tmpa_tlp
+ \exp_after:NN \KV_parse_elt:w \exp_after:NN\q_no_value \l_KV_tmpa_tlp,\q_nil,
+ \exp_after:NN\group_end:
+ \toks_use:N \l_KV_parse_toks
+}
+\def_long_new:Npn \KV_parse_no_sanitize_aux:n #1{
+ \group_begin:
+ \toks_clear:N \l_KV_parse_toks
+ \KV_parse_elt:w \q_no_value #1,\q_nil,
+ \exp_after:NN\group_end:
+ \toks_use:N \l_KV_parse_toks
+}
+\def_long:Npn \KV_parse_elt:w #1,{
+ \tlist_if_blank:oTF{\use_none:n #1}
+ { \KV_parse_elt:w \q_no_value }
+ {
+ \quark_if_nil:oF {\use_arg_ii:nn #1 }
+ {
+ \KV_split_key_value_current:w #1==\q_nil
+ \KV_parse_elt:w \q_no_value
+ }
+ }
+}
+\let_new:NN \KV_split_key_value_current:w \ERROR
+\def_long_new:Npn \KV_split_key_value_space_removal:w #1 = #2\q_nil{
+ \KV_set_key_element:w#1\q_nil
+ \tlp_set:Nx\l_KV_tmpa_tlp{\exp_not:n{#2}}
+ \tlp_if_eq:NNTF\l_KV_tmpa_tlp\c_KV_single_equal_sign_tlp
+ {
+ \toks_put_right:No\l_KV_parse_toks{
+ \exp_after:NN \KV_key_no_value_elt:n
+ \exp_after:NN {\toks_use:N\l_KV_currkey_toks}
+ }
+ }
+ {
+ \KV_split_key_value_space_removal_detect_error:wTF#2\q_no_value\q_nil
+ {\KV_split_key_value_space_removal_aux:w \q_stop #2}
+ {\ERROR}
+ }
+}
+\def_long_new:Npn
+ \KV_split_key_value_space_removal_detect_error:wTF#1=#2#3\q_nil{
+ \tlist_if_head_eq_meaning:nNTF{#3}\q_no_value
+}
+\def_long_new:Npn \KV_val_preserve_braces:NnN #1#2#3{{#2}}
+\def_long_new:Npn\KV_split_key_value_space_removal_aux:w #1=={
+ \tlp_set:Nx\l_KV_tmpa_tlp{\exp_not:o{\use_none:nnn#1\q_nil\q_nil}}
+ \toks_put_right:No\l_KV_parse_toks{
+ \exp_after:NN \KV_key_value_elt:nn
+ \exp_after:NN {\toks_use:N\l_KV_currkey_toks}
+ }
+ \tlp_if_empty:NTF\l_KV_tmpa_tlp
+ { \toks_put_right:Nn\l_KV_parse_toks{{}} }
+ {
+ \quark_if_nil:NTF\l_KV_tmpa_tlp
+ {
+ \bool_if:NTF \l_KV_remove_one_level_of_braces_bool
+ {
+ \toks_put_right:No\l_KV_parse_toks{
+ \exp_after:NN{\use_arg_ii:nnn #1\q_nil}
+ }
+ }
+ {
+ \toks_put_right:No\l_KV_parse_toks{
+ \exp_after:NN{\KV_val_preserve_braces:NnN #1\q_nil}
+ }
+ }
+ }
+ { \KV_add_value_element:w #1\q_nil }
+ }
+}
+\def_long_new:Npn \KV_split_key_value_no_space_removal:w #1#2=#3=#4\q_nil{
+ \tlp_set:Nn\l_KV_tmpa_tlp{#4}
+ \tlp_if_empty:NTF \l_KV_tmpa_tlp
+ {
+ \toks_put_right:Nn\l_KV_parse_toks{\KV_key_no_value_elt:n{#2}}
+ }
+ {
+ \tlp_if_eq:NNTF\c_KV_single_equal_sign_tlp\l_KV_tmpa_tlp
+ {
+ \toks_put_right:Nn\l_KV_parse_toks{\KV_key_value_elt:nn{#2}{#3}}
+ }
+ {\ERROR}
+ }
+}
+\def_long_new:Npn \KV_key_no_value_elt:n #1{\ERROR}
+\def_long_new:Npn \KV_key_value_elt:nn #1#2{\ERROR}
+\def_new:Npn \KV_parse_no_space_removal_no_sanitize:n {
+ \let:NN \KV_split_key_value_current:w \KV_split_key_value_no_space_removal:w
+ \KV_parse_no_sanitize_aux:n
+}
+\def_new:Npn \KV_parse_space_removal_sanitize:n {
+ \let:NN \KV_split_key_value_current:w \KV_split_key_value_space_removal:w
+ \KV_parse_sanitize_aux:n
+}
+\def_new:Npn \KV_parse_space_removal_no_sanitize:n {
+ \let:NN \KV_split_key_value_current:w \KV_split_key_value_space_removal:w
+ \KV_parse_no_sanitize_aux:n
+}
+%%
+%%
+%% End of file `l3keyval.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3messages.sty b/Master/texmf-dist/tex/latex/expl3/l3messages.sty
new file mode 100644
index 00000000000..aead4018e11
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3messages.sty
@@ -0,0 +1,313 @@
+%%
+%% This is file `l3messages.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3messages.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3messages.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\RequirePackage{l3basics}
+\RequirePackage{l3tlp}
+\RequirePackage{l3expan}
+\RequirePackage{l3num}
+\RequirePackage{l3io}
+\RequirePackage{l3int}
+\RequirePackage{l3toks}
+\GetIdInfo$Id: l3messages.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental LaTeX Messages module}
+\tlp_new:Nn \g_file_curr_name_tlp {no~file}
+\let_new:NN \err_message:x \tex_errmessage:D
+\def_new:Npn \text_put_sp: {~}
+\def_new:Npn \text_put_four_sp: {\text_put_sp: \text_put_sp:
+ \text_put_sp: \text_put_sp: }
+\def:Npn\cmd_arg_list_build#1{
+ \toks_clear:N\l_tmpb_toks
+ \int_set:Nn \l_tmpa_int {#1}
+ \int_while:nNnT \l_tmpa_int > \c_zero {
+ \toks_put_left:No \l_tmpb_toks {\the_internal:D\l_tmpa_int}
+ \toks_put_left:Nn \l_tmpb_toks {##}
+ \int_decr:N\l_tmpa_int
+ }
+ \def:Npx\l_cmd_arg_list{\the_internal:D\l_tmpb_toks}
+}
+\def:Npn\cmd_declare:Nnn#1[#2]{
+ \cmd_arg_list_build{#2}
+ \exp_args:NNO\def:Npn#1\l_cmd_arg_list
+}
+\def_new:Npn \io_show_file_lineno:{
+ on~line~\the_internal:D\tex_inputlineno:D\text_put_sp:~of~
+ file~\g_file_curr_name_tlp}
+\let:NwN \g_err_help_toks \tex_errhelp:D
+\def_new:Npn \l_err_label_token {}
+\int_set:Nn\tex_errorcontextlines:D\c_minus_one
+\def_new:Npn \err_info:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_log:x {#1~\io_show_file_lineno:}}
+\def_new:Npn \err_warn:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_term:x {#1~\io_show_file_lineno:}}
+\def_new:Npn \err_info_noline:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_log:x {#1}}
+\def_new:Npn \err_warn_noline:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_term:x {#1}}
+\def_new:Npn \err_interrupt:NNw #1#2{\let:NwN \l_err_label_token #2
+ \group_begin:
+ \let:NwN \par\use_noop:
+ \CodeStop
+ \NamesStart:
+ %\clearshortrefmaps
+ \tex_input:D #1~\err_display_aux:w}
+\def_new:Npn \err_fatal:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_term:x {#1~\io_show_file_lineno:}
+ \tex_end:D
+ }
+\def_new:Npn \err_fatal_noline:nn #1#2{
+ \def:Npn\err_newline:{\iow_newline#2}
+ \io_put_term:x {#1}
+ \tex_end:D
+ }
+\def_new:Npn \err_newline: {^^J}
+\iow_new:N \c_iow_err_stream
+\tlp_new:Nn \g_err_curr_fname{}
+\def_new:Npn \err_file_new:Nn #1#2{
+ \tlp_if_empty:NF\g_err_curr_fname
+ {\err_latex_bug:x{Unclosed~error~file~`\g_err_curr_fname'}}
+ \iow_open:Nn \c_iow_err_stream {#2}
+ \err_kernel_info:n{Errorfile~`#2'~opened~for~output}
+ \tlp_gset:Nn \g_err_curr_fname{#2}
+ \tlp_new:Nn #1{#2}}
+\def_new:Npn \err_file_close:N#1{
+ \tlp_if_eq:NNF#1\g_err_curr_fname
+ {\err_latex_bug:x{You~closed~the~wrong~error~file~`#1'.~
+ Open~is~`\g_err_curr_fname'.}}
+ \iow_long_unexpanded:Nn \c_iow_err_stream {\err_latex_bug:x{Didn't~find~the~
+ correct~error~message~to~show.\iow_newline
+ Was~searching~for~a~function~
+ with~the~following~meaning:\iow_newline
+ \token_to_string:N\token_to_meaning:N
+ \token_to_string:N\l_err_label_token}
+ \group_end:}
+ \iow_close:N \c_iow_err_stream
+ \err_kernel_info:n{Errorfile~`\g_err_curr_fname'~closed}
+ \tlp_gset_eq:NN\g_err_curr_fname\c_empty_tlp
+}
+\def_new:Npn \err_interrupt_new:NNNnnn #1{
+ \group_begin: \tex_catcode:D`\#\c_other_char_code
+ \if_meaning:NN#1\g_err_curr_fname
+ \else:
+ \err_latex_bug:x{Error~text~goes~to~wrong~err~file:~
+ `\g_err_curr_fname'~is~open~but~you~requested~
+ `#1'}
+ \fi:
+ \err_interrupt_new_aux:w}
+\def_long_new:Npn \err_interrupt_new_aux:w #1#2#3#4#5{
+ \iow_long_unexpanded:Nn \c_iow_err_stream
+ {\err_msgline_aux:NNnnn #1#2{#3}{#4}{#5}\use_noop:}
+ \group_end:}
+\def_new:Npn \err_msgline_aux:NNnnn #1#2#3#4#5{
+ \if_meaning:NN#1\l_err_label_token
+ \cmd_declare:Nnn\err_display_aux:w [#2]{
+ \group_end:
+ \toks_gset:Nx\g_err_help_toks{#4}
+ \io_put_term:x{LaTeX~error~\io_show_file_lineno:.\iow_newline
+ \text_put_sp:\text_put_four_sp: \text_put_sp:
+ See~LaTeX~manual~for~explanation.\iow_newline
+ \text_put_sp:\text_put_four_sp: \text_put_sp:
+ Type~\text_put_sp: H~<return>~\text_put_sp: for~
+ immediate~help.}
+ \err_message:x{#3}
+ #5}
+ \tex_endinput:D
+ \fi:}
+\def_new:Npn \err_display_aux:w {}
+\def_new:Npn \err_kernel_interrupt:Nw {\err_interrupt:NNw \c_kernel_err_tlp}
+\def_new:Npn \err_kernel_interrupt_new:NNnnn {
+ \err_interrupt_new:NNNnnn \c_kernel_err_tlp}
+\def_new:Npn \err_kernel_info:n #1 {
+ \err_info:nn {LaTeX~Info:~#1}
+ {\text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\def_new:Npn \err_kernel_warn:n #1 {
+ \err_warn:nn {LaTeX~Warning:~#1}
+ {\text_put_sp:\text_put_sp:\text_put_sp:
+ \text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\def_new:Npn \err_kernel_fatal:n #1 {
+ \err_fatal:nn {LaTeX~Fatal:~#1}
+ {\text_put_sp:
+ \text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\def_new:Npn \err_kernel_info_noline:n #1 {
+ \err_info_noline:nn {LaTeX~Info:~#1}
+ {\text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\def_new:Npn \err_kernel_warn_noline:n #1 {
+ \err_warn_noline:nn {LaTeX~Warning:~#1}
+ {\text_put_sp:\text_put_sp:\text_put_sp:
+ \text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\def_new:Npn \err_kernel_fatal_noline:n #1 {
+ \err_fatal_noline:nn {LaTeX~Fatal:~#1}
+ {\text_put_sp:
+ \text_put_four_sp:\text_put_four_sp:\text_put_four_sp:}
+ }
+\err_file_new:Nn \c_kernel_err_tlp {l3in2e.err}
+\def:Npn\err_help_ignored: {
+ Your~command~was~ignored.\iow_newline
+ Type \text_put_sp: I~<command>~<return>
+ \text_put_sp: to~replace~it~with~another~command,\iow_newline
+ or~\text_put_sp: <return> \text_put_sp: to~continue~without~it.}
+
+\def:Npn\err_help_textlost: {
+ You've~lost~some~text.\text_put_sp: \err_help_return_or_X:}
+
+\def:Npn\err_help_return_or_X: {
+ Try~typing\text_put_sp: <return>
+ \text_put_sp: to~proceed.\iow_newline
+ If~that~doesn't~work,~type
+ \text_put_sp: X~<return>\text_put_sp: to~quit.}
+
+\def:Npn\err_help_trouble: {
+ You're~ in~ trouble~ here.
+ \text_put_sp:\err_help_return_or_X:}
+
+\err_kernel_interrupt_new:NNnnn\cs_free_p:N{1}
+ {Command~name~`\tex_string:D#1'~already~used}
+ {You~tried~to~define~a~command~which~already~has~
+ a~meaning.\iow_newline
+ If~you~really~want~to~redefine~it~try~
+ \token_to_string:N\cmd_declare:Nnn\text_put_sp:
+ next~time.\iow_newline
+ For~this~run~I~will~ignore~your~definition.}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\newline{0}
+ {There's~no~line~here~to~end}
+ {You~tried~to~end~a~line~at~a~place~where~I~thought~
+ we~were~already~between~paragraphs.}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\newcnt{0}
+ {No~such~counter}
+ {The~counter~name~mentioned~in~the~operation~is~not~
+ known~to~me.\iow_newline
+ Check~the~spelling.}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\nodocument{0}
+ {Missing~\token_to_string:N\begin{document}}
+ {\err_help_trouble:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\badmath{0}
+ {Bad~math~environment~delimiter}
+ {\err_help_ignored:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\toodeep{0}
+ {Too~deeply~nested}
+ {\err_help_trouble:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\badpoptabs{0}
+ {\token_to_string:N\pushtabs \text_put_sp:
+ and~\token_to_string:N\poptabs
+ \text_put_sp: don't~match}
+ {\err_help_trouble:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\badtab{0}
+ {Undefined~tab~position}
+ {\err_help_trouble:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\preamerr{}
+ {\if_case:w #1~Illegal~character\or:
+ Missing~@-exp\or: Missing~p-arg\fi:\text_put_sp:
+ in~array~arg}
+ {\err_help_trouble:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\badlinearg{}
+ {Bad~\token_to_string:N\line
+ \text_put_sp: or~\token_to_string:N\vector
+ \text_put_sp: argument}
+ {\err_help_textlost:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\parmoderr{0}
+ {Not~in~outer~par~mode}
+ {\err_help_textlost:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\fltovf{0}
+ {Too~many~unprocessed~floats}
+ {\err_help_textlost:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\badcrerr{0}
+ {Bad~use~of~\token_to_string:N\\}
+ {\err_help_return_or_X:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\noitemerr{0}
+ {Something's~wrong--perhaps~a~missing~
+ \token_to_string:N\item}
+ {\err_help_return_or_X:}
+ {}
+
+\err_kernel_interrupt_new:NNnnn\notprerr{0}
+ {Can~be~used~only~in~preamble}
+ {\err_help_ignored:}
+ {}
+
+\err_file_close:N\c_kernel_err_tlp
+
+%%
+%%
+%% End of file `l3messages.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3names.sty b/Master/texmf-dist/tex/latex/expl3/l3names.sty
index 4d5256bad38..e14b70f41cb 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3names.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3names.sty
@@ -15,10 +15,45 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3names.dtx Copyright (C) 1990-1997 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3names}
- [1998/04/20 v2.0b L3 Experimental Naming Scheme for TeX Primitives]
+%% File: l3names.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\def\GetIdInfo$Id: #1.dtx #2 #3-#4-#5 #6 #7$#8{%
+ \def\fileversion{#2}%
+ \def\filedate{#3/#4/#5}%
+ \ProvidesPackage{#1}[#3/#4/#5 v#2 #8]%
+}
+\GetIdInfo$Id: l3names.dtx 577 2006-11-21 18:10:26Z morten $
+ {L3 Experimental Naming Scheme for TeX Primitives}
\catcode`\ =9\relax
\catcode`\^^I=9\relax
\catcode`\^^M=9\relax
@@ -28,7 +63,7 @@
\let\tex_let:D\let
\DeclareOption{removeoldnames}{
\long\def\name_undefine:N#1{
- \tex_let:D#1\tex_undefined:}}
+ \tex_let:D#1\c_undefined}}
\DeclareOption{keepoldnames}{
\long\def\name_undefine:N#1{}}
\ExecuteOptions{keepoldnames}
@@ -168,6 +203,7 @@
\name_primitive:NN \textstyle \tex_textstyle:D
\name_primitive:NN \scriptstyle \tex_scriptstyle:D
\name_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D
+\name_primitive:NN \nonscript \tex_nonscript:D
\name_primitive:NN \eqno \tex_eqno:D
\name_primitive:NN \leqno \tex_leqno:D
\name_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D
@@ -263,6 +299,7 @@
\name_primitive:NN \tolerance \tex_tolerance:D
\name_primitive:NN \spaceskip \tex_spaceskip:D
\name_primitive:NN \xspaceskip \tex_xspaceskip:D
+\name_primitive:NN \parfillskip \tex_parfillskip:D
\name_primitive:NN \everypar \tex_everypar:D
\name_primitive:NN \prevgraf \tex_prevgraf:D
\name_primitive:NN \spacefactor \tex_spacefactor:D
@@ -360,6 +397,174 @@
\name_primitive:NN \lccode \tex_lccode:D
\name_primitive:NN \uccode \tex_uccode:D
\name_primitive:NN \mathcode \tex_mathcode:D
+\name_primitive:NN \ifdefined \etex_ifdefined:D
+\name_primitive:NN \ifcsname \etex_ifcsname:D
+\name_primitive:NN \unless \etex_unless:D
+\name_primitive:NN \eTeXversion \etex_eTeXversion:D
+\name_primitive:NN \eTeXrevision \etex_eTeXrevision:D
+\name_primitive:NN \marks \etex_marks:D
+\name_primitive:NN \topmarks \etex_topmarks:D
+\name_primitive:NN \firstmarks \etex_firstmarks:D
+\name_primitive:NN \botmarks \etex_botmarks:D
+\name_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D
+\name_primitive:NN \splitbotmarks \etex_splitbotmarks:D
+\name_primitive:NN \unexpanded \etex_unexpanded:D
+\name_primitive:NN \detokenize \etex_detokenize:D
+\name_primitive:NN \scantokens \etex_scantokens:D
+\name_primitive:NN \showtokens \etex_showtokens:D
+\name_primitive:NN \readline \etex_readline:D
+\name_primitive:NN \tracingassigns \etex_tracingassigns:D
+\name_primitive:NN \tracingscantokens \etex_tracingscantokens:D
+\name_primitive:NN \tracingnesting \etex_tracingnesting:D
+\name_primitive:NN \tracingifs \etex_tracingifs:D
+\name_primitive:NN \currentiflevel \etex_currentiflevel:D
+\name_primitive:NN \currentifbranch \etex_currentifbranch:D
+\name_primitive:NN \currentiftype \etex_currentiftype:D
+\name_primitive:NN \tracinggroups \etex_tracinggroups:D
+\name_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D
+\name_primitive:NN \currentgrouptype \etex_currentgrouptype:D
+\name_primitive:NN \showgroups \etex_showgroups:D
+\name_primitive:NN \showifs \etex_showifs:D
+\name_primitive:NN \interactionmode \etex_interactionmode:D
+\name_primitive:NN \lastnodetype \etex_lastnodetype:D
+\name_primitive:NN \iffontchar \etex_iffontchar:D
+\name_primitive:NN \fontcharht \etex_fontcharht:D
+\name_primitive:NN \fontchardp \etex_fontchardp:D
+\name_primitive:NN \fontcharwd \etex_fontcharwd:D
+\name_primitive:NN \fontcharic \etex_fontcharic:D
+\name_primitive:NN \parshapeindent \etex_parshapeindent:D
+\name_primitive:NN \parshapelength \etex_parshapelength:D
+\name_primitive:NN \parshapedimen \etex_parshapedimen:D
+\name_primitive:NN \numexpr \etex_numexpr:D
+\name_primitive:NN \dimexpr \etex_dimexpr:D
+\name_primitive:NN \glueexpr \etex_glueexpr:D
+\name_primitive:NN \muexpr \etex_muexpr:D
+\name_primitive:NN \gluestretch \etex_gluestretch:D
+\name_primitive:NN \glueshrink \etex_glueshrink:D
+\name_primitive:NN \gluestretchorder \etex_gluestretchorder:D
+\name_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D
+\name_primitive:NN \gluetomu \etex_gluetomu:D
+\name_primitive:NN \mutoglue \etex_mutoglue:D
+\name_primitive:NN \lastlinefit \etex_lastlinefit:D
+\name_primitive:NN \interlinepenalties \etex_interlinepenalties:D
+\name_primitive:NN \clubpenalties \etex_clubpenalties:D
+\name_primitive:NN \widowpenalties \etex_widowpenalties:D
+\name_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D
+\name_primitive:NN \middle \etex_middle:D
+\name_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D
+\name_primitive:NN \savingvdiscards \etex_savingvdiscards:D
+\name_primitive:NN \pagediscards \etex_pagediscards:D
+\name_primitive:NN \splitdiscards \etex_splitdiscards:D
+\name_primitive:NN \TeXXETstate \etex_TeXXETstate:D
+\name_primitive:NN \beginL \etex_beginL:D
+\name_primitive:NN \endL \etex_endL:D
+\name_primitive:NN \beginR \etex_beginR:D
+\name_primitive:NN \endR \etex_endR:D
+\name_primitive:NN \predisplaydirection \etex_predisplaydirection:D
+\name_primitive:NN \everyeof \etex_everyeof:D
+\name_primitive:NN \protected \etex_protected:D
+%% integer registers:
+\name_primitive:NN \pdfoutput \pdf_output:D
+\name_primitive:NN \pdfminorversion \pdf_minorversion:D
+\name_primitive:NN \pdfcompresslevel \pdf_compresslevel:D
+\name_primitive:NN \pdfdecimaldigits \pdf_decimaldigits:D
+\name_primitive:NN \pdfimageresolution \pdf_imageresolution:D
+\name_primitive:NN \pdfpkresolution \pdf_pkresolution:D
+\name_primitive:NN \pdftracingfonts \pdf_tracingfonts:D
+\name_primitive:NN \pdfuniqueresname \pdf_uniqueresname:D
+\name_primitive:NN \pdfadjustspacing \pdf_adjustspacing:D
+\name_primitive:NN \pdfprotrudechars \pdf_protrudechars:D
+\name_primitive:NN \efcode \pdf_efcode:D
+\name_primitive:NN \lpcode \pdf_lpcode:D
+\name_primitive:NN \rpcode \pdf_rpcode:D
+\name_primitive:NN \pdfforcepagebox \pdf_forcepagebox:D
+\name_primitive:NN \pdfoptionalwaysusepdfpagebox \pdf_optionalwaysusepdfpagebox:D
+\name_primitive:NN \pdfinclusionerrorlevel\pdf_inclusionerrorlevel:D
+\name_primitive:NN \pdfoptionpdfinclusionerrorlevel \pdf_optionpdfinclusionerrorlevel:D
+\name_primitive:NN \pdfimagehicolor \pdf_imagehicolor:D
+\name_primitive:NN \pdfimageapplygamma \pdf_imageapplygamma:D
+\name_primitive:NN \pdfgamma \pdf_gamma:D
+\name_primitive:NN \pdfimagegamma \pdf_imagegamma:D
+%% dimen registers:
+\name_primitive:NN \pdfhorigin \pdf_horigin:D
+\name_primitive:NN \pdfvorigin \pdf_vorigin:D
+\name_primitive:NN \pdfpagewidth \pdf_pagewidth:D
+\name_primitive:NN \pdfpageheight \pdf_pageheight:D
+\name_primitive:NN \pdflinkmargin \pdf_linkmargin:D
+\name_primitive:NN \pdfdestmargin \pdf_destmargin:D
+\name_primitive:NN \pdfthreadmargin \pdf_threadmargin:D
+%% token registers:
+\name_primitive:NN \pdfpagesattr \pdf_pagesattr:D
+\name_primitive:NN \pdfpageattr \pdf_pageattr:D
+\name_primitive:NN \pdfpageresources \pdf_pageresources:D
+\name_primitive:NN \pdfpkmode \pdf_pkmode:D
+%% expandable commands:
+\name_primitive:NN \pdftexrevision \pdf_texrevision:D
+\name_primitive:NN \pdftexbanner \pdf_texbanner:D
+\name_primitive:NN \pdfcreationdate \pdf_creationdate:D
+\name_primitive:NN \pdfpageref \pdf_pageref:D
+\name_primitive:NN \pdfxformname \pdf_xformname:D
+\name_primitive:NN \pdffontname \pdf_fontname:D
+\name_primitive:NN \pdffontobjnum \pdf_fontobjnum:D
+\name_primitive:NN \pdffontsize \pdf_fontsize:D
+\name_primitive:NN \pdfincludechars \pdf_includechars:D
+\name_primitive:NN \leftmarginkern \pdf_leftmarginkern:D
+\name_primitive:NN \rightmarginkern \pdf_rightmarginkern:D
+\name_primitive:NN \pdfescapestring \pdf_escapestring:D
+\name_primitive:NN \pdfescapename \pdf_escapename:D
+\name_primitive:NN \pdfescapehex \pdf_escapehex:D
+\name_primitive:NN \pdfunescapehex \pdf_unescapehex:D
+\name_primitive:NN \pdfstrcmp \pdf_strcmp:D
+\name_primitive:NN \pdfuniformdeviate \pdf_uniformdeviate:D
+\name_primitive:NN \pdfnormaldeviate \pdf_normaldeviate:D
+\name_primitive:NN \pdfmdfivesum \pdf_mdfivesum:D
+\name_primitive:NN \pdffilemoddate \pdf_filemoddate:D
+\name_primitive:NN \pdffilesize \pdf_filesize:D
+\name_primitive:NN \pdffiledump \pdf_filedump:D
+%% read-only integers:
+\name_primitive:NN \pdftexversion \pdf_texversion:D
+\name_primitive:NN \pdflastobj \pdf_lastobj:D
+\name_primitive:NN \pdflastxform \pdf_lastxform:D
+\name_primitive:NN \pdflastximage \pdf_lastximage:D
+\name_primitive:NN \pdflastximagepages \pdf_lastximagepages:D
+\name_primitive:NN \pdflastannot \pdf_lastannot:D
+\name_primitive:NN \pdflastxpos \pdf_lastxpos:D
+\name_primitive:NN \pdflastypos \pdf_lastypos:D
+\name_primitive:NN \pdflastdemerits \pdf_lastdemerits:D
+\name_primitive:NN \pdfelapsedtime \pdf_elapsedtime:D
+\name_primitive:NN \pdfrandomseed \pdf_randomseed:D
+\name_primitive:NN \pdfshellescape \pdf_shellescape:D
+%% general commands:
+\name_primitive:NN \pdfobj \pdf_obj:D
+\name_primitive:NN \pdfrefobj \pdf_refobj:D
+\name_primitive:NN \pdfxform \pdf_xform:D
+\name_primitive:NN \pdfrefxform \pdf_refxform:D
+\name_primitive:NN \pdfximage \pdf_ximage:D
+\name_primitive:NN \pdfrefximage \pdf_refximage:D
+\name_primitive:NN \pdfannot \pdf_annot:D
+\name_primitive:NN \pdfstartlink \pdf_startlink:D
+\name_primitive:NN \pdfendlink \pdf_endlink:D
+\name_primitive:NN \pdfoutline \pdf_outline:D
+\name_primitive:NN \pdfdest \pdf_dest:D
+\name_primitive:NN \pdfthread \pdf_thread:D
+\name_primitive:NN \pdfstartthread \pdf_startthread:D
+\name_primitive:NN \pdfendthread \pdf_endthread:D
+\name_primitive:NN \pdfsavepos \pdf_savepos:D
+\name_primitive:NN \pdfinfo \pdf_info:D
+\name_primitive:NN \pdfcatalog \pdf_catalog:D
+\name_primitive:NN \pdfnames \pdf_names:D
+\name_primitive:NN \pdfmapfile \pdf_mapfile:D
+\name_primitive:NN \pdfmapline \pdf_mapline:D
+\name_primitive:NN \pdffontattr \pdf_fontattr:D
+\name_primitive:NN \pdftrailer \pdf_trailer:D
+\name_primitive:NN \pdffontexpand \pdf_fontexpand:D
+%%\name_primitive:NN \vadjust [<pre spec>] <filler> { <vertical mode material> } (h, m)
+\name_primitive:NN \pdfliteral \pdf_literal:D
+%%\name_primitive:NN \special <pdfspecial spec>
+\name_primitive:NN \pdfresettimer \pdf_resettimer:D
+\name_primitive:NN \pdfsetrandomseed \pdf_setrandomseed:D
+\name_primitive:NN \pdfnoligatures \pdf_noligatures:D
+\name_primitive:NN \textdir \aleph_textdir:D
\tex_def:D\CodeStart{%
\tex_catcode:D `\ =9\tex_relax:D
\tex_catcode:D `\^^M=9\tex_relax:D
@@ -376,6 +581,21 @@
\tex_catcode:D `\@=12\tex_relax:D % For LaTeX2e
\tex_catcode:D `\_=8\tex_relax:D
\tex_catcode:D `\:=12\tex_relax:D}
+\tex_def:D \NamesStart{
+ \tex_catcode:D `\_=11\scan_stop:
+ \tex_catcode:D `\:=11\scan_stop:
+ }
+\tex_def:D \NamesStop{
+ \tex_catcode:D `\_=8\scan_stop:
+ \tex_catcode:D `\:=12\scan_stop:
+ }
+\tex_def:D\GetIdInfo{\CodeStop\GetIdInfoAux}
+\tex_def:D\GetIdInfoAux$#1~#2.dtx~#3~#4-#5-#6~#7~#8$#9{%
+ \tex_def:D \fileversion{#3}%
+ \tex_def:D \filedate{#4/#5/#6}%
+ \ProvidesPackage{#2}[#4/#5/#6~ v#3~ #9]%
+ \CodeStart
+}
\tex_let:D\tex_input:D \@@input
\tex_let:D\tex_underline:D \@@underline
\tex_let:D\tex_end:D \@@end
@@ -384,23 +604,22 @@
\tex_let:D\tex_italiccor:D \@@italiccorr
\tex_let:D\tex_hyphen:D \@@hyph
\tex_let:D\par \tex_par:D
-\tex_def:D\ProvidesPackage{
- \tex_begingroup:D
- \CodeStop
- \package_provides:w}
-\tex_def:D\package_provides:w#1#2[#3]{
- \tex_endgroup:D
- \tex_immediate:D\tex_write:D-1{Package: #1#2 #3}
- \tex_expandafter:D\tex_xdef:D
- \tex_csname:D ver@#1.sty\tex_endcsname:D{}}
\tex_ifx:D\name_undefine:N\@gobble
\tex_def:D\name_pop_stack:w{}
\g@addto@macro\@popfilename{%
\tex_ifnum:D12=\tex_the:D\tex_catcode:D`@
\CodeStop
\tex_fi:D}
- \g@addto@macro\@pushfilename{\CodeStart}
\tex_else:D
+\tex_def:D\ProvidesPackage{
+ \tex_begingroup:D
+ \CodeStop
+ \package_provides:w}
+\tex_def:D\package_provides:w#1#2[#3]{
+ \tex_endgroup:D
+ \tex_immediate:D\tex_write:D-1{Package:~#1#2~#3}
+ \tex_expandafter:D\tex_xdef:D
+ \tex_csname:D ver@#1.sty\tex_endcsname:D{#1}}
\tex_def:D\name_pop_stack:w#1\relax{%
\CodeStop
\tex_expandafter:D\@p@pfilename\@currnamestack\@nil
@@ -414,11 +633,11 @@
\tex_gdef:D\@currnamestack{#4}}
\tex_def:D\NeedsTeXFormat#1{}
\tex_def:D\RequirePackage#1{
- \tex_expandafter:D\tex_ifx:D
- \tex_csname:D ver@#1.sty\tex_endcsname:D\tex_relax:D
- \CodeStart
- \tex_input:D#1.sty\tex_relax:D
- \tex_fi:D}
+ \tex_expandafter:D\tex_ifx:D
+ \tex_csname:D ver@#1.sty\tex_endcsname:D\tex_relax:D
+ \CodeStart
+ \tex_input:D#1.sty\tex_relax:D
+ \tex_fi:D}
\tex_fi:D
\tex_futurelet:D\name_tmp:\name_pop_stack:w
%%
diff --git a/Master/texmf-dist/tex/latex/expl3/l3num.sty b/Master/texmf-dist/tex/latex/expl3/l3num.sty
new file mode 100644
index 00000000000..3392ecd86f2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3num.sty
@@ -0,0 +1,155 @@
+%%
+%% This is file `l3num.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3num.dtx (with options: `package,trace')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3num.dtx Copyright (C) 2005-2006 Frank Mittelbach, 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3num.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental token numbers}
+\RequirePackage{l3expan}\par
+\let_new:NN \num_eval:w \etex_numexpr:D
+\let_new:NN \if_num:w \tex_ifnum:D
+\let_new:NN \if_num_odd:w \tex_ifodd:D
+\let_new:NN \if_case:w \tex_ifcase:D
+\let_new:NN \or: \tex_or:D
+\def_long_new:Npn \use_arg_after_or:w #1\or: #2\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_after_else:w #1\else: #2\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_after_fi:w #1\fi:{\fi: #1}
+\def:Npn \num_incr:N #1{\num_add:Nn#1 1}
+\def:Npn \num_decr:N #1{\num_add:Nn#1 \c_minus_one}
+\def:Npn \num_gincr:N #1{\num_gadd:Nn#1 1}
+\def:Npn \num_gdecr:N #1{\num_gadd:Nn#1 \c_minus_one}
+\def_new:Npn \num_incr:c {\exp_args:Nc \num_incr:N}
+\def_new:Npn \num_decr:c {\exp_args:Nc \num_decr:N}
+\def_new:Npn \num_gincr:c {\exp_args:Nc \num_gincr:N}
+\def_new:Npn \num_gdecr:c {\exp_args:Nc \num_gdecr:N}
+\def_new:Npn \num_zero:N #1 {\num_set:Nn #1 0}
+\def_new:Npn \num_gzero:N #1 {\num_gset:Nn #1 0}
+\def_new:Npn \num_zero:c {\exp_args:Nc \num_zero:N}
+\def_new:Npn \num_gzero:c {\exp_args:Nc \num_gzero:N}
+\def_new:Npn \num_new:N #1{\tlp_new:Nn #1{0}}
+\def_new:Npn \num_new:c {\exp_args:Nc \num_new:N}
+\def_new:Npn \num_eval:n #1{\num_eval:w #1\scan_stop:}
+\def_new:Npn \num_set:Nn #1#2{
+ \tlp_set:No #1{ \tex_number:D \num_eval:n {#2} }
+}
+\def_new:Npn \num_gset:Nn {\pref_global:D \num_set:Nn}
+\def_new:Npn \num_set:cn {\exp_args:Nc \num_set:Nn }
+\def_new:Npn \num_gset:cn {\exp_args:Nc \num_gset:Nn }
+\let_new:NN \num_set_eq:NN \tlp_set_eq:NN
+\def_new:Npn \num_set_eq:cN {\exp_args:Nc \num_set_eq:NN}
+\def_new:Npn \num_set_eq:Nc {\exp_args:NNc \num_set_eq:NN}
+\def_new:Npn \num_set_eq:cc {\exp_args:Ncc \num_set_eq:NN}
+\let_new:NN \num_gset_eq:NN \tlp_gset_eq:NN
+\def_new:Npn \num_gset_eq:cN {\exp_args:Nc \num_gset_eq:NN}
+\def_new:Npn \num_gset_eq:Nc {\exp_args:NNc \num_gset_eq:NN}
+\def_new:Npn \num_gset_eq:cc {\exp_args:Ncc \num_gset_eq:NN}
+\def_new:Npn \num_add:Nn #1#2 {\num_set:Nn #1{#1+#2}}
+\def_new:Npn \num_gadd:Nn {\pref_global:D \num_add:Nn}
+\let_new:NN\num_use:N \use_arg_i:n
+\let_new:NN\num_use:c \cs_use:c
+\def_test_function_new:npn {num_compare:nNn}#1#2#3{
+ \if_num:w \num_eval:n {#1}#2\num_eval:n {#3}
+}
+\def_new:Npn \num_compare:cNcTF { \exp_args:NcNc\num_compare:nNnTF }
+\def_new:Npn \num_compare_p:nNn #1#2#3{
+ \if_num:w \num_eval:n {#1}#2\num_eval:n {#3}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\num_new:N \l_tmpa_num
+\num_new:N \l_tmpb_num
+\num_new:N \l_tmpc_num
+\num_new:N \g_tmpa_num
+\num_new:N \g_tmpb_num
+\engine_aleph:TF
+{
+ \let_new:NN \const_new_aux:Nw \tex_chardef:D
+ \const_new_aux:Nw \c_max_register_num = 65535 \scan_stop:
+}
+{
+ \let_new:NN \const_new_aux:Nw \tex_mathchardef:D
+ \const_new_aux:Nw \c_max_register_num = 32767 \scan_stop:
+}
+\def_new:Npn \const_new:Nn #1#2 {
+ \num_compare:nNnTF {#2} > \c_minus_one
+ {
+ \num_compare:nNnTF {#2} > \c_max_register_num
+ {\int_new:N #1 \int_set:Nn #1{#2}}
+ {\chk_new_cs:N #1 \const_new_aux:Nw #1 = #2 \scan_stop: }
+ }
+ {\int_new:N #1 \int_set:Nn #1{#2}}
+}
+ %% \tex_countdef:D \c_minus_one = 10 \scan_stop:
+ %% \c_minus_one = -1 \scan_stop: %% in l3basics
+ %% \tex_chardef:D \c_sixteen = 16\scan_stop: %% in l3basics
+\const_new:Nn \c_zero {0}
+\const_new:Nn \c_one {1}
+\const_new:Nn \c_two {2}
+\const_new:Nn \c_three {3}
+\const_new:Nn \c_four {4}
+\const_new:Nn \c_six {6}
+\const_new:Nn \c_seven {7}
+\const_new:Nn \c_nine {9}
+\const_new:Nn \c_ten {10}
+\const_new:Nn \c_eleven {11}
+\const_new:Nn \c_thirty_two {32}
+\const_new:Nn \c_hundred_one {101}
+\const_new:Nn \c_twohundred_fifty_five {255}
+\const_new:Nn \c_twohundred_fifty_six {256}
+\const_new:Nn \c_thousand {1000}
+\const_new:Nn \c_ten_thousand {10000}
+\const_new:Nn \c_ten_thousand_one {10001}
+\const_new:Nn \c_ten_thousand_two {10002}
+\const_new:Nn \c_ten_thousand_three {10003}
+\const_new:Nn \c_ten_thousand_four {10004}
+\const_new:Nn \c_twenty_thousand {20000}
+%%
+%%
+%% End of file `l3num.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3precom.sty b/Master/texmf-dist/tex/latex/expl3/l3precom.sty
index f1ccdd9086d..9f67483781a 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3precom.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3precom.sty
@@ -15,80 +15,106 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3precom.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3precom}
- [1998/04/20 v1.0b L3 Experimental precompilation module]
-\RequirePackage{l3int}
+%% File: l3precom.dtx Copyright (C) 1990-2006 Frank Mittelbach, 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3precom.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental precompilation module}
+\RequirePackage{l3num}
\RequirePackage{l3io}
\RequirePackage{l3seq}
+\RequirePackage{l3int}
\iow_new:N\c_cs_dump_stream
\tlp_new:Nn\g_cs_dump_name_tlp{}
\seq_new:N\g_cs_dump_seq
\def_new:Npn\cs_record_name:N#1{
- \seq_gput_left:Nn
- \g_cs_trace_seq#1
- \seq_gput_left:Nn
- \g_cs_dump_seq#1}
+\seq_gput_left:Nn
+ \g_cs_trace_seq#1
+\seq_gput_left:Nn
+ \g_cs_dump_seq#1}
\def_new:Npn\cs_record_name:c{\exp_args:Nc\cs_record_name:N}
\def_new:Npn\cs_dump:{
- \iow_expanded_term:n{Precompiling~style~into~(\g_cs_dump_name_tlp)}
- \iow_open:Nn\c_cs_dump_stream{\g_cs_dump_name_tlp}
- \iow_expanded:Nn\c_cs_dump_stream
- {\group_begin:
- \tex_catcode:D`\token_to_string:N\*=11\scan_stop:
- \token_to_string:N\CodeStart
- }
- \seq_map_inline:Nn
- \g_cs_dump_seq
- {\tex_message:D{.}
- \iow_expanded:Nn\c_cs_dump_stream
- {\token_to_string:N\gdef:Npn
- \token_to_string:N##1
- {\tlp_to_str:N##1}}
- }
- \iow_expanded:Nn
- \c_cs_dump_stream
- {\token_to_string:N\fint_gset:Nn
- \g_gen_sym_fint
- {\fint_use:N\g_gen_sym_fint}^^J
- \token_to_string:N\fint_gset:Nn
- \g_ggen_sym_fint
- {\fint_use:N\g_ggen_sym_fint}}
- \iow_expanded:Nn
- \c_cs_dump_stream
- {\group_end:}
- \iow_close:N\c_cs_dump_stream
- \tex_message:D{~finished}
+\iow_expanded_term:n{Precompiling~style~into~(\g_cs_dump_name_tlp)}
+\iow_open:Nn\c_cs_dump_stream{\g_cs_dump_name_tlp}
+\iow_expanded:Nn\c_cs_dump_stream
+{\group_begin:
+\tex_catcode:D`\token_to_string:N\*=11\scan_stop:
+\token_to_string:N\CodeStart
+}
+\seq_map_inline:Nn
+\g_cs_dump_seq
+{\tex_message:D{.}
+\iow_expanded:Nn\c_cs_dump_stream
+ {\exp_not:n{\gdef:Npn ##1}
+ {\tlp_to_str:N##1}}
+}
+\iow_expanded:Nn \c_cs_dump_stream {\exp_not:n{\num_gset:Nn
+ \g_gen_sym_num}
+ {\num_use:N\g_gen_sym_num}^^J
+\exp_not:n{\num_gset:Nn \g_ggen_sym_num}
+ {\num_use:N\g_ggen_sym_num}}
+\iow_expanded:Nn
+\c_cs_dump_stream
+{\group_end:}
+\iow_close:N\c_cs_dump_stream
+\tex_message:D{~finished}
}
\def_new:Npn\cs_load_dump:n#1{
- \file_not_found:nTF{#1.cmp}
- {\tlp_gset:Nn\g_cs_dump_name_tlp{#1.cmp}}
- {\input{#1.cmp}
- \let:NN\cs_dump:\fi:
- \if_false:}}
-\fint_new:N\g_gen_sym_fint
-\fint_gset:Nn\g_gen_sym_fint{0}
-\fint_new:N\g_ggen_sym_fint
-\fint_gset:Nn\g_ggen_sym_fint{0}
+\file_not_found:nTF{#1.cmp}
+{\tlp_gset:Nn\g_cs_dump_name_tlp{#1.cmp}}
+{\input{#1.cmp}
+\let:NN\cs_dump:\fi:
+\if_false:}}
+\num_new:N\g_gen_sym_num \num_gset:Nn\g_gen_sym_num{0}
+\num_new:N\g_ggen_sym_num \num_gset:Nn\g_ggen_sym_num{0}
\def_new:Npn\cs_gen_sym:N#1{
- \fint_gincr:N\g_gen_sym_fint
- \tlp_set:Nc#1{l*\tex_romannumeral:D\fint_use:N\g_gen_sym_fint}
- \exp_after:NN\cs_record_name:N#1
- \exp_after:NN\tlp_clear_new:N#1}
+\num_gincr:N\g_gen_sym_num
+\tlp_set:Nc#1{l*\tex_romannumeral:D\num_use:N\g_gen_sym_num}
+\exp_after:NN\cs_record_name:N#1
+\exp_after:NN\tlp_clear_new:N#1}
\def_new:Npn\cs_ggen_sym:N#1{
- \fint_gincr:N\g_ggen_sym_fint
- \tlp_set:Nc#1{g*\tex_romannumeral:D\fint_use:N\g_ggen_sym_fint}
- \exp_after:NN\cs_record_name:N#1
- \exp_after:NN\tlp_clear_new:N#1}
+\num_gincr:N\g_ggen_sym_num
+\tlp_set:Nc#1{g*\tex_romannumeral:D\num_use:N\g_ggen_sym_num}
+\exp_after:NN\cs_record_name:N#1
+\exp_after:NN\tlp_clear_new:N#1}
\seq_new:N\g_cs_trace_seq
\seq_new:N\g_register_trace_seq
\def:Npn\cs_record_meaning:N#1{
- \seq_gput_left:Nn
- \g_cs_trace_seq#1}
+\seq_gput_left:Nn
+ \g_cs_trace_seq#1}
\def:Npn\register_record_name:N#1{
- \seq_gput_left:Nn
- \g_register_trace_seq#1}
+\seq_gput_left:Nn
+ \g_register_trace_seq#1}
\def_new:Npn\dumpLaTeXstate#1{
\iow_expanded_term:n{Dumping~commands~into~(#1.dmp)}
\iow_open:Nn\c_cs_dump_stream{#1.dmp}
@@ -109,7 +135,6 @@
}
\tex_message:D{~finished}
}
-
%%
%%
%% End of file `l3precom.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3prg.sty b/Master/texmf-dist/tex/latex/expl3/l3prg.sty
new file mode 100644
index 00000000000..fad727278da
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3prg.sty
@@ -0,0 +1,394 @@
+%%
+%% This is file `l3prg.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3prg.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3prg.dtx Copyright (C) 2005-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3prg.dtx 574 2006-08-21 23:30:10Z morten $
+ {L3 Experimental control structures}
+\RequirePackage{l3quark}
+\RequirePackage{l3toks}
+\RequirePackage{l3int}
+\def_new:Npn \mode_vertical_p: {
+ \if_mode_vertical: \c_true \else: \c_false\fi:}
+\def_test_function_new:npn{mode_vertical:}{\if_mode_vertical:}
+\def_new:Npn \mode_horizontal_p: {
+ \if_mode_horizontal: \c_true \else: \c_false\fi:}
+\def_test_function_new:npn{mode_horizontal:}{\if_mode_horizontal:}
+\def_new:Npn \mode_inner_p: {
+ \if_mode_inner: \c_true \else: \c_false\fi:}
+\def_test_function_new:npn{mode_inner:}{\if_mode_inner:}
+\def_test_function_new:npn{mode_math:} {
+ \scan_align_safe_stop: \if_mode_math: }
+\def_new:Npn \group_align_safe_begin: {\if_false:{\fi:\if_num:w0=`}\fi:}
+\def_new:Npn \group_align_safe_end: {\if_num:w0=`{\fi:\if_false:}\fi:}
+\def_new:Npn \scan_align_safe_stop: {
+ \num_compare:nNnT \etex_currentgrouptype:D = \c_six
+ {
+ \num_compare:nNnF \etex_lastnodetype:D = \c_zero
+ {
+ \num_compare:nNnF \etex_lastnodetype:D = \c_seven
+ \scan_stop:
+ }
+ }
+}
+\def_new:Npn \prg_replicate:nn #1{
+ \cs:w use_noop:
+ \exp_after:NN\prg_replicate_first_aux:N
+ \int_use:N \int_eval:n{#1} \cs_end:
+ \cs_end:
+}
+\def_new:Npn \prg_replicate_aux:N#1{
+ \cs:w prg_replicate_#1:n\prg_replicate_aux:N
+}
+\def_new:Npn \prg_replicate_first_aux:N#1{
+ \cs:w prg_replicate_first_#1:n\prg_replicate_aux:N
+}
+\def_new:Npn \prg_replicate_ :n #1{}% no, this is not a typo!
+\def_long_new:cpn {prg_replicate_0:n}#1{\cs_end:{#1#1#1#1#1#1#1#1#1#1}}
+\def_long_new:cpn {prg_replicate_1:n}#1{\cs_end:{#1#1#1#1#1#1#1#1#1#1}#1}
+\def_long_new:cpn {prg_replicate_2:n}#1{\cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1}
+\def_long_new:cpn {prg_replicate_3:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1}
+\def_long_new:cpn {prg_replicate_4:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1}
+\def_long_new:cpn {prg_replicate_5:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_6:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_7:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_8:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_9:n}#1{
+ \cs_end:{#1#1#1#1#1#1#1#1#1#1}#1#1#1#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_0:n}#1{\cs_end: }
+\def_long_new:cpn {prg_replicate_first_1:n}#1{\cs_end: #1}
+\def_long_new:cpn {prg_replicate_first_2:n}#1{\cs_end: #1#1}
+\def_long_new:cpn {prg_replicate_first_3:n}#1{\cs_end: #1#1#1}
+\def_long_new:cpn {prg_replicate_first_4:n}#1{\cs_end: #1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_5:n}#1{\cs_end: #1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_6:n}#1{\cs_end: #1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_7:n}#1{\cs_end: #1#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_8:n}#1{\cs_end: #1#1#1#1#1#1#1#1}
+\def_long_new:cpn {prg_replicate_first_9:n}#1{\cs_end: #1#1#1#1#1#1#1#1#1}
+\def_long_new:NNn \prg_stepwise_function:nnnN 2{
+ \num_compare:nNnTF{#2}<\c_zero
+ {\exp_args:No\prg_stepwise_function_decr:nnnN }
+ {\exp_args:No\prg_stepwise_function_incr:nnnN }
+ {\int_use:N\int_eval:n{#1}}{#2}
+}
+\def_long_new:NNn \prg_stepwise_function_incr:nnnN 4{
+ \num_compare:nNnF {#1}>{#3}
+ {
+ #4{#1}
+ \exp_args:No \prg_stepwise_function_incr:nnnN
+ {\int_use:N\int_eval:n{#1 + #2}}
+ {#2}{#3}{#4}
+ }
+}
+\def_long_new:NNn \prg_stepwise_function_decr:nnnN 4{
+ \num_compare:nNnF {#1}<{#3}
+ {
+ #4{#1}
+ \exp_args:No \prg_stepwise_function_decr:nnnN
+ {\int_use:N\int_eval:n{#1 + #2}}
+ {#2}{#3}{#4}
+ }
+}
+\int_new:N\l_prg_inline_level_int
+\def_long_new:NNn\prg_stepwise_inline:nnnn 4{
+ \int_incr:N \l_prg_inline_level_int
+ \def:cpn{prg_stepwise_inline_\int_use:N\l_prg_inline_level_int :n}##1{#4}
+ \num_compare:nNnTF {#2}<\c_zero
+ {\exp_args:Nco \prg_stepwise_inline_decr:Nnnn }
+ {\exp_args:Nco \prg_stepwise_inline_incr:Nnnn }
+ {prg_stepwise_inline_\int_use:N\l_prg_inline_level_int :n}
+ {\int_use:N\int_eval:n{#1}} {#2} {#3}
+ \int_decr:N \l_prg_inline_level_int
+}
+\def_long_new:NNn \prg_stepwise_inline_incr:Nnnn 4{
+ \num_compare:nNnF {#2}>{#4}
+ {
+ #1{#2}
+ \exp_args:NNo \prg_stepwise_inline_incr:Nnnn #1
+ {\int_use:N\int_eval:n{#2 + #3}} {#3}{#4}
+ }
+}
+\def_long_new:NNn \prg_stepwise_inline_decr:Nnnn 4{
+ \num_compare:nNnF {#2}<{#4}
+ {
+ #1{#2}
+ \exp_args:NNo \prg_stepwise_inline_decr:Nnnn #1
+ {\int_use:N\int_eval:n{#2 + #3}} {#3}{#4}
+ }
+}
+\def_long_new:NNn \prg_stepwise_variable:nnnNn 2 {
+ \num_compare:nNnTF {#2}<\c_zero
+ {\exp_args:No\prg_stepwise_variable_decr:nnnNn}
+ {\exp_args:No\prg_stepwise_variable_incr:nnnNn}
+ {\int_use:N\int_eval:n{#1}}{#2}
+}
+\def_long_new:NNn \prg_stepwise_variable_incr:nnnNn 5 {
+ \num_compare:nNnF {#1}>{#3}
+ {
+ \def:Npn #4{#1} #5
+ \exp_args:No \prg_stepwise_variable_incr:nnnNn
+ {\int_use:N\int_eval:n{#1 + #2}}{#2}{#3}#4{#5}
+ }
+}
+\def_long_new:NNn \prg_stepwise_variable_decr:nnnNn 5 {
+ \num_compare:nNnF {#1}<{#3}
+ {
+ \def:Npn #4{#1} #5
+ \exp_args:No \prg_stepwise_variable_decr:nnnNn
+ {\int_use:N\int_eval:n{#1 + #2}}{#2}{#3}#4{#5}
+ }
+}
+\def_new:Npn \bool_new:N #1 { \let_new:NN #1 \c_false }
+\def_new:Npn \bool_new:c #1 { \let_new:cN #1 \c_false }
+\def_new:Npn \bool_set_true:N #1 { \let:NN #1 \c_true }
+\def_new:Npn \bool_set_true:c #1 { \let:cN #1 \c_true }
+\def_new:Npn \bool_set_false:N #1 { \let:NN #1 \c_false }
+\def_new:Npn \bool_set_false:c #1 { \let:cN #1 \c_false }
+\def_new:Npn \bool_gset_true:N #1 { \glet:NN #1 \c_true }
+\def_new:Npn \bool_gset_true:c #1 { \glet:cN #1 \c_true }
+\def_new:Npn \bool_gset_false:N #1 { \glet:NN #1 \c_false }
+\def_new:Npn \bool_gset_false:c #1 { \glet:cN #1 \c_false }
+\let_new:NN \bool_set_eq:NN \let:NN
+\let_new:NN \bool_set_eq:Nc \let:Nc
+\let_new:NN \bool_set_eq:cN \let:cN
+\let_new:NN \bool_set_eq:cc \let:cc
+\let_new:NN \bool_gset_eq:NN \glet:NN
+\let_new:NN \bool_gset_eq:Nc \glet:Nc
+\let_new:NN \bool_gset_eq:cN \glet:cN
+\let_new:NN \bool_gset_eq:cc \glet:cc
+\bool_new:N \l_tmpa_bool
+\bool_new:N \g_tmpa_bool
+\def_test_function_new:npn{bool_if:N}#1{\if:w #1}
+\def_new:Npn \bool_if:cTF{\exp_args:Nc\bool_if:NTF}
+\def_new:Npn \bool_if:cT{\exp_args:Nc\bool_if:NT}
+\def_new:Npn \bool_if:cF{\exp_args:Nc\bool_if:NF}
+\def_new:Npn \bool_if_p:N #1 { #1 }
+\let_new:NN \bool_if_p:c \cs_use:c
+\def_long_new:Npn \bool_whiledo:NT #1 #2 {
+ \bool_if:NT #1 {#2 \bool_whiledo:NT #1 {#2}}
+}
+\def_new:Npn \bool_whiledo:cT{\exp_args:Nc\bool_whiledo:NT}
+\def_long_new:Npn \bool_whiledo:NF #1 #2 {
+ \bool_if:NF #1 {#2 \bool_whiledo:NF #1 {#2}}
+}
+\def_new:Npn \bool_whiledo:cF{\exp_args:Nc\bool_whiledo:NF}
+\def_long_new:Npn \bool_dowhile:NT #1 #2 {
+ #2 \bool_if:NT #1 {\bool_dowhile:NT #1 {#2}}
+}
+\def_new:Npn \bool_dowhile:cT{\exp_args:Nc\bool_dowhile:NT}
+\def_long_new:Npn \bool_dowhile:NF #1 #2 {
+ #2 \bool_if:NF #1 {\bool_dowhile:NF #1 {#2}}
+}
+\def_new:Npn \bool_dowhiledo:cF{\exp_args:Nc\bool_dowhile:cF}
+\def_new:Npn \bool_double_if:NNnnnn#1#2{
+ \if_case:w \num_eval:w #1\scan_stop:
+ \if_case:w \num_eval:w #2\scan_stop:
+ \exp_after:NN\exp_after:NN\exp_after:NN \use_arg_i:nnnn
+ \else:
+ \exp_after:NN\exp_after:NN\exp_after:NN \use_arg_ii:nnnn
+ \fi:
+ \else:
+ \if_case:w \num_eval:w #2\scan_stop:
+ \exp_after:NN\exp_after:NN\exp_after:NN \use_arg_iii:nnnn
+ \else:
+ \exp_after:NN\exp_after:NN\exp_after:NN \use_arg_iv:nnnn
+ \fi:
+ \fi:
+}
+\def_new:Npn \bool_double_if:cNnnnn{\exp_args:Nc\bool_double_if:NNnnnn}
+\def_new:Npn \bool_double_if:Ncnnnn{\exp_args:NNc\bool_double_if:NNnnnn}
+\def_new:Npn \bool_double_if:ccnnnn{\exp_args:Ncc\bool_double_if:NNnnnn}
+\def_long_new:Npn \prg_whiledo:nT #1#2{
+ #1 {#2 \prg_whiledo:nT {#1}{#2}}
+}
+\def_long_new:Npn \prg_whiledo:nF #1#2{
+ #1 {#2 \prg_whiledo:nF {#1}{#2}}
+}
+\def_long_new:Npn \prg_dowhile:nT #1#2{
+ #2 #1 {\prg_dowhile:nT {#1}{#2}}
+}
+\def_long_new:Npn \prg_dowhile:nF #1#2{
+ #2 #1 {\prg_dowhile:nF {#1}{#2}}
+}
+\let_new:NN \prg_if_predicate:nTF \bool_if:NTF
+\let_new:NN \prg_if_predicate:nT \bool_if:NT
+\let_new:NN \prg_if_predicate:nF \bool_if:NF
+\def_new:Npn \prg_if_predicate_or_p:nn #1#2{
+ \if_num:w #1#2<\c_hundred_one
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_new:Npn \prg_if_predicate_and_p:nn #1#2{
+ \if_case:w #1#2 ~
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_new:Npn \prg_if_predicate_not_p:n #1{
+ \if_case:w #1 ~
+ \c_false
+ \or:
+ \c_true
+ \fi:
+}
+\def_long_new:Npn \prg_if_predicate_ands_p:n #1{
+ \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_true
+ \int_to_roman:w -`0 #1 \scan_stop: \scan_stop:
+}
+\def_long_new:Npn \prg_if_predicate_ors_p:n #1{
+ \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_false
+ \int_to_roman:w -`0 #1 \scan_stop: \scan_stop:
+}
+\def_new:Npn \prg_if_predicate_andor_aux:NNN #1#2#3{
+ \token_if_eq_meaning:NNTF \scan_stop: #2
+ { #1 }
+ {
+ \int_compare:nNnTF #3 = #1
+ { \exp_after:NN \prg_if_predicate_andor_aux:NNN }
+ { \exp_after:NN \prg_if_predicate_andor_break:NNN }
+ \exp_after:NN #1 \int_to_roman:w -`0
+ }
+}
+\def_new:Npn \prg_if_predicate_andor_break:NNN #1#2#3{
+ \token_if_eq_meaning:NNTF \scan_stop: #2
+ { \if:w #1\c_false\else:\c_true\fi: }
+ {
+ \exp_after:NN \prg_if_predicate_andor_break:NNN \exp_after:NN #1
+ \int_to_roman:w -`0
+ }
+}
+\def_new:NNn \prg_define_quicksort:nnn 3 {
+ \def_long:cNx{#1_quicksort:n}1{
+ \exp_not:c{#1_quicksort_start_partition:w} ##1
+ \exp_not:n{#2\q_nil#3\q_stop}
+ }
+ \def_long:cNx{#1_quicksort_braced:n}1{
+ \exp_not:c{#1_quicksort_start_partition_braced:n} ##1
+ \exp_not:N\q_nil\exp_not:N\q_stop
+ }
+ \def_long:cpx {#1_quicksort_start_partition:w} #2 ##1 #3{
+ \exp_not:N \quark_if_nil:nT {##1}\exp_not:N \use_none_delimit_by_q_stop:w
+ \exp_not:c{#1_quicksort_do_partition_i:nnnw} {##1}{}{}
+ }
+ \def_long:cNx {#1_quicksort_start_partition_braced:n} 1 {
+ \exp_not:N \quark_if_nil:nT {##1}\exp_not:N \use_none_delimit_by_q_stop:w
+ \exp_not:c{#1_quicksort_do_partition_i_braced:nnnn} {##1}{}{}
+ }
+ \def_long:cpx {#1_quicksort_do_partition_i:nnnw} ##1##2##3 #2 ##4 #3 {
+ \exp_not:N \quark_if_nil:nTF {##4} \exp_not:c {#1_do_quicksort_braced:nnnnw}
+ {
+ \exp_not:c{#1_quicksort_compare:nnTF}{##1}{##4}
+ \exp_not:c{#1_quicksort_partition_greater_ii:nnnn}
+ \exp_not:c{#1_quicksort_partition_less_ii:nnnn}
+ }
+ {##1}{##2}{##3}{##4}
+ }
+ \def_long:cNx {#1_quicksort_do_partition_i_braced:nnnn} 4 {
+ \exp_not:N \quark_if_nil:nTF {##4} \exp_not:c {#1_do_quicksort_braced:nnnnw}
+ {
+ \exp_not:c{#1_quicksort_compare:nnTF}{##1}{##4}
+ \exp_not:c{#1_quicksort_partition_greater_ii_braced:nnnn}
+ \exp_not:c{#1_quicksort_partition_less_ii_braced:nnnn}
+ }
+ {##1}{##2}{##3}{##4}
+ }
+ \def_long:cpx {#1_quicksort_do_partition_ii:nnnw} ##1##2##3 #2 ##4 #3 {
+ \exp_not:N \quark_if_nil:nTF {##4} \exp_not:c {#1_do_quicksort_braced:nnnnw}
+ {
+ \exp_not:c{#1_quicksort_compare:nnTF}{##4}{##1}
+ \exp_not:c{#1_quicksort_partition_less_i:nnnn}
+ \exp_not:c{#1_quicksort_partition_greater_i:nnnn}
+ }
+ {##1}{##2}{##3}{##4}
+ }
+ \def_long:cNx {#1_quicksort_do_partition_ii_braced:nnnn} 4 {
+ \exp_not:N \quark_if_nil:nTF {##4} \exp_not:c {#1_do_quicksort_braced:nnnnw}
+ {
+ \exp_not:c{#1_quicksort_compare:nnTF}{##4}{##1}
+ \exp_not:c{#1_quicksort_partition_less_i_braced:nnnn}
+ \exp_not:c{#1_quicksort_partition_greater_i_braced:nnnn}
+ }
+ {##1}{##2}{##3}{##4}
+ }
+ \def_long:cNx {#1_quicksort_partition_less_i:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_i:nnnw}{##1}{##2}{{##4}##3}}
+ \def_long:cNx {#1_quicksort_partition_less_ii:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_ii:nnnw}{##1}{##2}{##3{##4}}}
+ \def_long:cNx {#1_quicksort_partition_greater_i:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_i:nnnw}{##1}{{##4}##2}{##3}}
+ \def_long:cNx {#1_quicksort_partition_greater_ii:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_ii:nnnw}{##1}{##2{##4}}{##3}}
+ \def_long:cNx {#1_quicksort_partition_less_i_braced:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_i_braced:nnnn}{##1}{##2}{{##4}##3}}
+ \def_long:cNx {#1_quicksort_partition_less_ii_braced:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_ii_braced:nnnn}{##1}{##2}{##3{##4}}}
+ \def_long:cNx {#1_quicksort_partition_greater_i_braced:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_i_braced:nnnn}{##1}{{##4}##2}{##3}}
+ \def_long:cNx {#1_quicksort_partition_greater_ii_braced:nnnn} 4{
+ \exp_not:c{#1_quicksort_do_partition_ii_braced:nnnn}{##1}{##2{##4}}{##3}}
+ \def_long:cpx {#1_do_quicksort_braced:nnnnw} ##1##2##3##4\q_stop {
+ \exp_not:c{#1_quicksort_braced:n}{##2}
+ \exp_not:c{#1_quicksort_function:n}{##1}
+ \exp_not:c{#1_quicksort_braced:n}{##3}
+ }
+}
+\prg_define_quicksort:nnn {prg}{}{}
+\let:NN \prg_quicksort_function:n \ERROR
+\let:NN \prg_quicksort_compare:nnTF \ERROR
+%%
+%%
+%% End of file `l3prg.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3prop.sty b/Master/texmf-dist/tex/latex/expl3/l3prop.sty
index 4959cf2a949..fe956efcdab 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3prop.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3prop.sty
@@ -15,77 +15,173 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3prop.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3prop}
- [1998/05/04 v1.0e L3 Experimental Property Lists]
-\RequirePackage{l3seq}\par
-\let_new:NN \prop_new:N \seq_new:N
-\let_new:NN \prop_new:O \seq_new:O
-\let_new:NN \prop_new:c \seq_new:c
-\let_new:NN \prop_clear:N \seq_clear:N
-\let_new:NN \prop_gclear:N \seq_gclear:N
+%% File: l3prop.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3prop.dtx 581 2006-12-12 12:28:27Z morten $
+ {L3 Experimental Property Lists}
+\RequirePackage{l3toks}\par
+\def_new:Npn \prop_new:N #1{\toks_new:N #1}
+\def_new:Npn \prop_new:c {\exp_args:Nc \prop_new:N}
+\let_new:NN \prop_clear:N \toks_clear:N
+\def_new:Npn \prop_clear:c {\exp_args:Nc\prop_clear:N}
+\let_new:NN \prop_gclear:N \toks_gclear:N
+\def_new:Npn \prop_gclear:c {\exp_args:Nc\prop_gclear:N}
+\let_new:NN \prop_use:N \toks_use:N
\def_long_new:Npn \prop_split_aux:NNn #1#2#3{
\def:Npn \tmp:w ##1#2##2##3\q_stop {#3{##1}{##2}{##3}}
- \exp_after:NN\tmp:w #1#2\q_no_value \q_stop}
-\def_long_new:Npn \prop_get:NNN #1#2{\prop_split_aux:NNn
- #1#2\prop_get_aux:w}
-\def_long_new:Npn \prop_get_aux:w #1#2#3#4{\tlp_set:Nn#4{#2}}
-\def_long_new:Npn \prop_gget:NNN #1#2{\prop_split_aux:NNn
- #1#2\prop_gget_aux:w}
-\def_long_new:Npn \prop_gget_aux:w #1#2#3#4{\tlp_gset:Nn#4{#2}}
-\def_long_new:Npn \prop_get_gdel:NNN #1#2#3{\prop_split_aux:NNn
- #1#2{\prop_get_del_aux:w #3{\tlp_gset:Nn #1}#2}}
-\def_long_new:Npn \prop_get_del_aux:w #1#2#3#4#5#6{
- \tlp_set:Nn #1{#5}
- \quark_if_no_value:NF#1
- {\def:Npn \tmp:w ##1#3\q_no_value {#2{#4##1}}
- \tmp:w #6}}
-\def_long_new:Npn \prop_put:NNn #1#2{\prop_split_aux:NNn
- #1#2{\prop_put_aux:w {\tlp_set:Nn #1}#2}}
-\def_long_new:Npn \prop_gput:NNn #1#2{\prop_split_aux:NNn
- #1#2{\prop_put_aux:w {\tlp_gset:Nn #1}#2}}
+ \exp_after:NN\tmp:w \prop_use:N#1#2\q_no_value \q_stop}
+\def_long_new:NNn \prop_get:NNN 2{
+ \prop_split_aux:NNn #1#2\prop_get_aux:w}
+\def_long_new:NNn \prop_get_aux:w 4{\toks_set:Nn#4{#2}}
+\def_new:Npn \prop_get:cNN { \exp_args:Nc \prop_get:NNN }
+\def_long_new:NNn \prop_gget:NNN 2{
+ \prop_split_aux:NNn #1#2\prop_gget_aux:w}
+\def_new:Npn \prop_gget:NcN {\exp_args:NNc \prop_gget:NNN}
+\def_new:Npn \prop_gget:cNN {\exp_args:Nc \prop_gget:NNN}
+\def_long_new:NNn \prop_gget_aux:w 4{\toks_gset:Nn#4{#2}}
+\def_long_new:NNn \prop_get_gdel:NNN 3{
+ \prop_split_aux:NNn #1#2{\prop_get_del_aux:w #3{\toks_gset:Nn #1}#2}}
+\def_long_new:NNn \prop_get_del_aux:w 6{
+ \quark_if_no_value:nF{#5} {
+ \def:Npn \tmp:w ##1#3\q_no_value {#2{#4##1}}
+ \tmp:w #6}
+}
+\def_long_new:NNn \prop_put:NNn 2{
+ \prop_split_aux:NNn #1#2{
+ \toks_clear:N #1
+ \prop_put_aux:w {\toks_put_right:Nn #1}#2}
+}
+\def_new:Npn \prop_put:ccn {\exp_args:Ncc \prop_put:NNn }
+\def_long_new:NNn \prop_gput:NNn 2{
+ \prop_split_aux:NNn #1#2{
+ \toks_gclear:N #1
+ \prop_put_aux:w {\toks_gput_right:Nn #1}#2}
+}
\def_new:Npn \prop_gput:NNo {\exp_args:NNNo \prop_gput:NNn}
-\def_new:Npn \prop_gput:NOx {\exp_args:Nnox \prop_gput:NNn}
\def_new:Npn \prop_gput:NNx {\exp_args:Nnnx \prop_gput:NNn}
+\def_new:Npn \prop_gput:NOx {\exp_args:Nnox \prop_gput:NNn}
\def_new:Npn \prop_gput:NOo {\exp_args:NNOo \prop_gput:NNn}
+\def_new:Npn \prop_gput:Ncn {\exp_args:NNc \prop_gput:NNn }
\def_new:Npn \prop_gput:OOo {\exp_args:NOOo \prop_gput:NNn}
+\def_new:Npn \prop_gput:cNn {\exp_args:Nc \prop_gput:NNn}
\def_new:Npn \prop_gput:ccn {\exp_args:Ncc \prop_gput:NNn}
+\def_new:Npn \prop_gput:cco {\exp_args:Ncco \prop_gput:NNn}
\def_new:Npn \prop_gput:ccx {\exp_args:Nccx \prop_gput:NNn}
-\def_long_new:Npn \prop_put_aux:w #1#2#3#4#5#6{
- \quark_if_no_value:nTF {#4}
- {#1{#2{#6}#3}}
- {\def:Npn \tmp:w ##1#2\q_no_value {#1{#3#2{#6}##1}}
- \tmp:w #5}}
-\def_long_new:Npn \prop_del:NN #1#2{\prop_split_aux:NNn
- #1#2{\prop_del_aux:w {\tlp_set:Nn #1}#2}}
-\def_long_new:Npn \prop_gdel:NN #1#2{\prop_split_aux:NNn
- #1#2{\prop_del_aux:w {\tlp_gset:Nn #1}#2}}
-\def_long_new:Npn \prop_del_aux:w #1#2#3#4#5{\quark_if_no_value:nF {#4}
+\def_long_new:NNn \prop_put_aux:w 6{
+ #1{#2{#6}#3}
+ \quark_if_no_value:nF {#4}
+ {
+ \def:Npn \tmp:w ##1#2\q_no_value {#1{##1}}
+ \tmp:w #5
+ }
+}
+\def_long_new:NNn \prop_del:NN 2{
+ \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_set:Nn #1}#2}}
+\def_long_new:NNn \prop_gdel:NN 2{
+ \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_gset:Nn #1}#2}}
+\def_long_new:NNn \prop_del_aux:w 5{\quark_if_no_value:nF {#4}
{\def:Npn \tmp:w ##1#2\q_no_value {#1{#3##1}}\tmp:w #5}}
-\def_new:Npn \prop_if_in:NNTF #1#2{\prop_split_aux:NNn
- #1#2\prop_if_in_aux:w}
+\def_new:NNn \prop_if_in:NNTF 2{
+ \prop_split_aux:NNn #1#2\prop_if_in_aux:w}
\def_new:Npn \prop_if_in:NOTF {\exp_args:Nno \prop_if_in:NNTF}
-\def_new:Npn \prop_if_in_aux:w #1#2#3{\quark_if_no_value:nTF {#2}}
-\def_long_new:Npn \prop_gput_if_new:NNn #1#2{\prop_split_aux:NNn #1#2
- {\prop_put_if_new_aux:w #1#2}}
-\def_long_new:Npn \prop_put_if_new_aux:w #1#2#3#4#5#6{
+\def_new:Npn \prop_if_in:ccTF {\exp_args:Ncc \prop_if_in:NNTF}
+\def_new:NNn \prop_if_in_aux:w 3{\quark_if_no_value:nFT {#2}}
+\def_long_new:NNn \prop_gput_if_new:NNn 2{
+ \prop_split_aux:NNn #1#2{\prop_put_if_new_aux:w #1#2}}
+\def_long_new:NNn \prop_put_if_new_aux:w 6{
\quark_if_no_value:nT {#4}{#1{#2{#6}#3}}}
-\let_new:NN\prop_set_eq:NN\tlp_set_eq:NN
-\let_new:NN \prop_empty:NTF \tlp_empty:NTF
-\let_new:NN \prop_map_funct:Nn \use_none:nn
-\def_new:Npn \prop_map:NN #1#2{
- \let:NN \prop_map_funct:Nn #2
- \exp_after:NN\prop_map_aux:w #1\q_stop \q_stop}
-\def_new:Npn \prop_map_aux:w #1#2{
- \if_meaning:NN#1\q_stop \else:
- \prop_map_funct:Nn #1{#2}
- \exp_after:NN\prop_map_aux:w
- \fi:}
-\def_new:Npn \prop_map:cN { \exp_args:Nc \prop_map:NN }
-\let_new:NN \prop_map_inline:Nn \ERROR
-\let_new:NN \prop_map_inline:cn \ERROR
+\let_new:NN \prop_set_eq:NN \toks_set_eq:NN
+\let_new:NN \prop_set_eq:Nc \toks_set_eq:Nc
+\let_new:NN \prop_set_eq:cN \toks_set_eq:cN
+\let_new:NN \prop_set_eq:cc \toks_set_eq:cc
+\let_new:NN \prop_gset_eq:NN \toks_gset_eq:NN
+\let_new:NN \prop_gset_eq:Nc \toks_gset_eq:Nc
+\let_new:NN \prop_gset_eq:cN \toks_gset_eq:cN
+\let_new:NN \prop_gset_eq:cc \toks_gset_eq:cc
+\let_new:NN \prop_if_empty_p:N \toks_if_empty_p:N
+\let_new:NN \prop_if_empty_p:c \toks_if_empty_p:c
+\let_new:NN \prop_if_empty:NTF \toks_if_empty:NTF
+\let_new:NN \prop_if_empty:NT \toks_if_empty:NT
+\let_new:NN \prop_if_empty:NF \toks_if_empty:NF
+\let_new:NN \prop_if_empty:cTF \toks_if_empty:cTF
+\let_new:NN \prop_if_empty:cT \toks_if_empty:cTF
+\let_new:NN \prop_if_empty:cF \toks_if_empty:cF
+\def_new:NNn \prop_if_eq:NNTF 2 {
+ \tlist_if_eq:xxTF{\prop_use:N #1}{\prop_use:N #2}
+}
+\def_new:NNn \prop_if_eq:NNT 2 {
+ \tlist_if_eq:xxT{\prop_use:N #1}{\prop_use:N #2}
+}
+\def_new:NNn \prop_if_eq:NNF 2 {
+ \tlist_if_eq:xxF{\prop_use:N #1}{\prop_use:N #2}
+}
+\def_new:Npn \prop_if_eq:NcTF {\exp_args:NNc \prop_if_eq:NNTF}
+\def_new:Npn \prop_if_eq:NcT {\exp_args:NNc \prop_if_eq:NNT}
+\def_new:Npn \prop_if_eq:NcF {\exp_args:NNc \prop_if_eq:NNF}
+\def_new:Npn \prop_if_eq:cNTF {\exp_args:Nc \prop_if_eq:NNTF}
+\def_new:Npn \prop_if_eq:cNT {\exp_args:Nc \prop_if_eq:NNT}
+\def_new:Npn \prop_if_eq:cNF {\exp_args:Nc \prop_if_eq:NNF}
+\def_new:Npn \prop_if_eq:ccTF {\exp_args:Ncc \prop_if_eq:NNTF}
+\def_new:Npn \prop_if_eq:ccT {\exp_args:Ncc \prop_if_eq:NNT}
+\def_new:Npn \prop_if_eq:ccF {\exp_args:Ncc \prop_if_eq:NNF}
+\def_new:Npn \prop_map_function:NN #1#2{
+ \exp_after:NN \prop_map_function_aux:NNn
+ \exp_after:NN #2 \prop_use:N #1 \q_nil \q_no_value \q_stop
+}
+\def_new:Npn \prop_map_function_aux:NNn #1#2#3{
+ \if_meaning:NN \q_nil #1
+ \exp_after:NN \prop_map_break:w
+ \fi:
+ #1#2{#3}
+ \prop_map_function_aux:NNn #1
+}
+\def_new:Npn \prop_map_function:cN {\exp_args:Nc \prop_map_function:NN }
+\def_new:Npn \prop_map_function:cc {\exp_args:Ncc \prop_map_function:NN}
+\num_new:N \l_prop_inline_level_num
+\def_new:Npn \prop_map_inline:Nn #1#2 {
+ \num_incr:N \l_prop_inline_level_num
+ \def_long:cpn {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n}
+ ##1##2{#2}
+ \exp_args:NcE \prop_map_function:N
+ {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n}
+ \prop_use:N #1
+ \q_nil \q_no_value \q_stop
+ \num_decr:N \l_prop_inline_level_num
+}
+\def_new:Npn \prop_map_inline:cN { \exp_args:Nc \prop_map_inline:NN }
+\let_new:NN \prop_map_break:w \use_none_delimit_by_q_stop:w
%%
%%
%% End of file `l3prop.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3quark.sty b/Master/texmf-dist/tex/latex/expl3/l3quark.sty
index a4bb2fbf985..fd88bfa9cfa 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3quark.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3quark.sty
@@ -15,10 +15,41 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3quark.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3quark}
- [1998/05/20 v1.0e L3 Experimental Quark Commands]
+%% File: l3quark.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3quark.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental Quark Commands}
\RequirePackage{l3expan}\par
\def_new:Npn \quark_new:N #1{\tlp_new:Nn #1{#1}}
\quark_new:N \q_stop
@@ -26,21 +57,69 @@
\quark_new:N \q_nil
\quark_new:N\q_error
\quark_new:N\q_mark
-\def_new:Npn \quark_if_no_value:NTF #1{
- \if_meaning:NN\q_no_value#1
- \exp_after:NN\use_choice_i:nn
- \else: \exp_after:NN\use_choice_ii:nn \fi:}
-\def_new:Npn \quark_if_no_value:NF #1{\quark_if_no_value:NTF {#1}\use_noop:}
-\def_new:Npn \quark_if_no_value:nTF #1{\tlp_gset:Nn \g_testa_tlp {#1}
- \quark_if_no_value:NTF\g_testa_tlp}
-\def_new:Npn \quark_if_no_value:nF #1{\quark_if_no_value:nTF {#1}\use_noop:}
-\def_new:Npn \quark_if_no_value:nT #1#2{\quark_if_no_value:nTF {#1}
- {#2}\use_noop:}
-\def_new:Npn\quark_if_nil:NTF#1{
- \if_meaning:NN#1\q_nil
- \exp_after:NN\use_choice_i:nn
- \else:
- \exp_after:NN\use_choice_ii:nn\fi:}
+\def_long_test_function_new:npn {quark_if_no_value:N} #1 {
+ \if_meaning:NN\q_no_value#1}
+\def_long_new:Npn \quark_if_no_value_p:N #1{
+ \if_meaning:NN \q_no_value #1 \c_true
+ \else: \c_false \fi:
+}
+\cs_if_really_free:cTF{pdf_strcmp:D}{
+ \def_long_new:Npn \quark_if_no_value_p:n #1{
+ \if:w \exp_args:No \str_if_eq_var_p:nf
+ {\token_to_string:N\q_no_value\space}
+ {\tlist_to_str:n{#1}}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+ }
+}
+{
+ \def_long_new:Npn \quark_if_no_value_p:n #1{
+ \if_num:w
+ \pdf_strcmp:D {\exp_not:N \q_no_value}{\exp_not:n{#1}}=\c_zero
+ \c_true \else: \c_false \fi:
+ }
+}
+\def_long_test_function_new:npn {quark_if_no_value:n} #1 {
+ \if:w \quark_if_no_value_p:n{#1}}
+\def_long:Npn \quark_if_no_value:nFT #1{
+ \if:w \quark_if_no_value_p:n{#1}
+ \exp_after:NN\use_arg_ii:nn
+ \else:
+ \exp_after:NN\use_arg_i:nn
+ \fi:
+}
+\def_long_new:Npn \quark_if_nil_p:N #1{
+ \if_meaning:NN \q_nil #1 \c_true
+ \else: \c_false \fi:
+}
+\def_long_test_function_new:npn {quark_if_nil:N}#1{
+ \if_meaning:NN\q_nil#1}
+\cs_if_really_free:cTF{pdf_strcmp:D}{
+ \def_long_new:Npn \quark_if_nil_p:n #1{
+ \if:w \exp_args:No \str_if_eq_var_p:nf
+ {\token_to_string:N\q_nil\space}
+ {\tlist_to_str:n{#1}}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+ }
+}
+{
+ \def_long_new:Npn \quark_if_nil_p:n #1{
+ \if_num:w
+ \pdf_strcmp:D {\exp_not:N \q_nil}{\exp_not:n{#1}}=\c_zero
+ \c_true \else: \c_false \fi:
+ }
+}
+\def_long_test_function_new:npn {quark_if_nil:n} #1 {
+ \if:w \quark_if_nil_p:n{#1}}
+\def_new:Npn \quark_if_nil_p:o{\exp_args:No\quark_if_nil_p:n}
+\def_new:Npn \quark_if_nil:oTF{\exp_args:No\quark_if_nil:nTF}
+\def_new:Npn \quark_if_nil:oT {\exp_args:No\quark_if_nil:nT}
+\def_new:Npn \quark_if_nil:oF {\exp_args:No\quark_if_nil:nF}
%%
%%
%% End of file `l3quark.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3seq.sty b/Master/texmf-dist/tex/latex/expl3/l3seq.sty
index f2856e4366e..096b825697f 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3seq.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3seq.sty
@@ -15,18 +15,48 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3seq.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3seq}
- [1998/04/20 v1.0d L3 Experimental Token List Pointers]
-\RequirePackage{l3toks}
+%% File: l3seq.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3seq.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental sequences and stacks}
\RequirePackage{l3quark}
+\RequirePackage{l3tlp}
\RequirePackage{l3expan}
-\let_new:NN \seq_elt:w \use_noop:
-\let_new:NN \seq_elt_end: \use_noop:
+\let_new:NN \seq_elt:w \ERROR
+\let_new:NN \seq_elt_end: \ERROR
\def_new:Npn \seq_new:N #1{\tlp_new:Nn #1{}}
\def_new:Npn \seq_new:c {\exp_args:Nc \seq_new:N}
-\def_new:Npn \seq_new:O {\exp_args:No \seq_new:N}
\let_new:NN \seq_clear:N \tlp_clear:N
\let_new:NN \seq_clear:c \tlp_clear:c
\let_new:NN \seq_gclear:N \tlp_gclear:N
@@ -35,27 +65,22 @@
\let_new:NN \seq_clear_new:c \tlp_clear_new:c
\let_new:NN \seq_gclear_new:N \tlp_gclear_new:N
\let_new:NN \seq_gclear_new:c \tlp_gclear_new:c
-\let_new:NN \seq_empty_p:N \tlp_empty_p:N
-\def_new:Npn \seq_empty:NTF #1{
- \if_meaning:NN#1\c_empty_tlp
- \exp_after:NN\use_choice_i:nn
- \else: \exp_after:NN\use_choice_ii:nn \fi:}
-\def_new:Npn \seq_empty:cTF {\exp_args:Nc\seq_empty:NTF}
-\def_new:Npn \seq_empty:NF #1{
- \if_meaning:NN#1\c_empty_tlp \exp_after:NN\use_none:n
- \else: \exp_after:NN\use:n \fi:}
-\def_new:Npn \seq_empty:cF {\exp_args:Nc\seq_empty:NF}
-\def_new:Npn \seq_empty_err:N #1{\if_meaning:NN#1\c_empty_tlp
+\let_new:NN \seq_if_empty_p:N \tlp_if_empty_p:N
+\let_new:NN \seq_if_empty:NTF \tlp_if_empty:NTF
+\def_new:Npn \seq_if_empty:cTF {\exp_args:Nc\seq_if_empty:NTF}
+\let_new:NN \seq_if_empty:NF \tlp_if_empty:NF
+\def_new:Npn \seq_if_empty:cF {\exp_args:Nc\seq_if_empty:NF}
+\def_new:Npn \seq_if_empty_err:N #1{\if_meaning:NN#1\c_empty_tlp
\tlp_clear:N \l_testa_tlp % catch prefixes
- \err_latex_bug:n{Empty~sequence~`\token_to_string:N#1'}\fi:}
+ \err_latex_bug:x{Empty~sequence~`\token_to_string:N#1'}\fi:}
\def_new:Npn \seq_get:NN #1{
- \seq_empty_err:N #1
+ \seq_if_empty_err:N #1
\exp_after:NN\seq_get_aux:w #1\q_stop}
\def_new:Npn \seq_get_aux:w \seq_elt:w #1\seq_elt_end:
#2\q_stop #3{\tlp_set:Nn #3{#1}}
\def_new:Npn \seq_get:cN {\exp_args:Nc \seq_get:NN}
\def_new:Npn \seq_pop_aux:nnNN #1#2#3{
- \seq_empty_err:N #3
+ \seq_if_empty_err:N #3
\exp_after:NN\seq_pop_aux:w #3\q_stop #1#2#3}
\def_new:Npn \seq_pop_aux:w \seq_elt:w #1\seq_elt_end:
#2\q_stop #3#4#5#6{#3#5{#2}#4#6{#1}}
@@ -69,33 +94,57 @@
\def_new:Npn \seq_put_left:Nx {\exp_args:Nnx\seq_put_left:Nn}
\def_new:Npn \seq_put_right:Nn #1#2{
\seq_put_aux:Nnn #1{}{\seq_elt:w #2\seq_elt_end:}}
-\def_new:Npn \seq_put_right:No {\exp_args:Nno\seq_put_right:Nn}
-\def_new:Npn \seq_put_right:Nx {\exp_args:Nnx\seq_put_right:Nn}
+\def_new:Npn \seq_put_right:No {\exp_args:NNo\seq_put_right:Nn}
+\def_new:Npn \seq_put_right:Nx {\exp_args:NNx\seq_put_right:Nn}
\def_new:Npn \seq_gput_left:Nn {
+ \pref_global:D
\seq_put_left:Nn}
\def_new:Npn \seq_gput_right:Nn {
+ \pref_global:D
\seq_put_right:Nn}
\def_new:Npn \seq_gput_right:No {\exp_args:NNo \seq_gput_right:Nn}
+\def_new:Npn \seq_gput_right:Nc {\exp_args:NNc \seq_gput_right:Nn}
\def_new:Npn \seq_gput_right:cn {\exp_args:Nc \seq_gput_right:Nn}
\def_new:Npn \seq_gput_right:co {\exp_args:Nco \seq_gput_right:Nn}
\def_new:Npn \seq_gput_right:cc {\exp_args:Ncc \seq_gput_right:Nn}
+\def_new:Npn \seq_map_variable_aux:Nnw #1#2\seq_elt:w#3\seq_elt_end:{
+ \tlp_set:Nn #1{#3}
+ \quark_if_nil:NT #1 \seq_map_break:w
+ #2
+ \seq_map_variable_aux:Nnw #1{#2}
+}
+\def_new:Npn \seq_map_variable:NNn #1#2#3{
+ \tlp_set:Nx #2 {\exp_not:n{\seq_map_variable_aux:Nnw #2{#3}}}
+ \exp_after:NN #2 #1 \seq_elt:w \q_nil\seq_elt_end: \q_stop
+}
+\def_new:Npn \seq_map_variable:cNn{\exp_args:Nc\seq_map_variable:Nn}
+\let_new:NN \seq_map_break:w \use_none_delimit_by_q_stop:w
\def_new:Npn \seq_map:NN #1#2{
- \def:Npn \seq_elt:w ##1\seq_elt_end: {#2{##1}}#1}
+ \def:Npn \seq_elt:w ##1\seq_elt_end: {#2{##1}}#1
+ \let:NN \seq_elt:w \ERROR
+}
\def_new:Npn \seq_map_inline:Nn #1#2{
- \gdef:Npn \seq_elt:w ##1\seq_elt_end: {#2}#1}
+ \def:Npn \seq_elt:w ##1\seq_elt_end: {#2}#1
+ \let:NN \seq_elt:w \ERROR
+}
\def_new:Npn \seq_map_inline:cn{\exp_args:Nc\seq_map_inline:Nn}
+\let_new:NN \seq_set_eq:NN \let:NN
+\def_new:Npn \seq_set_eq:Nc {\exp_args:NNc \seq_set_eq:NN}
+\let_new:NN \seq_gset_eq:NN \glet:NN
+\def_new:Npn \seq_gset_eq:cN {\exp_args:Nc \seq_gset_eq:NN}
+\def_new:Npn \seq_gset_eq:Nc {\exp_args:NNc \seq_gset_eq:NN}
+\def_new:Npn \seq_gset_eq:cc {\exp_args:Ncc \seq_gset_eq:NN}
\def_new:Npn \seq_gconcat:NNN #1#2#3{
- \l_tmpa_toks \exp_after:NN{#2}
- \l_tmpb_toks \exp_after:NN{#3}
- \gdef:Npx #1{\toks_use:N \l_tmpa_toks \toks_use:N \l_tmpb_toks}}
+ \tlp_gset:Nx #1 {\exp_not:o{#2}\exp_not:o{#3}}
+}
\def_new:Npn \seq_gconcat:ccc{\exp_args:Nccc\seq_gconcat:NNN}
\def_new:Npn \seq_if_in:NnTF #1#2{
\def:Npn\tmp:w
##1\seq_elt:w #2\seq_elt_end: ##2##3\q_stop{
\if_meaning:NN\q_no_value##2
- \exp_after:NN\use_choice_ii:nn
+ \exp_after:NN\use_arg_ii:nn
\else:
- \exp_after:NN\use_choice_i:nn
+ \exp_after:NN\use_arg_i:nn
\fi:
}
\exp_after:NN
@@ -103,6 +152,9 @@
#2\seq_elt_end: \q_no_value \q_stop}
\def_new:Npn \seq_if_in:coTF {\exp_args:Nco \seq_if_in:NnTF}
\def_new:Npn \seq_if_in:cnTF {\exp_args:Nc \seq_if_in:NnTF}
+\def_new:Npn \seq_if_in:cxTF {\exp_args:Ncx \seq_if_in:NnTF}
+\def_new:Npn \seq_if_in:NnF #1#2 { \seq_if_in:NnTF #1{#2}\use_noop: }
+\def_new:Npn \seq_if_in:cnF {\exp_args:Nc \seq_if_in:NnF}
\let_new:NN \seq_push:Nn \seq_put_left:Nn
\let_new:NN \seq_push:No \seq_put_left:No
\let_new:NN \seq_push:cn \seq_put_left:cn
@@ -111,11 +163,11 @@
\let_new:NN \seq_gpush:Nn \seq_gput_left:Nn
\def_new:Npn \seq_gpush:No {\exp_args:NNo \seq_gpush:Nn}
\def_new:Npn \seq_gpush:cn {\exp_args:Nc \seq_gpush:Nn}
+\def_new:Npn \seq_gpush:NC {\exp_args:NNC \seq_gpush:Nn}
\def_new:Npn \seq_gpop:NN {\seq_pop_aux:nnNN \tlp_gset:Nn \tlp_set:Nn}
\def_new:Npn \seq_gpop:cN {\exp_args:Nc \seq_gpop:NN}
\let_new:NN \seq_top:NN \seq_get:NN
\let_new:NN \seq_top:cN \seq_get:cN
-
%%
%%
%% End of file `l3seq.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3skip.sty b/Master/texmf-dist/tex/latex/expl3/l3skip.sty
new file mode 100644
index 00000000000..8e24a01271b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3skip.sty
@@ -0,0 +1,204 @@
+%%
+%% This is file `l3skip.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3skip.dtx (with options: `package,trace')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3skip.dtx Copyright (C) 2005-2006 Frank Mittelbach, 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3skip.dtx 573 2006-08-21 20:59:37Z morten $
+ {L3 Experimental skip registers}
+\RequirePackage{l3int}
+\RequirePackage{l3prg}
+\let:NN \skip_new:N \newskip
+\def_new:Npn \skip_new:c {\exp_args:Nc \skip_new:N}
+\def_new:Npn \skip_set:Nn #1#2{#1\skip_eval:n{#2}
+}
+\def_new:Npn \skip_gset:Nn {
+ \pref_global:D
+ \skip_set:Nn }
+\def_new:Npn \skip_set:cn {\exp_args:Nc \skip_set:Nn }
+\def_new:Npn \skip_gset:cn {\exp_args:Nc \skip_gset:Nn }
+\def_new:Npn \skip_zero:N #1{#1\c_zero_skip \scan_stop:
+}
+\def_new:Npn \skip_gzero:N {
+ \pref_global:D
+ \skip_zero:N}
+\def_new:Npn \skip_zero:c {\exp_args:Nc \skip_zero:N}
+\def_new:Npn \skip_gzero:c {\exp_args:Nc \skip_gzero:N}
+\def_new:Npn \skip_add:Nn #1#2{
+ \tex_advance:D#1 by \skip_eval:n{#2}
+}
+\def_new:Npn\skip_add:cn{\exp_args:Nc\skip_add:Nn}
+\def_new:Npn \skip_sub:Nn #1#2{
+ \tex_advance:D#1-\skip_eval:n{#2}
+}
+\def_new:Npn \skip_gadd:Nn {
+ \pref_global:D
+ \skip_add:Nn }
+\def_new:Npn \skip_gsub:Nn {
+ \pref_global:D
+ \skip_sub:Nn }
+\let_new:NN \skip_horizontal:N \tex_hskip:D
+\def_new:Npn \skip_horizontal:c {\exp_args:Nc\skip_horizontal:N}
+\def_new:Npn \skip_horizontal:n #1{\skip_horizontal:N \skip_eval:n{#1}}
+\let_new:NN \skip_vertical:N \tex_vskip:D
+\def_new:Npn \skip_vertital:c {\exp_args:Nc\skip_vertical:N}
+\def_new:Npn \skip_vertical:n #1{\skip_vertical:N \skip_eval:n{#1}}
+\let_new:NN \skip_use:N \tex_the:D
+\def_new:Npn \skip_use:c #1{\exp_args:Nc\skip_use:N}
+\def_new:Npn \skip_eval:n #1 {\etex_glueexpr:D #1 \scan_stop:}
+%%\chk_new_cs:N \l_tmpa_skip
+%%\tex_skipdef:D\l_tmpa_skip 255 %currently taken up by \skip@
+\skip_new:N \l_tmpa_skip
+\skip_new:N \l_tmpb_skip
+\skip_new:N \l_tmpc_skip
+\skip_new:N \g_tmpa_skip
+\skip_new:N \g_tmpb_skip
+\let:NN \c_zero_skip \z@
+\let:NN \c_max_skip \maxdimen
+\def_new:Npn \skip_infinite_glue:nTF #1{
+ \prg_logic_test:nTF {
+ \prg_logic_or_p:nn
+ { \int_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero }
+ { \int_compare_p:nNn {\etex_glueshrinkorder:D #1 } > \c_zero }
+ }
+}
+\def_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4{
+ \skip_infinite_glue:nTF {#1}
+ {
+ #3 = \c_zero_skip
+ #4 = \c_zero_skip
+ #2
+ }
+ {
+ #3 = \etex_gluestretch:D #1 \scan_stop:
+ #4 = \etex_glueshrink:D #1 \scan_stop:
+ }
+}
+\let:NN \dim_new:N \newdimen
+\def_new:Npn \dim_new:c {\exp_args:Nc \dim_new:N}
+\def_new:Npn \dim_set:Nn #1#2{#1~ \dim_eval:n{#2}}
+\def_new:Npn \dim_gset:Nn {\pref_global:D \dim_set:Nn }
+\def_new:Npn \dim_set:cn {\exp_args:Nc \dim_set:Nn }
+\def_new:Npn \dim_set:Nc {\exp_args:NNc \dim_set:Nn }
+\def_new:Npn \dim_gset:cn {\exp_args:Nc \dim_gset:Nn }
+\def_new:Npn \dim_gset:Nc {\exp_args:NNc \dim_gset:Nn }
+\def_new:Npn \dim_gset:cc {\exp_args:Ncc \dim_gset:Nn }
+\def_new:Npn \dim_zero:N #1{#1\c_zero_skip}
+\def_new:Npn \dim_gzero:N {\pref_global:D \dim_zero:N}
+\def_new:Npn \dim_zero:c {\exp_args:Nc \dim_zero:N}
+\def_new:Npn \dim_gzero:c {\exp_args:Nc \dim_gzero:N}
+\def_new:Npn \dim_add:Nn #1#2{
+ \tex_advance:D#1 by \dim_eval:n{#2}\scan_stop:
+}
+\def_new:Npn\dim_add:cn{\exp_args:Nc\dim_add:Nn}
+\def_new:Npn\dim_add:Nc{\exp_args:NNc\dim_add:Nn}
+\def_new:Npn \dim_gadd:Nn { \pref_global:D \dim_add:Nn }
+\def_new:Npn \dim_sub:Nn #1#2{\tex_advance:D#1-#2\scan_stop:}
+\def_new:Npn\dim_sub:cn{\exp_args:Nc\dim_sub:Nn}
+\def_new:Npn\dim_sub:Nc{\exp_args:NNc\dim_sub:Nn}
+\def_new:Npn \dim_gsub:Nn {\pref_global:D \dim_sub:Nn }
+\let_new:NN \dim_use:N \tex_the:D
+\def_new:Npn \dim_use:c {\exp_args:Nc\dim_use:N}
+\dim_new:N \l_tmpa_dim
+\dim_new:N \l_tmpb_dim
+\dim_new:N \l_tmpc_dim
+\dim_new:N \l_tmpd_dim
+\dim_new:N \g_tmpa_dim
+\dim_new:N \g_tmpb_dim
+\let_new:NN \c_zero_dim \c_zero_skip
+\let_new:NN \c_max_dim \c_max_skip
+\def_new:Npn \dim_eval:n #1 {\etex_dimexpr:D #1 \scan_stop:}
+\let_new:NN \if_dim:w \tex_ifdim:D
+\def_new:Npn \dim_compare:nNnTF #1#2#3{
+ \if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
+ \exp_after:NN \use_arg_i:nn
+ \else:
+ \exp_after:NN \use_arg_ii:nn
+ \fi:
+}
+\def_new:Npn \dim_compare:nNnT #1#2#3{
+ \if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
+ \exp_after:NN \use_arg_ii:nn
+ \fi:
+ \use_none:n
+}
+\def_new:Npn \dim_compare:nNnF #1#2#3{
+ \if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
+ \exp_after:NN \use_none:n
+ \else:
+ \exp_after:NN \use_arg_i:n
+ \fi:
+}
+\def_new:Npn \dim_compare_p:nNn #1#2#3{
+ \if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_new:Npn \dim_while:nNnT #1#2#3#4{
+ \dim_compare:nNnT {#1}#2{#3}{#4 \dim_while:nNnT {#1}#2{#3}{#4}}
+}
+\def_new:Npn \dim_while:nNnF #1#2#3#4{
+ \dim_compare:nNnF {#1}#2{#3}{#4 \dim_while:nNnF {#1}#2{#3}{#4}}
+}
+\def_new:Npn \dim_dowhile:nNnT #1#2#3#4{
+ #4 \dim_compare:nNnT {#1}#2{#3}{\dim_dowhile:nNnT {#1}#2{#3}{#4}}
+}
+\def_new:Npn \dim_dowhile:nNnF #1#2#3#4{
+ #4 \dim_compare:nNnF {#1}#2{#3}{\dim_dowhile:nNnF {#1}#2{#3}{#4}}
+}
+\let_new:NN \muskip_new:N \newmuskip % nicked from LaTeX
+\def_new:Npn \muskip_set:Nn#1#2{#1\etex_muexpr:D#2\scan_stop:}
+\def_new:Npn \muskip_gset:Nn{\pref_global:D\muskip_set:Nn}
+\def_new:Npn \muskip_add:Nn#1#2{\tex_advance:D#1\etex_muexpr:D#2\scan_stop:}
+\def_new:Npn \muskip_gadd:Nn{\pref_global:D\muskip_add:Nn}
+\def_new:Npn \muskip_sub:Nn#1#2{\tex_advance:D#1-\etex_muexpr:D#2\scan_stop:}
+\def_new:Npn \muskip_gsub:Nn{\pref_global:D\muskip_sub:Nn}
+%%
+%%
+%% End of file `l3skip.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3tlp.sty b/Master/texmf-dist/tex/latex/expl3/l3tlp.sty
index 8c7dbfc9339..e80ea876717 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3tlp.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3tlp.sty
@@ -15,83 +15,409 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3tlp.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3tlp}
- [1998/04/20 v1.0d L3 Experimental Token List Pointers]
-\RequirePackage{l3basics}\par
- \let_new:NN\tlp_new:Nn\gdef:Npn
-\def_long_new:Npn \tlp_clear:N #1{\tlp_set_eq:NN #1\c_empty_tlp}
-\def_long_new:Npn \tlp_gclear:N #1{\tlp_gset_eq:NN #1\c_empty_tlp}
+%% File: l3tlp.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3tlp.dtx 581 2006-12-12 12:28:27Z morten $
+ {L3 Experimental Token List Pointers}
+\RequirePackage{l3basics}
+\def_long_new:Npn \tlp_new:Nn #1#2{
+ \chk_new_cs:N #1
+ \gdef:Npn #1{#2}
+}
+\def_new:Npn \tlp_new:cn {\exp_args:Nc \tlp_new:Nn }
+\def_long_new:Npn \tlp_new:Nx #1#2{
+ \chk_new_cs:N #1
+ \gdef:Npx #1{#2}
+}
+\def_new:Npn \tlp_use:N #1 {
+ \if_meaning:NN #1 \scan_stop:
+ \err_latex_bug:x {Token~list~pointer~ `\token_to_string:N #1'~
+ has~ an~ erroneous~ structure!}
+ \else:
+ \exp_after:NN #1
+ \fi:
+}
+\def_new:Npn \tlp_use:c {\exp_args:Nc \tlp_use:N}
+\def_long_new:Npn\tlp_set:Nn#1#2{\def:Npn#1{#2}}
+\def_long_new:Npn\tlp_set:Nx#1#2{\def:Npx#1{#2}}
+\def_long_new:Npn\tlp_gset:Nn#1#2{\gdef:Npn#1{#2}}
+\def_long_new:Npn\tlp_gset:Nx#1#2{\gdef:Npx#1{#2}}
+\def_new:Npn \tlp_set:No {\exp_args:NNo \tlp_set:Nn}
+\def_new:Npn \tlp_set:Nf {\exp_args:NNf \tlp_set:Nn}
+\def_new:Npn \tlp_set:cn {\exp_args:Nc \tlp_set:Nn}
+\def_new:Npn \tlp_set:co {\exp_args:Nco \tlp_set:Nn}
+\def_new:Npn \tlp_set:cx {\exp_args:Nc \tlp_set:Nx}
+\def_new:Npn \tlp_gset:No {\exp_args:NNo \tlp_gset:Nn}
+\def_new:Npn \tlp_gset:cn {\exp_args:Nc \tlp_gset:Nn}
+\def_new:Npn \tlp_gset:cx {\exp_args:Nc \tlp_gset:Nx}
+\let_new:NN \tlp_set_eq:NN \let:NN
+\let_new:NN \tlp_gset_eq:NN \glet:NN
+\def_new:Npn \tlp_set_eq:Nc {\exp_args:NNc \tlp_set_eq:NN}
+\def_new:Npn \tlp_set_eq:cN {\exp_args:Nc \tlp_set_eq:NN}
+\def_new:Npn \tlp_set_eq:cc {\exp_args:Ncc \tlp_set_eq:NN}
+\def_new:Npn \tlp_gset_eq:Nc {\exp_args:NNc \tlp_gset_eq:NN}
+\def_new:Npn \tlp_gset_eq:cN {\exp_args:Nc \tlp_gset_eq:NN}
+\def_new:Npn \tlp_gset_eq:cc {\exp_args:Ncc \tlp_gset_eq:NN}
+\def_new:Npn \tlp_clear:N #1{\tlp_set_eq:NN #1\c_empty_tlp}
\def_new:Npn \tlp_clear:c {\exp_args:Nc \tlp_clear:N}
+\def_new:Npn \tlp_gclear:N #1{\tlp_gset_eq:NN #1\c_empty_tlp}
\def_new:Npn \tlp_gclear:c {\exp_args:Nc \tlp_gclear:N}
\let_new:NN \tlp_clear_new:N \tlp_clear:N
-\def_long_new:Npn \tlp_clear_new:c {\exp_args:Nc \tlp_clear_new:N}
+\def_new:Npn \tlp_clear_new:c {\exp_args:Nc \tlp_clear_new:N}
\let_new:NN \tlp_gclear_new:N \tlp_gclear:N
-\def_long_new:Npn \tlp_gclear_new:c {\exp_args:Nc \tlp_gclear_new:N}
-\def_long_new:Npn \tlp_put_left:Nn #1{\exp_after:NN
- \tlp_put_left:aux\exp_after:NN{#1}#1}
+\def_new:Npn \tlp_gclear_new:c {\exp_args:Nc \tlp_gclear_new:N}
+\def_new:Npn \tlp_put_left:Nn #1{
+ \exp_args:No \tlp_put_left_aux:w {#1}#1}
\def_new:Npn\tlp_put_left:No{\exp_args:NNo\tlp_put_left:Nn}
-\def_long_new:Npn \tlp_gput_left:Nn {
+\def_new:Npn \tlp_gput_left:Nn {
\pref_global:D
- \tlp_put_left:Nn}
+ \tlp_put_left:Nn
+}
\def_new:Npn\tlp_gput_left:No{\exp_args:NNo\tlp_gput_left:Nn}
-\def_long_new:Npn \tlp_put_left:aux #1#2#3{\def:Npn #2{#3#1}
+\def_new:Npn\tlp_gput_left:Nx{\exp_args:NNx\tlp_gput_left:Nn}
+\def_long_new:Npn \tlp_put_left_aux:w #1#2#3{\tlp_set:Nn #2{#3#1}
}
\def_long_new:Npn \tlp_put_right:Nn #1#2{\tlp_set:No #1{#1#2}}
\def_long_new:Npn \tlp_gput_right:Nn #1#2{\tlp_gset:No #1{#1#2}}
\def_new:Npn \tlp_gput_right:No {\exp_args:NNo \tlp_gput_right:Nn}
\def_new:Npn \tlp_gput_right:Nx {\exp_args:NNx \tlp_gput_right:Nn}
+\def_new:Npn \tlp_gput_right:cn {\exp_args:Nc \tlp_gput_right:Nn}
+\def_new:Npn \tlp_gput_right:co {\exp_args:Nco \tlp_gput_right:Nn}
\def_new:Npn \tlp_put_right:cc {\exp_args:Ncc \tlp_put_right:Nn}
\def_new:Npn \tlp_put_right:No {\exp_args:NNo \tlp_put_right:Nn}
\def_new:Npn \tlp_put_right:Nx {\exp_args:Nnx \tlp_put_right:Nn}
- \def_new:Npn\tlp_set:Nn#1#2{\def:Npn#1{#2}}
- \def_new:Npn\tlp_set:Nx#1#2{\def:Npx#1{#2}}
- \def_new:Npn\tlp_gset:Nn#1#2{\gdef:Npn#1{#2}}
- \def_new:Npn\tlp_gset:Nx#1#2{\gdef:Npx#1{#2}}
- \let_new:NN\tlp_set:No\def:No
- \let_new:NN\tlp_gset:No\gdef:No
- \let_new:NN\tlp_set_eq:NN\let:NwN
- \let_new:NN\tlp_gset_eq:NN\glet:NN
\def_new:Npn \tlp_gset:Nc {
\pref_global:D
- \tlp_set:Nc}
+ \tlp_set:Nc}
\def_new:Npn \tlp_set:Nc #1#2{\tlp_set:No #1{\cs:w#2\cs_end:}}
-\def_new:Npn \tlp_empty_p:N #1{
+\def_new:Npn \tlp_if_empty_p:N #1{
\if_meaning:NN#1\c_empty_tlp \c_true \else: \c_false \fi:}
-\def_new:Npn \tlp_empty:NF #1{
- \if_meaning:NN#1\c_empty_tlp
- \exp_after:NN\use_none:nn
- \fi:
- \use:n}
-\def_new:Npn \tlp_empty:NTF #1{
- \if_meaning:NN#1\c_empty_tlp
- \exp_after:NN\use_choice_i:nn
- \else:
- \exp_after:NN\use_choice_ii:nn
- \fi:}
-\def_new:Npn \tlp_eq:NNF #1#2{
- \if_meaning:NN#1#2
- \exp_after:NN\use_none:nn
- \fi:
- \use:n}
+\def_new:Npn \tlp_if_empty_p:c {\exp_args:Nc\tlp_if_empty_p:N}
+\def_test_function_new:npn {tlp_if_empty:N} #1{
+ \if_meaning:NN#1\c_empty_tlp}
+\def_new:Npn \tlp_if_empty:cTF {\exp_args:Nc \tlp_if_empty:NTF}
+\def_new:Npn \tlp_if_empty:cT {\exp_args:Nc \tlp_if_empty:NT}
+\def_new:Npn \tlp_if_empty:cF {\exp_args:Nc \tlp_if_empty:NF}
+\def_new:Npn \tlp_if_eq_p:NN #1#2{
+ \if_meaning:NN#1#2 \c_true \else: \c_false \fi:}
+\def_new:Npn \tlp_if_eq_p:Nc {\exp_args:NNc\tlp_if_empty_p:NN}
+\def_new:Npn \tlp_if_eq_p:cN {\exp_args:Nc\tlp_if_empty_p:NN}
+\def_new:Npn \tlp_if_eq_p:cc {\exp_args:Ncc\tlp_if_empty_p:NN}
+\def_test_function_new:npn {tlp_if_eq:NN} #1#2{\if_meaning:NN#1#2}
+\def_new:Npn \tlp_if_eq:cNTF{\exp_args:Nc \tlp_if_eq:NNTF}
+\def_new:Npn \tlp_if_eq:cNT {\exp_args:Nc \tlp_if_eq:NNT}
+\def_new:Npn \tlp_if_eq:cNF {\exp_args:Nc \tlp_if_eq:NNF}
+\def_new:Npn \tlp_if_eq:NcTF{\exp_args:NNc \tlp_if_eq:NNTF}
+\def_new:Npn \tlp_if_eq:NcT {\exp_args:NNc \tlp_if_eq:NNT}
+\def_new:Npn \tlp_if_eq:NcF {\exp_args:NNc \tlp_if_eq:NNF}
+\def_new:Npn \tlp_if_eq:ccTF{\exp_args:Ncc \tlp_if_eq:NNTF}
+\def_new:Npn \tlp_if_eq:ccT {\exp_args:Ncc \tlp_if_eq:NNT}
+\def_new:Npn \tlp_if_eq:ccF {\exp_args:Ncc \tlp_if_eq:NNF}
\tlp_new:Nn \c_empty_tlp {}
\tlp_new:Nn \c_relax_tlp {\scan_stop:}
-
\tlp_new:Nn \g_tmpa_tlp{}
\tlp_new:Nn \g_tmpb_tlp{}
-
\tlp_new:Nn \l_testa_tlp {}
\tlp_new:Nn \l_testb_tlp {}
\tlp_new:Nn \g_testa_tlp {}
\tlp_new:Nn \g_testb_tlp {}
-
\tlp_new:Nn \l_tmpa_tlp{}
\tlp_new:Nn \l_tmpb_tlp{}
-\def_new:Npn \tlp_to_str:N {\exp_after:NN\tlp_to_str:aux
- \token_to_meaning:N}
-\def_new:Npn \tlp_to_str:aux #1>{}
+\def_new:Npn \tlp_to_str:N {\exp_after:NN\tlp_to_str_aux:w
+ \token_to_meaning:N}
+\def_new:Npn \tlp_to_str_aux:w #1>{}
\def_new:Npn\tlp_to_str:c{\exp_args:Nc\tlp_to_str:N}
+\def_long_new:Npn \tlist_if_empty_p:n #1{
+ \exp_after:NN\if_meaning:NN\exp_after:NN\q_nil\tlist_to_str:n{#1}\q_nil
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_new:Npn \tlist_if_empty_p:o {\exp_args:No\tlist_if_empty_p:n}
+\def_long_test_function_new:npn{tlist_if_empty:n}#1{
+ \if:w\tlist_if_empty_p:n{#1}}
+\def_long_test_function_new:npn{tlist_if_empty:o}#1{
+ \if:w\tlist_if_empty_p:o{#1}}
+\def_long_new:Npn \tlist_if_blank_p:n #1{
+ \exp_after:NN\tlist_if_blank_p_aux:w\tlist_to_str:n{#1}aa..\q_nil
+}
+\def_new:Npn \tlist_if_blank_p_aux:w #1#2a#3#4\q_nil{
+ \if_meaning:NN #3#4\c_true\else:\c_false\fi:}
+\def_long_test_function_new:npn{tlist_if_blank:n}#1{
+ \if:w\tlist_if_blank_p:n{#1}}
+\def:Npn \tlist_if_blank_p:o{\exp_args:No\tlist_if_blank_p:n}
+\def_long_test_function_new:npn{tlist_if_blank:o}#1{
+ \if:w\tlist_if_blank_p:o{#1}}
+\let_new:NN \tlist_to_lowercase:n \tex_lowercase:D
+\let_new:NN \tlist_to_uppercase:n \tex_uppercase:D
+\let_new:NN \tlist_to_str:n \etex_detokenize:D
+\def_long_new:Npn \tlist_map_function:nN #1#2{
+ \tlist_map_function_aux:Nn #2 #1 \q_nil \q_stop
+}
+\def_new:Npn \tlp_map_function:NN #1#2{
+ \exp_after:NN \tlist_map_function_aux:Nn
+ \exp_after:NN #2 #1 \q_nil \q_stop
+}
+\def_long_new:Npn \tlist_map_function_aux:Nn #1#2{
+ \quark_if_nil:nT{#2} \tlist_map_break:w
+ #1{#2} \tlist_map_function_aux:Nn #1
+}
+\def_new:Npn\tlp_map_function:cN{\exp_args:Nc\tlp_map_function:NN}
+\def_long_new:Npn \tlist_map_inline:nn #1#2{
+ \num_incr:N \l_tlp_inline_level_num
+ \def_long:cpn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n}
+ ##1{#2}
+ \exp_args:Nc \tlist_map_function_aux:Nn
+ {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n}
+ #1 \q_nil\q_stop
+ \num_decr:N \l_tlp_inline_level_num
+}
+\def_long_new:Npn \tlp_map_inline:Nn #1#2{
+ \num_incr:N \l_tlp_inline_level_num
+ \def_long:cpn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n}
+ ##1{#2}
+ \exp_args:NcE \tlist_map_function_aux:Nn
+ {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n}
+ #1 \q_nil\q_stop
+ \num_decr:N \l_tlp_inline_level_num
+}
+\def_new:Npn\tlp_map_inline:cN{\exp_args:Nc\tlp_map_inline:NN}
+\tlp_new:Nn \l_tlp_inline_level_num{0}
+\def_long_new:Npn \tlist_map_variable:nNn #1#2#3{
+ \tlist_map_variable_aux:Nnn #2 {#3} #1 \q_nil \q_stop
+}
+\def_new:Npn \tlp_map_variable:NNn {\exp_args:No \tlist_map_variable:nNn}
+\def_new:Npn \tlp_map_variable:cNn {\exp_args:Nc \tlp_map_variable:NNn}
+\def_long_new:Npn \tlist_map_variable_aux:Nnn #1#2#3{
+ \tlp_set:Nn #1{#3}
+ \quark_if_nil:NT #1 \tlist_map_break:w
+ #2 \tlist_map_variable_aux:Nnn #1{#2}
+}
+\let_new:NN \tlist_map_break:w \use_none_delimit_by_q_stop:w
+\let_new:NN \tlp_map_break:w \tlist_map_break:w
+\let_new:NN \tlist_compare:xx \pdfstrcmp
+\def_long_new:NNn \tlist_compare:nn 2{
+ \tlist_compare:xx{\exp_not:n{#1}}{\exp_not:n{#2}}
+}
+\def_long_new:NNn \tlist_compare:nx 1{
+ \tlist_compare:xx{\exp_not:n{#1}}
+}
+\def_long_new:NNn \tlist_compare:xn 2{
+ \tlist_compare:xx{#1}{\exp_not:n{#2}}
+}
+\def_long_new:NNn \tlist_compare:no 2{
+ \tlist_compare:xx{\exp_not:n{#1}}{\exp_not:n\exp_after:NN{#2}}
+}
+\def_long_new:NNn \tlist_compare:on 2{
+ \tlist_compare:xx{\exp_not:n\exp_after:NN{#1}}{\exp_not:n{#2}}
+}
+\def_long_new:NNn \tlist_compare:oo 2{
+ \tlist_compare:xx{\exp_not:n\exp_after:NN{#1}}{\exp_not:n\exp_after:NN{#2}}
+}
+\def_long_new:NNn \tlist_compare:xo 2{
+ \tlist_compare:xx{#1}{\exp_not:n\exp_after:NN{#2}}
+}
+\def_long_new:NNn \tlist_compare:ox 2{
+ \tlist_compare:xx{\exp_not:n\exp_after:NN{#1}}{\exp_not:n{#2}}
+}
+\def:Npn \tmp:w #1{
+ \def_long_new:cNx {tlist_if_eq_p:#1} 2{
+ \exp_not:N \if_num:w
+ \exp_after:NN \exp_not:N \cs:w tlist_compare:#1\cs_end:{##1}{##2}
+ \exp_not:n{ =\c_zero \c_true \else: \c_false \fi: }
+ }
+ \def_long_test_function_new:npx{tlist_if_eq:#1}##1##2{
+ \exp_not:N \if_num:w
+ \exp_after:NN \exp_not:N \cs:w tlist_compare:#1\cs_end:{##1}{##2}
+ \exp_not:n{ =\c_zero }
+ }
+}
+\tmp:w{xx} \tmp:w{nn} \tmp:w{oo} \tmp:w{xn} \tmp:w{nx}
+\tmp:w{on} \tmp:w{no} \tmp:w{xo} \tmp:w{ox}
+\cs_if_really_free:cT{pdf_strcmp:D}{
+ \def_long_test_function:npn{tlist_if_eq:nn}#1#2{
+ \tlp_set:Nx \l_testa_tlp {\exp_not:n{#1}}
+ \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}}
+ \if_meaning:NN\l_testa_tlp \l_testb_tlp
+ }
+ \def_long_test_function:npn{tlist_if_eq:oo}#1#2{
+ \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}}
+ \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}}
+ \if_meaning:NN\l_testa_tlp \l_testb_tlp
+ }
+ \def_long:Npn\tlist_compare:xx #1#2{\ERROR}
+}
+\def_long:Npn \tlp_if_in:NnTF #1#2{
+ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{
+ \quark_if_no_value:nFT{##2}
+ }
+ \exp_after:NN \tmp:w #1 #2 \q_no_value \q_stop
+}
+\def_new:Npn \tlp_if_in:cnTF {\exp_args:Nc\tlp_if_in:NnTF}
+\def_long:Npn \tlp_if_in:NnT #1#2{
+ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{
+ \quark_if_no_value:nFT{##2}
+ }
+ \exp_after:NN \tmp:w #1 #2 \q_no_value \q_stop
+}
+\def_new:Npn \tlp_if_in:cnT {\exp_args:Nc\tlp_if_in:NnT}
+\def_long:Npn \tlp_if_in:NnF #1#2{
+ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{
+ \quark_if_no_value:nT{##2}
+ }
+ \exp_after:NN \tmp:w #1 #2 \q_no_value \q_stop
+}
+\def_new:Npn \tlp_if_in:cnF {\exp_args:Nc\tlp_if_in:NnF}
+\def_long_new:Npn \tlist_if_in:nnTF #1#2{
+ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{
+ \quark_if_no_value:nFT{##2}
+ }
+ \tmp:w #1 #2 \q_no_value \q_stop
+}
+\def_new:Npn \tlist_if_in:onTF {\exp_args:No\tlist_if_in:nnTF}
+\tlp_new:Nn\l_tlp_replace_tlp{}
+\def_long_new:NNn \tlp_replace_in_aux:NNnn 4{
+ \def:Npn \tmp:w ##1#3##2\q_stop{
+ \quark_if_no_value:nF{##2}
+ {
+ \tlp_set:Nx\l_tlp_replace_tlp{\exp_not:o{\use_none:n##1#4}}
+ \def:Npn \tmp:w ####1#3\q_no_value{
+ \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n ####1}}
+ }
+ \tmp:w \q_mark ##2
+ }
+ #1#2\l_tlp_replace_tlp
+ }
+ \use_arg_i:n{\exp_after:NN \tmp:w\exp_after:NN\q_mark}
+ #2#3 \q_no_value\q_stop
+}
+\def_new:Npn \tlp_replace_in:Nnn {\tlp_replace_in_aux:NNnn \tlp_set_eq:NN}
+\def_new:Npn \tlp_replace_in:cnn{\exp_args:Nc\tlp_replace_in:Nnn}
+\def_new:Npn \tlp_greplace_in:Nnn {\tlp_replace_in_aux:NNnn \tlp_gset_eq:NN}
+\def_new:Npn \tlp_greplace_in:cnn{\exp_args:Nc\tlp_greplace_in:Nnn}
+\def_long:NNn \tlp_replace_all_in_aux:NNnn 4{
+ \tlp_clear:N \l_tlp_replace_tlp
+ \def:Npn \tmp:w ##1#3##2\q_stop{
+ \quark_if_no_value:nTF{##2}
+ {
+ \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n##1}}
+ }
+ {
+ \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n##1 #4}}
+ \tmp:w \q_mark##2 \q_stop
+ }
+ }
+ \use_arg_i:n{\exp_after:NN \tmp:w\exp_after:NN\q_mark}
+ #2#3 \q_no_value\q_stop
+ #1#2\l_tlp_replace_tlp
+}
+\def_new:Npn \tlp_replace_all_in:Nnn {
+ \tlp_replace_all_in_aux:NNnn \tlp_set_eq:NN}
+\def_new:Npn \tlp_replace_all_in:cnn{\exp_args:Nc\tlp_replace_all_in:Nnn}
+\def_new:Npn \tlp_greplace_all_in:Nnn {
+ \tlp_replace_all_in_aux:NNnn \tlp_gset_eq:NN}
+\def_new:Npn \tlp_greplace_all_in:cnn{\exp_args:Nc\tlp_greplace_all_in:Nnn}
+\def_long_new:NNn \tlp_remove_in:Nn 2{\tlp_replace_in:Nnn #1{#2}{}}
+\def_long_new:NNn \tlp_gremove_in:Nn 2{\tlp_greplace_in:Nnn #1{#2}{}}
+\def_new:Npn \tlp_remove_in:cn{\exp_args:Nc\tlp_remove_in:Nn}
+\def_new:Npn \tlp_gremove_in:cn{\exp_args:Nc\tlp_gremove_in:Nn}
+\def_long_new:Npn \tlp_remove_all_in:Nn #1#2{
+ \tlp_replace_all_in:Nnn #1{#2}{}
+}
+\def_long_new:Npn \tlp_gremove_all_in:Nn #1#2{
+ \tlp_greplace_all_in:Nnn #1{#2}{}
+}
+\def_new:Npn \tlp_remove_all_in:cn{\exp_args:Nc\tlp_remove_all_in:Nn}
+\def_new:Npn \tlp_gremove_all_in:cn{\exp_args:Nc\tlp_gremove_all_in:Nn}
+\def_long_new:Npn \tlist_head:n #1{\tlist_head:w #1\q_nil}
+\let_new:NN \tlist_head_i:n \tlist_head:n
+\def_long_new:Npn \tlist_tail:n #1{\tlist_tail:w #1\q_nil}
+\def_new:Npn \tlist_tail:f {\exp_args:Nf \tlist_tail:n}
+\def_long_new:Npn \tlist_head_iii:n #1{\tlist_head_iii:w #1\q_nil}
+\def_new:Npn \tlist_head_iii:f {\exp_args:Nf \tlist_head_iii:n}
+\let_new:NN \tlist_head:w \use_arg_i_delimit_by_q_nil:nw
+\def_long_new:Npn \tlist_tail:w #1#2\q_nil{#2}
+\def_long_new:Npn \tlist_head_iii:w #1#2#3#4\q_nil{#1#2#3}
+\def_long_new:Npn \tlist_if_head_eq_meaning_p:nN #1#2{
+ \exp_after:NN \if_meaning:NN \tlist_head:w #1\q_nil#2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_long_test_function_new:npn {tlist_if_head_eq_meaning:nN}#1#2{
+ \if:w \tlist_if_head_eq_meaning_p:nN{#1}#2}
+\def_long_new:Npn \tlist_if_head_eq_charcode_p:nN #1#2{
+ \exp_after:NN\if_charcode:w \exp_after:NN\exp_not:N
+ \tlist_head:w #1\q_nil\exp_not:N#2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_long_test_function_new:npn {tlist_if_head_eq_charcode:nN}#1#2{
+ \if:w\tlist_if_head_eq_charcode_p:nN{#1}#2}
+\def_long_new:Npn \tlist_if_head_eq_charcode_p:fN #1#2{
+ \exp_after:NN\if_charcode:w \tlist_head:w #1\q_nil\exp_not:N#2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_long_test_function_new:npn {tlist_if_head_eq_charcode:fN}#1#2{
+ \if:w\tlist_if_head_eq_charcode_p:fN{#1}#2}
+\def_long_new:Npn \tlist_if_head_eq_catcode_p:nN #1#2{
+ \exp_after:NN\if_charcode:w \exp_after:NN\exp_not:N
+ \tlist_head:w #1\q_nil\exp_not:N#2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_long_test_function_new:npn {tlist_if_head_eq_catcode:nN}#1#2{
+ \if:w\tlist_if_head_eq_catcode_p:nN{#1}#2}
+\def_long_new:Npn \tlist_reverse:n #1{
+ \tlist_reverse_aux:nN {} #1 \q_nil\q_stop
+}
+\def_long_new:Npn \tlist_reverse_aux:nN #1#2{
+ \quark_if_nil:NT #2
+ { \use_arg_i_delimit_by_q_stop:nw {#1} }
+ \tlist_reverse_aux:nN {#2#1}
+}
+\RequirePackage{l3expan}
+\RequirePackage{l3num}\par
%%
%%
%% End of file `l3tlp.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3token.sty b/Master/texmf-dist/tex/latex/expl3/l3token.sty
new file mode 100644
index 00000000000..ffdfc4caae9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3token.sty
@@ -0,0 +1,552 @@
+%%
+%% This is file `l3token.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3token.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3token.dtx Copyright (C) 2005-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3token.dtx 578 2006-11-21 18:13:24Z morten $
+ {L3 Experimental token investigation and manipulation}
+\RequirePackage{l3prg}
+\RequirePackage{l3int}
+\let_new:NN \char_set_catcode:w \tex_catcode:D
+\def_new:Npn \char_set_catcode:nn #1#2{
+ \char_set_catcode:w #1 = \int_eval:n{#2}
+}
+\def_new:Npn \char_value_catcode:w {\int_use:N\tex_catcode:D}
+\def_new:Npn \char_value_catcode:n #1{\char_value_catcode:w \int_eval:n{#1}}
+\def_new:Npn \char_show_value_catcode:w {\tex_showthe:D\tex_catcode:D}
+\def_new:Npn \char_show_value_catcode:n #1{
+ \char_show_value_catcode:w \int_eval:n{#1}}
+\let_new:NN \char_set_lccode:w \tex_lccode:D
+\def_new:Npn \char_set_lccode:nn #1#2{
+ \char_set_lccode:w #1 = \int_eval:n{#2}
+}
+\def_new:Npn \char_value_lccode:w {\int_use:N\tex_lccode:D}
+\def_new:Npn \char_value_lccode:n #1{\char_value_lccode:w \int_eval:n{#1}}
+\def_new:Npn \char_show_value_lccode:w {\tex_showthe:D\tex_lccode:D}
+\def_new:Npn \char_show_value_lccode:n #1{
+ \char_show_value_lccode:w \int_eval:n{#1}}
+\let_new:NN \char_set_uccode:w \tex_uccode:D
+\def_new:Npn \char_set_uccode:nn #1#2{
+ \char_set_uccode:w #1 = \int_eval:n{#2}
+}
+\def_new:Npn \char_value_uccode:w {\int_use:N\tex_uccode:D}
+\def_new:Npn \char_value_uccode:n #1{\char_value_uccode:w \int_eval:n{#1}}
+\def_new:Npn \char_show_value_uccode:w {\tex_showthe:D\tex_uccode:D}
+\def_new:Npn \char_show_value_uccode:n #1{
+ \char_show_value_uccode:w \int_eval:n{#1}}
+\let_new:NN \char_set_sfcode:w \tex_sfcode:D
+\def_new:Npn \char_set_sfcode:nn #1#2{
+ \char_set_sfcode:w #1 = \int_eval:n{#2}
+}
+\def_new:Npn \char_value_sfcode:w {\int_use:N\tex_uccode:D}
+\def_new:Npn \char_value_sfcode:n #1{\char_value_sfcode:w \int_eval:n{#1}}
+\def_new:Npn \char_show_value_sfcode:w {\tex_showthe:D\tex_sfcode:D}
+\def_new:Npn \char_show_value_sfcode:n #1{
+ \char_show_value_sfcode:w \int_eval:n{#1}}
+\def_new:Npn \token_new:Nn #1#2{\glet_new:NN #1#2}
+\let_new:NN \c_group_begin_token {
+\let_new:NN \c_group_end_token }
+\group_begin:
+\char_set_catcode:nn{`\*}{3}
+\token_new:Nn \c_math_shift_token {*}
+\char_set_catcode:nn{`\*}{4}
+\token_new:Nn \c_alignment_tab_token {*}
+\token_new:Nn \c_parameter_token {#}
+\token_new:Nn \c_math_superscript_token {^}
+\char_set_catcode:nn{`\*}{8}
+\token_new:Nn \c_math_subscript_token {*}
+\token_new:Nn \c_space_token {~}
+\token_new:Nn \c_letter_token {a}
+\token_new:Nn \c_other_char_token {1}
+\char_set_catcode:nn{`\*}{13}
+\token_new:Nn \c_active_char_token {*}
+\group_end:
+\def_new:Npn \token_if_group_begin_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_group_begin_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_group_begin:N} #1{
+ \if:w\token_if_group_begin_p:N #1}
+\def_new:Npn \token_if_group_end_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_group_end_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_group_end:N} #1{
+ \if:w\token_if_group_end_p:N #1}
+\def_new:Npn \token_if_math_shift_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_math_shift_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_math_shift:N} #1{
+ \if:w\token_if_math_shift_p:N#1}
+\def_new:Npn \token_if_alignment_tab_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_alignment_tab_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_alignment_tab:N} #1{
+ \if:w\token_if_alignment_tab_p:N#1}
+\def_new:Npn \token_if_parameter_p:N #1{
+ \exp_after:NN\if_catcode:w \cs:w c_parameter_token\cs_end:\exp_not:N #1
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_parameter:N} #1{
+ \if:w\token_if_parameter_p:N#1}
+\def_new:Npn \token_if_math_superscript_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_math_superscript_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_math_superscript:N} #1{
+ \if:w\token_if_math_superscript_p:N #1}
+\def_new:Npn \token_if_math_subscript_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_math_subscript_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_math_subscript:N} #1{
+ \if:w\token_if_math_subscript_p:N #1}
+\def_new:Npn \token_if_space_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_space_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_space:N} #1{
+ \if:w\token_if_space_p:N #1}
+\def_new:Npn \token_if_letter_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_letter_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_letter:N} #1{
+ \if:w\token_if_letter_p:N #1}
+\def_new:Npn \token_if_other_char_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_other_char_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_other_char:N} #1{
+ \if:w\token_if_other_char_p:N #1}
+\def_new:Npn \token_if_active_char_p:N #1{
+ \if_catcode:w \exp_not:N #1\c_active_char_token
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_active_char:N} #1{
+ \if:w\token_if_active_char_p:N #1}
+\def_new:Npn \token_if_eq_meaning_p:NN #1#2 {
+ \if_meaning:NN #1 #2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_eq_meaning:NN}#1#2{
+ \if_meaning:NN #1 #2}
+\def_new:Npn \token_if_eq_catcode_p:NN #1#2 {
+ \if_catcode:w \exp_not:N #1 \exp_not:N #2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_eq_catcode:NN}#1#2{
+ \if:w\token_if_eq_catcode_p:NN#1#2}
+\def_new:Npn \token_if_charcode_eq_p:NN #1#2 {
+ \if_charcode:w \exp_not:N #1 \exp_not:N #2
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_eq_charcode:NN}#1#2{
+ \if:w\token_if_eq_charcode_p:NN#1#2}
+\def_new:Npn \token_if_macro_p:N #1 {
+ \exp_after:NN \token_if_macro_p_aux:w \token_to_meaning:N #1 -> \q_nil
+}
+\def_new:Npn \token_if_macro_p_aux:w #1 -> #2 \q_nil{
+ \if:w \tlist_if_empty_p:n{#2} \c_false \else: \c_true \fi:
+}
+\def_test_function_new:npn {token_if_macro:N} #1{\if:w\token_if_macro_p:N#1}
+\def_new:Npn \token_if_cs_p:N {\token_if_eq_catcode_p:NN \scan_stop:}
+\def_test_function_new:npn {token_if_cs:N} #1{
+ \if:w \token_if_eq_catcode_p:NN \scan_stop: #1}
+\def_new:Npn \token_if_expandable_p:N #1{
+ \exp_after:NN \if_token_eq:NN \exp_not:N #1 \scan_stop:
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn {token_if_expandable:N} #1{
+ \if:w\token_if_expandable_p:N#1}
+\group_begin:
+ \char_set_lccode:nn {`\X}{`\n}
+ \char_set_lccode:nn {`\Y}{`\t}
+ \char_set_lccode:nn {`\Z}{`\d}
+ \char_set_lccode:nn {`\?}{`\\}
+ \tlist_map_inline:nn{\X\Y\Z\M\T\C\H\A\R\O\U\S\K\I\P\L\G\P\E}
+ {\char_set_catcode:nn {`#1}{12}}
+\tlist_to_lowercase:n{
+ \group_end:
+\def_new:Npn \token_if_chardef_p:N #1 {
+ \exp_after:NN \token_if_chardef_p_aux:w
+ \token_to_meaning:N #1?CHAR"\q_nil
+}
+\def_new:Npn \token_if_chardef_p_aux:w #1?CHAR"#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def_new:Npn \token_if_mathchardef_p:N #1 {
+ \exp_after:NN \token_if_mathchardef_p_aux:w
+ \token_to_meaning:N #1?MAYHCHAR"\q_nil
+}
+\def_new:Npn \token_if_mathchardef_p_aux:w #1?MAYHCHAR"#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def:Npn \token_if_int_register_p:N #1{
+ \if_meaning:NN \tex_countdef:D #1
+ \c_false
+ \else:
+ \exp_after:NN \token_if_int_register_p_aux:w
+ \token_to_meaning:N #1?COUXY\q_nil
+ \fi:
+}
+\def_new:Npn \token_if_int_register_p_aux:w #1?COUXY#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def:Npn \token_if_skip_register_p:N #1{
+ \if_meaning:NN \tex_skipdef:D #1
+ \c_false
+ \else:
+ \exp_after:NN \token_if_skip_register_p_aux:w
+ \token_to_meaning:N #1?SKIP\q_nil
+ \fi:
+}
+\def_new:Npn \token_if_skip_register_p_aux:w #1?SKIP#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def:Npn \token_if_dim_register_p:N #1{
+ \if_meaning:NN \tex_dimendef:D #1
+ \c_false
+ \else:
+ \exp_after:NN \token_if_dim_register_p_aux:w
+ \token_to_meaning:N #1?ZIMEX\q_nil
+ \fi:
+}
+\def_new:Npn \token_if_dim_register_p_aux:w #1?ZIMEX#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def:Npn \token_if_toks_register_p:N #1{
+ \if_meaning:NN \tex_toksdef:D #1
+ \c_false
+ \else:
+ \exp_after:NN \token_if_toks_register_p_aux:w
+ \token_to_meaning:N #1?YOKS\q_nil
+ \fi:
+}
+\def_new:Npn \token_if_toks_register_p_aux:w #1?YOKS#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def_new:Npn \token_if_protected_macro_p:N #1 {
+ \exp_after:NN \token_if_protected_macro_p_aux:w
+ \token_to_meaning:N #1?PROYECYEZ~MACRO\q_nil
+}
+\def_new:Npn \token_if_protected_macro_p_aux:w #1?PROYECYEZ~MACRO#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def_new:Npn \token_if_long_macro_p:N #1 {
+ \exp_after:NN \token_if_long_macro_p_aux:w
+ \token_to_meaning:N #1?LOXG~MACRO\q_nil
+}
+\def_new:Npn \token_if_long_macro_p_aux:w #1?LOXG~MACRO#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+\def_new:Npn \token_if_protected_long_macro_p:N #1 {
+ \exp_after:NN \token_if_protected_long_macro_p_aux:w
+ \token_to_meaning:N #1?PROYECYEZ~?LOXG~MACRO\q_nil
+}
+\def_new:Npn \token_if_protected_long_macro_p_aux:w #1
+ ?PROYECYEZ~?LOXG~MACRO#2\q_nil{
+ \tlist_if_empty_p:n{#1}
+}
+}
+\def_test_function_new:npn {token_if_chardef:N} {\if:w \token_if_chardef_p:N}
+\def_test_function_new:npn {token_if_mathchardef:N} {
+ \if:w \token_if_mathchardef_p:N}
+\def_test_function_new:npn {token_if_long_macro:N} {
+ \if:w \token_if_long_macro_p:N}
+\def_test_function_new:npn {token_if_protected_macro:N} {
+ \if:w \token_if_protected_macro_p:N}
+\def_test_function_new:npn {token_if_protected_long_macro:N} {
+ \if:w \token_if_protected_long_macro_p:N}
+\def_test_function_new:npn {token_if_dim_register:N} {
+ \if:w \token_if_dim_register_p:N}
+\def_test_function_new:npn {token_if_skip_register:N} {
+ \if:w \token_if_skip_register_p:N}
+\def_test_function_new:npn {token_if_int_register:N} {
+ \if:w \token_if_int_register_p:N}
+\def_test_function_new:npn {token_if_toks_register:N} {
+ \if:w \token_if_toks_register_p:N}
+\group_begin:
+\char_set_lccode:nn {`\?}{`\:}
+\char_set_catcode:nn{`\M}{12}
+\char_set_catcode:nn{`\A}{12}
+\char_set_catcode:nn{`\C}{12}
+\char_set_catcode:nn{`\R}{12}
+\char_set_catcode:nn{`\O}{12}
+\tlist_to_lowercase:n{
+ \group_end:
+ \def_new:Npn \token_get_prefix_arg_replacement_aux:w #1MACRO?#2->#3\q_nil#4{
+ #4{#1}{#2}{#3}
+ }
+ \def_new:Npn\token_get_prefix_spec:N #1{
+ \token_if_macro:NTF #1{
+ \exp_after:NN \token_get_prefix_arg_replacement_aux:w
+ \token_to_meaning:N #1\q_nil\use_arg_i:nnn
+ }{\scan_stop:}
+ }
+ \def_new:Npn\token_get_arg_spec:N #1{
+ \token_if_macro:NTF #1{
+ \exp_after:NN \token_get_prefix_arg_replacement_aux:w
+ \token_to_meaning:N #1\q_nil\use_arg_ii:nnn
+ }{\scan_stop:}
+ }
+ \def_new:Npn\token_get_replacement_spec:N #1{
+ \token_if_macro:NTF #1{
+ \exp_after:NN \token_get_prefix_arg_replacement_aux:w
+ \token_to_meaning:N #1\q_nil\use_arg_iii:nnn
+ }{\scan_stop:}
+ }
+}
+\def_new:Npn \token_if_primitive_p:N #1{
+ \if:w \token_if_cs_p:N #1\scan_stop:
+ \if:w \token_if_macro_p:N #1
+ \c_false
+ \else:
+ \token_if_primitive_p_aux:N #1
+ \fi:
+ \else:
+ \if:w \token_if_active_p:N #1
+ \if:w \token_if_macro_p:N #1
+ \c_false
+ \else:
+ \token_if_primitive_p_aux:N #1
+ \fi:
+ \else:
+ \c_false
+ \fi:
+ \fi:
+}
+\def_new:Npn \token_if_primitive_p_aux:N #1{
+ \if:w \token_if_chardef_p:N #1 \c_false
+ \else:
+ \if:w \token_if_mathchardef_p:N #1 \c_false
+ \else:
+ \if:w \token_if_int_register_p:N #1 \c_false
+ \else:
+ \if:w \token_if_skip_register_p:N #1 \c_false
+ \else:
+ \if:w \token_if_dim_register_p:N #1 \c_false
+ \else:
+ \if:w \token_if_toks_register_p:N #1 \c_false
+ \else:
+ \c_true
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+}
+\def_test_function_new:npn {token_if_primitive:N} #1{
+ \if:w\token_if_primitive_p:N#1}
+\token_new:Nn \l_peek_token {?}
+\token_new:Nn \g_peek_token {?}
+\token_new:Nn \l_peek_search_token {?}
+\def_new:Npn \peek_after:NN {\tex_futurelet:D \l_peek_token }
+\def_new:Npn \peek_gafter:NN {
+ \pref_global:D \tex_futurelet:D \g_peek_token
+}
+\tlp_new:Nn \l_peek_true_tlp {}
+\tlp_new:Nn \l_peek_false_tlp {}
+\def_new:Npn \peek_tmp:w{}
+\tlp_new:Nn \l_peek_search_tlp{}
+\def_long_new:Npn \peek_token_generic:NNTF #1#2#3#4{
+ \let:NN \l_peek_search_token #2
+ \tlp_set:Nn \l_peek_search_tlp {#2}
+ \tlp_set:Nx \l_peek_true_tlp {\exp_not:n{\group_align_safe_end: #3}}
+ \tlp_set:Nx \l_peek_false_tlp {\exp_not:n{\group_align_safe_end: #4}}
+ \group_align_safe_begin:
+ \peek_after:NN #1
+}
+\def_long_new:Npn \peek_token_remove_generic:NNTF #1#2#3#4{
+ \let:NN \l_peek_search_token #2
+ \tlp_set:Nn \l_peek_search_tlp {#2}
+ \tlp_set:Nx \l_peek_true_aux_tlp { \exp_not:n{ #3 } }
+ \tlp_set_eq:NN \l_peek_true_tlp \c_peek_true_remove_next_tlp
+ \tlp_set:Nx \l_peek_false_tlp {\exp_not:n{\group_align_safe_end: #4}}
+ \group_align_safe_begin:
+ \peek_after:NN #1
+}
+\tlp_new:Nn \l_peek_true_aux_tlp {}
+\tlp_new:Nn \c_peek_true_remove_next_tlp {\group_align_safe_end:
+ \tex_afterassignment:D \l_peek_true_aux_tlp \let:NN \peek_tmp:w
+}
+\def_new:Npn \peek_execute_branches_meaning: {
+ \if_meaning:NN \l_peek_token \l_peek_search_token
+ \exp_after:NN \l_peek_true_tlp
+ \else:
+ \exp_after:NN \l_peek_false_tlp
+ \fi:
+}
+\def_new:Npn \peek_execute_branches_catcode: {
+ \if_catcode:w \exp_not:N\l_peek_token \exp_not:N\l_peek_search_token
+ \exp_after:NN \l_peek_true_tlp
+ \else:
+ \exp_after:NN \l_peek_false_tlp
+ \fi:
+}
+\def_new:Npn \peek_execute_branches_charcode: {
+ \prg_if_predicate:nTF {
+ \prg_if_predicate_or_p:nn
+ {\token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token}
+ {\token_if_eq_meaning_p:NN \l_peek_token \c_space_token}
+ }
+ { \l_peek_false_tlp }
+ { \exp_after:NN \peek_execute_branches_charcode_aux:NN \l_peek_search_tlp }
+}
+\def_long_new:Npn \peek_execute_branches_charcode_aux:NN #1#2{
+ \if_charcode:w \exp_not:N #1\exp_not:N#2
+ \exp_after:NN \l_peek_true_tlp
+ \else:
+ \exp_after:NN \l_peek_false_tlp
+ \fi:
+ #2
+}
+\def_new:Npn \peek_meaning:NTF {
+ \peek_token_generic:NNTF \peek_execute_branches_meaning:
+}
+\def_new:Npn \peek_meaning_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_meaning:
+ \peek_token_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_meaning_remove:NTF {
+ \peek_token_remove_generic:NNTF \peek_execute_branches_meaning:
+}
+\def_new:Npn \peek_meaning_remove_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_meaning:
+ \peek_token_remove_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_catcode:NTF {
+ \peek_token_generic:NNTF \peek_execute_branches_catcode:
+}
+\def_new:Npn \peek_catcode_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_catcode:
+ \peek_token_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_catcode_remove:NTF {
+ \peek_token_remove_generic:NNTF \peek_execute_branches_catcode:
+}
+\def_new:Npn \peek_catcode_remove_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_catcode:
+ \peek_token_remove_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_charcode:NTF {
+ \peek_token_generic:NNTF \peek_execute_branches_charcode:
+}
+\def_new:Npn \peek_charcode_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_charcode:
+ \peek_token_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_charcode_remove:NTF {
+ \peek_token_remove_generic:NNTF \peek_execute_branches_charcode:
+}
+
+\def_new:Npn \peek_charcode_remove_ignore_spaces:NTF {
+ \let:NN \peek_execute_branches: \peek_execute_branches_charcode:
+ \peek_token_remove_generic:NNTF \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_ignore_spaces_aux: {
+ \peek_after:NN \peek_ignore_spaces_execute_branches:
+}
+\def_new:Npn \peek_ignore_spaces_execute_branches: {
+ \token_if_eq_meaning:NNTF \l_peek_token \c_space_token
+ { \tex_afterassignment:D \peek_ignore_spaces_aux:
+ \let:NN \peek_tmp:w
+ }
+ \peek_execute_branches:
+}
+%%
+%%
+%% End of file `l3token.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3toks.sty b/Master/texmf-dist/tex/latex/expl3/l3toks.sty
index 3db8ed5adbb..d950644fa85 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3toks.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3toks.sty
@@ -15,19 +15,51 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3toks.dtx Copyright (C) 1990-1998 LaTeX3 project
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{l3toks}
- [1998/05/14 v1.0g L3 Experimental Token Registers]
+%% File: l3toks.dtx Copyright (C) 1990-2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3toks.dtx 580 2006-11-26 15:56:47Z morten $
+ {L3 Experimental Token Registers}
\RequirePackage{l3expan}\par
-\def_new:Npn \toks_new:N {}
\let:NN \toks_new:N \newtoks % nick from LaTeX for the moment
+\def_new:Npn \toks_new:c {\exp_args:Nc\toks_new:N}
\def_new:Npn \toks_clear:N #1{#1\c_empty_toks
}
\def_new:Npn \toks_gclear:N {
\pref_global:D
\toks_clear:N}
\let_new:NN \toks_use:N \the_internal:D
+\def_new:Npn \toks_use:c {\exp_args:Nc\toks_use:N}
\def_new:Npn \toks_use_clear:N#1{
\exp_after:NN
\toks_clear:N
@@ -37,30 +69,86 @@
\def_new:Npn \toks_use_gclear:N{
\pref_global:D
\toks_use_clear:N}
-\def_new:Npn \toks_put_left:Nn #1{\exp_after:NN\toks_put_left_aux:w
+\def_new:Npn \toks_put_left:Nn #1{
+ \exp_after:NN\toks_put_left_aux:w\exp_after:NN\q_mark
\toks_use:N #1\q_stop #1}
+\def_new:Npn \toks_put_left:No {\exp_args:NNo \toks_put_left:Nn}
\def_new:Npn \toks_gput_left:Nn {
\pref_global:D
\toks_put_left:Nn}
-\def_long_new:Npn \toks_put_left_aux:w #1\q_stop #2#3{#2{#3#1}
+\def_new:Npn \toks_gput_left:Nx {\exp_args:NNx \toks_gput_left:Nn}
+\def_long_new:Npn \toks_put_left_aux:w #1\q_stop #2#3{
+ #2\exp_after:NN{\use_arg_i:nn{#3}#1}
}
\def_long_new:Npn \toks_put_right:Nn #1#2{#1\exp_after:NN{\toks_use:N #1#2}
}
\def_new:Npn \toks_gput_right:Nn {
\pref_global:D
\toks_put_right:Nn}
-\def_new:Npn \toks_gput_right:Nx {\exp_args:Nnx\toks_gput_right:Nn}
+\def_long_new:Npn\toks_put_right:No#1#2{#1\exp_after:NN\exp_after:NN
+\exp_after:NN{\exp_after:NN\toks_use:N\exp_after:NN #1#2}}
+\def_long_new:Npn\toks_put_right:Nd#1#2{
+ \exp_after:NN\toks_put_right:No\exp_after:NN#1\exp_after:NN{#2}}
+\def_long_new:Npn \toks_put_right:Nf #1#2{
+ #1\exp_after:NN\exp_after:NN\exp_after:NN{
+ \exp_after:NN\toks_use:N\exp_after:NN #1\int_to_roman:w -`0#2}}
+\def_new:Npn \toks_put_right:Nx {\exp_args:NNx \toks_put_right:Nn }
+\def_new:Npn \toks_gput_right:No {\exp_args:NNo\toks_gput_right:Nn}
+\def_new:Npn \toks_gput_right:Nx {\exp_args:NNx\toks_gput_right:Nn}
\let_new:NN \toks_set:Nn\use_noop:
-\def_new:Npn \toks_set:No {\exp_args:NNo \toks_set:Nn}
+ \def_long_new:Npn \toks_set:No#1#2{#1\exp_after:NN{#2}}
+ \def_long_new:Npn \toks_set:Nd#1#2{
+ #1\exp_after:NN\exp_after:NN\exp_after:NN{#2}}
\def_new:Npn \toks_set:Nx {\exp_args:NNx \toks_set:Nn}
+\def_long_new:Npn\toks_set:Nf #1#2{
+ #1\exp_after:NN{\int_to_roman:w -`0#2}}
+\def_new:Npn \toks_set:cf {\exp_args:Nc\toks_set:Nf}
+\def_new:Npn \toks_set:cn {\exp_args:Nc\toks_set:Nn}
+\def_new:Npn \toks_set:co {\exp_args:Nc\toks_set:No}
+\def_new:Npn \toks_set:cx {\exp_args:Nc\toks_set:Nx}
\let_new:NN \toks_gset:Nn\pref_global:D
\def_new:Npn \toks_gset:No {\exp_args:NNo \toks_gset:Nn}
\def_new:Npn \toks_gset:Nx {\exp_args:NNx \toks_gset:Nn}
+\def_new:Npn \toks_gset:cn {\exp_args:Nc \toks_gset:Nn}
+\def_new:Npn \toks_gset:co {\exp_args:Nc \toks_gset:No}
+\def_new:Npn \toks_gset:cx {\exp_args:Nc \toks_gset:Nx}
\let_new:NN \toks_set_eq:NN \use_noop:
\let_new:NN \toks_gset_eq:NN \pref_global:D
-\def_new:Npn\toks_empty:NTF#1{
- \tlp_set:No\l_testa_tlp{\toks_use:N#1}
- \tlp_empty:NTF\l_testa_tlp}
+\def_new:Npn \toks_set_eq:Nc {\exp_args:NNc\toks_set_eq:NN}
+\def_new:Npn \toks_set_eq:cN {\exp_args:Nc\toks_set_eq:NN}
+\def_new:Npn \toks_set_eq:cc {\exp_args:Ncc\toks_set_eq:NN}
+\def_new:Npn \toks_gset_eq:Nc {\exp_args:NNc\toks_gset_eq:NN}
+\def_new:Npn \toks_gset_eq:cN {\exp_args:Nc\toks_gset_eq:NN}
+\def_new:Npn \toks_gset_eq:cc {\exp_args:Ncc\toks_gset_eq:NN}
+\def_new:Npn\toks_if_empty_p:N#1{
+ \if:w \tlist_if_empty_p:o{\toks_use:N #1}
+ \c_true
+ \else:
+ \c_false
+ \fi:
+}
+\def_test_function_new:npn{toks_if_empty:N}#1{\if:w \toks_if_empty_p:N #1}
+\def_new:Npn\toks_if_empty:cTF{\exp_args:Nc\toks_if_empty:NTF}
+\def_new:Npn\toks_if_empty:cT{\exp_args:Nc\toks_if_empty:NT}
+\def_new:Npn\toks_if_empty:cF{\exp_args:Nc\toks_if_empty:NF}
+\def_new:NNn \toks_if_eq:NNTF 2 {
+ \tlist_if_eq:xxTF{\toks_use:N #1}{\toks_use:N #2}
+}
+\def_new:NNn \toks_if_eq:NNT 2 {
+ \tlist_if_eq:xxT{\toks_use:N #1}{\toks_use:N #2}
+}
+\def_new:NNn \toks_if_eq:NNF 2 {
+ \tlist_if_eq:xxF{\toks_use:N #1}{\toks_use:N #2}
+}
+\def_new:Npn \toks_if_eq:NcTF {\exp_args:NNc \toks_if_eq:NNTF}
+\def_new:Npn \toks_if_eq:NcT {\exp_args:NNc \toks_if_eq:NNT}
+\def_new:Npn \toks_if_eq:NcF {\exp_args:NNc \toks_if_eq:NNF}
+\def_new:Npn \toks_if_eq:cNTF {\exp_args:Nc \toks_if_eq:NNTF}
+\def_new:Npn \toks_if_eq:cNT {\exp_args:Nc \toks_if_eq:NNT}
+\def_new:Npn \toks_if_eq:cNF {\exp_args:Nc \toks_if_eq:NNF}
+\def_new:Npn \toks_if_eq:ccTF {\exp_args:Ncc \toks_if_eq:NNTF}
+\def_new:Npn \toks_if_eq:ccT {\exp_args:Ncc \toks_if_eq:NNT}
+\def_new:Npn \toks_if_eq:ccF {\exp_args:Ncc \toks_if_eq:NNF}
\tex_toksdef:D \l_tmpa_toks = 255
\toks_new:N \l_tmpb_toks
\toks_new:N \l_tmpc_toks
@@ -68,6 +156,12 @@
\toks_new:N \g_tmpb_toks
\toks_new:N \g_tmpc_toks
\toks_new:N \c_empty_toks
+\def_new:Npn \toks_remove_extra_brace_group:N #1{
+ \exp_after:NN \toks_remove_extra_brace_group_aux:NNw
+ \exp_after:NN \toks_set:Nn \exp_after:NN #1
+ \toks_use:N#1\q_nil
+}
+\def_long_new:Npn\toks_remove_extra_brace_group_aux:NNw #1#2#3\q_nil{#1#2{#3}}
%%
%%
%% End of file `l3toks.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3xref.sty b/Master/texmf-dist/tex/latex/expl3/l3xref.sty
new file mode 100644
index 00000000000..a99ac7bf196
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3xref.sty
@@ -0,0 +1,111 @@
+%%
+%% This is file `l3xref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3xref.dtx (with options: `package')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3xref.dtx Copyright (C) 2006 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 ``expl3 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/cgi-bin/cvsweb.cgi/
+%%
+%% 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 LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3xref.dtx 579 2006-11-25 23:38:03Z morten $
+ {L3 Experimental cross referencing}
+\RequirePackage{l3quark}
+\RequirePackage{l3toks}
+\RequirePackage{l3io}
+\RequirePackage{l3prop}
+\RequirePackage{l3int}
+\RequirePackage{l3token}
+\prop_new:N \g_xref_all_curr_immediate_fields_plist
+\prop_new:N \g_xref_all_curr_deferred_fields_plist
+\def_new:Npn \xref_new:nn {\xref_new_aux:nnn{immediate}}
+\def_new:Npn \xref_deferred_new:nn {\xref_new_aux:nnn{deferred}}
+\def_new:Npn \xref_new_aux:nnn #1#2#3{
+ \prop_gput:ccx {g_xref_all_curr_ #1 _fields_plist}
+ { xref_ #2 _key }
+ { \exp_not:c {l_xref_curr_#2_tlp }}
+ \def_protected:cpn { xref_#2_key }{}
+ \tlp_new:cn{l_xref_curr_#2_tlp}{#3}
+ \toks_set:Nx \l_tmpa_toks {
+ \exp_not:n { \def:cpn {xref_get_value_#2_aux:w} ##1 }
+ \exp_not:c { xref_#2_key }
+ }
+ \toks_use:N \l_tmpa_toks ##2 ##3\q_nil {##2}
+}
+\def_new:Npn \xref_get_value:nn #1#2 {
+ \cs_if_really_free:cTF{g_xref_#2_plist}
+ {??}
+ {
+ \exp_args:NcNc \exp_after:NN {xref_get_value_#1_aux:w}
+ \prop_use:N {g_xref_#2_plist}
+ \q_nil
+ }
+}
+\def:NNn \exp_after:cc 2 {
+ \exp_after:NN \exp_after:NN
+ \cs:w #1\exp_after:NN\cs_end: \cs:w #2\cs_end:
+}
+\def_protected_new:Npn \xref_define_label:nn {
+ \group_begin:
+ \char_set_catcode:nn {`\ }\c_ten
+ \xref_define_label_aux:nn
+}
+\def_new:Npn \xref_define_label_aux:nn #1#2 {
+ \cs_if_really_free:cTF{g_xref_#1_plist}
+ {\prop_new:c{g_xref_#1_plist}}{\WARNING}
+ \toks_gset:cn{g_xref_#1_plist}{#2}
+ \group_end:
+}
+\def:Npn \xref_set_label:n #1{
+ \def:Npx \tmp:w{\prop_use:N\g_xref_all_curr_immediate_fields_plist}
+ \exp_args:NNx\iow_deferred_expanded:Nn \xref_write{
+ \xref_define_label:nn {#1} {
+ \tmp:w
+ \prop_use:N \g_xref_all_curr_deferred_fields_plist
+ }
+ }
+}
+\iow_new:N \xref_write
+%%
+%%
+%% End of file `l3xref.sty'.