From 1dae86987b4152b234ab39938157bb6a078b4852 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 6 Mar 2020 21:32:34 +0000 Subject: l3 (6mar20) git-svn-id: svn://tug.org/texlive/trunk@54131 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3.ins | 1 + .../texmf-dist/source/latex/l3kernel/l3alloc.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 2 +- .../source/latex/l3kernel/l3bootstrap.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../source/latex/l3kernel/l3color-base.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3debug.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 2 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3final.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3format.ins | 1 + .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 2 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3legacy.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- .../source/latex/l3kernel/l3str-convert.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 2 +- .../source/latex/l3kernel/l3text-case.dtx | 20 +- .../source/latex/l3kernel/l3text-purify.dtx | 783 +++++++++++++++++++++ Master/texmf-dist/source/latex/l3kernel/l3text.dtx | 32 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 2 +- .../source/latex/l3packages/l3keys2e/l3keys2e.dtx | 4 +- .../texmf-dist/source/latex/l3packages/xfp/xfp.dtx | 4 +- .../source/latex/l3packages/xfrac/xfrac.dtx | 4 +- .../source/latex/l3packages/xparse/xparse.dtx | 113 ++- .../source/latex/l3packages/xparse/xparse.ins | 3 +- .../latex/l3packages/xtemplate/xtemplate.dtx | 4 +- 64 files changed, 968 insertions(+), 109 deletions(-) create mode 100644 Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index bbe0f740fcb..080baf1bed3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> % -\def\ExplFileDate{2020-03-03}% +\def\ExplFileDate{2020-03-06}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index b509a2478f3..86d4ac52801 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -106,6 +106,7 @@ and all files in that bundle must be distributed together. \from{l3unicode.dtx} {package} \from{l3text.dtx} {package} \from{l3text-case.dtx} {package} + \from{l3text-purify.dtx}{package} \from{l3candidates.dtx} {package} \from{l3legacy.dtx} {package} \from{l3deprecation.dtx}{package,kernel} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 0023ac5c81a..190b3edc379 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index e1f0f44552e..349ec432352 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index b5b8197a88e..4427850302f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 1610fd79efd..91ddc238a60 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 1aa7572365f..e346f674a70 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index d50ead8069d..3c79a276d90 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index ec9e53693c6..6824a83a2d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index 3076d372bba..b5c9e391895 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index f1afae3f7a6..04ba29e9159 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 61249b69c88..cf9733ef68e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index cced26c55a6..d474ceabd84 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 8b5d6093ad6..1e7a512c56a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 89b10a06a28..f356ac22dfc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index fccaf3717ac..51506ece3c1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 4d3f9e6eb5f..febd7f7aa9e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 82889959d53..d807c132ed6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins index 6e0c98cb819..a4f728a0d07 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins @@ -106,6 +106,7 @@ and all files in that bundle must be distributed together. \from{l3unicode.dtx} {initex} \from{l3text.dtx} {initex} \from{l3text-case.dtx} {initex} + \from{l3text-purify.dtx}{initex} \from{l3candidates.dtx} {initex} % ======== FORMAT ONLY ========= \from{l3final.dtx} {initex} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 1cad6e13c2d..dab8dc4d7d6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index e94dacb368e..f9601e4d768 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index b9f1340e738..75803be1af8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 185676d3818..03e40eae388 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 2ee3267fbf1..8489efefae4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 0566df9d98c..f08e2562262 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 6231aea96ca..d58c523d9d6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 4df86f2ffc6..0d125aeaec8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 3138da7a5dd..17bd04d9eed 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index d5f84ba41af..5063fa4105a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 51bbf6c3dcb..07e29f0bb41 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index b5997b15d59..3fef46a6c29 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 94962265750..e4dbc76a8e0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index ec21dc624dc..3016f666fb6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index fbf0cc9b158..8d9fc1c8955 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 56b293db630..0219861d145 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index 48c85b54987..b58d0fdc27c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 417837ce374..ab068d57860 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index af62b24dc3d..14320d3ada2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 942ad266f60..89185a21867 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 42799793c38..68264ca6d1d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index f86cc4cf62b..ccd26ea9c3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 3cbb989db4d..8058df1d862 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 0d21cdaa12d..3bacdb13749 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index bb7f8f94c4a..25d382e2fda 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 7901939530b..6fbdb21eb84 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 94328909876..44ce65943db 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index e15fa39a90d..364ff13e324 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index e81bb560335..d26ecdcf280 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index b0e38274f55..37a647c9dca 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 18880fe2001..efb99050c56 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 1dbfca2d0ec..382b2a50703 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx index 0a516e56fb6..44b06224b5f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -1040,7 +1040,7 @@ % % \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnN} % \begin{macro}[EXP]{\@@_change_case_lower_tr:nnNw} -% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnN} +% \begin{macro}[EXP]{\@@_change_case_lower_tr:NnnN} % \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnNN} % The Turkic languages need special treatment for dotted-i and dotless-i. % The lower casing rule can be expressed in terms of searching first for @@ -1074,7 +1074,7 @@ \cs_new:Npn \@@_change_case_lower_tr:nnNw #1#2#3#4 \q_recursion_stop { \tl_if_head_is_N_type:nTF {#4} - { \@@_change_case_lower_tr:nnN } + { \@@_change_case_lower_tr:NnnN #3 } { \@@_change_case_store:e { \char_generate:nn { "0131 } { \@@_char_catcode:N #3 } } @@ -1082,20 +1082,20 @@ } {#1} {#2} #4 \q_recursion_stop } - \cs_new:Npn \@@_change_case_lower_tr:nnN #1#2#3 + \cs_new:Npn \@@_change_case_lower_tr:NnnN #1#2#3#4 { \bool_lazy_or:nnTF - { \token_if_cs_p:N #3 } - { ! \int_compare_p:nNn { `#3 } = { "0307 } } + { \token_if_cs_p:N #4 } + { ! \int_compare_p:nNn { `#4 } = { "0307 } } { \@@_change_case_store:e - { \char_generate:nn { "0131 } { \@@_char_catcode:N #3 } } - \@@_change_case_loop:nnw {#1} {#2} #3 + { \char_generate:nn { "0131 } { \@@_char_catcode:N #1 } } + \@@_change_case_loop:nnw {#2} {#3} #4 } { \@@_change_case_store:e - { \char_generate:nn { "0069 } { \@@_char_catcode:N #3 } } - \@@_change_case_loop:nnw {#1} {#2} + { \char_generate:nn { "0069 } { \@@_char_catcode:N #1 } } + \@@_change_case_loop:nnw {#2} {#3} } } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx new file mode 100644 index 00000000000..fdddb254149 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx @@ -0,0 +1,783 @@ +% \iffalse meta-comment +% +%% File: l3text-purify.dtx +% +% Copyright (C) 2020 The LaTeX3 Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% https://www.latex-project.org/lppl.txt +% +% This file is part of the "l3kernel bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/latex3 +% +% for those people who are interested. +% +%<*driver> +\documentclass[full,kernel]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% \fi +% +% \title{^^A +% The \textsf{l3text-purify} package: text processing (purification)^^A +% } +% +% \author{^^A +% The \LaTeX3 Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% \date{Released 2020-03-06} +% +% \maketitle +% +% \begin{documentation} +% +% \end{documentation} +% +% \begin{implementation} +% +% \section{\pkg{l3text} implementation} +% +% \begin{macrocode} +%<*initex|package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=text> +% \end{macrocode} +% +% \subsection{Purifying text} +% +% \begin{macro}[rEXP]{\text_purify:n, \@@_purify:n} +% \begin{macro}[rEXP]{\@@_purify_loop:w} +% \begin{macro}[rEXP]{\@@_purify_group:n} +% \begin{macro}[rEXP]{\@@_purify_space:w} +% \begin{macro}[rEXP]{\@@_purify_N_type:N, \@@_purify_N_type_aux:N} +% \begin{macro}[rEXP]{\@@_purify_math_search:NNN} +% \begin{macro}[rEXP]{\@@_purify_math_start:NNw} +% \begin{macro}[rEXP]{\@@_purify_math_store:n} +% \begin{macro}[rEXP]{\@@_purify_math_store:nw} +% \begin{macro}[rEXP]{\@@_purify_math_end:w} +% \begin{macro}[rEXP]{\@@_purify_math_loop:NNw} +% \begin{macro}[rEXP]{\@@_purify_math_N_type:NNN} +% \begin{macro}[rEXP]{\@@_purify_math_group:NNn} +% \begin{macro}[rEXP]{\@@_purify_math_space:NNw} +% \begin{macro}[rEXP]{\@@_purify_math_cmd:N} +% \begin{macro}[rEXP]{\@@_purify_math_cmd:NN} +% \begin{macro}[rEXP]{\@@_purify_math_cmd:Nn} +% \begin{macro}[rEXP]{\@@_purify_replace:N} +% \begin{macro}[rEXP]{\@@_purify_replace:n} +% \begin{macro}[rEXP]{\@@_purify_expand:N, \@@_purify_protect:N} +% As in the other parts of the module, we start off with a standard +% \enquote{action} loop, with expansion applied up-front. Here, as there +% will be no text commands left in the output, there is no concern about +% using \cs{exp_not:n} and \texttt{e}-type expansion. +% \begin{macrocode} +\cs_new:Npn \text_purify:n #1 + { + \group_align_safe_begin: + \exp_args:Ne \@@_purify:n + { \text_expand:n {#1} } + \group_align_safe_end: + } +\cs_new:Npn \@@_purify:n #1 + { \@@_purify_loop:w #1 \q_recursion_tail \q_recursion_stop } +% \end{macrocode} +% The main loop is a standard \enquote{tl action}. Unlike the expansion +% or case changing, here any groups have to be run inline. Most of the +% business end is as before in the \texttt{N}-type token processing. +% \begin{macrocode} +\cs_new:Npn \@@_purify_loop:w #1 \q_recursion_stop + { + \tl_if_head_is_N_type:nTF {#1} + { \@@_purify_N_type:N } + { + \tl_if_head_is_group:nTF {#1} + { \@@_purify_group:n } + { \@@_purify_space:w } + } + #1 \q_recursion_stop + } +\cs_new:Npn \@@_purify_group:n #1 { \@@_purify_loop:w #1 } +\exp_last_unbraced:NNo \cs_new:Npn \@@_purify_space:w \c_space_tl + { + \c_space_tl + \@@_purify_loop:w + } +% \end{macrocode} +% The first part of handling math mode is exactly the same as in the +% other functions: look for a start-of-math mode token and if found start +% a new loop tracking the closing token. +% \begin{macrocode} +\cs_new:Npn \@@_purify_N_type:N #1 + { + \quark_if_recursion_tail_stop:N #1 + \@@_purify_N_type_aux:N #1 + } +\cs_new:Npn \@@_purify_N_type_aux:N #1 + { + \exp_after:wN \@@_purify_math_search:NNN + \exp_after:wN #1 \l_text_math_delims_tl + \q_recursion_tail ? + \q_recursion_stop + } +\cs_new:Npn \@@_purify_math_search:NNN #1#2#3 + { + \quark_if_recursion_tail_stop_do:Nn #2 + { \@@_purify_math_cmd:N #1 } + \token_if_eq_meaning:NNTF #1 #2 + { + \use_i_delimit_by_q_recursion_stop:nw + { \@@_purify_math_start:NNw #2 #3 } + } + { \@@_purify_math_search:NNN #1 } + } +\cs_new:Npn \@@_purify_math_start:NNw #1#2#3 \q_recursion_stop + { + \@@_purify_math_loop:NNw #1#2#3 \q_recursion_stop + \@@_purify_math_result:n { } + } +\cs_new:Npn \@@_purify_math_store:n #1 + { \@@_purify_math_store:nw {#1} } +\cs_new:Npn \@@_purify_math_store:nw #1#2 \@@_purify_math_result:n #3 + { #2 \@@_purify_math_result:n { #3 #1 } } +\cs_new:Npn \@@_purify_math_end:w #1 \@@_purify_math_result:n #2 + { + \exp_not:n { $ #2 $ } + \@@_purify_loop:w #1 + } +\cs_new:Npn \@@_purify_math_stop:Nw #1 \@@_purify_math_result:n #2 + { \exp_not:n {#1#2} } +\cs_new:Npn \@@_purify_math_loop:NNw #1#2#3 \q_recursion_stop + { + \tl_if_head_is_N_type:nTF {#3} + { \@@_purify_math_N_type:NNN } + { + \tl_if_head_is_group:nTF {#3} + { \@@_purify_math_group:NNn } + { \@@_purify_math_space:NNw } + } + #1#2#3 \q_recursion_stop + } +\cs_new:Npn \@@_purify_math_N_type:NNN #1#2#3 + { + \quark_if_recursion_tail_stop_do:Nn #3 + { \@@_purify_math_stop:Nw #1 } + \token_if_eq_meaning:NNTF #3 #2 + { \@@_purify_math_end:w } + { + \@@_purify_math_store:n {#3} + \@@_purify_math_loop:NNw #1#2 + } + } +\cs_new:Npn \@@_purify_math_group:NNn #1#2#3 + { + \@@_purify_math_store:n { {#3} } + \@@_purify_math_loop:NNw #1#2 + } +\exp_after:wN \cs_new:Npn \exp_after:wN \@@_purify_math_space:NNw + \exp_after:wN # \exp_after:wN 1 + \exp_after:wN # \exp_after:wN 2 \c_space_tl + { + \@@_purify_math_store:n { ~ } + \@@_purify_math_loop:NNw #1#2 + } +% \end{macrocode} +% Then handle math mode as an argument: same outcomes, different input +% syntax. +% \begin{macrocode} +\cs_new:Npn \@@_purify_math_cmd:N #1 + { + \exp_after:wN \@@_purify_math_cmd:NN \exp_after:wN #1 + \l_text_math_arg_tl \q_recursion_tail \q_recursion_stop + } +\cs_new:Npn \@@_purify_math_cmd:NN #1#2 + { + \quark_if_recursion_tail_stop_do:Nn #2 + { \@@_purify_replace:N #1 } + \cs_if_eq:NNTF #2 #1 + { + \use_i_delimit_by_q_recursion_stop:nw + { \@@_purify_math_cmd:n } + } + { \@@_purify_math_cmd:NN #1 } + } +\cs_new:Npn \@@_purify_math_cmd:n #1 + { \@@_purify_math_end:w \@@_purify_math_result:n {#1} } +% \end{macrocode} +% For \texttt{N}-type tokens, we first look for a string-context replacement +% before anything else: this can therefore cover anything. Assuming we don't +% find one, check to see if we can expand control sequences: if not, they have +% to be dropped. We also allow for \LaTeXe{} \tn{protect}: there's an +% assumption that we don't have |\protect { \oops }| or similar, but that's +% also in the expansion code and seems like a reasonable balance. +% \begin{macrocode} +\cs_new:Npn \@@_purify_replace:N #1 + { + \bool_lazy_and:nnTF + { \cs_if_exist_p:c { l_@@_purify_ \token_to_str:N #1 _tl } } + { + \bool_lazy_or_p:nn + { \token_if_cs_p:N #1 } + { \token_if_active_p:N #1 } + } + { + \exp_args:Nv \@@_purify_replace:n + { l_@@_purify_ \token_to_str:N #1 _tl } + } + { + \token_if_cs:NTF #1 + { \@@_purify_expand:N #1 } + { + \@@_token_to_explicit:N #1 + \@@_purify_loop:w + } + } + } +\cs_new:Npn \@@_purify_replace:n #1 { \@@_purify_loop:w #1 } +\cs_new:Npn \@@_purify_expand:N #1 + { + \str_if_eq:nnTF {#1} { \protect } + { \@@_purify_protect:N } + { + \@@_if_expandable:NTF #1 + { \exp_after:wN \@@_purify_loop:w #1 } + { \@@_purify_loop:w } + } + } +\cs_new:Npn \@@_purify_protect:N #1 + { + \quark_if_recursion_tail_stop:N #1 + \@@_purify_loop:w + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro} +% { +% \text_declare_purify_equivalent:Nn, +% \text_declare_purify_equivalent:Nx +% } +% \begin{macrocode} +\cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2 + { + \tl_clear_new:c { l_@@_purify_ \token_to_str:N #1 _tl } + \tl_set:cn { l_@@_purify_ \token_to_str:N #1 _tl } {#2} + } +\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx } +% \end{macrocode} +% \end{macro} +% +% Now pre-define a range of standard commands that need dedicated definitions +% in purified text. First handle font-related stuff: all of this needs to be +% disabled. +% \begin{macrocode} +\tl_map_inline:nn + { + \fontencoding + \fontfamily + \fontseries + \fontshape + } + { \text_declare_purify_equivalent:Nn #1 { \use_none:n } } +\text_declare_purify_equivalent:Nn \fontsize { \use_none:nn } +\text_declare_purify_equivalent:Nn \selectfont { } +\text_declare_purify_equivalent:Nn \usefont { \use_none:nnnn } +\tl_map_inline:nn + { + \emph + \text + \textnormal + \textrm + \textsf + \texttt + \textbf + \textmd + \textit + \textsl + \textup + \textsc + \textulc + } + { \text_declare_purify_equivalent:Nn #1 { \use:n } } +\tl_map_inline:nn + { + \normalfont + \rmfamily + \sffamily + \ttfamily + \bfseries + \mdseries + \itshape + \scshape + \slshape + \upshape + \em + \Huge + \LARGE + \Large + \footnotesize + \huge + \large + \normalsize + \scriptsize + \small + \tiny + } + { \text_declare_purify_equivalent:Nn #1 { } } +% \end{macrocode} +% Environments have to be handled by pure expansion. +% \begin{macrocode} +\text_declare_purify_equivalent:Nn \begin { \use:c } +\text_declare_purify_equivalent:Nn \end { \use:c } +% \end{macrocode} +% Some common symbols and similar ideas. +% \begin{macrocode} +\text_declare_purify_equivalent:Nn \\ { } +\tl_map_inline:nn + { \{ \} \# \$ \% \_ } + { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } } +% \end{macrocode} +% Cross-referencing. +% \begin{macrocode} +\text_declare_purify_equivalent:Nn \label { \use_none:n } +% \end{macrocode} +% Spaces. +% \begin{macrocode} +\group_begin: +\char_set_catcode_active:N \~ +\use:n + { + \group_end: + \text_declare_purify_equivalent:Nx ~ { \c_space_tl } + } +\text_declare_purify_equivalent:Nn \nobreakspace { ~ } +\text_declare_purify_equivalent:Nn \ { ~ } +\text_declare_purify_equivalent:Nn \, { ~ } +% \end{macrocode} +% +% \subsection{Accent and letter-like data for purifying text} +% +% In contrast to case changing, both $8$-bit and Unicode engines need +% information for text purification to handle accents and letter-like +% functions: these all need to be removed. However, the results are +% of course engine-dependent. +% +% For the letter-like commands, life is relatively easy: they are all +% simply added as standard exceptions. The only oddity is \tn{SS}, which +% gets converted to two letters. (At some stage an alternative version +% can presumably be added to \pkg{babel} or similar.) +% \begin{macrocode} +\bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_set_protected:Npn \@@_loop:Nn #1#2 + { + \quark_if_recursion_tail_stop:N #1 + \text_declare_purify_equivalent:Nx #1 + { + \char_generate:nn { "#2 } + { \char_value_catcode:n { "#2 } } + } + \@@_loop:Nn + } + } + { + \cs_set_protected:Npn \@@_loop:Nn #1#2 + { + \quark_if_recursion_tail_stop:N #1 + \text_declare_purify_equivalent:Nx #1 + { + \exp_args:Ne \@@_tmp:n + { \char_to_utfviii_bytes:n { "#2 } } + } + \@@_loop:Nn + } + \cs_set:Npn \@@_tmp:n #1 { \@@_tmp:nnnn #1 } + \cs_set:Npn \@@_tmp:nnnn #1#2#3#4 + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#1} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#2} { 13 } + } + } +\@@_loop:Nn + \AA { 00C5 } + \AE { 00C6 } + \DH { 00D0 } + \DJ { 0110 } + \IJ { 0132 } + \L { 0141 } + \NG { 014A } + \O { 00D8 } + \OE { 0152 } + \TH { 00DE } + \aa { 00E5 } + \ae { 00E6 } + \dh { 00F0 } + \dj { 0111 } + \i { 0131 } + \j { 0237 } + \ij { 0132 } + \l { 0142 } + \ng { 014B } + \o { 00F8 } + \oe { 0153 } + \ss { 00DF } + \th { 00FE } + \q_recursion_tail ? + \q_recursion_stop +\text_declare_purify_equivalent:Nn \SS { SS } +% \end{macrocode} +% +% \begin{macro}[rEXP]{\@@_purify_accent:NN} +% Accent \textsc{licr} handling is a little more complex. Accents may exist +% as pre-composed codepoints or as independent glyphs. The former are all +% saved as single token lists, whilst for the latter the combining accent +% needs to be re-ordered compared to the character it applies to. +% \begin{macrocode} +\cs_new:Npn \@@_purify_accent:NN #1#2 + { + \cs_if_exist:cTF + { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } + { + \exp_not:v + { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } + } + { + \exp_not:n {#2} + \exp_not:v { c_@@_purify_ \token_to_str:N #1 _tl } + } + } +\tl_map_inline:Nn \l_text_accents_tl + { \text_declare_purify_equivalent:Nn #1 { \@@_purify_accent:NN #1 } } +% \end{macrocode} +% First set up the combining accents. +% \begin{macrocode} +\group_begin: + \cs_set_protected:Npn \@@_loop:Nn #1#2 + { + \quark_if_recursion_tail_stop:N #1 + \tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl } + { \@@_tmp:n {#2} } + \@@_loop:Nn + } + \bool_lazy_or:nnTF + { \sys_if_engine_luatex_p: } + { \sys_if_engine_xetex_p: } + { + \cs_set:Npn \@@_tmp:n #1 + { + \char_generate:nn { "#1 } + { \char_value_catcode:n { "#1 } } + } + } + { + \cs_set:Npn \@@_tmp:n #1 + { + \exp_args:Ne \@@_tmp_aux:n + { \char_to_utfviii_bytes:n { "#1 } } + } + \cs_set:Npn \@@_tmp_aux:n #1 { \@@_tmp:nnnn #1 } + \cs_set:Npn \@@_tmp:nnnn #1#2#3#4 + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#1} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \char_generate:nn {#2} { 13 } + } + } + \@@_loop:Nn + \` { 0300 } + \' { 0301 } + \^ { 0302 } + \~ { 0303 } + \= { 0304 } + \u { 0306 } + \. { 0307 } + \" { 0308 } + \r { 030A } + \H { 030B } + \v { 030C } + \d { 0323 } + \c { 0327 } + \k { 0328 } + \b { 0331 } + \t { 0361 } + \q_recursion_tail { } + \q_recursion_stop +% \end{macrocode} +% Now we handle the pre-composed accents: the list here is taken from +% \texttt{puenc.def}. All of the precomposed cases take a single letter +% as their second argument. We do not try to cover the case where an accent +% is added to a \enquote{real} dotless-i or -j, or a \ae/\AE. Rather, we +% assume that if the \textsc{utf}-8 character is used, it will have the +% real accent character too. +% \begin{macrocode} + \cs_set_protected:Npn \@@_loop:NNn #1#2#3 + { + \quark_if_recursion_tail_stop:N #1 + \tl_const:cx + { c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl } + { \@@_tmp:n {#3} } + \@@_loop:NNn + } + \@@_loop:NNn + \` A { 00C0 } + \' A { 00C1 } + \^ A { 00C2 } + \~ A { 00C3 } + \" A { 00C4 } + \r A { 00C5 } + \c C { 00C7 } + \` E { 00C8 } + \' E { 00C9 } + \^ E { 00CA } + \" E { 00CB } + \` I { 00CC } + \' I { 00CD } + \^ I { 00CE } + \" I { 00CF } + \~ N { 00D1 } + \` O { 00D2 } + \' O { 00D3 } + \^ O { 00D4 } + \~ O { 00D5 } + \" O { 00D6 } + \` U { 00D9 } + \' U { 00DA } + \^ U { 00DB } + \" U { 00DC } + \' Y { 00DD } + \` a { 00E0 } + \' a { 00E1 } + \^ a { 00E2 } + \~ a { 00E3 } + \" a { 00E4 } + \r a { 00E5 } + \c c { 00E7 } + \` e { 00E8 } + \' e { 00E9 } + \^ e { 00EA } + \" e { 00EB } + \` i { 00EC } + \` \i { 00EC } + \' i { 00ED } + \' \i { 00ED } + \^ i { 00EE } + \^ \i { 00EE } + \" i { 00EF } + \" \i { 00EF } + \~ n { 00F1 } + \` o { 00F2 } + \' o { 00F3 } + \^ o { 00F4 } + \~ o { 00F5 } + \" o { 00F6 } + \` u { 00F9 } + \' u { 00FA } + \^ u { 00FB } + \" u { 00FC } + \' y { 00FD } + \" y { 00FF } + \= A { 0100 } + \= a { 0101 } + \u A { 0102 } + \u a { 0103 } + \k A { 0104 } + \k a { 0105 } + \' C { 0106 } + \' c { 0107 } + \^ C { 0108 } + \^ c { 0109 } + \. C { 010A } + \. c { 010B } + \v C { 010C } + \v c { 010D } + \v D { 010E } + \v d { 010F } + \= E { 0112 } + \= e { 0113 } + \u E { 0114 } + \u e { 0115 } + \. E { 0116 } + \. e { 0117 } + \k E { 0118 } + \k e { 0119 } + \v E { 011A } + \v e { 011B } + \^ G { 011C } + \^ g { 011D } + \u G { 011E } + \u g { 011F } + \. G { 0120 } + \. g { 0121 } + \c G { 0122 } + \c g { 0123 } + \^ H { 0124 } + \^ h { 0125 } + \~ I { 0128 } + \~ i { 0129 } + \~ \i { 0129 } + \= I { 012A } + \= i { 012B } + \= \i { 012B } + \u I { 012C } + \u i { 012D } + \u \i { 012D } + \k I { 012E } + \k i { 012F } + \k \i { 012F } + \. I { 0130 } + \^ J { 0134 } + \^ j { 0135 } + \^ \j { 0135 } + \c K { 0136 } + \c k { 0137 } + \' L { 0139 } + \' l { 013A } + \c L { 013B } + \c l { 013C } + \v L { 013D } + \v l { 013E } + \. L { 013F } + \. l { 0140 } + \' N { 0143 } + \' n { 0144 } + \c N { 0145 } + \c n { 0146 } + \v N { 0147 } + \v n { 0148 } + \= O { 014C } + \= o { 014D } + \u O { 014E } + \u o { 014F } + \H O { 0150 } + \H o { 0151 } + \' R { 0154 } + \' r { 0155 } + \c R { 0156 } + \c r { 0157 } + \v R { 0158 } + \v r { 0159 } + \' S { 015A } + \' s { 015B } + \^ S { 015C } + \^ s { 015D } + \c S { 015E } + \c s { 015F } + \v S { 0160 } + \v s { 0161 } + \c T { 0162 } + \c t { 0163 } + \v T { 0164 } + \v t { 0165 } + \~ U { 0168 } + \~ u { 0169 } + \= U { 016A } + \= u { 016B } + \u U { 016C } + \u u { 016D } + \r U { 016E } + \r u { 016F } + \H U { 0170 } + \H u { 0171 } + \k U { 0172 } + \k u { 0173 } + \^ W { 0174 } + \^ w { 0175 } + \^ Y { 0176 } + \^ y { 0177 } + \" Y { 0178 } + \' Z { 0179 } + \' z { 017A } + \. Z { 017B } + \. z { 017C } + \v Z { 017D } + \v z { 017E } + \v A { 01CD } + \v a { 01CE } + \v I { 01CF } + \v \i { 01D0 } + \v i { 01D0 } + \v O { 01D1 } + \v o { 01D2 } + \v U { 01D3 } + \v u { 01D4 } + \v G { 01E6 } + \v g { 01E7 } + \v K { 01E8 } + \v k { 01E9 } + \k O { 01EA } + \k o { 01EB } + \v \j { 01F0 } + \v j { 01F0 } + \' G { 01F4 } + \' g { 01F5 } + \` N { 01F8 } + \` n { 01F9 } + \' \AE { 01FC } + \' \ae { 01FD } + \' \O { 01FE } + \' \o { 01FF } + \v H { 021E } + \v h { 021F } + \. A { 0226 } + \. a { 0227 } + \c E { 0228 } + \c e { 0229 } + \. O { 022E } + \. o { 022F } + \= Y { 0232 } + \= y { 0233 } + \q_recursion_tail ? { } + \q_recursion_stop +\group_end: +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx index 01af5e5c49d..8d06641d956 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -180,6 +180,36 @@ % \end{itemize} % \end{function} % +% \subsection{Removing formatting from text} +% +% \begin{function}[rEXP, added = 2020-03-05]{\text_purify:n} +% \begin{syntax} +% \cs{text_purify:n} \Arg{text} +% \end{syntax} +% Takes user input \meta{text} and expands as described for +% \cs{text_expand:n}, then removes all functions from the resulting +% text. Math mode material (as delimited by pairs given in +% \cs{l_text_math_delims_tl} or as the argument to commands listed in +% \cs{l_text_math_arg_tl}) is left contained in a pair of |$| delimiters. +% Non-expandable functions present in the \meta{text} must either have a +% defined equivalent (see \cs{text_declare_purify_equivalent:Nn}) or will +% be removed from the result. Implicit tokens are converted to their +% explicit equivalent. +% \end{function} +% +% \begin{function}[added = 2020-03-05] +% { +% \text_declare_purify_equivalent:Nn , +% \text_declare_purify_equivalent:Nx +% } +% \begin{syntax} +% \cs{text_declare_purify_equivalent:Nn} \meta{cmd} \Arg{replacement} +% \end{syntax} +% Declares that the \meta{replacement} tokens should be used whenever the +% \meta{cmd} (a single token) is encountered. The \meta{replacement} tokens +% should be expandable. +% \end{function} +% % \subsection{Control variables} % % \begin{variable}{\l_text_accents_tl} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 023bc13ab55..bdfc80f714c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 77fb21b7531..3fba28f01d1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 0a78a6401ae..2c7dac38985 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 42f10d7ee9a..90dd9057b41 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index 3b648b7bdd9..d6701c4519a 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -139,7 +139,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2020-03-03}{} +\ProvidesExplPackage{l3keys2e}{2020-03-06}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx index 023e0e2ed52..afdd9e189cd 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx @@ -64,7 +64,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -167,7 +167,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2020-03-03}{} +\ProvidesExplPackage{xfp}{2020-03-06}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index abbce7d8d12..7be07c978e6 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -65,7 +65,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -535,7 +535,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2020-03-03}{} +\ProvidesExplPackage{xfrac}{2020-03-06}{} {L3 Experimental split-level fractions} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 279b2e58c00..f56bcdf5e97 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -970,20 +970,73 @@ % \section{\pkg{xparse} implementation} % % \begin{macrocode} -%<*package> +%<@@=xparse> % \end{macrocode} % % \begin{macrocode} -%<@@=xparse> +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} +\everyjob\expandafter{\the\everyjob + \message{xparse <2020-03-03>}% +} +\ExplSyntaxOn % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2020-03-03}{} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\ProvidesExplPackage{xparse}{2020-03-06}{} {L3 Experimental document command parser} % \end{macrocode} % +% \subsection{Package options} +% +% \begin{variable}{\l_@@_options_clist} +% \begin{variable}{\l_@@_log_bool} +% Key--value option to log information: done by hand to keep dependencies +% down. +% \begin{macrocode} +\clist_new:N \l_@@_options_clist +\DeclareOption* { \clist_put_right:NV \l_@@_options_clist \CurrentOption } +\ProcessOptions \relax +\keys_define:nn { xparse } + { + log-declarations .bool_set:N = \l_@@_log_bool , + log-declarations .initial:n = false + } +\keys_set:nV { xparse } \l_@@_options_clist +\bool_if:NF \l_@@_log_bool + { \msg_redirect_module:nnn { LaTeX / xparse } { info } { none } } +% \end{macrocode} +% \end{variable} +% \end{variable} +% +% \subsection{Reload check} +% +% A simple reload check. +% \begin{macrocode} +\cs_if_exist:NT \NewDocumentCommand + { \file_input_stop: } +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% % \subsection{Variables and constants} % +% \begin{macrocode} +%<*package|2ekernel> +% \end{macrocode} +% % \begin{variable}{\c_@@_special_chars_seq} % In \IniTeX{} mode, we store special characters in a sequence. % Maybe |$| or |&| will have to be added later. @@ -1424,9 +1477,9 @@ %<*initex> \cs_if_exist:cTF { environment~ \l_@@_environment_str } % -%<*package> +%<*package|2ekernel> \cs_if_exist:cTF { \l_@@_environment_str } -% +% { \__kernel_msg_info:nnxx { xparse } { redefine-environment } { \l_@@_environment_str } { \tl_to_str:n {#2} } @@ -1472,10 +1525,10 @@ \cs_generate_from_arg_count:cNnn { environment~ #1 ~end~aux~ } \cs_set:Npn \l_@@_current_arg_int {#4} -%<*package> +%<*package|2ekernel> \cs_set_eq:cc {#1} { environment~ #1 } \cs_set_eq:cc { end #1 } { environment~ #1 ~end } -% +% } } % \end{macrocode} @@ -1495,9 +1548,9 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_start_env:nnnnn #1#2 { -%<*package> +%<*package|2ekernel> \cs_if_exist_use:N \conditionally@traceoff -% +% \str_set:Nn \l_@@_environment_str {#2} \bool_set_true:N \l_@@_environment_bool \@@_start_aux:ccnnnn @@ -1507,9 +1560,9 @@ } \cs_new_protected:Npx \@@_start:nNNnnn #1#2#3 { -%<*package> +%<*package|2ekernel> \exp_not:n { \cs_if_exist_use:N \conditionally@traceoff } -% +% \exp_not:c { xparse~function~is~not~expandable } \exp_not:n { \bool_set_false:N \l_@@_environment_bool } \exp_not:N \@@_start_aux:NNnnnn @@ -1546,9 +1599,9 @@ { \tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: } \tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: } -%<*package> +%<*package|2ekernel> \cs_if_exist_use:N \conditionally@traceon -% +% \exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl } % \end{macrocode} @@ -3641,10 +3694,10 @@ \c_@@_special_chars_seq \char_set_catcode_other:N % -%<*package> +%<*package|2ekernel> \cs_set_eq:NN \do \char_set_catcode_other:N \dospecials -% +% \tex_endlinechar:D = `\^^M \scan_stop: \bool_if:NTF \l_@@_long_bool { \char_set_catcode_other:n { \tex_endlinechar:D } } @@ -5057,30 +5110,20 @@ % \end{macro} % \end{macro} % -% \subsection{Package options} +% \begin{macrocode} +%<*2ekernel> +% \end{macrocode} % -% \begin{variable}{\l_@@_options_clist} -% \begin{variable}{\l_@@_log_bool} -% Key--value option to log information: done by hand to keep dependencies -% down. % \begin{macrocode} -\clist_new:N \l_@@_options_clist -\DeclareOption* { \clist_put_right:NV \l_@@_options_clist \CurrentOption } -\ProcessOptions \relax -\keys_define:nn { xparse } - { - log-declarations .bool_set:N = \l_@@_log_bool , - log-declarations .initial:n = false - } -\keys_set:nV { xparse } \l_@@_options_clist -\bool_if:NF \l_@@_log_bool - { \msg_redirect_module:nnn { LaTeX / xparse } { info } { none } } +\ExplSyntaxOff % \end{macrocode} -% \end{variable} -% \end{variable} % % \begin{macrocode} -% +% +% \end{macrocode} +% +% \begin{macrocode} +% % \end{macrocode} % % \end{implementation} diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins index e65d2547097..d40f7cd6f2a 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins @@ -42,6 +42,7 @@ and all files in that bundle must be distributed together. \keepsilent -\generate{\file{xparse.sty} {\from{xparse.dtx} {package}}} +\generate{\file{xparse.sty} {\from{xparse.dtx} {package}} + \file{xparse.ltx} {\from{xparse.dtx} {2ekernel}}} \endbatchfile diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index d0ced349620..2236b30f979 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2020-03-03}{} +\ProvidesExplPackage{xtemplate}{2020-03-06}{} {L3 Experimental prototype document functions} % \end{macrocode} % -- cgit v1.2.3