summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/spac-hor.mkxl
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2020-11-23 19:48:34 +0100
committerContext Git Mirror Bot <phg@phi-gamma.net>2020-11-23 19:48:34 +0100
commit18499e46a49b8ccf4346686d1cf626ada33935b8 (patch)
treebd0ae7b601b323e20954c10c07598637d9403e00 /tex/context/base/mkiv/spac-hor.mkxl
parent4b089e589d39346a66a27d04f9857fe16e4b7b41 (diff)
downloadcontext-18499e46a49b8ccf4346686d1cf626ada33935b8.tar.gz
2020-11-23 18:39:00
Diffstat (limited to 'tex/context/base/mkiv/spac-hor.mkxl')
-rw-r--r--tex/context/base/mkiv/spac-hor.mkxl1259
1 files changed, 0 insertions, 1259 deletions
diff --git a/tex/context/base/mkiv/spac-hor.mkxl b/tex/context/base/mkiv/spac-hor.mkxl
deleted file mode 100644
index b6f92947e..000000000
--- a/tex/context/base/mkiv/spac-hor.mkxl
+++ /dev/null
@@ -1,1259 +0,0 @@
-%D \module
-%D [ file=spac-hor,
-%D version=2009.10.16, % 1997.03.31, was core-spa.tex
-%D title=\CONTEXT\ Spacing Macros,
-%D subtitle=Horizontal,
-%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 / Horizontal}
-
-\unprotect
-
-\registerctxluafile{spac-hor}{}
-
-\let\parfillrightskip\parfillskip
-
-\bitwiseflip \normalizelinemode \parindentskipcode
-\bitwiseflip \normalizelinemode \normalizelinecode
-
-\let\v_spac_indentation_current\empty % amount/keyword
-
-\newdimen \d_spac_indentation_par
-\parindent\d_spac_indentation_par % for the show
-
-\newconditional\c_spac_indentation_indent_first \settrue\c_spac_indentation_indent_first
-\newconstant \c_spac_indentation_toggle_state
-
-%D After a blank or comparable situation (left side floats) we
-%D need to check if the next paragraph has to be indented.
-
-\permanent\protected\def\presetindentation
- {\doifoutervmode{\ifconditional\c_spac_indentation_indent_first\else\spac_indentation_variant_no\fi}}
-
-\permanent\protected\def\setupindenting
- {\doifelsenextoptionalcs\spac_indentation_setup_options\spac_indentation_setup_size}
-
-\protected\def\spac_indentation_setup_size
- {\assigndimension\v_spac_indentation_current\d_spac_indentation_par{1\emwidth}{1.5\emwidth}{2\emwidth}%
- \ifzeropt\parindent\else
- \parindent\d_spac_indentation_par\relax % new per 2019-04-12 : just in case it has been set beforehand
- \fi}
-
-\let\synchronizeindenting\spac_indentation_setup_size
-
-\let\m_spac_indentation_options\empty
-
-\def\spac_indentation_setup_options[#1]%
- {\edef\m_spac_indentation_options{#1}% comma separated list
- \ifempty\m_spac_indentation_options \else
- \spac_indentation_setup_indeed
- \fi}
-
-\def\spac_indentation_setup_indeed
- {% not here: \settrue\c_spac_indentation_indent_first
- % not here: \parindent\d_spac_indentation_par
- % not here: \c_spac_indentation_toggle_state\zerocount
- \processcommacommand[\m_spac_indentation_options]\spac_indentation_apply_step_one % catch small, medium, etc
- \processcommacommand[\m_spac_indentation_options]\spac_indentation_apply_step_two % catch rest
- \ifzeropt\parindent\else
- \doifemptytoks\everypar\spac_indentation_set_everypar
- \fi
- \ifconditional\c_spac_indentation_indent_first
- \spac_indentation_variant_yes % better than: \let\checkindentation\relax
- \else
- \spac_indentation_variant_no
- \fi
- \spac_indentation_check_toggle}
-
-\def\spac_indentation_set_everypar
- {\everypar{\checkindentation}}
-
-\permanent\protected\def\useindentingparameter#1% faster local variant
- {\edef\m_spac_indentation_options{#1\c!indenting}%
- \ifempty\m_spac_indentation_options \else
- \spac_indentation_setup_indeed
- \fi}
-
-% \def\spac_indentation_apply_step_one#1%
-% {\ifcsname\??indentingmethod#1\endcsname
-% % case two
-% \else
-% \edef\v_spac_indentation_current{#1}% single entry in list
-% \let\normalindentation\v_spac_indentation_current
-% \spac_indentation_setup_size
-% \fi}
-%
-% \def\spac_indentation_apply_step_two#1%
-% {\ifcsname\??indentingmethod#1\endcsname
-% \csname\??indentingmethod#1\endcsname
-% \else
-% % case one
-% \fi}
-
-% \defineindenting[whatever][yes,2cm]
-% %defineindenting[whatever][yes,-2cm]
-%
-% \setupindenting[yes,-2em] \input ward \par
-% \setupindenting[yes,2em] \input ward \par
-% \setupindenting[whatever] \input ward \par
-
-\installcorenamespace {indentingpreset}
-
-\permanent\tolerant\protected\def\defineindenting[#1]#*[#2]% todo: mixes
- {\ifarguments\else\setevalue{\??indentingpreset#1}{#2}\fi}
-
-\def\spac_indentation_apply_step_one_nested
- {\expandafter\processcommacommand\expandafter[\lastnamedcs]\spac_indentation_apply_step_one}
-
-\def\spac_indentation_apply_step_two_nested
- {\expandafter\processcommacommand\expandafter[\lastnamedcs]\spac_indentation_apply_step_two}
-
-\def\spac_indentation_apply_step_one#1%
- {\ifcsname\??indentingpreset#1\endcsname
- \spac_indentation_apply_step_one_nested
- \orelse\ifcsname\??indentingmethod#1\endcsname
- % case two
- \else
- \edef\v_spac_indentation_current{#1}% single entry in list
- \let\normalindentation\v_spac_indentation_current
- \spac_indentation_setup_size
- \fi}
-
-\def\spac_indentation_apply_step_two#1%
- {\ifcsname\??indentingpreset#1\endcsname
- \spac_indentation_apply_step_two_nested
- \orelse\ifcsname\??indentingmethod#1\endcsname
- \lastnamedcs
- \else
- % case one
- \fi}
-
-\permanent\protected\def\indenting % kind of obsolete
- {\doifelsenextoptionalcs\spac_indentation_setup_options\relax}
-
-% use \noindentation to suppress next indentation
-
-\installcorenamespace{indentingmethod}
-
-\permanent\protected\def\installindentingmethod#1#2%
- {\setvalue{\??indentingmethod#1}{#2}}
-
-\installindentingmethod \v!no {\parindent\zeropoint}
-\installindentingmethod \v!not {\parindent\zeropoint}
-
-\installindentingmethod \v!first {\settrue\c_spac_indentation_indent_first}
-\installindentingmethod \v!next {\setfalse\c_spac_indentation_indent_first}
-
-\installindentingmethod \v!yes {\parindent\d_spac_indentation_par\relax} % not \indent !
-\installindentingmethod \v!always{\parindent\d_spac_indentation_par\relax} % not \indent !
-
-\installindentingmethod \v!never {\parindent\zeropoint\relax % no \indent !
- \c_spac_indentation_toggle_state\zerocount}
-
-\installindentingmethod \v!odd {\c_spac_indentation_toggle_state\plusone}
-\installindentingmethod \v!even {\c_spac_indentation_toggle_state\plustwo}
-
-\installindentingmethod \v!normal{\ifempty\normalindentation\else
- \let\v_spac_indentation_current\normalindentation
- \spac_indentation_setup_size
- \fi}
-
-\installindentingmethod \v!reset {\settrue\c_spac_indentation_indent_first
- \parindent\zeropoint
- \c_spac_indentation_toggle_state\zerocount}
-
-\installindentingmethod \v!toggle{\parindent\ifzeropt\parindent
- \d_spac_indentation_par
- \else
- \zeropoint
- \fi\relax}
-
-\permanent\protected\def\noindenting{\indenting[\v!no, \v!next ]}
-\permanent\protected\def\doindenting{\indenting[\v!yes,\v!first]}
-
-%D Here come the handlers (still rather messy ... we need states).
-
-%newif\ifindentation \indentationtrue % will become a mode
-
-\aliased\let\checkindentation\relax
-
-\installmacrostack\checkindentation
-
-\def\spac_indentation_remove
- {\ifzeropt\parindent \else
- \begingroup
- \setbox\scratchbox\lastbox
- \endgroup
- \fi}
-
-\def\spac_indentation_kill_indeed
- {%\global\indentationfalse
- \spac_indentation_remove}
-
-\permanent\protected\def\spac_indentation_do_toggle_indeed
- {%\global\indentationfalse
- \enforced\glet\checkindentation\spac_indentation_no_toggle_indeed
- \spac_indentation_remove}
-
-\permanent\protected\def\spac_indentation_no_toggle_indeed
- {%\global\indentationtrue
- \enforced\glet\checkindentation\spac_indentation_do_toggle_indeed}
-
-\permanent\protected\def\spac_indentation_do_indeed
- {}%\global\indentationtrue}
-
-\permanent\protected\def\spac_indentation_do_toggle
- {\enforced\glet\checkindentation\spac_indentation_do_toggle_indeed}
-
-\permanent\protected\def\spac_indentation_no_toggle
- {\enforced\glet\checkindentation\spac_indentation_no_toggle_indeed}
-
-\permanent\protected\def\spac_indentation_check_toggle
- {\ifcase\c_spac_indentation_toggle_state
- % nothing
- \or
- \spac_indentation_no_toggle
- \or
- \spac_indentation_do_toggle
- \fi}
-
-\permanent\protected\def\spac_indentation_variant_yes
- {\enforced\glet\checkindentation\spac_indentation_do_indeed}
-
-\permanent\protected\def\spac_indentation_no_next_check
- {\spac_indentation_remove
- \enforced\glet\checkindentation\spac_indentation_do_indeed}
-
-\permanent\protected\def\spac_indentation_variant_no % made global
- {\ifinpagebody \else
- %\global\indentationfalse
- \enforced\glet\checkindentation\spac_indentation_no_next_check
- \fi}
-
-\permanent\protected\def\nonoindentation % bv bij floats
- {\ifinpagebody \else
- %\global\indentationtrue
- \enforced\glet\checkindentation\spac_indentation_do_indeed
- \fi}
-
-\permanent\protected\def\spac_indentation_variant_force
- {\ifvmode \ifzeropt\parindent \else
- % was : \hskip\parindent
- % can be: \indent
- % but we test:
- \noindent\hskip\parindent
- \fi \fi}
-
-% public:
-
-\aliased\let\indentation \spac_indentation_variant_force
-\aliased\let\noindentation\spac_indentation_variant_no % public
-\aliased\let\doindentation\spac_indentation_variant_yes % public
-
-\permanent\protected\def\dontrechecknextindentation % public (in macros)
- {\global\enforced\let\dorechecknextindentation\relax}
-
-\aliased\let\dorechecknextindentation\relax % public (in macros)
-
-\permanent\protected\protected\def\spac_indentation_check_next_indentation
- {\global\enforced\let\dorechecknextindentation\relax
- \doifelsenextchar\par\donothing\spac_indentation_variant_no} % messy check as next is seldom \par
-
-\def\spac_indentation_variant_auto
- {\global\enforced\let\dorechecknextindentation\spac_indentation_check_next_indentation}
-
-%D This one sets up the local indentation behaviour (i.e. either or not
-%D a next paragraph will be indented).
-
-\installcorenamespace{indentnext}
-
-\permanent\protected\def\checknextindentation[#1]%
- {\begincsname\??indentnext#1\endcsname}
-
-\permanent\protected\def\useindentnextparameter#1% new, the more efficient variant
- {\edef\p_indentnext{#1\c!indentnext}%
- \ifempty\p_indentnext\else
- \begincsname\??indentnext\p_indentnext\endcsname
- \fi}
-
-\letvalue{\??indentnext }\donothing
-\letvalue{\??indentnext\v!yes }\spac_indentation_variant_yes
-\letvalue{\??indentnext\v!no }\spac_indentation_variant_no
-\letvalue{\??indentnext\v!auto}\spac_indentation_variant_auto
-
-%D An example of usage:
-%D
-%D \starttyping
-%D \setupindenting[small,yes]
-%D
-%D \setupitemize [indentnext=auto]
-%D \setuptyping [indentnext=auto]
-%D \setupformulas[indentnext=auto]
-%D
-%D \input tufte \startitemize \item itemize \stopitemize
-%D \input tufte \startitemize \item itemize \stopitemize
-%D \input tufte \startitemize \item itemize \stopitemize
-%D
-%D \page
-%D
-%D \input tufte
-%D \starttyping
-%D verbatim
-%D \stoptyping
-%D
-%D \input tufte
-%D \starttyping
-%D verbatim
-%D \stoptyping
-%D
-%D \input tufte
-%D \starttyping
-%D verbatim
-%D \stoptyping
-%D
-%D \page
-%D
-%D \input tufte \startformula a = b \stopformula
-%D \input tufte \startformula a = b \stopformula
-%D \input tufte \startformula a = b \stopformula
-%D \stoptyping
-
-% maybe an everyforgetparindent
-
-\permanent\protected\def\forgetparindent
- {\settrue\c_spac_indentation_indent_first % recently added
- \d_spac_indentation_par\zeropoint
- \parindent\zeropoint
- \let\v_spac_indentation_current\v!none}
-
-\appendtoks
- \forgetparindent
-\to \everyforgetall
-
-\permanent\protected\def\forgethorizontalstretch
- {\emergencystretch\zeropoint}
-
-\appendtoks
- \forgethorizontalstretch
-\to \everyforgetall % needed in pagebody
-
-%D Helper:
-
-\permanent\protected\def\softbreak
- {\relax\ifhmode\hskip\parfillskip\break\fi}
-
-%D \macros
-%D {frenchspacing,nonfrenchspacing}
-%D
-%D Somehow \type{\frenchspacing} can lead to hyphenation between dashes so we now
-%D have \type {\newfrenchspacing} (moved from \type {syst-chr}). Maybe it's not
-%D needed any more.
-
-%D Hm ... todo:
-
-\installcorenamespace{spacecodemethod}
-
-\sfcode`\)=\zerocount
-\sfcode`\'=\zerocount
-\sfcode`\]=\zerocount
-
-\def\spac_spacecodes_set_fixed#1%
- {\sfcode`\.#1\relax \sfcode`\,#1\relax
- \sfcode`\?#1\relax \sfcode`\!#1\relax
- \sfcode`\:#1\relax \sfcode`\;#1\relax}
-
-\def\spac_spacecodes_set_stretch
- {\sfcode`\.3000 \sfcode`\,1250
- \sfcode`\?3000 \sfcode`\!3000
- \sfcode`\:2000 \sfcode`\;1500 }
-
-\permanent\protected\def\frenchspacing {\spac_spacecodes_set_fixed\plusthousand}
-\permanent\protected\def\newfrenchspacing{\spac_spacecodes_set_fixed{1050}}
-\permanent\protected\def\nonfrenchspacing{\spac_spacecodes_set_stretch}
-
-\permanent\protected\def\installspacingmethod#1#2{\setvalue{\??spacecodemethod#1}{#2}}
-
-\installspacingmethod \empty {} % keep values
-\installspacingmethod \v!fixed {\frenchspacing } % equal spaces everywhere
-\installspacingmethod \v!packed {\newfrenchspacing} % slighly more after punctuation
-\installspacingmethod \v!broad {\nonfrenchspacing} % more depending on what punctuation
-
-%% \permanent\protected\def\setupspacing
-%% {\doifelsenextoptionalcs\spac_spacecodes_setup_yes\spac_spacecodes_setup_nop}
-%%
-%% \def\spac_spacecodes_setup_yes[#1]%
-%% {\begincsname\??spacecodemethod#1\endcsname
-%% \updateraggedskips}
-%%
-%% \def\spac_spacecodes_setup_nop
-%% {\updateraggedskips}
-
-\permanent\tolerant\protected\def\setupspacing[#1]%
- {\ifarguments\or
- \begincsname\??spacecodemethod#1\endcsname
- \fi
- \updateraggedskips}
-
-%D Here's a tweak .. if needed one can configure it in the configuration
-%D so that initialization happens more efficient.
-%D
-%D \starttyping
-%D \startoverlay
-%D {
-%D \green
-%D \enabledirectives[characters.spaceafteruppercase=normal]%
-%D \vbox{\hsize 5em x. X\par x.\ X\par X. X\par X.\ X\par}
-%D } {
-%D \blue
-%D \enabledirectives[characters.spaceafteruppercase=traditional]%
-%D \vbox{\hsize 5em x. X\par x.\ X\par X. X\par X.\ X\par}
-%D }
-%D \stopoverlay
-%D \stoptyping
-
-% This is not needed, as \updateraggedskips is taking care of it:
-
-\permanent\protected\def\synchronizespacecodes{\updateraggedskips}
-
-% \dorecurse{100}{\recurselevel\spacefactor 800 \space} \par
-% \dorecurse{100}{\recurselevel\spacefactor1200 \space} \par
-% \dorecurse{100}{\recurselevel\spacefactor 800 \normalspaceprimitive} \par
-% \dorecurse{100}{\recurselevel\spacefactor1200 \normalspaceprimitive} \par
-
-% When we don't add the % here, we effectively get \<endlinechar> and
-% since we have by default \def\^^M{\ } we get into a loop.
-
-\let\normalspaceprimitive=\ % space-comment is really needed
-
-%D As the \type{\ } is convenient in:
-%D
-%D \starttyping
-%D \TEX\space x\crlf
-%D \TEX\ x\crlf
-%D \TEX{} x\crlf
-%D \stoptyping
-%D
-%D from now on we treat it as a normal space and not as a space with \type
-%D {sfcode} 1000.
-
-\permanent\protected\def\specialspaceprimitive
- {\begingroup
- % so, no fancy extra spacing after: foo i.e.\ bar
- \nonfrenchspacing\normalspaceprimitive
- \endgroup}
-
-\permanent\protected\def\normalnotobeyedspace
- {\mathortext\normalspaceprimitive\specialspaceprimitive} % no \dontleavehmode\space (else no frenchspacing)
-
-\pushoverloadmode
-
-\overloaded\let\ =\normalnotobeyedspace % so we redefine the primitive!
-
-\popoverloadmode
-
-% Because I strip spaces at the end of lines (in the editor) we need a bit of
-% a trick to define slash+newline, so \space and \<newline> are the same
-
-% We need to be careful with \ and \space and the definition of ~ which uses \ as
-% we need to associate unicode spacing with it. There is some messy aspect that
-% I forgot to note down so I will revision the \ once I ran into it again.
-
-% \ruledhbox spread 10pt {\frenchspacing xx xx\ X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx xx\ X}
-% \ruledhbox spread 10pt {\frenchspacing xx xx X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx xx X}
-% \ruledhbox spread 10pt {\frenchspacing xx xx~X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx xx~X}
-
-% \ruledhbox spread 10pt {\frenchspacing xx dr.\ X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx dr.\ X}
-% \ruledhbox spread 10pt {\frenchspacing xx dr. X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx dr. X}
-% \ruledhbox spread 10pt {\frenchspacing xx dr.~X}
-% \ruledhbox spread 10pt {\nonfrenchspacing xx dr.~X}
-
-\permanent\protected\def\nonbreakablespace{\penalty\plustenthousand\normalspaceprimitive} % no space in math
-
-\letcatcodecommand \ctxcatcodes \tildeasciicode \nonbreakablespace % overloaded later
-
-% \def\space { }
-\permanent\protected\def\removelastspace{\ifhmode\unskip\fi}
-\permanent\protected\def\nospace {\removelastspace\ignorespaces}
-
-\ifdefined\nospaces
- \permanent\protected\def\nospacing{\normalnospaces\plusone}
- \permanent\protected\def\dospacing{\normalnospaces\zerocount}
-\else
- \permanent\protected\def\nospacing{\spaceskip\scaledpoint \xspaceskip\zeropoint}
- \permanent\protected\def\dospacing{\spaceskip\currentspaceskip\xspaceskip\zeropoint} % what
-\fi
-
-\ifdefined\softhyphen \else
- \let\softhyphen\explicitdiscretionary
-\fi
-
-% todo:
-
-\cldcontext{"\string\\protected\string\\def\string\\\string\n{\string\\space}"}
-%cldcontext{"\string\\let\string\\\string\n=\string\\space"}
-
-% in tables we need:
-%
-% \def\fixedspace {\hskip.5em\relax}
-%
-% but, since not all fonts have .5em digits:
-
-\permanent\protected\def\fixedspace
- {\setbox\scratchbox\hpack{\mathortext{0}{0}}% was \hbox
- \hskip\wd\scratchbox\relax}
-
-\permanent\protected\def\fixedspaces
- {\letcatcodecommand \ctxcatcodes \tildeasciicode\fixedspace
- \enforced\let~\fixedspace} % we need to renew it
-
-\appendtoks
- \enforced\let~\space
- \enforced\let\ \space
-\to \everysimplifycommands
-
-\newsignal\d_spac_keep_unwanted_space_signal
-
-% \parindentmode\plusone
-
-\permanent\protected\def\keepunwantedspaces
- {\ifhmode
- \ifdim\lastskip=\d_spac_keep_unwanted_space_signal\else
- \hskip\d_spac_keep_unwanted_space_signal\relax
- \fi
- \fi}
-
-\permanent\protected\def\removeunwantedspaces
- {\ifhmode
- \expandafter \spac_helpers_remove_unwantedspace
- \fi}
-
-\def\spac_helpers_remove_unwantedspace
- {\ifnum\lastnodetype=\gluenodecode\relax
- \ifnum\lastnodesubtype=\indentskipsubtypecode\relax
- % keep parindent
- \orelse\ifdim\lastskip=\d_spac_keep_unwanted_space_signal\relax
- \unskip
- \else
- \unskip
- \doubleexpandafter\spac_helpers_remove_unwantedspace
- \fi
- \fi}
-
-\permanent\protected\def\onlynonbreakablespace
- {\ifdim\lastskip=\interwordspace
- \unskip
- \nonbreakablespace
- \fi
- \ignorespaces}
-
-% \startbuffer
-% \startlines \tt \fixedspaces
-% 0~1~~2~~~3~~~~4~~~~~5
-% 0~~~~~~~~~~~~~~~~~~~5
-% $0~1~~2~~~3~~~~4~~~~~5$
-% $0~~~~~~~~~~~~~~~~~~~5$
-% \stoplines
-%
-% \starttabulate[|~|]
-% \NC 0~1~~2~~~3~~~~4~~~~~5 \NC \NR \NC 0~~~~~~~~~~~~~~~~~~~5 \NC \NR
-% \NC $0~1~~2~~~3~~~~4~~~~~5$ \NC \NR \NC $0~~~~~~~~~~~~~~~~~~~5$ \NC \NR
-% \stoptabulate
-%
-% \starttable[||]
-% \NC 0~1~~2~~~3~~~~4~~~~~5 \NC \AR \NC 0~~~~~~~~~~~~~~~~~~~5 \NC \AR
-% \NC $0~1~~2~~~3~~~~4~~~~~5$ \NC \AR \NC $0~~~~~~~~~~~~~~~~~~~5$ \NC \AR
-% \stoptable
-% \stopbuffer
-%
-% \setupbodyfont[cmr] \getbuffer
-% \setupbodyfont[lbr] \getbuffer
-
-%D A couple of plain macros:
-
-\ifdefined\enspace \else \permanent\protected\def\enspace{\kern .5\emwidth} \fi
-\ifdefined\quad \else \permanent\protected\def\quad {\hskip \emwidth\relax} \fi
-\ifdefined\enskip \else \permanent\protected\def\enskip {\hskip.5\emwidth\relax} \fi
-\ifdefined\qquad \else \permanent\protected\def\qquad {\hskip 2\emwidth\relax} \fi
-
-\permanent\protected\def\negenspace{\kern-.5\emwidth}
-\permanent\protected\def\negemspace{\kern- \emwidth}
-
-\let\emspace\quad
-
-\permanent\protected\def\charspace{ } % the unexpandable \space (as space can also be delimiter for numbers)
-
-\permanent\tolerant\protected\def\quads[#1]% we do robust checking
- {\dontleavehmode
- \begingroup
- %\scratchcounter\ifparameter#1\or#1\else\plusthree\fi
- \scratchcounter\ifchknum#1\or#1\else\plusthree\fi
- \zwj\dorecurse\scratchcounter{\hskip\emwidth\zwj}%
- \endgroup}
-
-% Suggested by GB (not the name -):
-
-\def\rapfillskip{.5\hsize plus .092\hsize minus .5\hsize} % D.A.'s value
-
-% Bovendien definieren we enkele extra \fill's:
-
-\newskip\s_spac_fil \s_spac_fil = \zeropoint \s!plus 1\s!fil \relax
-\newskip\s_spac_fill \s_spac_fill = \zeropoint \s!plus 1\s!fill \relax
-\newskip\s_spac_filll \s_spac_filll = \zeropoint \s!plus 1\s!filll\relax
-
-\newskip\s_spac_neg_fil \s_spac_neg_fil = \zeropoint \s!plus-1\s!fil \relax
-\newskip\s_spac_neg_fill \s_spac_neg_fill = \zeropoint \s!plus-1\s!fill \relax
-\newskip\s_spac_neg_filll \s_spac_neg_filll = \zeropoint \s!plus-1\s!filll\relax
-
-\permanent\protected\def\hfilll {\hskip\s_spac_filll\relax}
-\permanent\protected\def\vfilll {\vskip\s_spac_filll\relax}
-
-\permanent\protected\def\hfillneg {\hskip\s_spac_neg_fill \relax}
-\permanent\protected\def\hfilllneg{\hskip\s_spac_neg_filll\relax}
-\permanent\protected\def\vfillneg {\vskip\s_spac_neg_fill \relax}
-\permanent\protected\def\vfilllneg{\vskip\s_spac_neg_filll\relax}
-
-\permanent\protected\def\tfskip {\begingroup\tf\hskip\emwidth\endgroup}
-\permanent\protected\def\dotfskip#1{\begingroup\tf\hskip #1\endgroup} % used elsewhere
-
-% maybe we should hash the analysis
-
-\installcorenamespace{narrower}
-\installcorenamespace{narrowermethod}
-
-\newskip\s_spac_narrower_left
-\newskip\s_spac_narrower_right
-\newskip\s_spac_narrower_middle
-
-\installcommandhandler \??narrower {narrower} \??narrower
-
-\setupnarrower
- [\c!before=\endgraf,
- \c!after=\endgraf,
- \c!left=1.5\emwidth,
- \c!right=1.5\emwidth,
- \c!middle=1.5\emwidth,
- \c!default=\v!middle]
-
-\appendtoks
- \frozen\instance\setuevalue{\e!start\currentnarrower}{\spac_narrower_start[\currentnarrower]}%
- \frozen\instance\setuevalue{\e!stop \currentnarrower}{\spac_narrower_stop}%
-\to \everydefinenarrower
-
-\permanent\protected\def\installnarrowermethod#1#2%
- {\setvalue{\??narrowermethod#1}{#2}}
-
-\protected\def\spac_narrower_method_analyze#1%
- {\ifcsname\??narrowermethod#1\endcsname
- \lastnamedcs
- \else
- \global\advance\s_spac_narrower_middle#1\relax
- \fi}
-
-\def\spac_narrower_initialize[#1]% hm, can be dorepeat directly
- {\dorepeatwithcommand[#1]\spac_narrower_method_analyze}
-
-\installnarrowermethod \v!left {\global\advance\s_spac_narrower_left \narrowerparameter\c!left \relax}
-\installnarrowermethod \v!middle {\global\advance\s_spac_narrower_middle \narrowerparameter\c!middle\relax}
-\installnarrowermethod \v!right {\global\advance\s_spac_narrower_right \narrowerparameter\c!right \relax}
-\installnarrowermethod{-\v!left }{\global\advance\s_spac_narrower_left -\narrowerparameter\c!left \relax}
-\installnarrowermethod{-\v!middle}{\global\advance\s_spac_narrower_middle-\narrowerparameter\c!middle\relax}
-\installnarrowermethod{-\v!right }{\global\advance\s_spac_narrower_right -\narrowerparameter\c!right \relax}
-\installnarrowermethod \v!reset {\global \s_spac_narrower_left \zeropoint
- \global \s_spac_narrower_middle \zeropoint
- \global \s_spac_narrower_right \zeropoint\relax}
-\installnarrowermethod \v!none {}
-\installnarrowermethod \v!reverse {} % never seen
-
-\permanent\overloaded\tolerant\protected\def\spac_narrower_start[#1]#*[#2]%
- {\begingroup
- \edef\currentnarrower{#1}%
- \ifparameter#2\or
- \spac_narrower_start_apply{#2}%
- \else
- \spac_narrower_start_apply{\narrowerparameter\v!default}%
- \fi}
-
-\newskip \s_spac_narrower_left_last
-\newskip \s_spac_narrower_right_last
-\newconditional\s_spac_narrower_last_swap
-
-\def\spac_narrower_start_apply#1%
- {\narrowerparameter\c!before
- \global\s_spac_narrower_left \zeropoint
- \global\s_spac_narrower_right \zeropoint
- \global\s_spac_narrower_middle\zeropoint
- \edef\askednarrower{#1}%
- \ifx\askednarrower\v!reverse
- \ifconditional\s_spac_narrower_last_swap
- \permanent\leftskip \s_spac_narrower_right_last
- \permanent\rightskip\s_spac_narrower_left_last
- \setfalse\s_spac_narrower_last_swap
- \else
- \permanent\leftskip \s_spac_narrower_left_last
- \permanent\rightskip\s_spac_narrower_right_last
- \settrue\s_spac_narrower_last_swap
- \fi
- \else
- \normalexpanded{\processcommalistwithparameters[\askednarrower]}\spac_narrower_initialize
- \permanent\advance\leftskip \dimexpr\s_spac_narrower_left +\s_spac_narrower_middle\relax
- \permanent\advance\rightskip\dimexpr\s_spac_narrower_right+\s_spac_narrower_middle\relax
- \fi
- \seteffectivehsize}
-
-\permanent\protected\def\spac_narrower_stop
- {\narrowerparameter\c!after
- \normalexpanded{%
- \endgroup
- \s_spac_narrower_left_last \the\leftskip \relax
- \s_spac_narrower_right_last\the\rightskip\relax
- \ifconditional\s_spac_narrower_last_swap
- \setfalse\s_spac_narrower_last_swap
- \else
- \settrue\s_spac_narrower_last_swap
- \fi
- }}
-
-%% \permanent\protected\def\startnarrower
-%% {\dosingleempty\spac_narrower_start_basic}
-%%
-%% \protected\def\spac_narrower_start_basic[#1]%
-
-\permanent\tolerant\protected\def\startnarrower[#1]%
- {\begingroup
- \let\currentnarrower\empty
- \ifparameter#1\or
- \spac_narrower_start_apply{#1}%
- \else
- \spac_narrower_start_apply{\narrowerparameter\v!default}%
- \fi}
-
-\let\stopnarrower\spac_narrower_stop
-
-%% \protected\def\startnarrow % current how
-%% {\begingroup
-%% \dodoubleempty\spac_narrower_start_named}
-%%
-%% \def\spac_narrower_start_named
-%% {\ifsecondargument
-%% \expandafter\spac_narrower_start_named_two
-%% \else
-%% \expandafter\spac_narrower_start_named_one
-%% \fi}
-
-% can be cleaned up more ... todo
-
-\permanent\tolerant\protected\def\startnarrow[#1]#*[#2]% current how
- {\begingroup
- \ifnum\lastarguments=\plustwo
- \expandafter\spac_narrower_start_named_two
- \else
- \expandafter\spac_narrower_start_named_one
- \fi[#1][#2]}
-
-\def\spac_narrower_start_named_one[#1]%
- {\doifelseassignment{#1}\spac_narrower_start_named_one_yes\spac_narrower_start_named_one_nop[#1]}
-
-\def\spac_narrower_start_named_one_yes[#1][#2]% [settings] []
- {\setupcurrentnarrower[#1]%
- \spac_narrower_start_apply{\narrowerparameter\v!default}}
-
-\def\spac_narrower_start_named_one_nop[#1][#2]% [tag] []
- {\edef\currentnarrower{#1}%
- \spac_narrower_start_apply{\narrowerparameter\v!default}}
-
-\def\spac_narrower_start_named_two[#1]%
- {\doifelseassignment{#1}\spac_narrower_start_named_settings_how\spac_narrower_start_named_tag_unknown[#1]}
-
-\def\spac_narrower_start_named_settings_how[#1][#2]% [settings] [how]
- {\setupcurrentnarrower[#1]%
- \spac_narrower_start_apply{#2}}
-
-\def\spac_narrower_start_named_tag_unknown[#1][#2]% [tag] [...]
- {\doifelseassignment{#2}\spac_narrower_start_named_tag_settings\spac_narrower_start_named_tag_how[#1][#2]}
-
-\def\spac_narrower_start_named_tag_settings[#1][#2]% [tag] [settings]
- {\edef\currentnarrower{#1}%
- \setupcurrentnarrower[#2]%
- \spac_narrower_start_apply{\narrowerparameter\v!default}}
-
-\def\spac_narrower_start_named_tag_how[#1][#2]% [tag] [how]
- {\edef\currentnarrower{#1}%
- \spac_narrower_start_apply{#2}}
-
-\let\stopnarrow\spac_narrower_stop
-
-\newdimen\d_spac_effective_hsize \def\effectivehsize {\hsize}
-\newdimen\d_spac_effective_leftskip \def\effectiveleftskip {\dimexpr\leftskip \relax}
-\newdimen\d_spac_effective_rightskip \def\effectiverightskip{\dimexpr\rightskip\relax}
-
-\permanent\protected\def\seteffectivehsize
- {\setlocalhsize
- \d_spac_effective_hsize \localhsize
- \d_spac_effective_leftskip 1\leftskip
- \d_spac_effective_rightskip1\rightskip
- \let\effectivehsize \d_spac_effective_hsize
- \let\effectiveleftskip \d_spac_effective_leftskip
- \let\effectiverightskip\d_spac_effective_rightskip}
-
-\installcorenamespace{skipadaptionleft}
-\installcorenamespace{skipadaptionright}
-
-\newskip\leftskipadaption
-\newskip\rightskipadaption
-
-\setvalue{\??skipadaptionleft \v!yes }{\ifzeropt\d_spac_indentation_par\narrowerparameter\c!left\else\d_spac_indentation_par\fi}
-\letvalue{\??skipadaptionleft \v!no }\zeropoint
-\letvalue{\??skipadaptionleft \empty }\zeropoint
-\setvalue{\??skipadaptionright\v!yes }{\narrowerparameter\c!right}
-\letvalue{\??skipadaptionright\v!no }\zeropoint
-\letvalue{\??skipadaptionright\empty }\zeropoint
-
-% \setvalue{\??skipadaptionleft \v!standard}{\ifzeropt\d_spac_indentation_par\narrowerparameter\c!left\else\d_spac_indentation_par\fi}
-% \setvalue{\??skipadaptionright\v!standard}{\narrowerparameter\c!right}
-
-\letcsnamecsname\csname\??skipadaptionleft \v!standard\endcsname\csname\??skipadaptionleft \v!yes\endcsname
-\letcsnamecsname\csname\??skipadaptionright\v!standard\endcsname\csname\??skipadaptionright\v!yes\endcsname
-
-% \protected\def\dosetleftskipadaption #1{\leftskipadaption \ifcsname\??skipadaptionleft #1\endcsname\csname\??skipadaptionleft #1\endcsname\else#1\fi\relax}
-% \protected\def\dosetrightskipadaption#1{\rightskipadaption\ifcsname\??skipadaptionright#1\endcsname\csname\??skipadaptionright#1\endcsname\else#1\fi\relax}
-
-\permanent\protected\def\dosetleftskipadaption #1{\leftskipadaption \ifcsname\??skipadaptionleft #1\endcsname\lastnamedcs\else#1\fi\relax}
-\permanent\protected\def\dosetrightskipadaption#1{\rightskipadaption\ifcsname\??skipadaptionright#1\endcsname\lastnamedcs\else#1\fi\relax}
-
-\permanent\protected\def\doadaptleftskip #1{\normalexpanded{\dosetleftskipadaption {#1}}\permanent\advance\leftskip \leftskipadaption }
-\permanent\protected\def\doadaptrightskip#1{\normalexpanded{\dosetrightskipadaption{#1}}\permanent\advance\rightskip\rightskipadaption}
-
-\permanent\protected\def\forgetbothskips
- {\leftskip\zeropoint
- \rightskip\zeropoint
- \relax}
-
-\appendtoks
- \forgetbothskips
-\to \everyforgetall
-
-% in spac-ver.mkiv
-%
-% \protected\def\forgetparskip
-% {\s_spac_whitespace_parskip\zeropoint
-% \parskip\zeropoint
-% \let\v_spac_whitespace_current\v!none}
-%
-% \appendtoks
-% \forgetparskip
-% \to \everyforgetall
-
-%D Tolerance (can also be set with align):
-
-\installcorenamespace{tolerancemethods}
-
-\permanent\protected\def\installtolerancemethod#1#2#3%
- {\setvalue{\??tolerancemethods#1:#2}{#3}}
-
-\installtolerancemethod \v!vertical \v!verystrict {\let\bottomtolerance\empty}
-\installtolerancemethod \v!vertical \v!strict {\def\bottomtolerance{.050}}
-\installtolerancemethod \v!vertical \v!tolerant {\def\bottomtolerance{.075}}
-\installtolerancemethod \v!vertical \v!verytolerant {\def\bottomtolerance{.100}}
-
-\installtolerancemethod \v!horizontal \v!stretch {\emergencystretch\bodyfontsize}
-\installtolerancemethod \v!horizontal \v!space {\spaceskip.5em\s!plus.25em\s!minus.25em\relax}
-\installtolerancemethod \v!horizontal \v!verystrict {\tolerance\plustwohundred}
-\installtolerancemethod \v!horizontal \v!strict {\tolerance1500 }
-\installtolerancemethod \v!horizontal \v!tolerant {\tolerance3000 }
-\installtolerancemethod \v!horizontal \v!verytolerant {\tolerance4500 }
-
-\appendetoks
- \pretolerance\plushundred
- \tolerance \plustwohundred
-\to\everyforgetall
-
-\def\spac_tolerances_step_vertical #1{\csname\??tolerancemethods\v!vertical :#1\endcsname}
-\def\spac_tolerances_step_horizontal#1{\csname\??tolerancemethods\v!horizontal:#1\endcsname}
-
-%% \protected\def\setuptolerance
-%% {\dosingleargument\spac_tolerances_setup}
-%%
-%% \def\spac_tolerances_setup[#1]%
-%% {\doifelseinset\v!vertical{#1}%
-%% {\processcommacommand[#1]\spac_tolerances_step_vertical }
-%% {\processcommacommand[#1]\spac_tolerances_step_horizontal}}
-
-\permanent\tolerant\protected\def\setuptolerance[#1]%
- {\ifarguments\or
- \doifelseinset\v!vertical{#1}%
- {\processcommacommand[#1]\spac_tolerances_step_vertical }
- {\processcommacommand[#1]\spac_tolerances_step_horizontal}%
- \fi}
-
-%D \macros
-%D {pushindentation,popindentation}
-%D
-%D The pushing and popping is done by:
-
-\newbox\b_spac_indentations_a
-\newbox\b_spac_indentations_b
-
-\permanent\protected\def\pushindentation
- {\begingroup
- \ifhmode
- \unskip
- \setbox\b_spac_indentations_a\lastbox % get \strut if present
- \unskip
- \setbox\b_spac_indentations_b\lastbox % get \indent generated box
- \unskip
- \else
- \dontleavehmode % was \hskip\zeropoint % switch to horizontal mode
- \unskip
- \setbox\b_spac_indentations_a\lastbox % get \indent generated box
- \setbox\b_spac_indentations_b\emptybox
- \fi}
-
-\permanent\protected\def\popindentation
- {\box\b_spac_indentations_b
- \box\b_spac_indentations_a
- \endgroup}
-
-%D The only complication lays in \type{\strut}. In \PLAIN\
-%D \TEX\ a \type{\strut} is defined as:
-%D
-%D \starttyping
-%D \def\strut%
-%D {\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
-%D \stoptyping
-%D
-%D But what is a \type{\strut}? Normally it's a rule of width
-%D zero, but when made visual, it's a rule and a negative skip.
-%D The mechanism for putting things in the margins described
-%D here cannot handle this situation very well. One
-%D characteristic of \type{\strut} is that the \type{\unhcopy}
-%D results in entering horizontal mode, which in return leads
-%D to some indentation.
-%D
-%D To serve our purpose a bit better, the macro \type{\strut}
-%D can be redefined as:
-%D
-%D \starttyping
-%D \def\strut
-%D {\relax\ifmmode\else\hskip0pt\fi\copy\strutbox}
-%D \stoptyping
-%D
-%D Or more compatible:
-%D
-%D \starttyping
-%D \def\strut
-%D {\relax\ifmmode
-%D \copy\strutbox
-%D \else
-%D \bgroup\setbox\strutbox=\hbox{\box\strutbox}\unhcopy\strutbox\egroup
-%D \fi}
-%D \stoptyping
-%D
-%D In \CONTEXT\ however we save some processing time by putting
-%D an extra \type{\hbox} around the \type{\strutbox}.
-
-%D \starttyping
-%D % \setuplayout[gridgrid=yes] \showgrid
-%D
-%D \startbuffer
-%D test 1\crlf
-%D test 2\crlf
-%D
-%D \crlf test 3
-%D
-%D test 4\crlf
-%D test 5
-%D
-%D \crlf
-%D \crlf
-%D \crlf
-%D test 6
-%D \stopbuffer
-%D
-%D \hbox
-%D {\hsize5em
-%D \ruledvtop{\getbuffer}\enspace
-%D \ruledvtop{\showstruts\getbuffer}\enspace
-%D \hsize15em \setuptyping[before=,after=]%
-%D \ruledvtop{\typebuffer}}
-%D \stoptyping
-
-\permanent\protected\def\justonespace{\removeunwantedspaces\space}
-%frozen\protected\def\justaperiod {\removeunwantedspaces.}
-%frozen\protected\def\justacomma {\removeunwantedspaces,}
-
-\installcorenamespace{hspace}
-
-\permanent\protected\def\ignorecrlf
- {\enforced\let\crlf\justonespace
- \enforced\let\\\crlf}
-
-\permanent\protected\def\definehspace
- {\dotripleempty\spac_hspaces_define}
-
-\def\spac_hspaces_define[#1][#2][#3]% #1 = optional namespace
- {\ifthirdargument
- \setvalue{\??hspace#1:#2}{#3}%
- \else
- \setvalue{\??hspace:#1}{#2}%
- \fi}
-
-\permanent\tolerant\protected\def\hspace[#1]#*[#2]%
- {\ifhmode
- \removeunwantedspaces
- \hskip % always a skip even when 0pt
- \ifparameter#2\or
- \hspaceamount{#1}{#2}%
- \orelse\ifparameter#1\or
- \hspaceamount\empty{#1}%
- \else
- \hspaceamount\empty\s!default
- \fi
- \relax
- \expandafter\ignorespaces
- \fi}
-
-\permanent\overloaded\def\hspaceamount #1#2{\dimexpr\ifcsname\??hspace#1:#2\endcsname\lastnamedcs\else\zeropoint\fi\relax}
-\permanent\overloaded\def\directhspaceamount #1{\dimexpr\ifcsname\??hspace :#1\endcsname\lastnamedcs\else\zeropoint\fi\relax}
-
-% no installhspace here (this is already an old command)
-
-\definehspace [\v!small] [.25\emspaceamount]
-\definehspace [\v!medium] [.5\emspaceamount]
-\definehspace [\v!big] [1\emspaceamount]
-\definehspace [\v!normal] [1\spaceamount]
-\definehspace [\v!default] [\spaceamount]
-\definehspace [\v!none] [\zeropoint]
-
-%D Taken from Taco's math module (cq. \AMS\ macros), but
-%D adapted to \type {\hspace}:
-
-\permanent\protected\def\textormathspace #1#2#3{\ifmmode\mskip#1#2\else\kern #1\hspaceamount\empty{#3}\fi\relax}
-\permanent\protected\def\textormathspacecommand #1#2#3{\ifmmode\mskip#1#2\else#3\fi\relax}
-\permanent\protected\def\breakabletextormathspace#1#2#3{\ifmmode\mskip#1#2\else\hskip#1\hspaceamount\empty{#3}\fi\relax}
-
-\newmuskip\hairmuskip \hairmuskip=.15mu
-
-\overloaded\permanent\protected \def\hairspace {\textormathspace+\hairmuskip{.5}}
-\overloaded\permanent\protected \def\thinspace {\textormathspace+\thinmuskip 1}
-%overloaded\permanent\protected \def\medspace {\textormathspace+\medmuskip 2} % 4/18 em
-\overloaded\permanent\protected \def\thickspace {\textormathspace+\thickmuskip3}
-\overloaded\permanent\protected \def\neghairspace {\textormathspace-\thinmuskip{.5}}
-\overloaded\permanent\protected \def\negthinspace {\textormathspace-\thinmuskip 1}
-\overloaded\permanent\protected \def\negmedspace {\textormathspace-\medmuskip 2}
-\overloaded\permanent\protected \def\negthickspace{\textormathspace-\thickmuskip3}
-\overloaded\permanent\protected\edef\medspace {\textormathspacecommand+\medmuskip{\Uchar"205F}}
-
-% needed for unicode:
-
-%protected\def\breakablethinspace {\breakabletextormathspace+\thinmuskip1}
-%protected\def\twoperemspace {\hskip\dimexpr\emwidth/2\relax} % == \enspace
-%protected\def\threeperemspace {\hskip\dimexpr\emwidth/3\relax}
-%protected\def\fourperemspace {\hskip\dimexpr\emwidth/4\relax}
-%protected\def\fiveperemspace {\hskip\dimexpr\emwidth/5\relax} % goodie
-%protected\def\sixperemspace {\hskip\dimexpr\emwidth/6\relax}
-%protected\def\figurespace {\begingroup\setbox\scratchbox\hbox{0}\hskip\wd\scratchbox\endgroup} % there is a command for this
-%protected\def\punctuationspace {\begingroup\setbox\scratchbox\hbox{.}\hskip\wd\scratchbox\endgroup}
-%protected\def\ideographicspace {\hskip\dimexpr\emwidth/1\relax}
-%protected\def\ideographichalffillspace{\hskip\dimexpr\emwidth/2\relax}
-%protected\def\nobreakspace {\penalty\plustenthousand\kern\interwordspace}
-%protected\def\narrownobreakspace {\penalty\plustenthousand\thinspace}
-%protected\def\zerowidthnobreakspace {\penalty\plustenthousand\kern\zeropoint}
-%protected\def\zerowidthspace {\hskip\zeropoint}
-
-\definehspace[.5][.1250\emwidth] % hair
-\definehspace[1] [.1667\emwidth] % thin
-\definehspace[2] [.2222\emwidth] % med
-\definehspace[3] [.2777\emwidth] % thick
-
-\aliased\let \, \thinspace
-\aliased\let \: \medspace
-\aliased\let \; \thickspace
-\aliased\let \! \negthinspace
-
-% plain ...
-%
-% \ifdefined\> \else \protected\def\>{\mskip \medmuskip } \fi
-% \ifdefined\* \else \protected\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} \fi
-
-\permanent\def\flexiblespaceamount#1#2#3%
- {#1\interwordspace
- \s!plus#2\interwordstretch
- \s!minus#3\interwordshrink}
-
-\def\fixedspaceamount#1%
- {#1\interwordspace}
-
-% moved from page-lin
-%
-% the following code is used in startlines\stoplines
-%
-% do we need \normalspaceprimitive here?
-
-\installcorenamespace{spacemethods}
-
-\permanent\protected\def\installspacemethod#1#2% needs to set \obeyedspace
- {\setvalue{\??spacemethods#1}{#2}}
-
-\permanent\def\activatespacehandler#1%
- {\csname\??spacemethods\ifcsname\??spacemethods#1\endcsname#1\else\v!off\fi\endcsname}
-
-\permanent\protected\def\spac_spaces_checked_control{\mathortext\normalspace{\dontleavehmode{\tt\controlspace}}}%
-\permanent\protected\def\spac_spaces_checked_normal {\mathortext\normalspace{\dontleavehmode\normalspace}}%
-\permanent\protected\def\spac_spaces_checked_fixed {\mathortext\normalspace{\dontleavehmode\fixedspace}}%
-
-% hm, order matters when we \let in \obeyspaces
-
-\installspacemethod \v!on
- {\obeyspaces
- \enforced\let\obeyedspace\spac_spaces_checked_control
- \enforced\let\ =\obeyedspace}
-
-\installspacemethod \v!yes
- {\obeyspaces
- \enforced\let\obeyedspace\spac_spaces_checked_normal
- \enforced\let\ =\obeyedspace}
-
-\installspacemethod \v!off % == default
- {\normalspaces
- \enforced\let\obeyedspace\normalspace
- \enforced\let\ =\normalspaceprimitive} % was \normalspace
-
-\installspacemethod \v!fixed
- {\obeyspaces
- \enforced\let\obeyedspace\spac_spaces_checked_fixed
- \enforced\let\ =\obeyedspace}
-
-\appendtoks
- \normalspaces % to be sure
-\to \everybeforeoutput
-
-%D A more robust variant of the \MKII\ one:
-%D
-%D \startbuffer
-%D bla \TEX\autoinsertnextspace bla
-%D bla \TEX\autoinsertnextspace (bla)
-%D bla (\TEX\autoinsertnextspace) bla
-%D bla \TEX\autoinsertnextspace\ bla
-%D \stopbuffer
-%D
-%D \typebuffer \getbuffer
-
-\permanent\protected\def\autoinsertnextspace
- {\futurelet\nexttoken\spac_spaces_auto_insert_next}
-
-\permanent\def\spac_spaces_auto_insert_next
- {\clf_autonextspace{\normalmeaning\nexttoken}} % todo, just consult nexttoken at the lua end
-
-%D Moved from bib module:
-
-\permanent\protected\def\outdented#1%
- {\hskip-\hangindent#1\relax}
-
-%D Beware: due to char-def this becomes an active character but that
-%D might change sometime when we will replace all these specials to
-%D node insertions. We might even expand it to utf then as it then
-%D can be used in string comparison (not that much needed anyway).
-
-% \chardef\zwnj="200C
-% \chardef\zwj ="200D
-
-% TODO (but used in languages):
-
-\def\spac_glues_text_or_math#1#2%
- {\begingroup
- \ifmmode
- \mskip#1%
- \else
- \scratchdimen#1\hspaceamount\empty{#2}%
- \scratchskip\scratchdimen\s!plus.5\scratchdimen\s!minus.3\scratchdimen
- \hskip\scratchskip
- \fi
- \endgroup}
-
-\permanent\protected\def\thinglue {\spac_glues_text_or_math\thinmuskip \v!small}
-\permanent\protected\def\medglue {\spac_glues_text_or_math\medmuskip \v!medium}
-\permanent\protected\def\thickglue{\spac_glues_text_or_math\thickmuskip\v!big}
-
-%D A rather unknown one:
-
-\permanent\protected\def\widened % moved from cont-new
- {\doifelsenextoptionalcs\spac_widened_yes\spac_widened_nop}
-
-\def\spac_widened_yes[#1]#2{\hbox \s!spread #1{\hss#2\hss}}
-\def\spac_widened_nop #1{\hbox \s!spread \emwidth{\hss#1\hss}}
-
-%D For the moment here (used in page-txt):
-
-\protected\def\ignoredlinebreak{\unskip\space\ignorespaces}
-
-%D \macros
-%D {startignorespaces}
-%D
-%D I'll probably forget that this one exists:
-%D
-%D \starttyping
-%D \ruledhbox
-%D {\startignorespaces
-%D \def\oeps{a}
-%D \startignorespaces
-%D \def\oeps{a}
-%D \stopignorespaces
-%D \def\oeps{a}
-%D \stopignorespaces
-%D \oeps}
-%D \stoptyping
-
-\newsignal\d_spac_ignore_spaces_signal
-\newcount \c_spac_ignore_spaces
-
-\protected\def\startignorespaces
- {\advance\c_spac_ignore_spaces\plusone
- \ifcase\c_spac_ignore_spaces\or \ifhmode
- \hskip\d_spac_ignore_spaces_signal
- \fi \fi
- \ignorespaces}
-
-\protected\def\stopignorespaces
- {\ifcase\c_spac_ignore_spaces \or
- \ifhmode
- \doloop\spac_ignore_spaces_body
- \fi
- \fi
- \advance\c_spac_ignore_spaces\minusone}
-
-\def\spac_ignore_spaces_body
- {\ifzeropt\lastskip
- \exitloop
- \orelse\ifdim\lastskip=\d_spac_ignore_spaces_signal
- \unskip
- \exitloop
- \else
- \unskip
- \fi}
-
-%D \macros
-%D {obeyfollowingtoken}
-
-\def\obeyfollowingtoken{{}} % end \cs scanning
-
-%D Something new:
-
-\protected\def\interwordspacebefore{\wordboundary\zwnj\hskip\interwordspace\relax}
-\protected\def\interwordspaceafter {\hskip\interwordspace\relax\zwnj\wordboundary}
-
-\protected\def\interwordspacesbefore#1{\dofastloopcs{#1}\interwordspacebefore}
-\protected\def\interwordspacesafter #1{\dofastloopcs{#1}\interwordspaceafter}
-\protected\def\interwordspaces #1{\wordboundary\zwnj\dofastloopcs{\numexpr#1+\minusone}\interwordspaceafter}
-
-\protect \endinput