diff options
author | Norbert Preining <norbert@preining.info> | 2020-03-07 03:00:57 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-03-07 03:00:57 +0000 |
commit | 8012fbf3193a5d1699496b198c3bd448973557bd (patch) | |
tree | ae7b8f657130de7157724405a57edb37485e9e6c /macros/latex/contrib | |
parent | 6749f197f068ccc7a12ea95ee2bbfca4942c1b13 (diff) |
CTAN sync 202003070300
Diffstat (limited to 'macros/latex/contrib')
108 files changed, 1013 insertions, 147 deletions
diff --git a/macros/latex/contrib/adjmulticol/Makefile b/macros/latex/contrib/adjmulticol/Makefile index 2be5735458..471ef1d5db 100644 --- a/macros/latex/contrib/adjmulticol/Makefile +++ b/macros/latex/contrib/adjmulticol/Makefile @@ -3,7 +3,7 @@ # # This file is in public domain # -# $Id: Makefile,v 2.3 2011-02-22 22:46:46 boris Exp $ +# $Id$ # PACKAGE=adjmulticol @@ -55,9 +55,9 @@ distclean: veryclean # Archive for the distribution. Includes typeset documentation # archive: all clean - tar -czvf $(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude CVS . + COPYFILE_DISABLE=1 tar -C .. -czvf ../$(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE); mv ../$(PACKAGE).tgz . zip: all clean ${MAKE} $(PACKAGE).sty $(RM) *.log - zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x "*.ins" -x CVS -x 'CVS/*'
\ No newline at end of file + zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x "*.ins" -x CVS -x 'CVS/*' diff --git a/macros/latex/contrib/adjmulticol/README b/macros/latex/contrib/adjmulticol/README index dc6820bf03..62d899f95b 100644 --- a/macros/latex/contrib/adjmulticol/README +++ b/macros/latex/contrib/adjmulticol/README @@ -1,5 +1,4 @@ Adjusting Margins for Multicolumn and Unicolumn Output - Version 1.1 This package provides an extension of the multicol package with the option to change the margins for multicolumn and unicolumn layout. @@ -12,3 +11,4 @@ Changes: v1.1 Changed calculations for unicolumn layout which might previously lead to loss of text + v1.2 Bug fix: now adjmulticols works inside a box too.
\ No newline at end of file diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.dtx b/macros/latex/contrib/adjmulticol/adjmulticol.dtx index 90881468ef..12c5e4ca73 100644 --- a/macros/latex/contrib/adjmulticol/adjmulticol.dtx +++ b/macros/latex/contrib/adjmulticol/adjmulticol.dtx @@ -1,7 +1,6 @@ % \iffalse -% $Id: adjmulticol.dtx,v 2.12 2013-01-23 18:10:07 boris Exp $ % -%% Copyright 2011, Boris Veytsman <borisv@lk.net> +%% Copyright 2020, Boris Veytsman <borisv@lk.net> %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.3 of this license or (at your option) any @@ -88,7 +87,7 @@ %% %<*gobble> % \fi -% \CheckSum{176} +% \CheckSum{184} % % %% \CharacterTable @@ -127,7 +126,7 @@ % \GetFileInfo{adjmulticol.sty} % % \title{Adjusting Margins for Multicolumn and Unicolumn -% Output\thanks{\copyright Boris Veytsman, 2011} \thanks{Note: This +% Output\thanks{\copyright Boris Veytsman, 2020} \thanks{Note: This % package is released under terms which affect its use in commercial % applications. Please see the details at the top of the source file}} % \author{Boris Veytsman} @@ -309,7 +308,7 @@ %</gobble> %<style>\ProvidesPackage{adjmulticol} %<*style> -[2012/01/20 v1.1 Adjusted margins for multicolumn layout] +[2020/03/06 v1.2 Adjusted margins for multicolumn layout] % \end{macrocode} % % @@ -466,13 +465,16 @@ %\label{sec:end} % % \begin{macro}{\endadjmulticols} +% \changes{v1.2}{2020/03/06}{Redefined macro} % Here we use the standard environment end. Note that it uses -% |\@checkend|, so we need to redefine |\@currenvir| to fool the -% check. +% |\@checkend|, so we need to redefine it to fool the +% check. We need to do it globally to work inside a box too. % \begin{macrocode} \def\endadjmulticols{% - \def\@currenvir{multicols}% - \endmulticols} + \global\let\@ADJMC@checkend\@checkend + \gdef\@checkend##1{}% + \endmulticols + \global\let\@checkend\@ADJMC@checkend} % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.ins b/macros/latex/contrib/adjmulticol/adjmulticol.ins index 21ee6cc73b..cc89efce68 100644 --- a/macros/latex/contrib/adjmulticol/adjmulticol.ins +++ b/macros/latex/contrib/adjmulticol/adjmulticol.ins @@ -1,7 +1,7 @@ % % Doctrip file for seqsplit % This file is in public domain -% $Id: adjmulticol.ins,v 2.0 2011-02-22 16:38:54 boris Exp $ +% $Id$ % \def\batchfile{adjmulticol.ins} \input docstrip diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.pdf b/macros/latex/contrib/adjmulticol/adjmulticol.pdf Binary files differindex 0b7277dfff..d2709950d5 100644 --- a/macros/latex/contrib/adjmulticol/adjmulticol.pdf +++ b/macros/latex/contrib/adjmulticol/adjmulticol.pdf diff --git a/macros/latex/contrib/adjmulticol/sample.pdf b/macros/latex/contrib/adjmulticol/sample.pdf Binary files differindex b8ef62610a..a55f9bf1c2 100644 --- a/macros/latex/contrib/adjmulticol/sample.pdf +++ b/macros/latex/contrib/adjmulticol/sample.pdf diff --git a/macros/latex/contrib/iftex/iftex.pdf b/macros/latex/contrib/iftex/iftex.pdf Binary files differindex 97c093e87f..cbb7b48ec5 100644 --- a/macros/latex/contrib/iftex/iftex.pdf +++ b/macros/latex/contrib/iftex/iftex.pdf diff --git a/macros/latex/contrib/iftex/iftex.sty b/macros/latex/contrib/iftex/iftex.sty index 8ee4a0fe79..8306f8663a 100644 --- a/macros/latex/contrib/iftex/iftex.sty +++ b/macros/latex/contrib/iftex/iftex.sty @@ -30,7 +30,7 @@ % ProvidesPackage declaration in LaTeX \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname ProvidesPackage\endcsname\relax\else - \ProvidesPackage{iftex}[2019/11/07 v1.0c TeX engine tests] + \ProvidesPackage{iftex}[2020/03/06 v1.0d TeX engine tests] \fi % Save @ catcode, to restore at end, not needed in LaTeX. @@ -109,7 +109,6 @@ \IFTEX@let{eTeX}{etex} % pdftex (including in dvi mode) -\IFTEX@let{IFTEX@savedpdftex}{pdftex} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname pdftexversion\endcsname\relax \IFTEX@let{pdftex}{false} @@ -182,7 +181,6 @@ \IFTEX@let{pTeXng}{ptexng} % vtex -\IFTEX@let{IFTEX@savedVTeX}{VTeX} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname VTeXversion\endcsname\relax \IFTEX@let{vtex}{false} @@ -213,7 +211,7 @@ \IFTEX@let{TUTeX}{tutex} % Output mode -% declare with as if with \newif +% declare as if with \newif \def\pdftrue{\let\ifpdf\iftrue} \def\pdffalse{\let\ifpdf\iffalse} \pdffalse @@ -239,14 +237,5 @@ end \fi -% special compat for scrbase -\ifx\scr@ifpdftex\@undefined\else\ifx\ifIFTEX@savedpdftex\relax\else - \IFTEX@let{pdftex}{IFTEX@savedpdftex} - \IFTEX@protected\def\RequirePDFTeX{\IFTEX@Require\ifPDFTeX{pdfTeX}\fi} -\fi\fi -\ifx\scr@ifVTeX\@undefined\else\ifx\ifIFTEX@savedVTeX\relax\else - \IFTEX@let{VTeX}{IFTEX@savedVTeX} -\fi\fi - % restore things \catcode64 \IFTEX@atcatcode diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md index 75151331dd..6076561c5e 100644 --- a/macros/latex/contrib/l3kernel/CHANGELOG.md +++ b/macros/latex/contrib/l3kernel/CHANGELOG.md @@ -7,6 +7,14 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-03-06] + +### Added +- `\text_purify:n` + +### Fixed +- Issue with case-changing Turkish + ## [2020-03-03] ### Added @@ -647,7 +655,8 @@ this project uses date-based 'snapshot' version identifiers. - Step functions have been added for dim variables, e.g. `\dim_step_inline:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2020-03-03...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-03-06...HEAD +[2020-03-06]: https://github.com/latex3/latex3/compare/2020-03-03...2020-03-06 [2020-03-03]: https://github.com/latex3/latex3/compare/2020-02-25...2020-03-03 [2020-02-25]: https://github.com/latex3/latex3/compare/2020-02-21...2020-02-25 [2020-02-21]: https://github.com/latex3/latex3/compare/2020-02-14...2020-02-21 diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md index 81d6baa3fc..8cfabd40d7 100644 --- a/macros/latex/contrib/l3kernel/README.md +++ b/macros/latex/contrib/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2020-03-03 +Release 2020-03-06 Overview -------- diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx index bbe0f740fc..080baf1bed 100644 --- a/macros/latex/contrib/l3kernel/expl3.dtx +++ b/macros/latex/contrib/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</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/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf Binary files differindex 9c593937fd..0476ca9dc7 100644 --- a/macros/latex/contrib/l3kernel/expl3.pdf +++ b/macros/latex/contrib/l3kernel/expl3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf Binary files differindex 311daaad87..6f0ae79a85 100644 --- a/macros/latex/contrib/l3kernel/interface3.pdf +++ b/macros/latex/contrib/l3kernel/interface3.pdf diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex index 3074dade2d..1e774cd9d8 100644 --- a/macros/latex/contrib/l3kernel/interface3.tex +++ b/macros/latex/contrib/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-03-03} +\date{Released 2020-03-06} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins index b509a2478f..86d4ac5280 100644 --- a/macros/latex/contrib/l3kernel/l3.ins +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx index 0023ac5c81..190b3edc37 100644 --- a/macros/latex/contrib/l3kernel/l3alloc.dtx +++ b/macros/latex/contrib/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx index e1f0f44552..349ec43235 100644 --- a/macros/latex/contrib/l3kernel/l3basics.dtx +++ b/macros/latex/contrib/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx index b5b8197a88..4427850302 100644 --- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx +++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx index 1610fd79ef..91ddc238a6 100644 --- a/macros/latex/contrib/l3kernel/l3box.dtx +++ b/macros/latex/contrib/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx index 1aa7572365..e346f674a7 100644 --- a/macros/latex/contrib/l3kernel/l3candidates.dtx +++ b/macros/latex/contrib/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index d50ead8069..3c79a276d9 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx index ec9e53693c..6824a83a2d 100644 --- a/macros/latex/contrib/l3kernel/l3coffins.dtx +++ b/macros/latex/contrib/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx index 3076d372bb..b5c9e39189 100644 --- a/macros/latex/contrib/l3kernel/l3color-base.dtx +++ b/macros/latex/contrib/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx index f1afae3f7a..04ba29e915 100644 --- a/macros/latex/contrib/l3kernel/l3debug.dtx +++ b/macros/latex/contrib/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx index 61249b69c8..cf9733ef68 100644 --- a/macros/latex/contrib/l3kernel/l3deprecation.dtx +++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx index cced26c55a..d474ceabd8 100644 --- a/macros/latex/contrib/l3kernel/l3doc.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx index 8b5d6093ad..1e7a512c56 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.dtx +++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf Binary files differindex 5198841d10..e65e1058b3 100644 --- a/macros/latex/contrib/l3kernel/l3docstrip.pdf +++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx index 89b10a06a2..f356ac22df 100644 --- a/macros/latex/contrib/l3kernel/l3expan.dtx +++ b/macros/latex/contrib/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx index fccaf3717a..51506ece3c 100644 --- a/macros/latex/contrib/l3kernel/l3file.dtx +++ b/macros/latex/contrib/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx index 4d3f9e6eb5..febd7f7aa9 100644 --- a/macros/latex/contrib/l3kernel/l3final.dtx +++ b/macros/latex/contrib/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx index 82889959d5..d807c132ed 100644 --- a/macros/latex/contrib/l3kernel/l3flag.dtx +++ b/macros/latex/contrib/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3format.ins b/macros/latex/contrib/l3kernel/l3format.ins index 6e0c98cb81..a4f728a0d0 100644 --- a/macros/latex/contrib/l3kernel/l3format.ins +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx index 1cad6e13c2..dab8dc4d7d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx index e94dacb368..f9601e4d76 100644 --- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx index b9f1340e73..75803be1af 100644 --- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx index 185676d381..03e40eae38 100644 --- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx index 2ee3267fbf..8489efefae 100644 --- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx index 0566df9d98..f08e256226 100644 --- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx index 6231aea96c..d58c523d9d 100644 --- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx index 4df86f2ffc..0d125aeaec 100644 --- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx index 3138da7a5d..17bd04d9ee 100644 --- a/macros/latex/contrib/l3kernel/l3fp-random.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx index d5f84ba41a..5063fa4105 100644 --- a/macros/latex/contrib/l3kernel/l3fp-round.dtx +++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx index 51bbf6c3dc..07e29f0bb4 100644 --- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx index b5997b15d5..3fef46a6c2 100644 --- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx index 9496226575..e4dbc76a8e 100644 --- a/macros/latex/contrib/l3kernel/l3fp.dtx +++ b/macros/latex/contrib/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx index ec21dc624d..3016f666fb 100644 --- a/macros/latex/contrib/l3kernel/l3fparray.dtx +++ b/macros/latex/contrib/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx index fbf0cc9b15..8d9fc1c895 100644 --- a/macros/latex/contrib/l3kernel/l3int.dtx +++ b/macros/latex/contrib/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx index 56b293db63..0219861d14 100644 --- a/macros/latex/contrib/l3kernel/l3intarray.dtx +++ b/macros/latex/contrib/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx index 48c85b5498..b58d0fdc27 100644 --- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx +++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx index 417837ce37..ab068d5786 100644 --- a/macros/latex/contrib/l3kernel/l3keys.dtx +++ b/macros/latex/contrib/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx index af62b24dc3..14320d3ada 100644 --- a/macros/latex/contrib/l3kernel/l3legacy.dtx +++ b/macros/latex/contrib/l3kernel/l3legacy.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx index 942ad266f6..89185a2186 100644 --- a/macros/latex/contrib/l3kernel/l3luatex.dtx +++ b/macros/latex/contrib/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx index 42799793c3..68264ca6d1 100644 --- a/macros/latex/contrib/l3kernel/l3msg.dtx +++ b/macros/latex/contrib/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx index f86cc4cf62..ccd26ea9c3 100644 --- a/macros/latex/contrib/l3kernel/l3names.dtx +++ b/macros/latex/contrib/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf Binary files differindex 548fee9bed..a1679a1bb6 100644 --- a/macros/latex/contrib/l3kernel/l3news.pdf +++ b/macros/latex/contrib/l3kernel/l3news.pdf diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf Binary files differindex 3ace4904a4..1e589f9495 100644 --- a/macros/latex/contrib/l3kernel/l3news01.pdf +++ b/macros/latex/contrib/l3kernel/l3news01.pdf diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf Binary files differindex 9ed1645fcd..d73d5c8eb0 100644 --- a/macros/latex/contrib/l3kernel/l3news02.pdf +++ b/macros/latex/contrib/l3kernel/l3news02.pdf diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf Binary files differindex 391475fcf6..ab1f6a0033 100644 --- a/macros/latex/contrib/l3kernel/l3news03.pdf +++ b/macros/latex/contrib/l3kernel/l3news03.pdf diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf Binary files differindex 095d00c064..bd129df812 100644 --- a/macros/latex/contrib/l3kernel/l3news04.pdf +++ b/macros/latex/contrib/l3kernel/l3news04.pdf diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf Binary files differindex 128147df68..04a96e19f3 100644 --- a/macros/latex/contrib/l3kernel/l3news05.pdf +++ b/macros/latex/contrib/l3kernel/l3news05.pdf diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf Binary files differindex eb931c08db..7bfbc1aa2b 100644 --- a/macros/latex/contrib/l3kernel/l3news06.pdf +++ b/macros/latex/contrib/l3kernel/l3news06.pdf diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf Binary files differindex 0f0710fb54..8f06de95d6 100644 --- a/macros/latex/contrib/l3kernel/l3news07.pdf +++ b/macros/latex/contrib/l3kernel/l3news07.pdf diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf Binary files differindex 1ac7b48fc0..fac7c0dd0b 100644 --- a/macros/latex/contrib/l3kernel/l3news08.pdf +++ b/macros/latex/contrib/l3kernel/l3news08.pdf diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf Binary files differindex f0b9042c8a..c5a0920919 100644 --- a/macros/latex/contrib/l3kernel/l3news09.pdf +++ b/macros/latex/contrib/l3kernel/l3news09.pdf diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf Binary files differindex a28ad5fabf..2ef13294d4 100644 --- a/macros/latex/contrib/l3kernel/l3news10.pdf +++ b/macros/latex/contrib/l3kernel/l3news10.pdf diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf Binary files differindex 3df9be07b4..525e148d86 100644 --- a/macros/latex/contrib/l3kernel/l3news11.pdf +++ b/macros/latex/contrib/l3kernel/l3news11.pdf diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf Binary files differindex 9ffaf1e42f..529cfc06b1 100644 --- a/macros/latex/contrib/l3kernel/l3news12.pdf +++ b/macros/latex/contrib/l3kernel/l3news12.pdf diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf Binary files differindex 3e52f7b795..3500aa840c 100644 --- a/macros/latex/contrib/l3kernel/l3prefixes.pdf +++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx index 3cbb989db4..8058df1d86 100644 --- a/macros/latex/contrib/l3kernel/l3prg.dtx +++ b/macros/latex/contrib/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx index 0d21cdaa12..3bacdb1374 100644 --- a/macros/latex/contrib/l3kernel/l3prop.dtx +++ b/macros/latex/contrib/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx index bb7f8f94c4..25d382e2fd 100644 --- a/macros/latex/contrib/l3kernel/l3quark.dtx +++ b/macros/latex/contrib/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx index 7901939530..6fbdb21eb8 100644 --- a/macros/latex/contrib/l3kernel/l3regex.dtx +++ b/macros/latex/contrib/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx index 9432890987..44ce65943d 100644 --- a/macros/latex/contrib/l3kernel/l3seq.dtx +++ b/macros/latex/contrib/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx index e15fa39a90..364ff13e32 100644 --- a/macros/latex/contrib/l3kernel/l3skip.dtx +++ b/macros/latex/contrib/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx index e81bb56033..d26ecdcf28 100644 --- a/macros/latex/contrib/l3kernel/l3sort.dtx +++ b/macros/latex/contrib/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx index b0e38274f5..37a647c9dc 100644 --- a/macros/latex/contrib/l3kernel/l3str-convert.dtx +++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx index 18880fe200..efb99050c5 100644 --- a/macros/latex/contrib/l3kernel/l3str.dtx +++ b/macros/latex/contrib/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf Binary files differindex af3ec49fc6..4b778f685e 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.pdf +++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex index 5efb9d47fc..9617b99326 100644 --- a/macros/latex/contrib/l3kernel/l3styleguide.tex +++ b/macros/latex/contrib/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-03-03} +\date{Released 2020-03-06} \begin{document} diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf Binary files differindex 4acc2f2a2f..d6504320ca 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex index 1ccd4dce5c..4f8558eae4 100644 --- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex +++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-03-03} +\date{Released 2020-03-06} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx index 1dbfca2d0e..382b2a5070 100644 --- a/macros/latex/contrib/l3kernel/l3sys.dtx +++ b/macros/latex/contrib/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf Binary files differindex b23107625d..5d1e3217c1 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf +++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex index 9e1ee7818c..a404d48695 100644 --- a/macros/latex/contrib/l3kernel/l3term-glossary.tex +++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2020-03-03} +\date{Released 2020-03-06} \newcommand{\TF}{\textit{(TF)}} diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx index 0a516e56fb..44b06224b5 100644 --- a/macros/latex/contrib/l3kernel/l3text-case.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx new file mode 100644 index 0000000000..fdddb25414 --- /dev/null +++ b/macros/latex/contrib/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} +%</driver> +% \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} +%</initex|package> +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx index 01af5e5c49..8d06641d95 100644 --- a/macros/latex/contrib/l3kernel/l3text.dtx +++ b/macros/latex/contrib/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/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx index 023bc13ab5..bdfc80f714 100644 --- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx +++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx index 77fb21b753..3fba28f01d 100644 --- a/macros/latex/contrib/l3kernel/l3tl.dtx +++ b/macros/latex/contrib/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx index 0a78a6401a..2c7dac3898 100644 --- a/macros/latex/contrib/l3kernel/l3token.dtx +++ b/macros/latex/contrib/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx index 42f10d7ee9..90dd9057b4 100644 --- a/macros/latex/contrib/l3kernel/l3unicode.dtx +++ b/macros/latex/contrib/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2020-03-03} +% \date{Released 2020-03-06} % % \maketitle % diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf Binary files differindex f70cc7def0..57b8a07a47 100644 --- a/macros/latex/contrib/l3kernel/source3.pdf +++ b/macros/latex/contrib/l3kernel/source3.pdf diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex index 03b190192a..33e5430010 100644 --- a/macros/latex/contrib/l3kernel/source3.tex +++ b/macros/latex/contrib/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2020-03-03} +\date{Released 2020-03-06} \pagenumbering{roman} \maketitle diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex index f985c0d147..4edd3d5b6c 100644 --- a/macros/latex/contrib/l3kernel/source3body.tex +++ b/macros/latex/contrib/l3kernel/source3body.tex @@ -2,7 +2,7 @@ File: source3body.tex -Copyright (C) 1990-2012,2014-2019 The LaTeX3 Project +Copyright (C) 1990-2012,2014-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 @@ -488,7 +488,8 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments. \ExplSyntaxOn \clist_gput_right:Nn \g_docinput_clist { - l3text-case.dtx + l3text-case.dtx , + l3text-purify.dtx } \ExplSyntaxOff \DocInput{l3legacy.dtx} diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md index 9b92b84018..515f5d001b 100644 --- a/macros/latex/contrib/l3packages/CHANGELOG.md +++ b/macros/latex/contrib/l3packages/CHANGELOG.md @@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2020-03-06] + +### Added +- Pre-loader file `xparse.ltx` + ## [2020-03-03] ### Changed @@ -87,7 +92,8 @@ this project uses date-based 'snapshot' version identifiers. - Switch to ISO date format - Improve cross-module use of internal functions -[Unreleased]: https://github.com/latex3/latex3/compare/2020-03-03...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2020-03-06...HEAD +[2020-03-06]: https://github.com/latex3/latex3/compare/2020-03-03...2020-03-06 [2020-03-03]: https://github.com/latex3/latex3/compare/2020-02-25...2020-03-03 [2020-02-25]: https://github.com/latex3/latex3/compare/2020-02-14...2020-02-25 [2020-02-14]: https://github.com/latex3/latex3/compare/2020-02-08...2020-02-14 diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md index 60647bde63..dbfd91cf34 100644 --- a/macros/latex/contrib/l3packages/README.md +++ b/macros/latex/contrib/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2020-03-03 +Release 2020-03-06 Overview -------- diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx index 3b648b7bdd..d6701c4519 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.dtx +++ b/macros/latex/contrib/l3packages/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/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf Binary files differindex 2a1c8fedbd..497301bdf7 100644 --- a/macros/latex/contrib/l3packages/l3keys2e.pdf +++ b/macros/latex/contrib/l3packages/l3keys2e.pdf diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx index 023e0e2ed5..afdd9e189c 100644 --- a/macros/latex/contrib/l3packages/xfp.dtx +++ b/macros/latex/contrib/l3packages/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/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf Binary files differindex e5896aa5e8..2191564816 100644 --- a/macros/latex/contrib/l3packages/xfp.pdf +++ b/macros/latex/contrib/l3packages/xfp.pdf diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx index abbce7d8d1..7be07c978e 100644 --- a/macros/latex/contrib/l3packages/xfrac.dtx +++ b/macros/latex/contrib/l3packages/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/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf Binary files differindex 4c26aa4286..a6b5f6a7c9 100644 --- a/macros/latex/contrib/l3packages/xfrac.pdf +++ b/macros/latex/contrib/l3packages/xfrac.pdf diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx index 279b2e58c0..f56bcdf5e9 100644 --- a/macros/latex/contrib/l3packages/xparse.dtx +++ b/macros/latex/contrib/l3packages/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}{} +%</2ekernel> +% \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} +%</package> +% \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 } %</initex> -%<*package> +%<*package|2ekernel> \cs_if_exist:cTF { \l_@@_environment_str } -%</package> +%</package|2ekernel> { \__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 } -%</package> +%</package|2ekernel> } } % \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 -%</package> +%</package|2ekernel> \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 } -%</package> +%</package|2ekernel> \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 -%</package> +%</package|2ekernel> \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 %</initex> -%<*package> +%<*package|2ekernel> \cs_set_eq:NN \do \char_set_catcode_other:N \dospecials -%</package> +%</package|2ekernel> \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} -%</package> +%</2ekernel> +% \end{macrocode} +% +% \begin{macrocode} +%</package|2ekernel> % \end{macrocode} % % \end{implementation} diff --git a/macros/latex/contrib/l3packages/xparse.ins b/macros/latex/contrib/l3packages/xparse.ins index e65d254709..d40f7cd6f2 100644 --- a/macros/latex/contrib/l3packages/xparse.ins +++ b/macros/latex/contrib/l3packages/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/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf Binary files differindex 98e62db0e1..76fe65c72b 100644 --- a/macros/latex/contrib/l3packages/xparse.pdf +++ b/macros/latex/contrib/l3packages/xparse.pdf diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx index d0ced34962..2236b30f97 100644 --- a/macros/latex/contrib/l3packages/xtemplate.dtx +++ b/macros/latex/contrib/l3packages/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} % diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf Binary files differindex 20ae5c9d3f..68bbd25f44 100644 --- a/macros/latex/contrib/l3packages/xtemplate.pdf +++ b/macros/latex/contrib/l3packages/xtemplate.pdf |