diff options
author | Karl Berry <karl@freefriends.org> | 2022-03-16 21:01:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-03-16 21:01:50 +0000 |
commit | edc4da5fa2ccf95dc2d8e78bd12c6532e6074098 (patch) | |
tree | 2cbeacd10abcd62cbf748f76a086d6dfb171b5d4 /Master/texmf-dist/tex/latex-dev | |
parent | 68a75026205e8146e3f641432ffc7e569d4465f0 (diff) |
latex-lab-dev (16mar22)
git-svn-id: svn://tug.org/texlive/trunk@62742 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev')
10 files changed, 1890 insertions, 4 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx index cabd8bb6efc..458394ca9be 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/documentmetadata-support.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021 LaTeX Project +%% Copyright 2021,2022 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -141,9 +141,11 @@ { \tl_gput_right:Nn\g__pdfmanagement_testphase_tl { + \AddToDocumentProperties [document]{testphase/#1}{loaded} \file_if_exist_input:nF {#1-latex-lab-testphase.ltx} { \msg_warning:nnn{meta}{latex-lab-pkg-missing}{#1} + \AddToDocumentProperties [document]{testphase/#1}{missing} } } } diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx new file mode 100644 index 00000000000..7c7129b4560 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footmisc.ltx @@ -0,0 +1,630 @@ +%% +%% This is file `latex-lab-footmisc.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-footnotes.dtx (with options: `footmisc') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-footnotes.dtx +%% +%% Copyright (c) 1995-2011 Robin Fairbairns +%% Copyright (c) 2018-2022 Robin Fairbairns, Frank Mittelbach +%% +%% This file is part of the `latex-lab Bundle'. +%% -------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This work has the LPPL maintenance status 'maintained'. +%% +%% +%% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns +%% (C) Copyright 2018-2022 Frank Mittelbach +\NeedsTeXFormat{LaTeX2e} +\providecommand\DeclareRelease[3]{} +\providecommand\DeclareCurrentRelease[2]{} + +\DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty} +\DeclareCurrentRelease{}{2022-02-14} +\ProvidesPackage{latex-lab-footmisc}% + [2022/03/08 v6.0d + a miscellany of footnote facilities -- latex-lab version% + ] + +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\newtoks\FN@temptoken +\providecommand\protected@writeaux{% + \protected@write\@auxout +} +\def\l@advance@macro{\@@dvance@macro\edef} +\def\@@dvance@macro#1#2#3{\expandafter\@tempcnta#2\relax + \advance\@tempcnta#3\relax + #1#2{\the\@tempcnta}% +} +\let\@advance@macro\l@advance@macro +\DeclareOption{symbol}{\renewcommand\thefootnote{\fnsymbol{footnote}}} +\newif\ifFN@robust \FN@robustfalse +\DeclareOption{symbol*}{% + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \FN@robusttrue + \AtEndOfPackage{\setfnsymbol{lamport*-robust}}% +} +\newif\ifFN@para \FN@parafalse +\DeclareOption{para}{% + \FN@paratrue + \setlength\footnotemargin{-\maxdimen} % default when para is used +} +\DeclareOption{side}{\ifFN@para + \PackageError{footmisc}{Option "\CurrentOption" incompatible with + option "para"}% + {I shall ignore "\CurrentOption"}% + \else + \def\@footnotetext@cfgpoint {\marginpar} + \AddToHook{fntext/para}{% + \hsize\marginparwidth % correct the default \hsize + \footnotesep\z@ % don't add a default separation + } + \def\@footnotetext@cfgpointii {\@makefntext} + \def\@footnotetext@cfgpointiii {} + \def\@footnotetext@cfgpointiv {} + \fi +} +\let\footnotelayout\@empty +\DeclareOption{ragged}{% + \@ifundefined{RaggedRight}% + {\renewcommand\footnotelayout{\linepenalty50 \raggedright}}% + {\renewcommand\footnotelayout{\linepenalty50 \RaggedRight}}% +} +\newif\ifFN@perpage +\FN@perpagefalse +\DeclareOption{perpage}{% + \FN@perpagetrue +} +\newif\ifFN@fixskip \FN@fixskipfalse + +\let\FN@bottomcases\thr@@ +\newif\ifFN@abovefloats \FN@abovefloatstrue +\DeclareOption{bottom}{% + \let\FN@bottomcases\@ne + \FN@abovefloatsfalse + \FN@fixskiptrue +} +\DeclareOption{bottomfloats}{% + \let\FN@bottomcases\tw@ + \FN@abovefloatstrue \FN@fixskiptrue +} +\DeclareOption{abovefloats}{\FN@abovefloatstrue \FN@fixskiptrue} +\DeclareOption{belowfloats}{\FN@abovefloatsfalse \FN@fixskiptrue} +\DeclareOption{marginal}{% + \footnotemargin-0.8em\relax +} +\DeclareOption{flushmargin}{% + \footnotemargin0pt\relax +} +\newif\ifFN@hangfoot \FN@hangfootfalse +\DeclareOption{hang}{% + \FN@hangfoottrue +} +\newcommand*\hangfootparskip{0.5\baselineskip} +\newcommand*\hangfootparindent{0em}% +\DeclareOption{norule}{% + \renewcommand\footnoterule{}% + \advance\skip\footins 4\p@\@plus2\p@\relax +} +\DeclareOption{splitrule}{% + \gdef\split@prev{0} + \let\pagefootnoterule\footnoterule + \let\mpfootnoterule\footnoterule + \def\splitfootnoterule{\kern-3\p@ \hrule \kern2.6\p@} + \def\footnoterule{\relax + \ifx \@listdepth\@mplistdepth + \mpfootnoterule + \else + \ifnum\split@prev=\z@ + \pagefootnoterule + \else + \splitfootnoterule + \fi + \xdef\split@prev{\the\insertpenalties}% + \fi + }% +} +\newif\ifFN@stablefootnote \FN@stablefootnotefalse +\DeclareOption{stable}{\FN@stablefootnotetrue} +\newif\ifFN@multiplefootnote \FN@multiplefootnotefalse +\DeclareOption{multiple}{\FN@multiplefootnotetrue} +\ProcessOptions +\ifFN@para + \def\@makecol@cfgpointii {% + \global\setbox\footins\vbox{\FN@makefootnoteparagraph}% + } +\fi +\ifFN@fixskip + \def\@outputbox@removebskip{% + \ifx\@textbottom\relax \else + \@outputbox@append{% + \@tempskipa\lastskip + \ifnum \gluestretchorder\@tempskipa>\z@ + \vskip-\@tempskipa + \xdef\@outputbox@reinsertbskip + {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% + \else + \global\let\@outputbox@reinsertbskip\relax + \fi + }% + \fi + } +\let\@outputbox@reinsertbskip\relax +\else + \let\@outputbox@removebskip \relax + \let\@outputbox@reinsertbskip\relax +\fi +\ifcase \FN@bottomcases\relax +\ERROR +\or + \ifFN@abovefloats + \def\@makecol@cfgpoint {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bfloats@TF{\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + } + \else + \def\@makecol@cfgpoint {% + \@outputbox@attachfloats + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@appendfootnotes + } + \fi +\or + \ifFN@abovefloats + \def\@makecol@cfgpoint {% + \@outputbox@appendfootnotes + \@if@bfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@attachfloats + } + \else + \def\@makecol@cfgpoint {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bfloats@TF{\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@attachfloats + \@outputbox@appendfootnotes + } + \fi +\or + \ifFN@abovefloats + \def\@makecol@cfgpoint {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip + } + \else + \def\@makecol@cfgpoint {% + \@outputbox@attachfloats + \@outputbox@appendfootnotes + \@outputbox@reinsertbskip +} + \fi +\else +\ERROR +\fi + +\newif\ifFN@setspace +\@ifpackageloaded{setspace}% + {% + \FN@setspacetrue + \@ifclassloaded{memoir}% + {% + \AddToHook{fntext}{\let\baselinestretch\m@m@singlespace}% + \let\FN@baselinestretch\m@m@singlespace + }% + {% + \let\FN@baselinestretch\setspace@singlespace + }% + }% + {% + \FN@setspacefalse + } + +\ifFN@para + \def\@footnotetext@cfgpoint {\insert\footins} + + \long\def\@footnotetext@cfgpointii #1{% + \setbox\FN@tempboxa\hbox{\@makefntext{#1}}% + \dp\FN@tempboxa\z@ + \ht\FN@tempboxa + \dimexpr\wd\FN@tempboxa *% + \footnotebaselineskip /\columnwidth\relax + \box\FN@tempboxa + } + + \def\@footnotetext@cfgpointiii {} + \def\@footnotetext@cfgpointiv {% config point + \strut + \penalty-10\relax + \hskip\footglue + } +\fi + +\ifFN@para + \let\FN@tempboxa\@tempboxa + \newbox\FN@tempboxb + \newbox\FN@tempboxc + \newskip\footglue \footglue=1em plus.3em minus.3em + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \newdimen\footnotebaselineskip + + % establish late: + +\AddToHook{begindocument/before} {% + {% + \footnotesize + \global\footnotebaselineskip=\normalbaselineskip + }% +} + + \long\def\FN@makefootnoteparagraph{% + \FN@setfootnoteparawidth + \@parboxrestore + \baselineskip=\footnotebaselineskip + \unvbox\footins \FN@removehboxes + \RawParEnd + } + \def\FN@removehboxes{\setbox\FN@tempboxa\lastbox + \ifhbox\FN@tempboxa{\FN@removehboxes}% + \unhbox\FN@tempboxa + \else + \RawNoindent + \rule\z@\footnotesep + \fi + } +\fi + +\@ifpackageloaded{multicol} + {\def\FN@setfootnoteparawidth + {\hsize\ifnum\doublecol@number>\@ne + \textwidth + \else \columnwidth \fi}} + {\def\FN@setfootnoteparawidth{\hsize\columnwidth}} + +\ifFN@perpage + \RequirePackage{perpage} + \MakePerPage{footnote} + \def\@stpelt#1{\global\csname c@#1\endcsname \m@ne + \stepcounter{#1}% + \pp@fix@MakePerPage{#1}% + } + \def\pp@fix@MakePerPage#1{% + \ifnum \value{#1}>\z@ + \addtocounter{#1}\m@ne\fi + } + \def\pp@cl@end@iii\stepcounter#1\pp@fix@MakePerPage#2{} +\fi + +\ifFN@para + + + +\AddToHook{fntext/begin}{\nobreak \hspace{.2em}} + +\else + + \ifFN@hangfoot + \long\def\@makefntext#1{% + \bgroup + \setbox\@tempboxa\hbox{% + \ifdim\footnotemargin>\z@ + \hb@xt@\footnotemargin{\@makefnmark\hss}% + \else + \@makefnmark + \fi + }% + \leftmargin\wd\@tempboxa + \rightmargin\z@ + \linewidth \columnwidth + \advance \linewidth -\leftmargin + \parshape \@ne \leftmargin \linewidth + \footnotesize + \@setpar{{\@@par}}% + \leavevmode + \llap{\box\@tempboxa}% + \parskip\hangfootparskip\relax + \parindent\hangfootparindent\relax + \footnotelayout#1% + \par + \egroup + } + + \else + + + \fi +\fi + +\ifFN@multiplefootnote + \providecommand*{\multiplefootnotemarker}{3sp} + \providecommand*{\multfootsep}{,} + \AddToHook{fnmark} {\FN@mf@check} + \AddToHook{fnmark/end} {\FN@mf@prepare} + \def\FN@mf@prepare{% + \kern-\multiplefootnotemarker + \kern\multiplefootnotemarker\relax + } + \def\FN@mf@check{% + \ifdim\lastkern=\multiplefootnotemarker\relax + \edef\@x@sf{\the\spacefactor}% + \unkern % new + \unkern + \textsuperscript{\multfootsep}% + \spacefactor\@x@sf\relax + \fi + } +\else + \let\FN@mf@prepare\relax +\fi +\ifFN@stablefootnote +\let\FN@sf@@footnote\footnote +\def\footnote{\ifx\protect\@typeset@protect + \expandafter\FN@sf@@footnote + \else + \expandafter\FN@sf@gobble@opt + \fi +} +\edef\FN@sf@gobble@opt{\noexpand\protect + \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname} +\expandafter\def\csname FN@sf@gobble@opt \endcsname{% + \@ifnextchar[%] + \FN@sf@gobble@twobracket + \@gobble +} +\def\FN@sf@gobble@twobracket[#1]#2{} +\let\FN@sf@@footnotemark\footnotemark +\def\footnotemark{\ifx\protect\@typeset@protect + \expandafter\FN@sf@@footnotemark + \else + \expandafter\FN@sf@gobble@optonly + \fi +} +\edef\FN@sf@gobble@optonly{\noexpand\protect + \expandafter\noexpand\csname FN@sf@gobble@optonly \endcsname} +\expandafter\def\csname FN@sf@gobble@optonly \endcsname{% + \@ifnextchar[%] + \FN@sf@gobble@bracket + {}% +} +\def\FN@sf@gobble@bracket[#1]{} +\fi +\newcommand\setfnsymbol[1]{% + \@bsphack + \@ifundefined{FN@fnsymbol@#1}% + {% + \PackageError{footmisc}{Symbol style "#1" not known}% + \@eha + }{% + \expandafter\let\expandafter\@fnsymbol\csname + FN@fnsymbol@#1\endcsname + }% + \@esphack +} +\let\FN@fnsymbol@lamport\@fnsymbol +\newif\if@tempswb +\DeclareDocumentCommand\DefineFNsymbols {smO{text}m}{% + \expandafter\ifx\csname FN@fnsymbol@#2\endcsname\relax + \PackageInfo{footmisc}{Declaring symbol style #2}% + \else + \PackageWarning{footmisc}{Redeclaring symbol style #2}% + \fi + \toks@{}% + \def\@tempb{\end}% + \FN@build@symboldef#4\end + \def\@tempc{math}% + \def\@tempd{#3}% + \expandafter\xdef\csname FN@fnsymbol@#2\endcsname##1{% + \ifx\@tempc\@tempd + \noexpand\ensuremath + \else + \noexpand\nfss@text + \fi + {% + \noexpand\ifcase##1% + \the\toks@ + \noexpand\else + \IfBooleanTF#1{\noexpand\@ctrerr}% + {\noexpand\FN@orange##1}% + \noexpand\fi + }% + }% +} +\def\FN@build@symboldef#1{% + \def\@tempa{#1}% + \ifx\@tempa\@tempb + \else + \toks@\expandafter{\the\toks@\or#1}% + \expandafter\FN@build@symboldef + \fi +} +\DeclareDocumentCommand\DefineFNsymbolsTM {smm}{% + \expandafter\ifx\csname FN@fnsymbol@#2\endcsname\relax + \PackageInfo{footmisc}{Declaring symbol style #2}% + \else + \PackageWarning{footmisc}{Redeclaring symbol style #2}% + \fi + \toks@{}% + \def\@tempb{\end}% + \FN@build@symboldefTM#3\end\@null + \expandafter\xdef\csname FN@fnsymbol@#2\endcsname##1{% + \noexpand\ifcase##1% + \the\toks@ + \noexpand\else + \IfBooleanTF#1{\noexpand\@ctrerr}% + {\noexpand\FN@orange##1}% + \noexpand\fi + }% +} +\def\FN@build@symboldefTM#1#2{% + \def\@tempa{#1}% + \ifx\@tempa\@tempb + \else + \toks@\expandafter{\the\toks@\or\TextOrMath{#1}{#2}}% + \expandafter\FN@build@symboldefTM + \fi +} +\def\FN@orange#1{% + \ifFN@robust + \@arabic#1% + \@bsphack + \PackageInfo{footmisc}{Footnote number \number#1 out of range}% + \protect\@fnsymbol@orange + \@esphack + \else \@ctrerr \fi +} +\global\let\@diagnose@fnsymbol@orange\relax +\AtEndDocument{\@diagnose@fnsymbol@orange} +\def\@fnsymbol@orange{% + \gdef\@diagnose@fnsymbol@orange{% + \PackageWarningNoLine{footmisc}{Some footnote number(s) + were out of range + \MessageBreak + see log for details% + }% + }% +} +\DefineFNsymbolsTM{bringhurst}{% + \textasteriskcentered *% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textbardbl \|% + \textparagraph \mathparagraph +}% +\DefineFNsymbolsTM{chicago}{% + \textasteriskcentered *% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textbardbl \|% + \#\#% +}% +\DefineFNsymbolsTM{wiley}{% + \textasteriskcentered *% + {\textasteriskcentered\textasteriskcentered}{**}% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textparagraph \mathparagraph + \textbardbl \|% +}% +\DefineFNsymbolsTM{lamport-robust}{% + \textasteriskcentered *% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textparagraph \mathparagraph + \textbardbl \|% + {\textasteriskcentered\textasteriskcentered}{**}% + {\textdagger\textdagger}{\dagger\dagger}% + {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}% +} +\DefineFNsymbolsTM*{lamport*}{% + \textasteriskcentered *% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textparagraph \mathparagraph + \textbardbl \|% + {\textasteriskcentered\textasteriskcentered}{**}% + {\textdagger\textdagger}{\dagger\dagger}% + {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}% + {\textsection\textsection}{\mathsection\mathsection}% + {\textparagraph\textparagraph}{\mathparagraph\mathparagraph}% + {\textasteriskcentered\textasteriskcentered\textasteriskcentered}{***}% + {\textdagger\textdagger\textdagger}{\dagger\dagger\dagger}% + {\textdaggerdbl\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger\ddagger}% + {\textsection\textsection\textsection}%% + {\mathsection\mathsection\mathsection}% + {\textparagraph\textparagraph\textparagraph}%% + {\mathparagraph\mathparagraph\mathparagraph}% +} +\setfnsymbol{lamport*} +\DefineFNsymbolsTM{lamport*-robust}{% + \textasteriskcentered *% + \textdagger \dagger + \textdaggerdbl \ddagger + \textsection \mathsection + \textparagraph \mathparagraph + \textbardbl \|% + {\textasteriskcentered\textasteriskcentered}{**}% + {\textdagger\textdagger}{\dagger\dagger}% + {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}% + {\textsection\textsection}{\mathsection\mathsection}% + {\textparagraph\textparagraph}{\mathparagraph\mathparagraph}% + {\textasteriskcentered\textasteriskcentered\textasteriskcentered}{***}% + {\textdagger\textdagger\textdagger}{\dagger\dagger\dagger}% + {\textdaggerdbl\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger\ddagger}% + {\textsection\textsection\textsection}%% + {\mathsection\mathsection\mathsection}% + {\textparagraph\textparagraph\textparagraph}%% + {\mathparagraph\mathparagraph\mathparagraph}% +} +\newcommand\mpfootnotemark{% + \@ifnextchar[% + \@xmpfootnotemark + {% + \stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + }% +} +\def\@xmpfootnotemark[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark +} + +\endinput +%% +%% End of file `latex-lab-footmisc.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx new file mode 100644 index 00000000000..560c1b98bae --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-footnotes.ltx @@ -0,0 +1,429 @@ +%% +%% This is file `latex-lab-footnotes.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-footnotes.dtx (with options: `kernel') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-footnotes.dtx +\ProvidesFile{latex-lab-footnotes.ltx} + [2022-03-10 v0.6a changes to the footnote interfaces] + + + % not looked at yet + +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \def\@currentcounter{mpfootnote}% + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \par + \color@endgroup}} + +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} + +\def\@mpfn{footnote} +\def\thempfn{\thefootnote} + + +\ExplSyntaxOn + +\cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 { + \tl_if_novalue:nTF {#1} + { + \stepcounter {#2} + \protected@xdef \@thefnmark { \use:c { the#2 } } + } + { + \group_begin: + \int_set:cn { c@#2 }{ #1 } + \unrestored@protected@xdef \@thefnmark { \use:c { the#2 } } + \group_end: + } +} + +\cs_new_protected:Npn \fnote_set_fnmark:nn #1#2 { + \tl_if_novalue:nTF {#1} + { + \protected@xdef \@thefnmark { \use:c { the#2 } } + } + { + \group_begin: + \int_set:cn { c@#2 }{ #1 } + \unrestored@protected@xdef \@thefnmark { \use:c { the#2 } } + \group_end: + } +} + + +\bool_new:N \g_fnote_debug_bool +\bool_gset_true:N \g_fnote_debug_bool % for now we have debugging turned on by default + + +\NewMirroredHookPair{fnmark/before}{fnmark/after} +\NewHook{fnmark} +\NewHook{fnmark/begin} +\NewHook{fnmark/end} + +\cs_new:Npn \__fnote_debug_footnotemark: { + \bool_if:NT \g_fnote_debug_bool + { + \LogHook{fnmark/before} + \LogHook{fnmark} + \LogHook{fnmark/begin} + \LogHook{fnmark/end} + \LogHook{fnmark/after} + \cs_gset_eq:NN \__fnote_debug_footnotemark: \prg_do_nothing: + } +} + +\cs_new_protected:Npn \fnote_footnotemark: { + \__fnote_debug_footnotemark: + \UseHook{fnmark/before} + \leavevmode + \ifhmode + \edef\@x@sf{\the\spacefactor} + \UseHook{fnmark} + \nobreak + \fi + \UseHook{fnmark/begin} + \@kernel@process@makefnmark + \@makefnmark + \__fnote_footnotemark_finish: +} + +\cs_new:Npn \__fnote_finish: { + \UseHook{fnmark/end} + \ifhmode + \spacefactor \@x@sf \relax + \fi + \UseHook{fnmark/after} +} + +\cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_finish: + +\def \@kernel@process@makefnmark { } + + + +\cs_set_eq:NN \@footnotemark \fnote_footnotemark: + + +\NewMirroredHookPair{fntext/before}{fntext/after} +\NewHook{fntext} +\NewHook{fntext/para} +\NewHook{fntext/begin} +\NewHook{fntext/end} + +\cs_new:Npn \__fnote_debug_footnotetext: { + \bool_if:NT \g_fnote_debug_bool + { + \cs_log:N\@footnotetext@cfgpoint + \cs_log:N\@footnotetext@cfgpointii + \cs_log:N\@footnotetext@cfgpointiii + \cs_log:N\@footnotetext@cfgpointiv + \cs_log:N\@makefntext@cfgpoint + \cs_log:N\@makefntext@cfgpointii + \LogHook{fntext/before} + \LogHook{fntext} + \LogHook{fntext/para} + \LogHook{fntext/begin} + \LogHook{fntext/end} + \LogHook{fntext/after} + \cs_gset_eq:NN \__fnote_debug_footnotetext: \prg_do_nothing: + } + } + +\cs_new_protected:Npn \fnote_footnotetext:n #1 { + \__fnote_debug_footnotetext: + \UseHook{fntext/before} + \@kernel@process@footnotetext + \@footnotetext@cfgpoint { % config point + \UseHook{fntext} + \reset@font + \footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox + \floatingpenalty \@MM + \hsize\columnwidth + \@parboxrestore + \parindent 1em % typical default used in \@makefntext moved up here + \def\@currentcounter{footnote} + \protected@edef \@currentlabel { \p@footnote \@thefnmark } + \UseHook{fntext/para} + \color@begingroup + \@footnotetext@cfgpointii % config point + { + \@footnotetext@cfgpointiii % config point + \UseHook{fntext/begin} + \ignorespaces + #1 + \UseHook{fntext/end} + \@footnotetext@cfgpointiv % config point + } + \par + \color@endgroup + } + \UseHook{fntext/after} +} + +\cs_new_protected:Npn \@footnotetext@cfgpoint { \insert\footins } + +\cs_new_protected:Npn \@footnotetext@cfgpointii { \@makefntext } + +\cs_new_protected:Npn \@footnotetext@cfgpointiii { \rule\z@\footnotesep } + +\cs_new_protected:Npn \@footnotetext@cfgpointiv { \@finalstrut\strutbox } + +\cs_new_protected:Npn \@kernel@process@footnotetext {} + + +\AddToHook{begindocument}{ + \cs_set_eq:NN \@footnotetext \fnote_footnotetext:n +} + + + +\newdimen\footnotemargin +\footnotemargin\maxdimen % no value given + +\AtBeginDocument{ + \ifdim \footnotemargin=\maxdimen + \setlength\footnotemargin{1.8em} + \fi +} + +\cs_new_protected:Npn \fnote_makefntext:n #1 { + \@makefntext@cfgpoint + { + \ifdim\footnotemargin>\z@ + \hb@xt@ \footnotemargin{\hss\@makefnmark} + \else + \ifdim\footnotemargin=\z@ + \llap{\@makefnmark} + \else + \ifdim\footnotemargin=-\maxdimen + \@makefnmark + \else + \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}} + \fi + \fi + \fi + } + \@makefntext@cfgpointii + { #1 } +} + +\cs_new_protected:Npn \@makefntext@cfgpoint { \noindent } + +\cs_new_protected:Npn \@makefntext@cfgpointii #1 { #1 } +\newcommand\old@std@class@makefntext[1]{% + \parindent 1em% + \noindent + \hb@xt@1.8em{\hss\@makefnmark}#1} + + +\tl_new:N \l__fnote_patch_tl +\cs_new_eq:NN \__fnote_tmp:w \ERROR + +\cs_new_protected:Npn \__fnote_patch: + { + \tl_set:No \l__fnote_patch_tl { \@makefntext { \@makefntext@cfgpointii{##1} } } + \tl_if_in:NnTF \l__fnote_patch_tl { \hbox } + { \cs_set_eq:NN \__fnote_tmp:w \__fnote_patch_hbox:w } + { + \tl_if_in:NnTF \l__fnote_patch_tl { \hb@xt@ } + { \cs_set_eq:NN \__fnote_tmp:w \__fnote_patch_hb@xt@:w } + { + \tl_if_in:NnTF \l__fnote_patch_tl { \@makefnmark } + { \cs_set_eq:NN \__fnote_tmp:w \__fnote_patch_@makefnmark:w } + { \ERROR + \cs_set_eq:NN \__fnote_tmp:w \exp_stop_f: } + } + } + \tl_set:Nf \l__fnote_patch_tl + { \exp_after:wN \__fnote_tmp:w \l__fnote_patch_tl } + \cs_set:Npn \__fnote_tmp:w { \long \def \@makefntext ####1 } + \exp_after:wN \__fnote_tmp:w \exp_after:wN { \l__fnote_patch_tl } + } +\cs_new:Npn \__fnote_patch_hbox:w #1 \hbox #2 # + { \exp_stop_f: #1 \@makefntext@processX { \hbox #2 } } +\cs_new:Npn \__fnote_patch_hb@xt@:w #1 \hb@xt@ #2 # + { \exp_stop_f: #1 \@makefntext@processX { \hb@xt@ #2 } } +\cs_new:Npn \__fnote_patch_@makefnmark:w #1 \@makefnmark + { \exp_stop_f: #1 \@makefntext@processX { \use:n } { \@makefnmark } } +\cs_new:Npn \@makefntext@processX #1#2{\@makefntext@cfgpoint{#1{#2}}} + +\AddToHook{begindocument}{ + \cs_if_eq:NNTF \@makefntext \old@std@class@makefntext + { + \cs_set_eq:NN \@makefntext \fnote_makefntext:n + } + { + \__fnote_patch: + } +} + + +\DeclareDocumentCommand\footnotetext {om} { + \fnote_set_fnmark:nn {#1} \@mpfn + \@footnotetext {#2} +} + + +\DeclareDocumentCommand\footnote {om} { + \fnote_step_fnmark:nn {#1} \@mpfn + \cs_set_eq:NN \__fnote_footnotemark_finish: \prg_do_nothing: + \@footnotemark + \cs_set_eq:NN \__fnote_footnotemark_finish: \__fnote_finish: + \@footnotetext {#2} + \__fnote_footnotemark_finish: +} + + +\DeclareDocumentCommand\footnotemark {o} { + \fnote_step_fnmark:nn {#1} { footnote } + \@footnotemark +} + + +\DeclareDocumentCommand\footref {m}{% + \begingroup + \unrestored@protected@xdef\@thefnmark{\ref{#1}}% + \endgroup + \@footnotemark +} + +\AddToHook{package/setspace/after} + {\let \@footnotetext \fnote_footnotetext:n + \AddToHook{fntext}[setspace]{\let\baselinestretch\setspace@singlespace}} +\AddToHook{package/hyperref/after}{ + \let\H@@footnotetext\fnote_footnotetext:n + \let\H@@footnotemark\fnote_footnotemark: + \let \@footnotetext \fnote_footnotetext:n + \let \@footnotemark \fnote_footnotemark: +} + + + + + + + + +\newcounter{absfootnote} +\AddToHook{fnmark/begin}{\stepcounter{absfootnote}} % too simple (fails with opt args) + + +\cs_new_protected:Npn \tag_if_loaded:TF { \cs_if_exist:NTF \tag_struct_begin:n } + +\cs_new_protected:Npn \tag@FEMark #1 { + \tag_if_loaded:TF + { + \tag_mc_end_push: + \exp_args:Nx + \tag_struct_begin:n{tag=Lbl,ref=fn.\the\c@absfootnote} + \tag_mc_begin:n{tag=Lbl} + \IfPackageLoadedTF{hyperref}{ \hyper@linkstart + {link}{fn.\the\c@absfootnote} }{} + #1 + \IfPackageLoadedTF{hyperref}{ \hyper@linkend }{} + \tag_mc_end: + \tag_struct_end: + \tag_mc_begin_pop:n{} + } + { #1 } +} + + +\cs_set_eq:NN \@kernel@process@makefnmark \tag@FEMark + +\cs_set:Npn \@kernel@process@footnotetext #1#2 { + \tag_if_loaded:TF + { + \tag_mc_end_push: + \tag_struct_begin:n { tag=FENote,label=fn.\the\c@absfootnote } + #1 {#2} + \tag_struct_end: + \tag_mc_begin_pop:n{} + } + { #1 {#2} } +} + +\cs_set:Npn \@makefntext@cfgpoint #1 { + \noindent + \cs_if_exist:NT \tag_struct_begin:n { \tag_mc_end_push: } + \tag@FELbl { #1 } +} + +\cs_set:Npn \@makefntext@cfgpointii #1 { + \tag@FENote { #1 } + \cs_if_exist:NT \tag_struct_begin:n { \tag_mc_begin_pop:n{} } +} + +\cs_new_protected:Npn \tag@FELbl #1 { + \tag_if_loaded:TF + { + % target should perhaps be raised ... + \IfPackageLoadedTF{hyperref}{ \hypertarget{fn.\the\c@absfootnote}{} }{} + %\tag_struct_begin:n { tag=FENote,label=fn.\the\c@absfootnote } %alternativ location for structure + \tag_struct_begin:n { tag=Lbl } + \tag_mc_begin:n { tag=Lbl } + #1 + \tag_mc_end: + \tag_struct_end: + } + { #1 } +} + +\cs_new_protected:Npn \tag@FENote #1 { + \tag_if_loaded:TF + { + \tag_mc_begin:n{tag=FENote} + #1 + \tag_mc_end: + %\tag_struct_end: %alternative location for structure end but ends inside a P + } + { #1 } +} + + +\ExplSyntaxOff +\endinput +%% +%% End of file `latex-lab-footnotes.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-prototype.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-prototype.sty new file mode 100644 index 00000000000..cedf3ad4d1b --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-prototype.sty @@ -0,0 +1,301 @@ +%% +%% This is file `latex-lab-prototype.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-prototype.dtx (with options: `2ekernel') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-prototype.dtx +\ExplSyntaxOn +\tl_if_exist:NF \l__keys_precompile_tl + { + \bool_new:N \l__keys_precompile_bool + \tl_new:N \l__keys_precompile_tl + } +\cs_gset_protected:Npn \__keys_precompile:n #1 + { + \bool_if:NTF \l__keys_precompile_bool + { \tl_put_right:Nn \l__keys_precompile_tl } + { \use:n } + {#1} + } +\cs_gset_protected:Npn \__keys_bool_set:Nnnn #1#2#3#4 + { + \bool_if_exist:NF #1 { \bool_new:N #1 } + \__keys_choice_make: + \__keys_cmd_set:nx { \l_keys_path_str / true } + { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 } + \__keys_cmd_set:nx { \l_keys_path_str / false } + { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 } + \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown } + { + \msg_error:nnx { keys } { boolean-values-only } + \l_keys_key_str + } + \__keys_default_set:n { true } + } +\cs_gset_protected:Npn \__keys_choice_make_aux:N #1 + { + \cs_set_nopar:cpn { \c__keys_type_root_str \l_keys_path_str } + { choice } + \__keys_cmd_set_direct:nn \l_keys_path_str { #1 {##1} } + \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown } + { + \msg_error:nnxx { keys } { choice-unknown } + \l_keys_path_str {##1} + } + } +\cs_gset_protected:Npn \__keys_cmd_set:nn #1#2 + { \__keys_cmd_set_direct:nn {#1} { \__keys_precompile:n {#2} } } +\cs_gset_protected:Npn \__keys_cmd_set_direct:nn #1#2 + { \cs_set_protected:cpn { \c__keys_code_root_str #1 } ##1 {#2} } +\cs_gset_protected:Npn \__keys_cs_set:NNpn #1#2#3# + { + \cs_set_protected:cpx { \c__keys_code_root_str \l_keys_path_str } ##1 + { + \__keys_precompile:n + { #1 \exp_not:N #2 \exp_not:n {#3} {##1} } + } + \use_none:n + } +\cs_gset_protected:Npn \__keys_meta_make:n #1 + { + \exp_args:NVo \__keys_cmd_set_direct:nn \l_keys_path_str + { + \exp_after:wN \keys_set:nn \exp_after:wN + { \l__keys_module_str } {#1} + } + } +\cs_gset_protected:Npn \__keys_meta_make:nn #1#2 + { + \exp_args:NV \__keys_cmd_set_direct:nn + \l_keys_path_str { \keys_set:nn {#1} {#2} } + } +\cs_gset_protected:Npn \keys_precompile:nnN #1#2#3 + { + \bool_set_true:N \l__keys_precompile_bool + \tl_clear:N \l__keys_precompile_tl + \keys_set:nn {#1} {#2} + \bool_set_false:N \l__keys_precompile_bool + \tl_set_eq:NN #3 \l__keys_precompile_tl + } +\cs_gset_protected:Npn \__keys_show:Nnn #1#2#3 + { + #1 { keys } { show-key } + { \__keys_trim_spaces:n { #2 / #3 } } + { + \keys_if_exist:nnT {#2} {#3} + { + \exp_args:Nnf \msg_show_item_unbraced:nn { code } + { + \exp_args:Ne \__keys_show:n + { + \exp_args:Nc \cs_replacement_spec:N + { + \c__keys_code_root_str + \__keys_trim_spaces:n { #2 / #3 } + } + } + } + } + } + { } { } + } +\cs_gset:Npx \__keys_show:n #1 + { + \exp_not:N \__keys_show:w + #1 + \tl_to_str:n { \__keys_precompile:n } + #1 + \tl_to_str:n { \__keys_precompile:n } + \exp_not:N \s__keys_stop + } +\use:x + { + \cs_gset:Npn \exp_not:N \__keys_show:w + ##1 \tl_to_str:n { \__keys_precompile:n } + ##2 \tl_to_str:n { \__keys_precompile:n } + ##3 \exp_not:N \s__keys_stop + } + { + \tl_if_blank:nTF {#2} + {#1} + { \__keys_show:Nw #2 \s__keys_stop } + } +\use:x + { + \cs_gset:Npn \exp_not:N \__keys_show:Nw ##1##2 + \c_right_brace_str \exp_not:N \s__keys_stop + } + {#2} +\tl_new:N \l__prototype_tmp_tl +\prop_new:N \l__prototype_object_prop +\cs_new_protected:Npn \prototype_declare_object:nn #1#2 + { + \exp_args:Nx \__prototype_declare_object:nn { \int_eval:n {#2} } {#1} + } +\cs_new_protected:Npn \__prototype_declare_object:nn #1#2 + { + \int_compare:nTF { 0 <= #1 <= 9 } + { + \msg_info:nnnn { prototype } { declare-object-type } {#2} {#1} + \prop_put:Nnn \l__prototype_object_prop {#2} {#1} + } + { \msg_error:nnxx { prototype } { bad-number-of-arguments } {#2} {#1} } + } +\tl_new:N \l__prototype_assignments_tl +\cs_new_protected:Npn \prototype_declare_template:nnnn #1#2#3#4 + { + \prop_get:NnNTF \l__prototype_object_prop {#1} \l__prototype_tmp_tl + { + \keys_define:nn { prototype / #1 / #2 } {#3} + \tl_clear_new:c { l__prototype_defaults_ #1 _ #2 _tl } + \cs_generate_from_arg_count:cNnn + { __prototype_template_ #1 _ #2 :w } + \cs_set_protected:Npn + { \l__prototype_tmp_tl } + { + \tl_use:N \l__prototype_assignments_tl + #4 + } + } + { \msg_error:nnn { prototype } { unknown-object-type } {#1} } + } +\cs_new_protected:Npn \prototype_declare_defaults:nnn #1#2#3 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { \tl_set:cn { l__prototype_defaults_ #1 _ #2 _tl } {#3} } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_generate_variant:Nn \keys_precompile:nnN { v , nv } +\cs_new_protected:Npn \prototype_use_template:nnn #1#2#3 + { + \__prototype_declare_aux:nnnn {#1} {#2} {#3} + { \use:c { __prototype_template_ #1 _ #2 :w } } + } +\cs_new_protected:Npn \prototype_declare_instance:nnnn #1#2#3#4 + { + \__prototype_declare_aux:nnnn {#1} {#2} {#4} + { + \tl_clear_new:c { l__prototype_instance_ #1 _ #3 _pars_tl } + \tl_set_eq:cN { l__prototype_instance_ #1 _ #3 _pars_tl } + \l__prototype_assignments_tl + \tl_clear_new:c { l__prototype_instance_ #1 _ #3 _template_tl } + \tl_set:cn { l__prototype_instance_ #1 _ #3 _template_tl } {#2} + } + } +\cs_new_protected:Npn \__prototype_declare_aux:nnnn #1#2#3#4 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { + \keys_precompile:nvN + { prototype / #1 / #2 } + { l__prototype_defaults_ #1 _ #2 _tl } + \l__prototype_assignments_tl + \keys_precompile:nnN { prototype / #1 / #2 } {#3} \l__prototype_tmp_tl + \tl_put_right:NV \l__prototype_assignments_tl \l__prototype_tmp_tl + #4 + } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_use_instance:nn #1#2 + { \prototype_use_instance:nnn {#1} {#2} { } } +\cs_new_protected:Npn \prototype_use_instance:nnn #1#2#3 + { + \tl_if_exist:cTF { l__prototype_instance_ #1 _ #2 _template_tl } + { + \tl_set_eq:Nc \l__prototype_assignments_tl + { l__prototype_instance_ #1 _ #2 _pars_tl } + \tl_if_blank:nF {#3} + { + \keys_precompile:vnN + { + prototype / #1 / + \tl_use:c { l__prototype_instance_ #1 _ #2 _template_tl } + } + {#3} + \l__prototype_tmp_tl + \tl_put_right:NV \l__prototype_assignments_tl + \l__prototype_tmp_tl + } + \use:c + { + __prototype_template_ #1 _ + \tl_use:c { l__prototype_instance_ #1 _ #2 _template_tl } + :w + } + } + { \msg_error:nnn { prototype } { unknown-instance } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_show_template_code:nn #1#2 + { + \prop_if_in:NnTF \l__prototype_object_prop {#1} + { \cs_show:c { __prototype_template_ #1 _ #2 :w } } + { \msg_error:nnn { prototype } { unknown-object-type } {#1} } + } +\cs_new_protected:Npn \prototype_show_template_defaults:nn #1#2 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { \tl_show:c { l__prototype_defaults_ #1 _ #2 _tl } } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_show_instance_values:nn #1#2 + { + \tl_if_exist:cTF { l__prototype_instance_ #1 _ #2 _template_tl } + { \tl_show:c { l__prototype_instance_ #1 _ #2 _pars_tl } } + { \msg_error:nnn { prototype } { unknown-instance } {#1} {#2} } + } +\msg_new:nnnn { prototype } { bad-number-of-arguments } + { Bad~number~of~arguments~for~object~type~'#1'. } + { + An~object~may~accept~between~0~and~9~arguments.\\ + You~asked~to~use~#2~arguments:~this~is~not~supported. + } +\msg_new:nnnn { prototype } { unknown-instance } + { The~instance~'#2'~of~type~'#1'~is~unknown. } + { + You~have~asked~to~use~an~instance~'#2',~ + but~this~has~not~been~created. + } +\msg_new:nnnn { prototype } { unknown-object-type } + { The~object~type~'#1'~is~unknown. } + { An~object~type~needs~to~be~declared~prior~to~using~it. } +\msg_new:nnnn { prototype } { unknown-template } + { The~template~'#2'~of~type~'#1'~is~unknown. } + { + No~interface~has~been~declared~for~a~template~ + '#2'~of~object~type~'#1'. + } +\msg_new:nnn { prototype } { declare-object-type } + { Declaring~object~type~'#1'~taking~#2~argument(s). } +\ExplSyntaxOff +\endinput +%% +%% End of file `latex-lab-prototype.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or.sty b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or.sty new file mode 100644 index 00000000000..61c8fd594c9 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/latex-lab-testphase-new-or.sty @@ -0,0 +1,169 @@ +%% +%% This is file `latex-lab-testphase-new-or.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-new-or.dtx (with options: `code') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-new-or.dtx +\ProvidesFile{latex-lab-new-or.ltx} + [2022-03-09 v0.1b changes to the output routine] +\def \@makecol {% + \@kernel@before@cclv + \setbox\@outputbox \box\@cclv + \@outputbox@removebskip + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \@makecol@cfgpoint + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \@makenormalcolbox + \fi + \global \maxdepth \@maxdepth +} +\newdimen\@outputbox@depth +\def \@makenormalcolbox {% + \setbox\@outputbox \vbox to\@colht {% + \@texttop + \@outputbox@depth \dp\@outputbox + \unvbox \@outputbox + \vskip -\@outputbox@depth + \@textbottom + }% +} +\def \@makespecialcolbox {% + \@outputbox@append {\vskip-\@outputbox@depth}% + \@tempdima \@colht + \ifdim \wd\@kludgeins>\z@ + \advance \@tempdima -\ht\@outputbox + \advance \@tempdima \pageshrink + \setbox\@outputbox \vbox to \@colht {% + \unvbox\@outputbox + \vskip \@tempdima + \@textbottom + }% + \else + \advance \@tempdima -\ht\@kludgeins + \setbox \@outputbox \vbox to \@colht {% + \vbox to \@tempdima {% + \unvbox\@outputbox + \@textbottom}% + \vss}% + \fi + {\setbox \@tempboxa \box \@kludgeins}% +} +\def\@outputbox@removebskip{% + \ifx\@textbottom\relax \else + \@outputbox@append{% + \@tempskipa\lastskip + \ifnum \gluestretchorder\@tempskipa>\z@ + \vskip-\@tempskipa + \xdef\@outputbox@reinsertbskip + {\noexpand\@outputbox@append{\vskip\the\@tempskipa}}% + \else + \global\let\@outputbox@reinsertbskip\relax + \fi + }% + \fi +} +\let\@outputbox@reinsertbskip\relax +\providecommand\@kernel@before@cclv{} +\providecommand\@kernel@before@footins{} +\def\@outputbox@append #1{% + \setbox\@outputbox \vbox {% + \boxmaxdepth \@maxdepth + \@outputbox@depth\dp\@outputbox % if needed in #1 + \unvbox \@outputbox + #1% + }% +} +\def\@outputbox@appendfootnotes {% + \ifvoid\footins \else + \@makecol@handlesplitfootnotes + \@makecol@cfgpointii + \@outputbox@append{% + \vskip \skip\footins + \@kernel@before@footins + \color@begingroup + \normalcolor + \footnoterule + \csname pdfcolfoot@current\endcsname + \unvbox \footins + \color@endgroup + }% + \fi +} +\let \@outputbox@attachfloats \@combinefloats +\def \@outputbox@attachtopfloats {% + \ifx \@toplist\@empty \else \@cflt \fi +} +\def \@outputbox@attachbottomfloats {% + \ifx \@botlist\@empty \else \@cflb \fi +} +\def\@makecol@handlesplitfootnotes {% + \ifnum\insertpenalties>\z@ + \@makecol@splitfootnotemessagehook + \fi +} +\let \@makecol@splitfootnotemessagehook \@empty +\let \@makecol@cfgpointii \@empty +\def\@if@flushbottom@TF{% + \ifx\@textbottom\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\@if@footnotes@TF{% + \ifvoid\footins + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +\def\@if@bfloats@TF{% + \ifx \@botlist\@empty + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} + \def\@makecol@cfgpoint {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip + } +\declare@file@substitution{footmisc.sty}{latex-lab-footmisc.ltx} +\input{latex-lab-footnotes.ltx} +\endinput +%% +%% End of file `latex-lab-testphase-new-or.sty'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx new file mode 100644 index 00000000000..4a17be70d6b --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/new-or-latex-lab-testphase.ltx @@ -0,0 +1,44 @@ +%% +%% This is file `new-or-latex-lab-testphase.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-testphase.dtx (with options: `new-or') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-testphase.dtx + +\IfFileExists{latex-lab-testphase-new-or.sty} + { + \RequirePackage{latex-lab-testphase-new-or} + } + {} +\endinput +%% +%% End of file `new-or-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx index 226bdaa2cbc..26d8ecd1da9 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-I-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021 LaTeX Project +%% Copyright 2021,2022 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx index 0530b2fee56..a99fdab9ffd 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/phase-II-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021 LaTeX Project +%% Copyright 2021,2022 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -34,6 +34,11 @@ %% %% File: latex-lab-testphase.dtx +\IfFileExists{latex-lab-testphase-new-or.sty} + { + \RequirePackage{latex-lab-testphase-new-or} + } + {} \RequirePackage{tagpdf} \AddToDocumentProperties [document]{testphase/tagpdf}{loaded} \tagpdfsetup{activate,paratagging,interwordspace} diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/prototype-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/prototype-latex-lab-testphase.ltx new file mode 100644 index 00000000000..876039967c4 --- /dev/null +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/prototype-latex-lab-testphase.ltx @@ -0,0 +1,301 @@ +%% +%% This is file `prototype-latex-lab-testphase.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-prototype.dtx (with options: `2ekernel') +%% +%% This is a generated file. +%% +%% Copyright 2021,2022 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008 or later. +%% +%% This file may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-prototype.dtx +\ExplSyntaxOn +\tl_if_exist:NF \l__keys_precompile_tl + { + \bool_new:N \l__keys_precompile_bool + \tl_new:N \l__keys_precompile_tl + } +\cs_gset_protected:Npn \__keys_precompile:n #1 + { + \bool_if:NTF \l__keys_precompile_bool + { \tl_put_right:Nn \l__keys_precompile_tl } + { \use:n } + {#1} + } +\cs_gset_protected:Npn \__keys_bool_set:Nnnn #1#2#3#4 + { + \bool_if_exist:NF #1 { \bool_new:N #1 } + \__keys_choice_make: + \__keys_cmd_set:nx { \l_keys_path_str / true } + { \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 } + \__keys_cmd_set:nx { \l_keys_path_str / false } + { \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 } + \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown } + { + \msg_error:nnx { keys } { boolean-values-only } + \l_keys_key_str + } + \__keys_default_set:n { true } + } +\cs_gset_protected:Npn \__keys_choice_make_aux:N #1 + { + \cs_set_nopar:cpn { \c__keys_type_root_str \l_keys_path_str } + { choice } + \__keys_cmd_set_direct:nn \l_keys_path_str { #1 {##1} } + \__keys_cmd_set_direct:nn { \l_keys_path_str / unknown } + { + \msg_error:nnxx { keys } { choice-unknown } + \l_keys_path_str {##1} + } + } +\cs_gset_protected:Npn \__keys_cmd_set:nn #1#2 + { \__keys_cmd_set_direct:nn {#1} { \__keys_precompile:n {#2} } } +\cs_gset_protected:Npn \__keys_cmd_set_direct:nn #1#2 + { \cs_set_protected:cpn { \c__keys_code_root_str #1 } ##1 {#2} } +\cs_gset_protected:Npn \__keys_cs_set:NNpn #1#2#3# + { + \cs_set_protected:cpx { \c__keys_code_root_str \l_keys_path_str } ##1 + { + \__keys_precompile:n + { #1 \exp_not:N #2 \exp_not:n {#3} {##1} } + } + \use_none:n + } +\cs_gset_protected:Npn \__keys_meta_make:n #1 + { + \exp_args:NVo \__keys_cmd_set_direct:nn \l_keys_path_str + { + \exp_after:wN \keys_set:nn \exp_after:wN + { \l__keys_module_str } {#1} + } + } +\cs_gset_protected:Npn \__keys_meta_make:nn #1#2 + { + \exp_args:NV \__keys_cmd_set_direct:nn + \l_keys_path_str { \keys_set:nn {#1} {#2} } + } +\cs_gset_protected:Npn \keys_precompile:nnN #1#2#3 + { + \bool_set_true:N \l__keys_precompile_bool + \tl_clear:N \l__keys_precompile_tl + \keys_set:nn {#1} {#2} + \bool_set_false:N \l__keys_precompile_bool + \tl_set_eq:NN #3 \l__keys_precompile_tl + } +\cs_gset_protected:Npn \__keys_show:Nnn #1#2#3 + { + #1 { keys } { show-key } + { \__keys_trim_spaces:n { #2 / #3 } } + { + \keys_if_exist:nnT {#2} {#3} + { + \exp_args:Nnf \msg_show_item_unbraced:nn { code } + { + \exp_args:Ne \__keys_show:n + { + \exp_args:Nc \cs_replacement_spec:N + { + \c__keys_code_root_str + \__keys_trim_spaces:n { #2 / #3 } + } + } + } + } + } + { } { } + } +\cs_gset:Npx \__keys_show:n #1 + { + \exp_not:N \__keys_show:w + #1 + \tl_to_str:n { \__keys_precompile:n } + #1 + \tl_to_str:n { \__keys_precompile:n } + \exp_not:N \s__keys_stop + } +\use:x + { + \cs_gset:Npn \exp_not:N \__keys_show:w + ##1 \tl_to_str:n { \__keys_precompile:n } + ##2 \tl_to_str:n { \__keys_precompile:n } + ##3 \exp_not:N \s__keys_stop + } + { + \tl_if_blank:nTF {#2} + {#1} + { \__keys_show:Nw #2 \s__keys_stop } + } +\use:x + { + \cs_gset:Npn \exp_not:N \__keys_show:Nw ##1##2 + \c_right_brace_str \exp_not:N \s__keys_stop + } + {#2} +\tl_new:N \l__prototype_tmp_tl +\prop_new:N \l__prototype_object_prop +\cs_new_protected:Npn \prototype_declare_object:nn #1#2 + { + \exp_args:Nx \__prototype_declare_object:nn { \int_eval:n {#2} } {#1} + } +\cs_new_protected:Npn \__prototype_declare_object:nn #1#2 + { + \int_compare:nTF { 0 <= #1 <= 9 } + { + \msg_info:nnnn { prototype } { declare-object-type } {#2} {#1} + \prop_put:Nnn \l__prototype_object_prop {#2} {#1} + } + { \msg_error:nnxx { prototype } { bad-number-of-arguments } {#2} {#1} } + } +\tl_new:N \l__prototype_assignments_tl +\cs_new_protected:Npn \prototype_declare_template:nnnn #1#2#3#4 + { + \prop_get:NnNTF \l__prototype_object_prop {#1} \l__prototype_tmp_tl + { + \keys_define:nn { prototype / #1 / #2 } {#3} + \tl_clear_new:c { l__prototype_defaults_ #1 _ #2 _tl } + \cs_generate_from_arg_count:cNnn + { __prototype_template_ #1 _ #2 :w } + \cs_set_protected:Npn + { \l__prototype_tmp_tl } + { + \tl_use:N \l__prototype_assignments_tl + #4 + } + } + { \msg_error:nnn { prototype } { unknown-object-type } {#1} } + } +\cs_new_protected:Npn \prototype_declare_defaults:nnn #1#2#3 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { \tl_set:cn { l__prototype_defaults_ #1 _ #2 _tl } {#3} } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_generate_variant:Nn \keys_precompile:nnN { v , nv } +\cs_new_protected:Npn \prototype_use_template:nnn #1#2#3 + { + \__prototype_declare_aux:nnnn {#1} {#2} {#3} + { \use:c { __prototype_template_ #1 _ #2 :w } } + } +\cs_new_protected:Npn \prototype_declare_instance:nnnn #1#2#3#4 + { + \__prototype_declare_aux:nnnn {#1} {#2} {#4} + { + \tl_clear_new:c { l__prototype_instance_ #1 _ #3 _pars_tl } + \tl_set_eq:cN { l__prototype_instance_ #1 _ #3 _pars_tl } + \l__prototype_assignments_tl + \tl_clear_new:c { l__prototype_instance_ #1 _ #3 _template_tl } + \tl_set:cn { l__prototype_instance_ #1 _ #3 _template_tl } {#2} + } + } +\cs_new_protected:Npn \__prototype_declare_aux:nnnn #1#2#3#4 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { + \keys_precompile:nvN + { prototype / #1 / #2 } + { l__prototype_defaults_ #1 _ #2 _tl } + \l__prototype_assignments_tl + \keys_precompile:nnN { prototype / #1 / #2 } {#3} \l__prototype_tmp_tl + \tl_put_right:NV \l__prototype_assignments_tl \l__prototype_tmp_tl + #4 + } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_use_instance:nn #1#2 + { \prototype_use_instance:nnn {#1} {#2} { } } +\cs_new_protected:Npn \prototype_use_instance:nnn #1#2#3 + { + \tl_if_exist:cTF { l__prototype_instance_ #1 _ #2 _template_tl } + { + \tl_set_eq:Nc \l__prototype_assignments_tl + { l__prototype_instance_ #1 _ #2 _pars_tl } + \tl_if_blank:nF {#3} + { + \keys_precompile:vnN + { + prototype / #1 / + \tl_use:c { l__prototype_instance_ #1 _ #2 _template_tl } + } + {#3} + \l__prototype_tmp_tl + \tl_put_right:NV \l__prototype_assignments_tl + \l__prototype_tmp_tl + } + \use:c + { + __prototype_template_ #1 _ + \tl_use:c { l__prototype_instance_ #1 _ #2 _template_tl } + :w + } + } + { \msg_error:nnn { prototype } { unknown-instance } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_show_template_code:nn #1#2 + { + \prop_if_in:NnTF \l__prototype_object_prop {#1} + { \cs_show:c { __prototype_template_ #1 _ #2 :w } } + { \msg_error:nnn { prototype } { unknown-object-type } {#1} } + } +\cs_new_protected:Npn \prototype_show_template_defaults:nn #1#2 + { + \cs_if_exist:cTF { __prototype_template_ #1 _ #2 :w } + { \tl_show:c { l__prototype_defaults_ #1 _ #2 _tl } } + { \msg_error:nnn { prototype } { unknown-template } {#1} {#2} } + } +\cs_new_protected:Npn \prototype_show_instance_values:nn #1#2 + { + \tl_if_exist:cTF { l__prototype_instance_ #1 _ #2 _template_tl } + { \tl_show:c { l__prototype_instance_ #1 _ #2 _pars_tl } } + { \msg_error:nnn { prototype } { unknown-instance } {#1} {#2} } + } +\msg_new:nnnn { prototype } { bad-number-of-arguments } + { Bad~number~of~arguments~for~object~type~'#1'. } + { + An~object~may~accept~between~0~and~9~arguments.\\ + You~asked~to~use~#2~arguments:~this~is~not~supported. + } +\msg_new:nnnn { prototype } { unknown-instance } + { The~instance~'#2'~of~type~'#1'~is~unknown. } + { + You~have~asked~to~use~an~instance~'#2',~ + but~this~has~not~been~created. + } +\msg_new:nnnn { prototype } { unknown-object-type } + { The~object~type~'#1'~is~unknown. } + { An~object~type~needs~to~be~declared~prior~to~using~it. } +\msg_new:nnnn { prototype } { unknown-template } + { The~template~'#2'~of~type~'#1'~is~unknown. } + { + No~interface~has~been~declared~for~a~template~ + '#2'~of~object~type~'#1'. + } +\msg_new:nnn { prototype } { declare-object-type } + { Declaring~object~type~'#1'~taking~#2~argument(s). } +\ExplSyntaxOff +\endinput +%% +%% End of file `prototype-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx index 6189809d8c0..20c85a681a2 100644 --- a/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex-dev/latex-lab/tagpdf-latex-lab-testphase.ltx @@ -8,7 +8,7 @@ %% %% This is a generated file. %% -%% Copyright 2021 LaTeX Project +%% Copyright 2021,2022 LaTeX Project %% %% This file was generated from file(s) of the `LaTeX-lab Bundle'. %% ------------------------------------------------------------------------------------ @@ -34,6 +34,11 @@ %% %% File: latex-lab-testphase.dtx +\IfFileExists{latex-lab-testphase-new-or.sty} + { + \RequirePackage{latex-lab-testphase-new-or} + } + {} \RequirePackage{tagpdf} \AddToDocumentProperties [document]{testphase/tagpdf}{loaded} \tagpdfsetup{activate,paratagging,interwordspace} |