summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/spac-par.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/spac-par.mkxl')
-rw-r--r--tex/context/base/mkiv/spac-par.mkxl175
1 files changed, 70 insertions, 105 deletions
diff --git a/tex/context/base/mkiv/spac-par.mkxl b/tex/context/base/mkiv/spac-par.mkxl
index e0eef0c67..524e31bc5 100644
--- a/tex/context/base/mkiv/spac-par.mkxl
+++ b/tex/context/base/mkiv/spac-par.mkxl
@@ -23,93 +23,75 @@
% this might move to syst-ini.mkxl
-\setnewconstant\frozenhsizecode "00000001
-\setnewconstant\frozenleftskipcode "00000002
-\setnewconstant\frozenrightskipcode "00000004
-\setnewconstant\frozenhangindentcode "00000008
-\setnewconstant\frozenhangaftercode "00000010
-\setnewconstant\frozenparindentcode "00000020
-\setnewconstant\frozenparfillskipcode "00000040
-\setnewconstant\frozenparfillleftskipcode "00000080
-\setnewconstant\frozenadjustspacingcode "00000100
-\setnewconstant\frozenprotrudecharscode "00000200
-\setnewconstant\frozenpretolerancecode "00000400
-\setnewconstant\frozentolerancecode "00000800
-\setnewconstant\frozenemergencystretchcode "00001000
-\setnewconstant\frozenloosenesscode "00002000
-\setnewconstant\frozenlastlinefitcode "00004000
-\setnewconstant\frozenlinepenaltycode "00008000
-\setnewconstant\frozeninterlinepenaltycode "00010000
-\setnewconstant\frozenclubpenaltycode "00020000
-\setnewconstant\frozenwidowpenaltycode "00040000
-\setnewconstant\frozendisplaywidowpenaltycode "00080000
-\setnewconstant\frozenbrokenpenaltycode "00100000
-\setnewconstant\frozenadjdemeritscode "00200000
-\setnewconstant\frozendoublehyphendemeritscode "00400000
-\setnewconstant\frozenfinalhyphendemeritscode "00800000
-\setnewconstant\frozenparshapecode "01000000
-\setnewconstant\frozeninterlinepenaltiescode "02000000
-\setnewconstant\frozenclubpenaltiescode "04000000
-\setnewconstant\frozenwidowpenaltiescode "08000000
-\setnewconstant\frozendisplaywidowpenaltiescode "10000000
-
\setnewconstant\paragraphupdatecodes\numexpr
\frozentolerancecode
+ \frozenloosenesscode
+ \frozenlinepenaltycode
- + \frozeninterlinepenaltycode
+ \frozenwidowpenaltycode
+ \frozenclubpenaltycode
+ \frozenbrokenpenaltycode
- + \frozenadjdemeritscode
- + \frozendoublehyphendemeritscode
- + \frozenfinalhyphendemeritscode
- + \frozeninterlinepenaltiescode
- + \frozenwidowpenaltiescode
- + \frozenclubpenaltiescode
+ + \frozendemeritscode
\relax
\setnewconstant\paragraphpenaltycodes\numexpr
- \frozeninterlinepenaltycode
+ \frozenlinepenaltycode
+ \frozenwidowpenaltycode
+ \frozenclubpenaltycode
+ \frozenbrokenpenaltycode
- + \frozeninterlinepenaltiescode
- + \frozenwidowpenaltiescode
- + \frozenclubpenaltiescode
\relax
\setnewconstant\paragraphdemeritcodes\numexpr
- \frozenadjdemeritscode
- + \frozendoublehyphendemeritscode
- + \frozenfinalhyphendemeritscode
+ \frozendemeritscode
\relax
-% + \frozenparskipcode
-
\setnewconstant\paragraphshapecodes\numexpr
- \frozenhangindentcode
- + \frozenhangaftercode
- + \frozenleftskipcode
- + \frozenrightskipcode
- + \frozenparfillskipcode
- + \frozenparshapecode
+ \frozenhangcode
+ + \frozenskipcode
+ + \frozenparfillcode
+ + \frozenshapecode
\relax
-\protected\def\freezeparagraphproperties {\snapshotpar\maxcount}
-\protected\def\defrostparagraphproperties{\snapshotpar\zerocount}
+\setnewconstant\frozenparagraphdefault\numexpr
+ \frozenhsizecode % \hsize
+ + \frozenskipcode % \leftskip \rightskip
+ + \frozenhangcode % \hangindent \hangafter
+ + \frozenindentcode % \parindent
+ + \frozenparfillcode % \parfillskip \parfillleftskip
+ + \frozenadjustcode % \adjustspacing
+ + \frozenprotrudecode % \protrudechars
+ + \frozentolerancecode % \tolerance \pretolerance
+ + \frozenstretchcode % \emergcystretch
+ + \frozenloosenesscode % \looseness
+ + \frozenlastlinecode % \lastlinefit
+ + \frozenlinepenaltycode % \linepenalty \interlinepenalty \interlinepenalties
+ + \frozenclubpenaltycode % \clubpenalty \clubpenalties
+ + \frozenwidowpenaltycode % \widowpenalty \widowpenalties
+ + \frozendisplaypenaltycode % \displaypenalty \displaypenalties
+ + \frozenbrokenpenaltycode % \brokenpenalty
+ + \frozendemeritscode % \doublehyphendemerits \finalhyphendemerits \adjdemerits
+ + \frozenshapecode % \parshape
+ % \frozenlinecode % \baselineskip \lineskip \lineskiplimit
+\relax
+
+\setnewconstant\paragraphlinecodes\numexpr
+ \frozenlinecode
+\relax
-\protected\def\updateparagraphproperties {\ifhmode\snapshotpar\paragraphupdatecodes \fi}
-\protected\def\updateparagraphpenalties {\ifhmode\snapshotpar\paragraphpenaltycodes\fi}
-\protected\def\updateparagraphdemerits {\ifhmode\snapshotpar\paragraphdemeritcodes\fi}
-\protected\def\updateparagraphshapes {\ifhmode\snapshotpar\paragraphshapecodes \fi}
+\permanent\protected\def\freezeparagraphproperties {\snapshotpar\frozenparagraphdefault}
+\permanent\protected\def\defrostparagraphproperties{\snapshotpar\zerocount}
+
+\permanent\protected\def\updateparagraphproperties{\ifhmode\snapshotpar\paragraphupdatecodes \fi}
+\permanent\protected\def\updateparagraphpenalties {\ifhmode\snapshotpar\paragraphpenaltycodes\fi}
+\permanent\protected\def\updateparagraphdemerits {\ifhmode\snapshotpar\paragraphdemeritcodes\fi}
+\permanent\protected\def\updateparagraphshapes {\ifhmode\snapshotpar\paragraphshapecodes \fi}
+\permanent\protected\def\updateparagraphlines {\ifhmode\snapshotpar\paragraphlinecodes \fi}
% so far
\let\spac_paragraph_freeze\relax
-\protected\def\setparagraphfreezing {\let\spac_paragraph_freeze\freezeparagraphproperties}
-\protected\def\forgetparagraphfreezing {\let\spac_paragraph_freeze\relax}
+\permanent\protected\def\setparagraphfreezing {\enforced\let\spac_paragraph_freeze\freezeparagraphproperties}
+\permanent\protected\def\forgetparagraphfreezing{\enforced\let\spac_paragraph_freeze\relax}
\installcorenamespace {bparwrap}
\installcorenamespace {eparwrap}
@@ -130,8 +112,8 @@
\wrapuppar{\the\csname\??eparwrap\the\c_spac_paragraph_group_level\endcsname\relax}%
\fi}
-\protected\def\registerparwrapper {\spac_register_par_wrapper\toksapp\tokspre}
-\protected\def\registerparwrapperreverse{\spac_register_par_wrapper\tokspre\toksapp}
+\permanent\protected\def\registerparwrapper {\spac_register_par_wrapper\toksapp\tokspre}
+\permanent\protected\def\registerparwrapperreverse{\spac_register_par_wrapper\tokspre\toksapp}
\protected\def\spac_paragraph_install
{\expandafter\newtoks\csname\??bparwrap\the\currentgrouplevel\endcsname
@@ -143,10 +125,8 @@
\def\spac_paragraph_install_pair#1#2#3%
{\expandafter\newtoks\csname\??parwrapbefore#3\endcsname
\expandafter\newtoks\csname\??parwrapafter #3\endcsname
- #1\csname\??bparwrap\the\currentgrouplevel\endcsname
- {\the\csname\??parwrapbefore#3\endcsname}%
- #2\csname\??eparwrap\the\currentgrouplevel\endcsname
- {\the\csname\??parwrapafter #3\endcsname}}
+ #1\csname\??bparwrap\the\currentgrouplevel\endcsname{\the\csname\??parwrapbefore#3\endcsname}%
+ #2\csname\??eparwrap\the\currentgrouplevel\endcsname{\the\csname\??parwrapafter #3\endcsname}}
\def\spac_register_par_wrapper_yes#1#2#3#4#5%
{\ifcsname\??bparwrap\the\currentgrouplevel\endcsname \else
@@ -162,7 +142,7 @@
\clf_setparwrapper{#3}#4}%
#2\csname\??parwrapafter #3\endcsname{#5}%
\clf_newparwrapper{#3}%
- \let\spac_paragraph_wrap\spac_paragraph_update}
+ \enforced\let\spac_paragraph_wrap\spac_paragraph_update}
\def\spac_register_par_wrapper_nop#1#2#3#4#5%
{\ifcsname\??parwrapcount#3\endcsname \else
@@ -178,34 +158,21 @@
\expandafter\spac_register_par_wrapper_yes
\fi}
-\protected\def\forgetparwrapper
+\permanent\protected\def\forgetparwrapper
{\csname\??bparwrap\the\currentgrouplevel\endcsname\emptytoks
\csname\??eparwrap\the\currentgrouplevel\endcsname\emptytoks}
-\protected\def\unregisterparwrapper#1%
+\permanent\protected\def\unregisterparwrapper#1%
{\csname\??parwrapcount#1\endcsname\zerocount
\ifcsname\??parwrapbefore#1\endcsname
\lastnamedcs\emptytoks
\csname\??parwrapafter#1\endcsname\emptytoks
\fi}
-\def\directparwrapper#1#2%
+\permanent\def\directparwrapper#1#2%
{#1\wrapuppar{#2}}
-% \protected\def\doifelseparwrapper#1%
-% {\ifcsname\??parwrapbefore#1\endcsname
-% \unless\iftok\lastnamedcs\emptytoks
-% \doubleexpandafter\firstoftwoarguments
-% \orelse\iftok\csname\??parwrapafter#1\endcsname\emptytoks
-% \doubleexpandafter\secondoftwoarguments
-% \else
-% \doubleexpandafter\firstoftwoarguments
-% \fi
-% \else
-% \expandafter\secondoftwoarguments
-% \fi}
-
-\protected\def\doifelseparwrapper#1%
+\permanent\protected\def\doifelseparwrapper#1%
{\unless\ifcsname\??parwrapcount#1\endcsname
\expandafter\secondoftwoarguments
\orelse\ifcase\lastnamedcs
@@ -217,7 +184,7 @@
% \getparwrapper % defined in lua
% \lastparwrapper % defined in lua
-\protected\def\showparwrapperstate#1%
+\permanent\protected\def\showparwrapperstate#1%
{\begingroup
\infofont ΒΆ#1\hilo
{\smallinfofont\getparwrapper {#1}}%
@@ -230,7 +197,7 @@
\setparagraphfreezing
-\appendtoks\let\spac_paragraph_wrap\relax\to\everyforgetall
+\appendtoks\enforced\let\spac_paragraph_wrap\relax\to\everyforgetall
%D In due time, the code below will be upgraded using the above mechanisms.
@@ -240,24 +207,25 @@
%D indentation as set (by the output routine) inside the group are forgotten
%D afterwards. (I must not forget its existence).
-\def\carryoverpar#1% #1 can be \endgroup or \egroup or ... expandable !
+\permanent\def\carryoverpar#1% #1 can be \endgroup or \egroup or ... expandable !
{\normalexpanded
{\noexpand#1%
\hangindent\the\hangindent
\hangafter \the\hangafter
\parskip \the\parskip
\leftskip \the\leftskip
- \rightskip \the\rightskip}}
+ \rightskip \the\rightskip
+ \relax}}
-\unexpanded\def\pushparagraphproperties
+\permanent\protected\def\pushparagraphproperties
{\edef\currentparagraphproperties{\carryoverpar\relax}%
\pushmacro\currentparagraphproperties}
-\unexpanded\def\popparagraphproperties
+\permanent\protected\def\popparagraphproperties
{\popmacro\currentparagraphproperties
\currentparagraphproperties}
-\unexpanded\def\flushparagraphproperties
+\permanent\protected\def\flushparagraphproperties
{\popmacro\currentparagraphproperties}
%D Beware, changing this will break some code (like pos/backgrounds) but it has been
@@ -275,10 +243,7 @@
\newconditional\c_spac_paragraphs_intro_next
\newconditional\c_spac_paragraphs_intro_each
-\unexpanded\def\setupparagraphintro
- {\dodoubleempty\spac_paragraphs_intro}
-
-\unexpanded\def\spac_paragraphs_intro[#1][#2]%
+\permanent\protected\tolerant\def\setupparagraphintro[#1]#*[#2]%
{\def\spac_paragraphs_intro_step##1%
{\csname\??paragraphintro\ifcsname\??paragraphintro##1\endcsname##1\fi\endcsname{#2}}%
\processcommacommand[#1]\spac_paragraphs_intro_step}
@@ -345,7 +310,7 @@
%D some paragraph \par
%D \stoptyping
-\unexpanded\def\flushatparagraph#1%
+\permanent\protected\def\flushatparagraph#1%
{\global\c_spac_paragraphs_intro_first\plusone
\gtoksapp\t_spac_paragraphs_intro_first{#1}%
\glet\insertparagraphintro\spac_paragraphs_flush_intro}
@@ -353,7 +318,7 @@
%D Here comes the flusher (we misuse the one level expansion of token registers to
%D feed a nice stream into the paragraph.)
-\unexpanded\def\spac_paragraphs_flush_intro % we make sure that the token lists expand directly
+\protected\def\spac_paragraphs_flush_intro % we make sure that the token lists expand directly
{\normalexpanded{% % after another so the first code is there twice
\ifconditional\c_spac_paragraphs_intro_each
\ifconditional\c_spac_paragraphs_intro_next
@@ -378,7 +343,7 @@
\fi
\fi}}
-\unexpanded\def\spac_paragraphs_flush_intro_next
+\protected\def\spac_paragraphs_flush_intro_next
{\normalexpanded{%
\global\setfalse\c_spac_paragraphs_intro_next
\global\t_spac_paragraphs_intro_next\emptytoks
@@ -391,7 +356,7 @@
\the\t_spac_paragraphs_intro_next
\fi}}
-\unexpanded\def\spac_paragraphs_flush_intro_each
+\protected\def\spac_paragraphs_flush_intro_each
{\the\t_spac_paragraphs_intro_each}
%D \macros
@@ -409,11 +374,11 @@
%
% \initializeboxstack\??postponednodesstack
%
-% \unexpanded\def\pushpostponednodedata
+% \protected\def\pushpostponednodedata
% {\global\advance\c_spac_postponed_data\plusone
% \savebox\??postponednodesstack{\the\c_spac_postponed_data}{\box\b_spac_postponed_data}}
%
-% \unexpanded\def\poppostponednodedata
+% \protected\def\poppostponednodedata
% {\global\setbox\b_spac_postponed_data\hbox{\foundbox\??postponednodesstack{\the\c_spac_postponed_data}}%
% \global\advance\c_spac_postponed_data\minusone
% \ifvoid\b_spac_postponed_data\else
@@ -422,16 +387,16 @@
\newtoks\everyflushatnextpar
-\unexpanded\def\pushpostponednodedata
+\permanent\protected\def\pushpostponednodedata
{\globalpushbox\b_spac_postponed_data}
-\unexpanded\def\poppostponednodedata
+\permanent\protected\def\poppostponednodedata
{\globalpopbox\b_spac_postponed_data
\ifvoid\b_spac_postponed_data\else
\glet\flushpostponednodedata\spac_postponed_data_flush
\fi}
-\unexpanded\def\flushatnextpar
+\permanent\protected\def\flushatnextpar
{\begingroup
\the\everyflushatnextpar
\glet\flushpostponednodedata\spac_postponed_data_flush
@@ -471,7 +436,7 @@
\glet\flushpostponednodedata\relax
}%\fi}
-\unexpanded\def\doflushatpar % might be renamed
+\permanent\protected\def\doflushatpar % might be renamed
{\ifvmode
\expandafter\flushatnextpar
\else