From e2cfcd99f00b7ad1c8dc1e66af880dd0662ce22c Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Mon, 21 Dec 2020 10:10:53 +0100 Subject: 2020-12-21 09:35:00 --- tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkii/mult-ro.mkii | 1 + tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/mult-def.lua | 3 + tex/context/base/mkiv/status-files.pdf | Bin 26101 -> 26100 bytes tex/context/base/mkiv/status-lua.pdf | Bin 253610 -> 253608 bytes tex/context/base/mkiv/strc-doc.lua | 1 + tex/context/base/mkiv/strc-lst.lua | 1 + tex/context/base/mkiv/strc-ref.lua | 2 +- tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/core-env.mkxl | 8 +- tex/context/base/mkxl/math-ali.mkxl | 26 ++++-- tex/context/base/mkxl/strc-con.mklx | 42 +++++---- tex/context/base/mkxl/strc-sec.mkxl | 49 +++++----- tex/context/base/mkxl/syst-aux.mkxl | 104 +++++++-------------- tex/context/interface/mkii/keys-ro.xml | 1 + tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 20 files changed, 124 insertions(+), 128 deletions(-) (limited to 'tex') diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index 146a3ad9c..256006f2f 100644 --- a/tex/context/base/mkii/cont-new.mkii +++ b/tex/context/base/mkii/cont-new.mkii @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2020.12.18 18:28} +\newcontextversion{2020.12.21 09:32} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii index b036f7229..e0b7329fd 100644 --- a/tex/context/base/mkii/context.mkii +++ b/tex/context/base/mkii/context.mkii @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2020.12.18 18:28} +\edef\contextversion{2020.12.21 09:32} %D For those who want to use this: diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii index 997c3f4ab..21c69669f 100644 --- a/tex/context/base/mkii/mult-ro.mkii +++ b/tex/context/base/mkii/mult-ro.mkii @@ -1131,6 +1131,7 @@ \setinterfaceconstant{reference}{referinta} \setinterfaceconstant{referencemethod}{referencemethod} \setinterfaceconstant{referenceprefix}{referenceprefix} +\setinterfaceconstant{referencetext}{referencetext} \setinterfaceconstant{referencing}{referinta} \setinterfaceconstant{region}{region} \setinterfaceconstant{regionin}{regiuneintrare} diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 2e7c722bf..0497d4005 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2020.12.18 18:28} +\newcontextversion{2020.12.21 09:32} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 59cc03096..73324b92f 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -45,7 +45,7 @@ %D {YYYY.MM.DD HH:MM} format. \edef\contextformat {\jobname} -\edef\contextversion{2020.12.18 18:28} +\edef\contextversion{2020.12.21 09:32} %D Kind of special: diff --git a/tex/context/base/mkiv/mult-def.lua b/tex/context/base/mkiv/mult-def.lua index 661a444de..f9f233892 100644 --- a/tex/context/base/mkiv/mult-def.lua +++ b/tex/context/base/mkiv/mult-def.lua @@ -11027,6 +11027,9 @@ return { ["en"]="referencemethod", ["fr"]="methodereference", }, + ["referencetext"]={ + ["en"]="referencetext", + }, ["referenceprefix"]={ ["en"]="referenceprefix", ["fr"]="prefixereference", diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index b58ba82d8..2c9f519e0 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 069320e47..06cc3bd93 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-doc.lua b/tex/context/base/mkiv/strc-doc.lua index aadbd8a90..5cb207c38 100644 --- a/tex/context/base/mkiv/strc-doc.lua +++ b/tex/context/base/mkiv/strc-doc.lua @@ -1160,6 +1160,7 @@ implement { { "bookmark" }, { "marking" }, { "list" }, + { "reference" }, } }, { "numberdata", { diff --git a/tex/context/base/mkiv/strc-lst.lua b/tex/context/base/mkiv/strc-lst.lua index fdbb97873..a6799d80f 100644 --- a/tex/context/base/mkiv/strc-lst.lua +++ b/tex/context/base/mkiv/strc-lst.lua @@ -1054,6 +1054,7 @@ implement { { "bookmark" }, { "marking" }, { "list" }, + { "reference" }, } }, { "prefixdata", { diff --git a/tex/context/base/mkiv/strc-ref.lua b/tex/context/base/mkiv/strc-ref.lua index fb4d22807..4203e6aac 100644 --- a/tex/context/base/mkiv/strc-ref.lua +++ b/tex/context/base/mkiv/strc-ref.lua @@ -2289,7 +2289,7 @@ function genericfilters.title(data) if data then local titledata = data.titledata or data.useddata if titledata then - helpers.title(titledata.title or "?",data.metadata) + helpers.title(titledata.reference or titledata.title or "?",data.metadata) end end end diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index e93c21f01..448809e0f 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2020.12.18 18:28} +\newcontextversion{2020.12.21 09:32} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index 9f7bc755f..90fe9c913 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2020.12.18 18:28} +\immutable\edef\contextversion{2020.12.21 09:32} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/core-env.mkxl b/tex/context/base/mkxl/core-env.mkxl index ccb5b665e..c90b92f22 100644 --- a/tex/context/base/mkxl/core-env.mkxl +++ b/tex/context/base/mkxl/core-env.mkxl @@ -750,8 +750,6 @@ \permanent\tolerant\protected\def\defineselector[#1]#*[#2]{\getparameters[\??selector#1][\c!max=\plusone,\c!n=\plusone,#2]} \permanent\tolerant\protected\def\setupselector [#1]#*[#2]{\getparameters[\??selector#1][#2]} -\permanent\protected\let\select\directselect % we promote to protected - % \def\directselect#1% expandable % {\filterfromnext % maybe add an \expanded % {\csname\??selector\ifcsname\??selector#1\c!max\endcsname#1\fi\c!max\endcsname}% @@ -764,7 +762,9 @@ \csname\??selector\ifcsname\??selector#1\c!max\endcsname#1\fi\c!max\expandafter\endcsname \csname\??selector\ifcsname\??selector#1\c!n \endcsname#1\fi\c!n \endcsname} -\letvalue{\??selector\c!max}\plusone % \aliased ? -\letvalue{\??selector\c!n }\plusone % \aliased ? +\permanent\protected\let\select\directselect % we promote to protected + +\letcsname\??selector\c!max\endcsname\plusone +\letcsname\??selector\c!n \endcsname\plusone \protect \endinput diff --git a/tex/context/base/mkxl/math-ali.mkxl b/tex/context/base/mkxl/math-ali.mkxl index d7d7088c1..a8b0fa113 100644 --- a/tex/context/base/mkxl/math-ali.mkxl +++ b/tex/context/base/mkxl/math-ali.mkxl @@ -660,8 +660,8 @@ \c!right={\right.}] \appendtoks - \frozen\instance\setuevalue{\e!start\currentmathcases}{\math_cases_start[\currentmathcases]}% - \frozen\instance\setvalue {\e!stop \currentmathcases}{\math_cases_stop}% + \frozen\instance\protected\edefcsname\e!start\currentmathcases\endcsname{\math_cases_start[\currentmathcases]}% + \frozen\instance \defcsname \e!stop \currentmathcases\endcsname{\math_cases_stop}% \to \everydefinemathcases \permanent\protected\def\math_cases_NC_zero @@ -812,8 +812,9 @@ \c!rulethickness=\linewidth] \appendtoks - \frozen\instance\setuevalue{\e!start\currentmathmatrix}{\math_matrix_start[\currentmathmatrix]}% - \frozen\instance\setvalue {\e!stop \currentmathmatrix}{\math_matrix_stop}% no u else lookahead problem + \frozen\instance\protected\edefcsname\e!start\currentmathmatrix\endcsname{\math_matrix_start[\currentmathmatrix]}% + % \noaligned\protected should work here: + \frozen\instance \defcsname \e!stop \currentmathmatrix\endcsname{\math_matrix_stop}% no u else lookahead problem \to \everydefinemathmatrix \def\math_matrix_start_table @@ -825,12 +826,23 @@ {\dostoptagged \dostoptagged} +% \def\math_matrix_start_row +% {\noalign{\global\c_math_eqalign_column\zerocount}% +% \dostarttagged\t!mtablerow\empty} +% +% \def\math_matrix_stop_row +% {\dostoptagged} + \def\math_matrix_start_row - {\noalign{\global\c_math_eqalign_column\zerocount}% - \dostarttagged\t!mtablerow\empty} + {\beginlocalcontrol + \global\c_math_eqalign_column\zerocount + \dostarttagged\t!mtablerow\empty + \endlocalcontrol} \def\math_matrix_stop_row - {\dostoptagged} + {\beginlocalcontrol + \dostoptagged + \endlocalcontrol} \protected\def\math_matrix_start_cell {\dostarttagged\t!mtablecell\empty diff --git a/tex/context/base/mkxl/strc-con.mklx b/tex/context/base/mkxl/strc-con.mklx index ddaa9e570..d64be35f0 100644 --- a/tex/context/base/mkxl/strc-con.mklx +++ b/tex/context/base/mkxl/strc-con.mklx @@ -122,6 +122,7 @@ \mutable\let\currentconstructionmarking \empty \mutable\let\currentconstructionnumber \empty \mutable\let\currentconstructionreference \empty +\mutable\let\currentconstructionreferencetext \empty \mutable\let\currentconstructionreferenceprefix\empty \mutable\let\currentconstructionsynchronize \empty \mutable\let\currentconstructiontitle \empty @@ -157,7 +158,7 @@ \tolerant\protected\def\strc_constructions_start[#1]#*[#2]#*[#3]% {\begingroup \strc_constructions_initialize{#1}% - \strc_constructions_register[#3][\c!label={\constructionparameter\c!text},\c!reference=,\c!title=,\c!bookmark=,\c!list=,#2]% + \strc_constructions_register[#3][\c!label={\constructionparameter\c!text},\c!reference=,\c!title=,\c!bookmark=,\c!list=,\c!referencetext=,#2]% \csname\??constructionstarthandler\currentconstructionhandler\endcsname} \protected\def\strc_constructions_stop @@ -1030,6 +1031,7 @@ \xdef\currentconstructioncatcodes {\constructionparameter\s!catcodes}% \xdef\currentconstructionlabel {\constructionparameter\c!label}% \xdef\currentconstructionreference {\constructionparameter\c!reference}% + \xdef\currentconstructionreferencetext {\constructionparameter\c!referencetext}% \xdef\currentconstructionreferenceprefix{\constructionparameter\c!referenceprefix}% %xdef\currentconstructionshownumber {\constructionparameter\c!number}% \xdef\currentconstructionincrementnumber{\constructionparameter\c!incrementnumber}% @@ -1043,10 +1045,11 @@ \fi \ifx\currentconstructionexpansion\s!xml \xmlstartraw - \xdef\currentconstructiontitle {\constructionparameter\c!title}% - \xdef\currentconstructionbookmark{\constructionparameter\c!bookmark}% - \xdef\currentconstructionmarking {\constructionparameter\c!marking}% - \xdef\currentconstructionlist {\constructionparameter\c!list}% + \xdef\currentconstructiontitle {\constructionparameter\c!title}% + \xdef\currentconstructionbookmark {\constructionparameter\c!bookmark}% + \xdef\currentconstructionmarking {\constructionparameter\c!marking}% + \xdef\currentconstructionlist {\constructionparameter\c!list}% + \xdef\currentconstructionreferencetext{\constructionparameter\c!referencetext}% \xmlstopraw \ifempty\currentconstructionlist \glet\currentconstructionlist\currentconstructiontitle @@ -1054,15 +1057,17 @@ \glet\currentconstructioncoding\s!xml \else \ifx\currentconstructionexpansion\v!yes - \xdef\currentconstructiontitle {\constructionparameter\c!title}% - \xdef\currentconstructionbookmark{\constructionparameter\c!bookmark}% - \xdef\currentconstructionmarking {\constructionparameter\c!marking}% - \xdef\currentconstructionlist {\constructionparameter\c!list}% + \xdef\currentconstructiontitle {\constructionparameter\c!title}% + \xdef\currentconstructionbookmark {\constructionparameter\c!bookmark}% + \xdef\currentconstructionmarking {\constructionparameter\c!marking}% + \xdef\currentconstructionlist {\constructionparameter\c!list}% + \xdef\currentconstructionreferencetext{\constructionparameter\c!referencetext}% \else - \xdef\currentconstructiontitle {\detokenizedconstructionparameter\c!title}% - \xdef\currentconstructionbookmark{\detokenizedconstructionparameter\c!bookmark}% - \xdef\currentconstructionmarking {\detokenizedconstructionparameter\c!marking}% - \xdef\currentconstructionlist {\detokenizedconstructionparameter\c!list}% + \xdef\currentconstructiontitle {\detokenizedconstructionparameter\c!title}% + \xdef\currentconstructionbookmark {\detokenizedconstructionparameter\c!bookmark}% + \xdef\currentconstructionmarking {\detokenizedconstructionparameter\c!marking}% + \xdef\currentconstructionlist {\detokenizedconstructionparameter\c!list}% + \xdef\currentconstructionreferencetext{\detokenizedconstructionparameter\c!referencetext}% \iflocation \ifempty\currentconstructionbookmark \begingroup \simplifycommands @@ -1104,13 +1109,16 @@ % section structures.sections.currentid(), } titledata { - label {\detokenize\expandafter{\currentconstructionlabel}} - title {\detokenize\expandafter{\currentconstructiontitle}} + label {\detokenize\expandafter{\currentconstructionlabel}} + title {\detokenize\expandafter{\currentconstructiontitle}} \ifx\currentconstructionbookmark\currentconstructiontitle \else - bookmark {\detokenize\expandafter{\currentconstructionbookmark}} + bookmark {\detokenize\expandafter{\currentconstructionbookmark}} + \fi + \ifx\currentconstructionreferencetext\currentconstructiontitle \else + reference {\detokenize\expandafter{\currentconstructionreferencetext}} \fi \ifx\currentconstructionlist\currentconstructiontitle \else - list {\detokenize\expandafter{\currentconstructionlist}} + list {\detokenize\expandafter{\currentconstructionlist}} \fi } \ifconditional\c_strc_constructions_number_state diff --git a/tex/context/base/mkxl/strc-sec.mkxl b/tex/context/base/mkxl/strc-sec.mkxl index 9025b9930..81e0248e6 100644 --- a/tex/context/base/mkxl/strc-sec.mkxl +++ b/tex/context/base/mkxl/strc-sec.mkxl @@ -29,10 +29,11 @@ \c!level=, \c!name=, \c!title=, - \c!bookmark=, - \c!marking=, - \c!list=, - \c!label=, + \c!bookmark=, % no real need, default to empty anyway + \c!marking=, % no real need, default to empty anyway + \c!list=, % no real need, default to empty anyway + \c!referencetext=, % no real need, default to empty anyway + \c!label=, % no real need, default to empty anyway \c!coupling=, \c!ownnumber=, % \c!interaction=\v!list, @@ -158,10 +159,11 @@ \xdef\currentstructureplaceholder {\structureparameter\c!placeholder}% \ifx\currentstructureexpansion\s!xml \xmlstartraw - \xdef\currentstructuretitle {\structureparameter\c!title}% - \xdef\currentstructurebookmark{\structureparameter\c!bookmark}% - \xdef\currentstructuremarking {\structureparameter\c!marking}% - \xdef\currentstructurelist {\structureparameter\c!list}% + \xdef\currentstructuretitle {\structureparameter\c!title}% + \xdef\currentstructurebookmark {\structureparameter\c!bookmark}% + \xdef\currentstructuremarking {\structureparameter\c!marking}% + \xdef\currentstructurelist {\structureparameter\c!list}% + \xdef\currentstructurereferencetext{\structureparameter\c!referencetext}% \xmlstopraw \iflocation \ifempty\currentstructurebookmark \ifconditional\c_strc_bookmarks_preroll \strc_sectioning_autobookmark\currentstructuretitle @@ -172,18 +174,20 @@ \glet\currentstructurecoding\s!xml \else \ifx\currentstructureexpansion\v!yes - \xdef\currentstructuretitle {\structureparameter\c!title}% - \xdef\currentstructurebookmark{\structureparameter\c!bookmark}% - \xdef\currentstructuremarking {\structureparameter\c!marking}% - \xdef\currentstructurelist {\structureparameter\c!list}% + \xdef\currentstructuretitle {\structureparameter\c!title}% + \xdef\currentstructurebookmark {\structureparameter\c!bookmark}% + \xdef\currentstructuremarking {\structureparameter\c!marking}% + \xdef\currentstructurelist {\structureparameter\c!list}% + \xdef\currentstructurereferencetext{\structureparameter\c!referencetext}% \iflocation \ifempty\currentstructurebookmark \ifconditional\c_strc_bookmarks_preroll \strc_sectioning_autobookmark\currentstructuretitle \fi \fi \fi \else - \xdef\currentstructuretitle {\detokenizedstructureparameter\c!title}% - \xdef\currentstructurebookmark{\detokenizedstructureparameter\c!bookmark}% - \xdef\currentstructuremarking {\detokenizedstructureparameter\c!marking}% - \xdef\currentstructurelist {\detokenizedstructureparameter\c!list}% + \xdef\currentstructuretitle {\detokenizedstructureparameter\c!title}% + \xdef\currentstructurebookmark {\detokenizedstructureparameter\c!bookmark}% + \xdef\currentstructuremarking {\detokenizedstructureparameter\c!marking}% + \xdef\currentstructurelist {\detokenizedstructureparameter\c!list}% + \xdef\currentstructurereferencetext{\detokenizedstructureparameter\c!referencetext}% \iflocation \ifempty\currentstructurebookmark \ifconditional\c_strc_bookmarks_preroll \strc_sectioning_autobookmark{\structureparameter\c!title}% @@ -233,19 +237,22 @@ \fi } titledata { - label {\detokenize\expandafter{\currentstructurelabel}} - title {\detokenize\expandafter{\currentstructuretitle}} + label {\detokenize\expandafter{\currentstructurelabel}} + title {\detokenize\expandafter{\currentstructuretitle}} \ifx\currentstructurebookmark\currentstructuretitle \else - bookmark {\detokenize\expandafter{\currentstructurebookmark}} + bookmark {\detokenize\expandafter{\currentstructurebookmark}} \fi \ifx\currentstructuremarking\currentstructuretitle \else - marking {\detokenize\expandafter{\currentstructuremarking}} + marking {\detokenize\expandafter{\currentstructuremarking}} \fi \ifx\currentstructuresaveinlist\v!no \else \ifx\currentstructurelist\currentstructuretitle \else - list {\detokenize\expandafter{\currentstructurelist}} + list {\detokenize\expandafter{\currentstructurelist}} \fi \fi + \ifx\currentstructurereferencetext\currentstructuretitle \else + reference {\detokenize\expandafter{\currentstructurereferencetext}} + \fi } numberdata { % block {\currentsectionblock} diff --git a/tex/context/base/mkxl/syst-aux.mkxl b/tex/context/base/mkxl/syst-aux.mkxl index 7b1b889c3..9dea8e5bb 100644 --- a/tex/context/base/mkxl/syst-aux.mkxl +++ b/tex/context/base/mkxl/syst-aux.mkxl @@ -5169,36 +5169,17 @@ %D \definesomething[alfa,beta,...][variable=...,...] %D \stoptyping -%% \let\syst_helpers_with_set_step\relax -%% \let\m_syst_helpers_with_set_command\empty -%% -%% \def\syst_helpers_with_set_double[#1][#2]% -%% {\doifsomething{#1}% -%% {\def\syst_helpers_with_set_step##1{\m_syst_helpers_with_set_command[##1][#2]}% -%% \processcommalist[#1]\syst_helpers_with_set_step}} -%% -%% \def\syst_helpers_with_set_triple[#1][#2][#3]% -%% {\doifsomething{#1}% -%% {\def\syst_helpers_with_set_step##1{\m_syst_helpers_with_set_command[##1][#2][#3]}% -%% \processcommalist[#1]\syst_helpers_with_set_step}} -%% -%% \def\dodoubleemptywithset #1{\let\m_syst_helpers_with_set_command#1\dodoubleempty \syst_helpers_with_set_double} % \command -%% \def\dodoubleargumentwithset#1{\let\m_syst_helpers_with_set_command#1\dodoubleargument\syst_helpers_with_set_double} % \command -%% -%% \def\dotripleemptywithset #1{\let\m_syst_helpers_with_set_command#1\dotripleempty \syst_helpers_with_set_triple} % \command -%% \def\dotripleargumentwithset#1{\let\m_syst_helpers_with_set_command#1\dotripleargument\syst_helpers_with_set_triple} % \command - \let\syst_helpers_with_set_step\relax % maybe push pop \permanent\tolerant\protected\def\dodoubleemptywithset#1#*[#2]#*[#3]% {\doifsomething{#2}% {\def\syst_helpers_with_set_step##1{#1[##1][#3]}% - \processcommalist[#1]\syst_helpers_with_set_step}} + \processcommalist[#2]\syst_helpers_with_set_step}} \permanent\tolerant\protected\def\dotripleemptywithset#1#*[#2]#*[#3]#*[#4]% {\doifsomething{#2}% {\def\syst_helpers_with_set_step##1{#1[##1][#3][#4]}% - \processcommalist[#1]\syst_helpers_with_set_step}} + \processcommalist[#2]\syst_helpers_with_set_step}} \aliased\let\dodoubleargumentwithset\dodoubleemptywithset \aliased\let\dotripleargumentwithset\dotripleemptywithset @@ -5918,7 +5899,7 @@ \permanent\def\purenumber#1{\expandafter\firstofoneargument\expandafter{\number#1}} %D \macros -%D {filterfromvalue} +%D {filterfromvalue, filterfromnext} %D %D \starttyping %D \setvalue{xx}{{A}{B}{C}} @@ -5927,59 +5908,40 @@ %D \filterfromvalue{xx}{3}{2} %D \filterfromvalue{xx}{3}{1} %D \stoptyping -%D -%D An alternative is to store 'max' in the list, say: -%D -%D \starttyping -%D \setvalue{xx}{3{A}{B}{C}} -%D -%D \filterfromvalues{3}{xx}{3} -%D \filterfromvalues{3}{xx}{2} -%D \filterfromvalues{3}{xx}{1} -%D \stoptyping -%D -%D I'll implement this when I'm in \quotation {writing dirty macros mood}. - -\permanent\def\dofilterfromstr#1#2% max n % no need to be fast - {\expandafter \expandafter \expandafter \csstring - \ifcase#1\or \ifcase#2\or - \firstofoneargument \else - \gobbleoneargument \fi - \or \ifcase#2\or - \firstoftwoarguments \or - \secondoftwoarguments \else - \gobbletwoarguments \fi - \or \ifcase#2\or - \firstofthreearguments \or - \secondofthreearguments \or - \thirdofthreearguments \else - \gobblethreearguments \fi - \or \ifcase#2\or - \firstoffourarguments \or - \secondoffourarguments \or - \thirdoffourarguments \or - \fourthoffourarguments \else - \gobblefourarguments \fi - \or \ifcase#2\or - \firstoffivearguments \or - \secondoffivearguments \or - \thirdoffivearguments \or - \fourthoffivearguments \or - \fifthoffivearguments \else - \gobblefivearguments \fi + +% can be sped up with ignored arguments + +\def\syst_filter_from_next_yes#1% + {\advance\scratchcounterone\plusone + \ifnum\scratchcounterone=\scratchcountertwo + \scratchtoks{#1}% + \fi + \ifnum\scratchcounterone=\scratchcounterthree + \expandafter\syst_filter_from_next_nop + \else + \expandafter\syst_filter_from_next_yes \fi} -\permanent\def\filterfromvalue#1#2#3% value max n - {\expandafter\doubleexpandafter\csname % we use the fact that an - \expandafter\ifrelax\csname#1\endcsname % undefined cs has become \relax - \csstring\gobbleoneargument % which we then gobble here - \else - \dofilterfromstr{#2}{#3}% - \fi - \endcsname\csname#1\endcsname} +\def\syst_filter_from_next_nop + {\expandafter\endgroup + \expandafter\endlocalcontrol + \the\scratchtoks} \permanent\def\filterfromnext#1#2% max n {..}{..}{..}{..} - {\csname\dofilterfromstr{#1}{#2}\endcsname} + {\beginlocalcontrol + \begingroup + \scratchcounterone \zerocount + \scratchcountertwo #2% + \scratchcounterthree #1% + \syst_filter_from_next_yes} + +\permanent\def\filterfromvalue#1#2#3% max n {..}{..}{..}{..} + {\beginlocalcontrol + \begingroup + \scratchcounterone \zerocount + \scratchcountertwo #3% + \scratchcounterthree #2% + \expandafter\expandafter\expandafter\syst_filter_from_next_yes\csname#1\endcsname} %D \macros %D {definemeasure} diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml index 6d215d6c3..ef5c385fc 100644 --- a/tex/context/interface/mkii/keys-ro.xml +++ b/tex/context/interface/mkii/keys-ro.xml @@ -1137,6 +1137,7 @@ + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 479ac5491..2b9335285 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/sources/luatex-fonts.lua --- merge date : 2020-12-18 18:28 +-- merge date : 2020-12-21 09:32 do -- begin closure to overcome local limits and interference -- cgit v1.2.3