summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-mat.mkiv
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2011-11-24 17:20:15 +0200
committerMarius <mariausol@gmail.com>2011-11-24 17:20:15 +0200
commitb0b3f63745dbcd338e4ce549c2f8c4427998ffcf (patch)
tree9bf20816667adef0f781f7a6cfccd8e61f1a7a7b /tex/context/base/strc-mat.mkiv
parentae4e7c1b2b58b4b089b5eff6e8f41371a309a538 (diff)
downloadcontext-b0b3f63745dbcd338e4ce549c2f8c4427998ffcf.tar.gz
beta 2011.11.24 15:52
Diffstat (limited to 'tex/context/base/strc-mat.mkiv')
-rw-r--r--tex/context/base/strc-mat.mkiv309
1 files changed, 158 insertions, 151 deletions
diff --git a/tex/context/base/strc-mat.mkiv b/tex/context/base/strc-mat.mkiv
index 97c2e7581..a782e292f 100644
--- a/tex/context/base/strc-mat.mkiv
+++ b/tex/context/base/strc-mat.mkiv
@@ -21,52 +21,116 @@
\unprotect
-\definestructureconversionset[\v!formula][numbers,characters]
-
\setupformulas
- [%\c!way=\@@nrway,
+ [%\c!way=,
%\c!blockway=,
- %\c!sectionnumber=\@@nrsectionnumber,
+ %\c!sectionnumber=,
%\c!conversion=\v!numbers,
+ %\c!numberstyle=,
+ %\c!numbercolor=,
+ %\c!numbercommand=,
+ %\c!margin=,
+ %\c!align=,
+ %\c!separator=,
+ %\c!grid=,
\c!location=\v!right,
\c!left=(,
\c!right=),
\c!expansion=\v!yes, % maybe automatically
- %\c!numberstyle=,
- %\c!numbercolor=,
- %\c!numbercommand=,
\c!spacebefore=\v!big,
\c!spaceafter=\formulaparameter\c!spacebefore,
\c!leftmargin=\!!zeropoint,
\c!rightmargin=\!!zeropoint,
- %\c!margin=,
\c!indentnext=\v!no,
\c!alternative=\s!default,
- %\c!align=,
\c!strut=\v!no,
- %\c!separator=\@@koseparator,
- %\c!grid=,
\c!distance=1em]
+\setupsubformulas % subformulas could be last in chain
+ [\c!indentnext=\formulaparameter\c!indentnext]
+
\definestructurecounter
[\v!formula]
-\presetstructurecountersetup\setupformulas\sharedstructurecounterparameter
+\definestructureconversionset
+ [\v!formula]
+ [numbers,characters]
+\presetstructurecountersetup\setupformulas\sharedstructurecounterparameter
\appendtoks
\dostructurecountersetup\v!formula\formulaparameter
\docheckstructurecountersetup\v!formula % yes or no
-\to \everysetupformulas
+\to \everysetupformula
\setupformulas
[\c!numberconversionset=\v!formula] % why forgotten
+\appendtoks
+ \normalexpanded{\definelist[\currentformula]}% is expansion needed?
+ \setuevalue{\e!start\currentformula\v!formula}{\dostartformula{\currentformula}}%
+ \setuevalue{\e!stop \currentformula\v!formula}{\dostopformula}%
+\to \everydefineformula
+
+\definelist[\v!formula]
+
+\setuvalue{\e!start\v!formula}{\dostartformula{}}
+\setuvalue{\e!stop \v!formula}{\dostopformula}
+
+\let\dostartformula\relax % defined later
+\let\dostopformula \relax % defined later
+
+\unexpanded\def\defineformulaalternative % this might change ... start and stop can become keys
+ {\dotripleargument\dodefineformulaalternative} % to the general define .. s!startcommand
+
+\def\dodefineformulaalternative[#1][#2][#3]%
+ {\setvalue{\e!start#1\v!formula}{#2}%
+ \setvalue{\e!stop #1\v!formula}{#3}}
+
+% sp = single line paragraph sd = single line display
+% mp = multi line paragraph md = multy line display
+
+\defineformulaalternative[\s!default][\startdisplaymath][\stopdisplaymath]
+\defineformulaalternative[\s!single] [\startdisplaymath][\stopdisplaymath]
+\defineformulaalternative[\s!multi] [\startdisplaymath][\stopdisplaymath]
+
+\defineformula
+ [sp]
+ [\c!spacebefore=\v!none,
+ \c!spaceafter=\v!none,
+ \c!indentnext=\v!no,
+ \c!alternative=\s!single]
+
+\defineformula
+ [sd]
+ [\c!spacebefore=\v!none,
+ \c!spaceafter=\v!none,
+ \c!indentnext=\v!yes,
+ \c!alternative=\s!single]
+
+\defineformula
+ [mp]
+ [\c!indentnext=\v!no,
+ \c!alternative=\s!multi]
+
+\defineformula
+ [md]
+ [\c!indentnext=\v!yes,
+ \c!alternative=\s!multi]
+
+\newtoks\everyresetformulas
+
+\appendtoks
+ \let\currentformula\empty % to be checked:
+\to \everyresetformulas
+
+% implementation
+
\def\storecurrentformulanumber#1#2#3#4#5% ref, todo:str, \sync % todo: title etc (like float)
{\settrue\handleformulanumber
\dostructurecountercomponent
{formula}%
- \getformulaparameters \formulaparameter \detokenizedformulaparameter
+ \setupcurrentformula \formulaparameter \detokenizedformulaparameter
\relax \relax \relax
[\c!name=\v!formula,\s!counter=\v!formula,%
\s!hascaption=\v!yes,\s!hastitle=\v!yes,\s!hasnumber=\v!yes,%\s!haslevel=#6,%
@@ -77,26 +141,32 @@
\globallet#4\laststructurecountersynchronize
\globallet#5\laststructurecounterattribute}
-\newif\ifnoformulanumber
-
-\newconditional\handleformulanumber
-\newconditional\incrementformulanumber
-
-\newtoks\everyresetformulas
-
-% 0=unset, 1=forced, 2=none, 3=reference
+% modes: 0=unset, 1=forced, 2=none, 3=reference
\newconstant\placeformulanumbermode
\newconstant\formulasnumbermode
\newconstant\subformulasnumbermode
\newconstant\nestedformulanumbermode
+\appendtoks
+ \placeformulanumbermode \zerocount
+ \formulasnumbermode \zerocount
+ \subformulasnumbermode \zerocount
+ \nestedformulanumbermode\zerocount
+\to \everyresetformulas
+
+\newconditional\handleformulanumber
+\newconditional\incrementformulanumber
+
\newconditional\insideplaceformula
\newconditional\insideplacesubformula
\newconditional\insideformulas
\newconditional\insidesubformulas
-% 0=unset, 1=forced, 2=none, 3=reference
+\appendtoks
+ \global\setfalse\insideplaceformula
+ \global\setfalse\insideplacesubformula
+\to \everyresetformulas
\def\handleplaceformulanumbering % place formula
{\settrue\handleformulanumber
@@ -118,8 +188,23 @@
\currentsubformulasattribute
}
-\def\tracedformulamode
- {\hbox{\quad\tt\txx[\number\placeformulanumbermode,\number\formulasnumbermode,\number\subformulasnumbermode,\number\nestedformulanumbermode]}}
+\let\dotraceformulareferencestate\relax
+\let\doshowformulareferencestate \relax
+
+% \def\dotraceformulareferencestate
+% {\rlap{\hbox{\quad\tt\txx[%
+% \number\placeformulanumbermode,%
+% \number\formulasnumbermode,%
+% \number\subformulasnumbermode,%
+% \number\nestedformulanumbermode
+% ]}}}
+
+% \def\doshowformulareferencestate
+% {\writestatus{\v!formula}%
+% {place: \number\placeformulanumbermode,\space
+% formula: \number\formulasnumbermode,\space
+% subformula: \number\subformulasnumbermode,\space
+% nested: \number\nestedformulanumbermode]}}
\unexpanded\def\placecurrentformulanumber
{\rm % nodig ?
@@ -148,25 +233,54 @@
\glet#1\relax
\fi\fi\fi}
+\let\currentplaceformulaattribute\relax
+\let\currentformulaattribute \relax
+\let\currentsubformulaattribute \relax
+\let\currentformulasattribute \relax
+
+\let\currentplaceformulanumber\relax
+\let\currentformulanumber \relax
+\let\currentsubformulanumber \relax
+\let\currentformulasnumber \relax
+
+\let\currentformulasreference \empty
+\let\currentformulareference \empty
+\let\currentsubformulareference \empty
+\let\currentnestedformulareference\empty
+
+\appendtoks
+ \glet\currentformulasreference \empty
+ \glet\currentformulareference \empty
+ \glet\currentsubformulareference \empty
+ \glet\currentnestedformulareference\empty
+\to \everyresetformulas
+
+\let\currentformulassuffix \empty
+\let\currentformulasuffix \empty
+\let\currentsubformulasuffix \empty
+\let\currentnestedformulasuffix\empty
+
+\appendtoks
+ \glet\currentformulassuffix \empty
+ \glet\currentformulasuffix \empty
+ \glet\currentsubformulasuffix \empty
+ \glet\currentnestedformulasuffix\empty
+\to \everyresetformulas
+
+\let\currentplaceformulasynchronize\relax
+\let\currentformulasynchronize \relax
+\let\currentsubformulasynchronize \relax
+\let\currentformulassynchronize \relax
+
\appendtoks
\glet\currentplaceformulasynchronize \relax
\glet\currentformulassynchronize \relax
\glet\currentsubformulassynchronize \relax
\glet\currentnestedformulasynchronize\relax
- \let\currentformula\empty
\to \everyresetformulas
% currently we do the number, some day we will do the (sub) formula
-\let\doshowformulareferencestate\relax
-
-% \def\doshowformulareferencestate
-% {\writestatus{\v!formula}%
-% {place: \number\placeformulanumbermode,\space
-% formula: \number\formulasnumbermode,\space
-% subformula: \number\subformulasnumbermode,\space
-% nested: \number\nestedformulanumbermode]}}
-
\def\dohandlecurrentformulareferences
{\doshowformulareferencestate
\ifnum\placeformulanumbermode=\plusthree
@@ -209,16 +323,6 @@
% needs checking ... too many:
-\let\currentplaceformulaattribute\relax \let\currentplaceformulasynchronize\relax \let\currentplaceformulanumber\relax
-\let\currentformulaattribute \relax \let\currentformulasynchronize \relax \let\currentformulanumber \relax
-\let\currentsubformulaattribute \relax \let\currentsubformulasynchronize \relax \let\currentsubformulanumber \relax
-\let\currentformulasattribute \relax \let\currentformulassynchronize \relax \let\currentformulasnumber \relax
-
-\let\currentformulasreference \empty \let\currentformulassuffix \empty
-\let\currentformulareference \empty \let\currentformulasuffix \empty
-\let\currentsubformulareference \empty \let\currentsubformulasuffix \empty
-\let\currentnestedformulareference\empty \let\currentnestedformulasuffix\empty
-
\def\dohandleformulanumbering
{\doincrementsubstructurecounter[\v!formula][1]%
\doiftext\currentplaceformulasuffix{\setsubstructurecounterown[\v!formula][2]{\currentplaceformulasuffix}}%
@@ -267,12 +371,10 @@
\dohandlesubformulanumbering
\fi
\fi
- %\rlap{\tracedformulamode}%
+ \dotraceformulareferencestate
\egroup
\fi}
-\definelist[\v!formula]
-
\installstructurelistprocessor\v!formula % to be checked ...
{\dodolistelement
\currentlist
@@ -282,35 +384,6 @@
\structurelistpagenumber
\structurelistrealpagenumber}
-\appendtoks
- \global\setfalse\insideplaceformula
- \global\setfalse\insideplacesubformula
-\to \everyresetformulas
-
-\appendtoks
- \placeformulanumbermode \zerocount
- \formulasnumbermode \zerocount
- \subformulasnumbermode \zerocount
- \nestedformulanumbermode \zerocount
- \glet\currentformulasreference \empty
- \glet\currentformulareference \empty
- \glet\currentsubformulareference \empty
- \glet\currentnestedformulareference\empty
- \glet\currentformulassuffix \empty
- \glet\currentformulasuffix \empty
- \glet\currentsubformulasuffix \empty
- \glet\currentnestedformulasuffix \empty
-\to \everyresetformulas
-
-\let\currentformulasreference \empty
-\let\currentformulareference \empty
-\let\currentsubformulareference \empty
-\let\currentnestedformulareference\empty
-\let\currentformulassuffix \empty
-\let\currentformulasuffix \empty
-\let\currentsubformulasuffix \empty
-\let\currentnestedformulasuffix \empty
-
\newif\ifinformula
%D We need a hook into the plain math alignment macros
@@ -328,69 +401,9 @@
\let\normalreqno\gobbleoneargument \let\eqno \gobbleoneargument
\let\doplaceformulanumber\empty}
-%D
-
-\unexpanded\def\defineformula
- {\dodoubleempty\dodefineformula}
-
-\def\dodefineformula[#1][#2]%
- {\doifsomething{#1}
- {\getparameters[\??fm#1][\s!parent=\??fm,#2]%
- \definelist[#1]%
- \setvalue{\e!start#1\v!formula}{\dostartformula{#1}}%
- \setvalue{\e!stop #1\v!formula}{\dostopformula}}}
-
-\unexpanded\def\defineformulaalternative
- {\dotripleargument\dodefineformulaalternative}
-
-\def\dodefineformulaalternative[#1][#2][#3]%
- {\setvalue{\e!start#1\v!formula}{#2}%
- \setvalue{\e!stop #1\v!formula}{#3}}
-
-% sp = single line paragraph sd = single line display
-% mp = multi line paragraph md = multy line display
-
-\defineformulaalternative[\s!default][\startdisplaymath][\stopdisplaymath]
-\defineformulaalternative[\s!single] [\startdisplaymath][\stopdisplaymath]
-\defineformulaalternative[\s!multi] [\startdisplaymath][\stopdisplaymath]
-
-\defineformula
- [sp]
- [\c!spacebefore=\v!none,
- \c!spaceafter=\v!none,
- \c!indentnext=\v!no,
- \c!alternative=\s!single]
-
-\defineformula
- [sd]
- [\c!spacebefore=\v!none,
- \c!spaceafter=\v!none,
- \c!indentnext=\v!yes,
- \c!alternative=\s!single]
-
-\defineformula
- [mp]
- [\c!indentnext=\v!no,
- \c!alternative=\s!multi]
-
-\defineformula
- [md]
- [\c!indentnext=\v!yes,
- \c!alternative=\s!multi]
-
%D \macros
-%D {setupsubformulas, startsubformulas}
-
-\def\subformulaparameter#1{\ifcsname\??fn#1\endcsname\csname\??fn#1\endcsname\fi}
-
-\unexpanded\def\setupsubformulas
- {\dodoubleargument\getparameters[\??fn]}
+%D {startsubformulas}
-\setupsubformulas
- [\c!indentnext=\formulaparameter\c!indentnext]
-
-% \setupsubformulas[conversion=romannumerals]
-%
% \placeformula
% \startsubformulas[Maxwell]
% \startformulas
@@ -427,9 +440,6 @@
\abovedisplayshortskip\zeropoint
\belowdisplayshortskip\zeropoint}
-\setvalue{\e!start\v!formula}{\dostartformula{}}
-\setvalue{\e!stop \v!formula}{\dostopformula}
-
\def\predisplaysizethreshhold{2em} % was 3em
\def\leftdisplayskip {\leftskip}
@@ -457,7 +467,7 @@
\advance\displaywidth\dimexpr-\displayindent-\rightdisplayskip-\rightdisplaymargin\relax
\hsize\displaywidth} % new, else overfull in itemize
-\def\dostartformula#1%
+\unexpanded\def\dostartformula#1%
{\dodoubleempty\dodostartformula[#1]}
\newskip\formulaparskip
@@ -500,7 +510,7 @@
% tagging of formulanumbers is not ok (we get two display maths blobs)
-\def\dostopformula
+\unexpanded\def\dostopformula
{\dostarttagged\t!formulacaption\empty
\doplaceformulanumber
\dostoptagged
@@ -528,7 +538,7 @@
\def\switchtoformulabodyfont{\switchtobodyfont}
-\setvalue{\v!formula}{\dosingleempty\doformula}
+\setuvalue{\v!formula}{\dosingleempty\doformula}
\def\doformula[#1]#2% todo: tagged
{\begingroup
@@ -567,9 +577,6 @@
\par
\egroup}
-\newif\ifclipdisplaymath \clipdisplaymathtrue
-\def\displaymathclipfactor{1.1}
-
% already defined
%
% \let\startinnermath\empty
@@ -735,8 +742,8 @@
% to be checked
-\glet\doplaceformulanumber \relax
-\glet\donestedformulanumber\gobbletwoarguments
+\let\doplaceformulanumber \relax
+\let\donestedformulanumber\gobbletwoarguments
\def\donestedformulanumberindeed#1#2%
{\def\currentnestedformulareference{#1}%
@@ -773,9 +780,9 @@
\setformulalistentry{#2}%
\next}
-\glet\namedformulaentry\empty % \relax % this will become a key/value so that we can do bookmarks
+\let\namedformulaentry\empty % \relax % this will become a key/value so that we can do bookmarks
-\def\setformulalistentry#1%
+\unexpanded\def\setformulalistentry#1%
{\gdef\namedformulaentry{#1}}
\protect \endinput