diff options
Diffstat (limited to 'tex/context/base/strc-mat.mkiv')
-rw-r--r-- | tex/context/base/strc-mat.mkiv | 487 |
1 files changed, 209 insertions, 278 deletions
diff --git a/tex/context/base/strc-mat.mkiv b/tex/context/base/strc-mat.mkiv index 2395a6412..121808cd1 100644 --- a/tex/context/base/strc-mat.mkiv +++ b/tex/context/base/strc-mat.mkiv @@ -1,5 +1,4 @@ %D \module -%D \module %D [ file=strc-mat, %D version=2008.10.20, %D title=\CONTEXT\ Structure Macros, @@ -40,12 +39,12 @@ \c!expansion=\v!yes, % maybe automatically \c!spacebefore=\v!big, \c!spaceafter=\formulaparameter\c!spacebefore, - \c!leftmargin=\zeropoint, - \c!rightmargin=\zeropoint, + \c!leftmargin=\!!zeropoint, + \c!rightmargin=\!!zeropoint, \c!indentnext=\v!no, \c!alternative=\s!default, \c!strut=\v!no, - \c!distance=\emwidth] + \c!distance=1em] \setupsubformulas % subformulas could be last in chain [\c!indentnext=\formulaparameter\c!indentnext] @@ -55,7 +54,7 @@ \defineconversionset [\v!formula] - [numbers,characters] % no \v! ? + [numbers,characters] \strc_counter_preset_using_parameter\setupformulas\sharedcounterparameter @@ -69,22 +68,22 @@ \appendtoks \normalexpanded{\definelist[\currentformula]}% is expansion needed? - \setuevalue{\e!start\currentformula\v!formula}{\strc_formulas_start_formula{\currentformula}}% - \setuevalue{\e!stop \currentformula\v!formula}{\strc_formulas_stop_formula}% + \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}{\strc_formulas_start_formula{}} -\setuvalue{\e!stop \v!formula}{\strc_formulas_stop_formula} +\setuvalue{\e!start\v!formula}{\dostartformula{}} +\setuvalue{\e!stop \v!formula}{\dostopformula} -\let\strc_formulas_start_formula\relax % defined later -\let\strc_formulas_stop_formula \relax % defined later +\let\dostartformula\relax % defined later +\let\dostopformula \relax % defined later -\unexpanded\def\defineformulaalternative % this might change ... start and stop can become keys - {\dotripleargument\strc_formulas_define_alternative} % to the general define .. s!startcommand +\unexpanded\def\defineformulaalternative % this might change ... start and stop can become keys + {\dotripleargument\dodefineformulaalternative} % to the general define .. s!startcommand -\def\strc_formulas_define_alternative[#1][#2][#3]% +\def\dodefineformulaalternative[#1][#2][#3]% {\setvalue{\e!start#1\v!formula}{#2}% \setvalue{\e!stop #1\v!formula}{#3}} @@ -127,8 +126,8 @@ % implementation -\unexpanded\def\strc_formulas_store_number#1#2#3#4#5% ref, todo:str, \sync % todo: title etc (like float) - {\settrue\c_strc_formulas_handle_number +\def\storecurrentformulanumber#1#2#3#4#5% ref, todo:str, \sync % todo: title etc (like float) + {\settrue\handleformulanumber \strc_counters_register_component {formula}% \setupcurrentformula \formulaparameter \detokenizedformulaparameter @@ -144,75 +143,68 @@ % modes: 0=unset, 1=forced, 2=none, 3=reference -\newconstant\c_strc_formulas_place_number_mode -\newconstant\c_strc_formulas_number_mode -\newconstant\c_strc_formulas_sub_number_mode -\newconstant\c_strc_formulas_nested_number_mode +\newconstant\placeformulanumbermode +\newconstant\formulasnumbermode +\newconstant\subformulasnumbermode +\newconstant\nestedformulanumbermode \appendtoks - \c_strc_formulas_place_number_mode \zerocount - \c_strc_formulas_number_mode \zerocount - \c_strc_formulas_sub_number_mode \zerocount - \c_strc_formulas_nested_number_mode\zerocount + \placeformulanumbermode \zerocount + \formulasnumbermode \zerocount + \subformulasnumbermode \zerocount + \nestedformulanumbermode\zerocount \to \everyresetformulas -\newconditional\c_strc_formulas_handle_number -\newconditional\c_strc_formulas_increment -\newconditional\c_strc_formulas_inside_place -\newconditional\c_strc_formulas_inside_place_sub -\newconditional\c_strc_formulas_inside_formulas -\newconditional\c_strc_formulas_inside_formulas_sub +\newconditional\handleformulanumber +\newconditional\incrementformulanumber + +\newconditional\insideplaceformula +\newconditional\insideplacesubformula +\newconditional\insideformulas +\newconditional\insidesubformulas \appendtoks - \global\setfalse\c_strc_formulas_inside_place - \global\setfalse\c_strc_formulas_inside_place_sub + \global\setfalse\insideplaceformula + \global\setfalse\insideplacesubformula \to \everyresetformulas -\def\strc_formulas_place_numbering % place formula - {\settrue\c_strc_formulas_handle_number - \strc_formulas_check_reference\c_strc_formulas_place_number_mode\currentplaceformulareference - \glet\strc_formulas_place_number\strc_formulas_place_number_indeed - \glet\strc_formulas_place_number_nested\strc_formulas_place_number_nested_indeed} +\def\handleplaceformulanumbering % place formula + {\settrue\handleformulanumber + \docheckformulareference\placeformulanumbermode\currentplaceformulareference + \glet\doplaceformulanumber \doplaceformulanumberindeed + \glet\donestedformulanumber\donestedformulanumberindeed} -\def\strc_formulas_handle_number % formulas - {\strc_formulas_check_reference\c_strc_formulas_number_mode\currentformulareference} +\def\handleformulasnumbering % formulas + {\docheckformulareference\formulasnumbermode\currentformulareference} -\def\strc_formulas_handle_sub_number_indeed % sub formulas - {\strc_formulas_check_reference\c_strc_formulas_sub_number_mode\currentsubformulasreference +\def\handlesubformulasnumbering % sub formulas + {\docheckformulareference\subformulasnumbermode\currentsubformulasreference \strc_counters_increment\v!formula - \strc_formulas_store_number + \storecurrentformulanumber \currentsubformulasreference \empty \currentsubformulasnumber \currentsubformulassynchronize - \currentsubformulasattribute} - -\def\strc_formulas_handle_sub_number % sub formulas - {\iftrialtypesetting - \strc_counters_save\v!formula - \strc_formulas_handle_sub_number_indeed - \strc_counters_restore\v!formula - \else - \strc_formulas_handle_sub_number_indeed - \fi} + \currentsubformulasattribute + } -\let\strc_formulas_reference_trace\relax -\let\strc_formulas_reference_show \relax +\let\dotraceformulareferencestate\relax +\let\doshowformulareferencestate \relax -% \def\strc_formulas_reference_trace +% \def\dotraceformulareferencestate % {\rlap{\hbox{\quad\tt\txx[% -% \number\c_strc_formulas_place_number_mode,% -% \number\c_strc_formulas_number_mode,% -% \number\c_strc_formulas_sub_number_mode,% -% \number\c_strc_formulas_nested_number_mode +% \number\placeformulanumbermode,% +% \number\formulasnumbermode,% +% \number\subformulasnumbermode,% +% \number\nestedformulanumbermode % ]}}} -% \def\strc_formulas_reference_show +% \def\doshowformulareferencestate % {\writestatus{\v!formula}% -% {place: \number\c_strc_formulas_place_number_mode,\space -% formula: \number\c_strc_formulas_number_mode,\space -% subformula: \number\c_strc_formulas_sub_number_mode,\space -% nested: \number\c_strc_formulas_nested_number_mode]}} +% {place: \number\placeformulanumbermode,\space +% formula: \number\formulasnumbermode,\space +% subformula: \number\subformulasnumbermode,\space +% nested: \number\nestedformulanumbermode]}} \unexpanded\def\placecurrentformulanumber {\rm % nodig ? @@ -224,12 +216,12 @@ \namedtaggedlabeltexts \t!formulalabel \v!formula \t!formulanumber\v!formula - {\ignorespaces\strc_formulas_place_current_number\removeunwantedspaces}% + {\ignorespaces\doplacecurrentformulanumber\removeunwantedspaces}% \formulaparameter\c!right}% \doif{\formulaparameter\c!location}\v!left{\hskip\formulaparameter\c!distance}} -\unexpanded\def\strc_formulas_place_current_number - {\strc_formulas_handle_current_references +\def\doplacecurrentformulanumber + {\dohandlecurrentformulareferences \labeltexts\currentformula{\convertedcounter[\v!formula][]}} % \def\theboxdestinationattribute#1{\iflocation\ifx#1\relax\else\ifx#1\empty\else attr \destinationattribute#1\fi\fi\fi} @@ -289,10 +281,10 @@ % currently we do the number, some day we will do the (sub) formula -\def\strc_formulas_handle_current_references - {\strc_formulas_reference_show - \ifnum\c_strc_formulas_place_number_mode=\plusthree - \strc_formulas_store_number +\def\dohandlecurrentformulareferences + {\doshowformulareferencestate + \ifnum\placeformulanumbermode=\plusthree + \storecurrentformulanumber \currentplaceformulareference \empty \currentplaceformulanumber @@ -302,8 +294,8 @@ \glet\currentplaceformulasynchronize\relax \theformuladestinationattribute\currentplaceformulaattribute \fi - \ifnum\c_strc_formulas_number_mode=\plusthree - \strc_formulas_store_number + \ifnum\formulasnumbermode=\plusthree + \storecurrentformulanumber \currentformulasreference \empty \currentformulasnumber @@ -313,12 +305,12 @@ \glet\currentformulassynchronize\relax \theformuladestinationattribute\currentformulasattribute \fi - \ifnum\c_strc_formulas_sub_number_mode=\plusthree + \ifnum\subformulasnumbermode=\plusthree \currentsubformulassynchronize \glet\currentsubformulassynchronize\relax \fi - \ifnum\c_strc_formulas_nested_number_mode=\plusthree - \strc_formulas_store_number + \ifnum\nestedformulanumbermode=\plusthree + \storecurrentformulanumber \currentnestedformulareference \empty \currentnestedformulanumber @@ -331,74 +323,55 @@ % needs checking ... too many: -\def\strc_formulas_handle_numbering_indeed +\def\dohandleformulanumbering {\strc_counters_increment\v!formula \doiftext\currentplaceformulasuffix{\strc_counters_setown_sub\v!formula\plustwo\currentplaceformulasuffix}% \placecurrentformulanumber} -\def\strc_formulas_handle_numbering - {\iftrialtypesetting - \strc_counters_save\v!formula - \strc_formulas_handle_numbering_indeed - \strc_counters_restore\v!formula - \else - \strc_formulas_handle_numbering_indeed - \fi} - -\def\strc_formulas_handle_sub_numbering_indeed - {\let\strc_formulas_handle_sub_numbering\relax % else error: see math/numbering-001.tex - \doiftextelse\currentsubformulasuffix +\def\dohandlesubformulanumbering + {\doiftextelse\currentsubformulasuffix {\strc_counters_setown_sub\v!formula\plustwo\currentsubformulasuffix} {\strc_counters_increment_sub\v!formula\plustwo}% - \placecurrentformulanumber} + \placecurrentformulanumber} -\def\strc_formulas_handle_sub_numbering - {\iftrialtypesetting - \strc_counters_save\v!formula - \strc_formulas_handle_sub_numbering_indeed - \strc_counters_restore\v!formula - \else - \strc_formulas_handle_sub_numbering_indeed - \fi} - -\def\strc_formulas_number_indeed - {\ifconditional\c_strc_formulas_handle_number +\def\dododoformulanumber + {\ifconditional\handleformulanumber \hbox\bgroup % main counter - \ifconditional\c_strc_formulas_inside_formulas_sub + \ifconditional\insidesubformulas % nothing \else - \ifcase\c_strc_formulas_number_mode - \ifcase\c_strc_formulas_place_number_mode - \strc_formulas_handle_numbering + \ifcase\formulasnumbermode + \ifcase\placeformulanumbermode + \dohandleformulanumbering \or - \strc_formulas_handle_numbering + \dohandleformulanumbering \or % nothing \or - \strc_formulas_handle_numbering + \dohandleformulanumbering \fi \or - \strc_formulas_handle_numbering + \dohandleformulanumbering \or % nothing \or - \strc_formulas_handle_numbering + \dohandleformulanumbering \fi \fi % subcounter - \ifconditional\c_strc_formulas_inside_formulas_sub - \ifcase\c_strc_formulas_sub_number_mode + \ifconditional\insidesubformulas + \ifcase\subformulasnumbermode % nothing \or - \strc_formulas_handle_sub_numbering + \dohandlesubformulanumbering \or % nothing \or - \strc_formulas_handle_sub_numbering + \dohandlesubformulanumbering \fi \fi - \strc_formulas_reference_trace + \dotraceformulareferencestate \egroup \fi} @@ -420,10 +393,10 @@ %D %D Otherwise we get a missing \type {$$} error reported. -\unexpanded\def\resetdisplaymatheq % when used? +\def\resetdisplaymatheq {\let\normalleqno\gobbleoneargument \let\leqno\gobbleoneargument \let\normalreqno\gobbleoneargument \let\eqno \gobbleoneargument - \let\strc_formulas_place_number\relax} + \let\doplaceformulanumber\empty} %D \macros %D {startsubformulas} @@ -458,36 +431,28 @@ % we don't use the skip's -\unexpanded\def\strc_formulas_forget_display_skips +\def\forgetdisplayskips % to do {\abovedisplayskip \zeropoint \belowdisplayskip \zeropoint \abovedisplayshortskip\zeropoint \belowdisplayshortskip\zeropoint} -% \def\predisplaysizethreshhold{2\emwidth} % was 3\emwidth +\def\predisplaysizethreshhold{2em} % was 3em -\newdimen\d_strc_formulas_display_skip_left -\newdimen\d_strc_formulas_display_skip_right -\newdimen\d_strc_formulas_display_margin_left -\newdimen\d_strc_formulas_display_margin_right -\newdimen\d_strc_formulas_display_pre_threshold -\newskip \d_strc_formulas_display_skip_par +\def\leftdisplayskip {\leftskip} +\def\rightdisplayskip {\rightskip} +\def\leftdisplaymargin {\formulaparameter\c!leftmargin} +\def\rightdisplaymargin {\formulaparameter\c!rightmargin} -\unexpanded\def\beforedisplayspace - {\edef\p_spacebefore{\formulaparameter\c!spacebefore}% - \ifx\p_spacebefore\v!none \else - \blank[\p_spacebefore]% - \fi} +\def\beforedisplayspace + {\doifnot{\formulaparameter\c!spacebefore}\v!none{\blank[\formulaparameter\c!spacebefore]}} -\unexpanded\def\afterdisplayspace - {\edef\p_spaceafter{\formulaparameter\c!spaceafter}% - \ifx\p_spaceafter\v!none \else - \blank[\p_spaceafter]% - \fi} +\def\afterdisplayspace + {\doifnot{\formulaparameter\c!spaceafter }\v!none{\blank[\formulaparameter\c!spaceafter ]}} -\unexpanded\def\setdisplaydimensions - {\displayindent\d_strc_formulas_display_skip_left - \advance\displayindent\d_strc_formulas_display_margin_left +\def\setdisplaydimensions + {\displayindent\leftdisplayskip + \advance\displayindent\leftdisplaymargin \displaywidth\hsize %\setlocalhsize %\displaywidth\localhsize @@ -496,14 +461,15 @@ \else \advance\displaywidth\hangindent \fi - \advance\displaywidth\dimexpr-\displayindent-\d_strc_formulas_display_skip_right-\d_strc_formulas_display_margin_right\relax + \advance\displaywidth\dimexpr-\displayindent-\rightdisplayskip-\rightdisplaymargin\relax \hsize\displaywidth} % new, else overfull in itemize -\unexpanded\def\strc_formulas_start_formula#1% - {\dodoubleempty\strc_formulas_start_formula_indeed[#1]} +\unexpanded\def\dostartformula#1% + {\dodoubleempty\dodostartformula[#1]} -% \newskip\formulastrutht -% \newskip\formulastrutdp +\newskip\formulaparskip +\newskip\formulastrutht +\newskip\formulastrutdp %D \startbuffer %D \startformula[9pt] x = 1 \stopformula @@ -512,56 +478,38 @@ %D %D \typebuffer \getbuffer -\unexpanded\def\strc_formulas_start_formula_indeed[#1][#2]% setting leftskip adaption is slow ! +\def\dodostartformula[#1][#2]% setting leftskip adaption is slow ! {\bgroup % HERE \def\currentformula{#1}% \dostarttagged\t!formula\currentformula \the\everybeforedisplayformula - \d_strc_formulas_display_skip_par\parskip\relax - %\formulastrutdp\strutdepth - %\formulastrutht\strutheight - \edef\p_option {\formulaparameter\c!option}% - \edef\p_margin {\formulaparameter\c!margin}% - \edef\p_bodyfont{#2}% - %\ifx\p_bodyfont\empty - % \edef\p_bodyfont{\formulaparameter\c!bodyfont}% - %\fi - \ifx\p_bodyfont\empty \else - \switchtoformulabodyfont[#2]% - \fi - \parskip\d_strc_formulas_display_skip_par\relax - \ifx\p_option\v!middle - \d_strc_formulas_display_skip_left \zeropoint - \d_strc_formulas_display_skip_right\zeropoint - \else - \d_strc_formulas_display_skip_left \leftskip - \d_strc_formulas_display_skip_right\rightskip - \fi - \d_strc_formulas_display_margin_left \formulaparameter\c!leftmargin \relax - \d_strc_formulas_display_margin_right\formulaparameter\c!rightmargin\relax - \ifx\p_margin\empty \else - \dosetleftskipadaption\p_margin - \d_strc_formulas_display_margin_left\leftskipadaption - \fi - \let\strc_formulas_start_formula\strc_formulas_start_formula_nested - %\freezedimenmacro\predisplaysizethreshhold - \strc_formulas_forget_display_skips + \formulaparskip\parskip + \formulastrutdp\strutdepth + \formulastrutht\strutheight + \doifsomething{#2}{\switchtoformulabodyfont[#2]}% + \parskip\formulaparskip + % may look better in itemizations + \doif{\formulaparameter\c!option}\v!middle + {\def\leftdisplayskip{\zeropoint}% + \def\rightdisplayskip{\zeropoint}}% + % this was an experiment + \doifsomething{\formulaparameter\c!margin}% so we test first + {\dosetleftskipadaption{\formulaparameter\c!margin}% + \edef\leftdisplaymargin{\the\leftskipadaption}}% overloaded + \long\def\dostartformula##1{\bgroup\dostarttagged\t!subformula\def\dostopformula{\dostoptagged\egroup}}% + \freezedimenmacro\leftdisplayskip + \freezedimenmacro\rightdisplayskip + \freezedimenmacro\leftdisplaymargin + \freezedimenmacro\rightdisplaymargin + \freezedimenmacro\predisplaysizethreshhold + \forgetdisplayskips \getvalue{\e!start\formulaparameter\c!alternative\v!formula}} -\unexpanded\def\strc_formulas_start_formula_nested#1% - {\bgroup - \let\strc_formulas_stop_formula\strc_formulas_stop_formula_nested - \dostarttagged\t!subformula} - -\unexpanded\def\strc_formulas_stop_formula_nested - {\dostoptagged - \egroup} - % tagging of formulanumbers is not ok (we get two display maths blobs) -\unexpanded\def\strc_formulas_stop_formula +\unexpanded\def\dostopformula {\dostarttagged\t!formulacaption\empty - \strc_formulas_place_number + \doplaceformulanumber \dostoptagged \dostarttagged\t!formulacontent\empty \getvalue{\e!stop\formulaparameter\c!alternative\v!formula}% @@ -572,31 +520,27 @@ \egroup \hangafter\minusone % added for side floats \hangindent\zeropoint % added for side floats - \setfalse\c_strc_formulas_handle_number + \setfalse\handleformulanumber \the\everyresetformulas \dorechecknextindentation} % here ? % experiment: \appendtoks - \edef\p_grid{\formulaparameter\c!grid}% - \ifx\p_grid\empty \else - \spac_grids_snap_value_auto\p_grid + \edef\currentformulagrid{\formulaparameter\c!grid}% + \ifx\currentformulagrid\empty \else + \spac_grids_snap_value_auto\currentformulagrid \fi \to \everybeforedisplayformula -\unexpanded\def\switchtoformulabodyfont - {\switchtobodyfont} +\def\switchtoformulabodyfont{\switchtobodyfont} -\setuvalue{\v!formula}{\dosingleempty\strc_formulas_formula} +\setuvalue{\v!formula}{\dosingleempty\doformula} -\def\strc_formulas_formula[#1]#2% todo: tagged +\def\doformula[#1]#2% todo: tagged {\begingroup - \edef\p_bodyfont{#1}% - \ifx\p_bodyfont\empty \else - \switchtoformulabodyfont[\p_bodyfont]% - \fi - % not : \def\strc_formulas_formula[##1]##2{\mathematics{##2}}% + \doifsomething{#1}{\switchtoformulabodyfont[#1]}% + % not : \def\doformula[##1]##2{\mathematics{##2}}% \mathematics{#2}% \endgroup} @@ -614,7 +558,7 @@ \beforedisplayspace \par \ifvmode - \prevdepth-\maxdimen % texbook pagina 79-80 + \prevdepth-\maxdimen % texbook pagina 79-80 \fi \noindent % else funny hlist with funny baselineskip $$% \Ustartdisplaymath @@ -657,26 +601,26 @@ % \fakewords{20}{40} \unexpanded\def\startsubformulas - {\dosingleempty\strc_formulas_start_sub_formulas} + {\dosingleempty\dostartsubformulas} -\def\strc_formulas_start_sub_formulas[#1]% +\def\dostartsubformulas[#1]% {\edef\currentsubformulasreference{#1}% - \global\settrue\c_strc_formulas_inside_formulas_sub - \strc_formulas_handle_sub_number} + \global\settrue\insidesubformulas + \handlesubformulasnumbering} \unexpanded\def\stopsubformulas {\nonoindentation \useindentnextparameter\subformulaparameter \the\everyresetformulas % to be checked - \global\setfalse\c_strc_formulas_inside_formulas_sub + \global\setfalse\insidesubformulas \dorechecknextindentation} % here ? %D Named subformulas (to be redone) \unexpanded\def\startnamedsubformulas - {\dosingleempty\strc_formulas_start_named_sub_formulas} + {\dosingleempty\dostartnamedsubformulas} -\def\strc_formulas_start_named_sub_formulas[#1]#2% +\def\dostartnamedsubformulas[#1]#2% {\setformulalistentry{#2}% \startsubformulas[#1]} @@ -695,19 +639,19 @@ %D \typebuffer \getbuffer \unexpanded\def\startformulas - {\dosingleempty\strc_formulas_start_formulas} + {\dosingleempty\dostartformulas} -\def\strc_formulas_start_formulas[#1]#2\stopformulas % new / to be internationalized +\def\dostartformulas[#1]#2\stopformulas % new / to be internationalized {\bgroup \dostarttagged\t!formulaset\empty - \global\settrue\c_strc_formulas_inside_formulas + \global\settrue\insideformulas \edef\currentformulasreference{#1}% - \strc_formulas_handle_number + \handleformulasnumbering \let\currentformula\empty - \strc_formulas_forget_display_skips + \forgetdisplayskips \startdisplaymath \setlocalhsize - \unexpanded\def\startformula##1\stopformula + \long\unexpanded\def\startformula##1\stopformula {\advance\scratchcounter\plusone}% \scratchcounter\zerocount #2% preroll @@ -716,135 +660,122 @@ \fi \hbox to \localhsize \bgroup \hss - \let\startformula\strc_formulas_nested_formula_start - \let\stopformula \strc_formulas_nested_formula_stop + \def\normalstartformula{\vskip-\strutdepth\Ustartdisplaymath}% i hate this + \def\normalstopformula {\Ustopdisplaymath}% + \unexpanded\def\startformula {\Ustartmath\vcenter\bgroup\normalstartformula}% + \unexpanded\def\stopformula {\normalstopformula\egroup\Ustopmath\hss}% #2% \egroup \stopdisplaymath - \global\setfalse\c_strc_formulas_inside_formulas + \global\setfalse\insideformulas \dostoptagged \egroup \the\everyresetformulas \hangafter\minusone % added for side floats \hangindent\zeropoint} % added for side floats -\unexpanded\def\strc_formulas_nested_formula_start - {\Ustartmath - \vcenter\bgroup - \vskip-\strutdepth - \Ustartdisplaymath} - -\unexpanded\def\strc_formulas_nested_formula_stop - {\Ustopdisplaymath - \egroup - \Ustopmath - \hss} - % place -\def\m_strc_formulas_flag_inhibit{-} -\def\m_strc_formulas_flag_force {+} +\def\inhibitformulanumberflag{-} +\def\forceformulanumberflag {+} -\def\strc_formulas_check_reference#1#2% +\def\docheckformulareference#1#2% {#1\unless\ifx\namedformulaentry\empty % \relax % new 29/8/2010 \plusthree \else\ifx#2\empty \zerocount - \else\ifx#2\m_strc_formulas_flag_force + \else\ifx#2\forceformulanumberflag \plusone - \else\ifx#2\m_strc_formulas_flag_inhibit + \else\ifx#2\inhibitformulanumberflag \plustwo \else \plusthree \fi\fi\fi\fi} -\unexpanded\def\formulanumber - {\strc_formulas_number} % for the moment +\unexpanded\def\formulanumber{\doformulanumber} % for the moment -\def\strc_formulas_number - {\dosingleempty\strc_formulas_number_again} +\def\doformulanumber + {\dosingleempty\dodoformulanumber} -\def\strc_formulas_number_again[#1]% +\def\dodoformulanumber[#1]% {\def\currentformulareference{#1}% - \dosinglegroupempty\strc_formulas_number_indeed} + \dosinglegroupempty\dododoformulanumber} + +\def\redoformulanumber#1% + {\def\currentformulasuffix{#1}% + \dododoformulanumber} \unexpanded\def\placeformula - {\global\settrue\c_strc_formulas_inside_place - \settrue\c_strc_formulas_increment - \dosingleempty\strc_formulas_place} + {\global\settrue\insideplaceformula + \settrue\incrementformulanumber + \dosingleempty\doplaceformula} \unexpanded\def\placesubformula - {\global\settrue\c_strc_formulas_inside_place_sub - \setfalse\c_strc_formulas_increment - \dosingleempty\strc_formulas_place} + {\global\settrue\insideplacesubformula + \setfalse\incrementformulanumber + \dosingleempty\doplaceformula} -\def\strc_formulas_place[#1]% +\def\doplaceformula[#1]% {\def\currentplaceformulareference{#1}% \let\currentplaceformulasuffix\empty - \doifnextbgroupelse\strc_formulas_place_yes\strc_formulas_place_nop\strc_formulas_place_nop} % [ref]{} + \doifnextbgroupelse\moreplaceformula\redoplaceformula} % [ref]{} -\def\strc_formulas_place_yes#1% +\def\moreplaceformula#1% {\def\currentplaceformulasuffix{#1}% - \strc_formulas_place_nop} + \redoplaceformula} -\def\strc_formulas_place_nop - {\doifnextcharelse$\strc_formulas_place_pickup\strc_formulas_place_indeed} % [ref]$$ [ref]\start +\def\redoplaceformula + {\doifnextcharelse$\dispplaceformula\dodoplaceformula} % [ref]$$ [ref]\start -\def\strc_formulas_place_indeed - {\strc_formulas_place_numbering} +\def\dodoplaceformula + {\handleplaceformulanumbering} -\def\strc_formulas_place_pickup$$#1$$% - {\strc_formulas_place_numbering - \strc_formulas_start_formula{}#1\strc_formulas_stop_formula} +\def\dispplaceformula$$#1$$% + {\handleplaceformulanumbering + \dostartformula{}#1\dostopformula} \let\startplaceformula\placeformula \let\stopplaceformula \relax % to be checked -\let\strc_formulas_place_number \relax -\let\strc_formulas_place_number_nested\gobbletwoarguments +\let\doplaceformulanumber \relax +\let\donestedformulanumber\gobbletwoarguments -\def\strc_formulas_place_number_nested_indeed#1#2% +\def\donestedformulanumberindeed#1#2% {\def\currentnestedformulareference{#1}% \def\currentnestedformulasuffix{#2}% - \glet\strc_formulas_place_number\relax - \strc_formulas_check_reference\c_strc_formulas_nested_number_mode\currentnestedformulareference - \ifcase\c_strc_formulas_nested_number_mode + \glet\doplaceformulanumber\relax + \docheckformulareference\nestedformulanumbermode\currentnestedformulareference + \ifcase\nestedformulanumbermode % nothing \or - \strc_formulas_number % hm, looks ahead for [] + \doformulanumber \or % nothing \or - \strc_formulas_number % hm, looks ahead for [] + \doformulanumber \fi} -\def\strc_formulas_place_number_indeed - {\glet\strc_formulas_place_number\relax +\def\doplaceformulanumberindeed + {\glet\doplaceformulanumber\relax \doifelse{\formulaparameter\c!location}\v!left - {\normalleqno{\strc_formulas_number_indeed}} - {\normalreqno{\strc_formulas_number_indeed}}} + {\normalleqno{\dododoformulanumber}} + {\normalreqno{\dododoformulanumber}}} % todo \unexpanded\def\placenamedformula - {\dosingleempty\strc_formulase_place_named} + {\dosingleempty\doplacenamedformula} -\def\strc_formulase_place_named +\def\doplacenamedformula[#1]#2% {\iffirstargument - \expandafter\strc_formulase_place_named_yes + \def\next{\placeformula[#1]}% \else - \expandafter\strc_formulase_place_named_nop - \fi} - -\def\strc_formulase_place_named_yes[#1]#2% - {\setformulalistentry{#2}% - \placeformula[#1]} - -\def\strc_formulase_place_named_nop[#1]#2% - {\setformulalistentry{#2}% - \placeformula} + \let\next\placeformula + \fi + \setformulalistentry{#2}% + \next} \let\namedformulaentry\empty % \relax % this will become a key/value so that we can do bookmarks |