diff options
author | Hans Hagen <pragma@wxs.nl> | 2020-11-23 19:48:34 +0100 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2020-11-23 19:48:34 +0100 |
commit | 18499e46a49b8ccf4346686d1cf626ada33935b8 (patch) | |
tree | bd0ae7b601b323e20954c10c07598637d9403e00 /tex/context/base/mkiv/spac-par.mkxl | |
parent | 4b089e589d39346a66a27d04f9857fe16e4b7b41 (diff) | |
download | context-18499e46a49b8ccf4346686d1cf626ada33935b8.tar.gz |
2020-11-23 18:39:00
Diffstat (limited to 'tex/context/base/mkiv/spac-par.mkxl')
-rw-r--r-- | tex/context/base/mkiv/spac-par.mkxl | 446 |
1 files changed, 0 insertions, 446 deletions
diff --git a/tex/context/base/mkiv/spac-par.mkxl b/tex/context/base/mkiv/spac-par.mkxl deleted file mode 100644 index 524e31bc5..000000000 --- a/tex/context/base/mkiv/spac-par.mkxl +++ /dev/null @@ -1,446 +0,0 @@ -%D \module -%D [ file=spac-par, -%D version=2009.10.16, % 1997.03.31, was core-spa.tex -%D title=\CONTEXT\ Spacing Macros, -%D subtitle=Paragraphs, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. - -\writestatus{loading}{ConTeXt Spacing Macros / Paragraphs} - -\registerctxluafile{spac-par}{autosuffix} - -\unprotect - -% TODO: \appendtoks \strut \wrapuppar{\strut}\to \everypar - -%D New experimental stuff: - -% this might move to syst-ini.mkxl - -\setnewconstant\paragraphupdatecodes\numexpr - \frozentolerancecode - + \frozenloosenesscode - + \frozenlinepenaltycode - + \frozenwidowpenaltycode - + \frozenclubpenaltycode - + \frozenbrokenpenaltycode - + \frozendemeritscode -\relax - -\setnewconstant\paragraphpenaltycodes\numexpr - \frozenlinepenaltycode - + \frozenwidowpenaltycode - + \frozenclubpenaltycode - + \frozenbrokenpenaltycode -\relax - -\setnewconstant\paragraphdemeritcodes\numexpr - \frozendemeritscode -\relax - -\setnewconstant\paragraphshapecodes\numexpr - \frozenhangcode - + \frozenskipcode - + \frozenparfillcode - + \frozenshapecode -\relax - -\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 - -\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 - -\permanent\protected\def\setparagraphfreezing {\enforced\let\spac_paragraph_freeze\freezeparagraphproperties} -\permanent\protected\def\forgetparagraphfreezing{\enforced\let\spac_paragraph_freeze\relax} - -\installcorenamespace {bparwrap} -\installcorenamespace {eparwrap} -\installcorenamespace {parwrapbefore} -\installcorenamespace {parwrapafter} -\installcorenamespace {parwrapcount} - -\let\spac_paragraph_wrap\relax - -\newcount\c_spac_paragraph_group_level - -\protected\def\spac_paragraph_update - {\c_spac_paragraph_group_level\currentgrouplevel\relax - \ifcsname\??bparwrap\the\c_spac_paragraph_group_level\endcsname - \the\lastnamedcs - \relax - \dontleavehmode % just in case - \wrapuppar{\the\csname\??eparwrap\the\c_spac_paragraph_group_level\endcsname\relax}% - \fi} - -\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 - \expandafter\newtoks\csname\??eparwrap\the\currentgrouplevel\endcsname} - -\def\spac_paragraph_install_count#1% - {\expandafter\newcount\csname\??parwrapcount#1\endcsname} - -\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}} - -\def\spac_register_par_wrapper_yes#1#2#3#4#5% - {\ifcsname\??bparwrap\the\currentgrouplevel\endcsname \else - \spac_paragraph_install - \fi - \ifcsname\??parwrapcount#3\endcsname \else - \spac_paragraph_install_count{#3}% - \fi - \ifcsname\??parwrapbefore#3\endcsname \else - \spac_paragraph_install_pair#1#2{#3}% - \fi - #1\csname\??parwrapbefore#3\endcsname{\advance\csname\??parwrapcount#3\endcsname\plusone\relax - \clf_setparwrapper{#3}#4}% - #2\csname\??parwrapafter #3\endcsname{#5}% - \clf_newparwrapper{#3}% - \enforced\let\spac_paragraph_wrap\spac_paragraph_update} - -\def\spac_register_par_wrapper_nop#1#2#3#4#5% - {\ifcsname\??parwrapcount#3\endcsname \else - \spac_paragraph_install_count{#3}% - \fi - \csname\??parwrapcount#3\endcsname\plusone - #4\wrapuppar{#5}} - -\protected\def\spac_register_par_wrapper - {\ifhmode - \expandafter\spac_register_par_wrapper_nop - \else - \expandafter\spac_register_par_wrapper_yes - \fi} - -\permanent\protected\def\forgetparwrapper - {\csname\??bparwrap\the\currentgrouplevel\endcsname\emptytoks - \csname\??eparwrap\the\currentgrouplevel\endcsname\emptytoks} - -\permanent\protected\def\unregisterparwrapper#1% - {\csname\??parwrapcount#1\endcsname\zerocount - \ifcsname\??parwrapbefore#1\endcsname - \lastnamedcs\emptytoks - \csname\??parwrapafter#1\endcsname\emptytoks - \fi} - -\permanent\def\directparwrapper#1#2% - {#1\wrapuppar{#2}} - -\permanent\protected\def\doifelseparwrapper#1% - {\unless\ifcsname\??parwrapcount#1\endcsname - \expandafter\secondoftwoarguments - \orelse\ifcase\lastnamedcs - \expandafter\secondoftwoarguments - \else - \expandafter\firstoftwoarguments - \fi} - -% \getparwrapper % defined in lua -% \lastparwrapper % defined in lua - -\permanent\protected\def\showparwrapperstate#1% - {\begingroup - \infofont ΒΆ#1\hilo - {\smallinfofont\getparwrapper {#1}}% - {\smallinfofont\lastparwrapper{#1}}% - \endgroup} - -%appendtoks\updateparwrapperindeed\to\everypar -%appendtoks\spac_paragraph_wrap \to\everypar -%appendtoks\spac_paragraph_freeze \to\everypar - -\setparagraphfreezing - -\appendtoks\enforced\let\spac_paragraph_wrap\relax\to\everyforgetall - -%D In due time, the code below will be upgraded using the above mechanisms. - -%D The dreadful sequence \type {\bgroup} \unknown\ \type {\carryoverpar} \unknown\ -%D \type {\egroup} is needed when for instance sidefloats are used in combination -%D with something that starts with a group. This is because otherwise the -%D indentation as set (by the output routine) inside the group are forgotten -%D afterwards. (I must not forget its existence). - -\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 - \relax}} - -\permanent\protected\def\pushparagraphproperties - {\edef\currentparagraphproperties{\carryoverpar\relax}% - \pushmacro\currentparagraphproperties} - -\permanent\protected\def\popparagraphproperties - {\popmacro\currentparagraphproperties - \currentparagraphproperties} - -\permanent\protected\def\flushparagraphproperties - {\popmacro\currentparagraphproperties} - -%D Beware, changing this will break some code (like pos/backgrounds) but it has been -%D changed anyway so let's see where things go wrong. - -\installcorenamespace{paragraphintro} - -\let\insertparagraphintro\relax % hook into everypar - -\newtoks\t_spac_paragraphs_intro_first -\newtoks\t_spac_paragraphs_intro_next -\newtoks\t_spac_paragraphs_intro_each - -\newconditional\c_spac_paragraphs_intro_first -\newconditional\c_spac_paragraphs_intro_next -\newconditional\c_spac_paragraphs_intro_each - -\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} - -\letvalue{\??paragraphintro\empty}\gobbleoneargument - -\setvalue{\??paragraphintro\v!reset}#1% - {\global\setfalse\c_spac_paragraphs_intro_first - \global\setfalse\c_spac_paragraphs_intro_next - \global\setfalse\c_spac_paragraphs_intro_each - \global\t_spac_paragraphs_intro_first\emptytoks - \global\t_spac_paragraphs_intro_next \emptytoks - \global\t_spac_paragraphs_intro_each \emptytoks - \glet\insertparagraphintro\relax} - -\setvalue{\??paragraphintro\v!first}#1% - {\global\settrue\c_spac_paragraphs_intro_first - \gtoksapp\t_spac_paragraphs_intro_first{#1}% - \glet\insertparagraphintro\spac_paragraphs_flush_intro} - -\setvalue{\??paragraphintro\v!next}#1% - {\global\settrue\c_spac_paragraphs_intro_next - \gtoksapp\t_spac_paragraphs_intro_next{#1}% - \glet\insertparagraphintro\spac_paragraphs_flush_intro} - -\setvalue{\??paragraphintro\v!each}#1% - {\global\settrue\c_spac_paragraphs_intro_each - \gtoksapp\t_spac_paragraphs_intro_each{#1}% - \glet\insertparagraphintro\spac_paragraphs_flush_intro} - -%D We can say: -%D -%D \starttyping -%D \setupparagraphintro[first][\index{Knuth}] -%D \stoptyping -%D -%D Maybe more convenient is: -%D -%D \starttyping -%D \flushatparagraph{\index{Zapf}} -%D \stoptyping -%D -%D \starttyping -%D \setupparagraphintro[first][\hbox to 3.5em{\tt FIRST \hss}] -%D \setupparagraphintro[first][\hbox to 3.5em{\tt TSRIF \hss}] -%D \setupparagraphintro[next] [\hbox to 3.5em{\tt NEXT \hss}] -%D \setupparagraphintro[next] [\hbox to 3.5em{\tt TXEN \hss}] -%D \setupparagraphintro[each] [\hbox to 3.0em{\tt EACH \hss}] -%D \setupparagraphintro[each] [\hbox to 3.0em{\tt HCEA \hss}] -%D -%D some paragraph \par -%D some paragraph \par -%D some paragraph \par -%D some paragraph \par -%D -%D \setupparagraphintro[first][\hbox to 3.5em{\tt FIRST \hss}] -%D \setupparagraphintro[first][\hbox to 3.5em{\tt TSRIF \hss}] -%D -%D some paragraph \par -%D some paragraph \par -%D -%D \setupparagraphintro[reset] -%D -%D some paragraph \par -%D \stoptyping - -\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} - -%D Here comes the flusher (we misuse the one level expansion of token registers to -%D feed a nice stream into the paragraph.) - -\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 - \glet\insertparagraphintro\spac_paragraphs_flush_intro_next - \else - \glet\insertparagraphintro\spac_paragraphs_flush_intro_each - \fi - \ifconditional\c_spac_paragraphs_intro_first - \global\setfalse\c_spac_paragraphs_intro_first - \global\t_spac_paragraphs_intro_first\emptytoks - \the\t_spac_paragraphs_intro_first - \fi - \the\t_spac_paragraphs_intro_each - \else - \ifconditional\c_spac_paragraphs_intro_next - \glet\insertparagraphintro\spac_paragraphs_flush_intro_next - \fi - \ifconditional\c_spac_paragraphs_intro_first - \global\setfalse\c_spac_paragraphs_intro_first - \global\t_spac_paragraphs_intro_first\emptytoks - \the\t_spac_paragraphs_intro_first - \fi - \fi}} - -\protected\def\spac_paragraphs_flush_intro_next - {\normalexpanded{% - \global\setfalse\c_spac_paragraphs_intro_next - \global\t_spac_paragraphs_intro_next\emptytoks - \ifconditional\c_spac_paragraphs_intro_each - \glet\insertparagraphintro\spac_paragraphs_flush_intro_each - \the\t_spac_paragraphs_intro_next - \the\t_spac_paragraphs_intro_each - \else - \glet\insertparagraphintro\relax - \the\t_spac_paragraphs_intro_next - \fi}} - -\protected\def\spac_paragraphs_flush_intro_each - {\the\t_spac_paragraphs_intro_each} - -%D \macros -%D {flushatnextpar} -%D -%D This macro collects data that will be flushed at the next paragraph. By using -%D this macro you can avoid interfering nodes (writes, etc). - -\let\flushpostponednodedata\relax % hook into everypar - -\newbox \b_spac_postponed_data -%newcount\c_spac_postponed_data - -% \installcorenamespace {postponednodesstack} -% -% \initializeboxstack\??postponednodesstack -% -% \protected\def\pushpostponednodedata -% {\global\advance\c_spac_postponed_data\plusone -% \savebox\??postponednodesstack{\the\c_spac_postponed_data}{\box\b_spac_postponed_data}} -% -% \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 -% \glet\flushpostponednodedata\spac_postponed_data_flush -% \fi} - -\newtoks\everyflushatnextpar - -\permanent\protected\def\pushpostponednodedata - {\globalpushbox\b_spac_postponed_data} - -\permanent\protected\def\poppostponednodedata - {\globalpopbox\b_spac_postponed_data - \ifvoid\b_spac_postponed_data\else - \glet\flushpostponednodedata\spac_postponed_data_flush - \fi} - -\permanent\protected\def\flushatnextpar - {\begingroup - \the\everyflushatnextpar - \glet\flushpostponednodedata\spac_postponed_data_flush - \dowithnextboxcs\spac_postponed_data_finish\hpack} - -% \def\spac_postponed_data_finish -% {\global\setbox\b_spac_postponed_data\hpack % to\zeropoint -% {\box\b_spac_postponed_data\box\nextbox}% -% \endgroup} -% -% This is better when used with protrusion which does not like too deeply nested -% boxes: -% -% \def\spac_postponed_data_finish -% {\dontcomplain -% \global\setbox\b_spac_postponed_data\hpack to \zeropoint -% {\unhbox\b_spac_postponed_data\unhbox\nextbox}% -% \endgroup} -% -% We could do this if there is content with widths ... not that is should be used -% that way, but this way we don't overflow: - -\def\spac_postponed_data_finish - {\dontcomplain - \global\setbox\b_spac_postponed_data\hpack % to \zeropoint - {\unhbox\b_spac_postponed_data - \scratchdimen\wd\nextbox - \unhbox\nextbox - \ifcase\scratchdimen\else\kern-\b_spac_postponed_data\fi}% - \endgroup} - -\def\spac_postponed_data_flush - {%\iftrialtypesetting \else - \ifvoid\b_spac_postponed_data\else - \hpack{\smashedbox\b_spac_postponed_data}% \box\b_spac_postponed_data - \fi - \glet\flushpostponednodedata\relax - }%\fi} - -\permanent\protected\def\doflushatpar % might be renamed - {\ifvmode - \expandafter\flushatnextpar - \else - \expandafter\firstofoneargument - \fi} - -\protect \endinput |