summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/spac-ali.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/spac-ali.mkxl')
-rw-r--r--tex/context/base/mkiv/spac-ali.mkxl357
1 files changed, 179 insertions, 178 deletions
diff --git a/tex/context/base/mkiv/spac-ali.mkxl b/tex/context/base/mkiv/spac-ali.mkxl
index f4310dfc0..a41c99410 100644
--- a/tex/context/base/mkiv/spac-ali.mkxl
+++ b/tex/context/base/mkiv/spac-ali.mkxl
@@ -21,11 +21,11 @@
\registerctxluafile{spac-ali}{optimize}
-\chardef\normalizelinemodecode = "01
-\chardef\indentskipmodecode = "02
-\chardef\swaphangindentmodecode = "04
-\chardef\swapparskipmodecode = "08
-\chardef\breakafterdirmodecode = "10
+\immutable\chardef\normalizelinemodecode = "01
+\immutable\chardef\indentskipmodecode = "02
+\immutable\chardef\swaphangindentmodecode = "04
+\immutable\chardef\swapparskipmodecode = "08
+\immutable\chardef\breakafterdirmodecode = "10
\definesystemattribute[realign] [public] % might be combined with the next one
\definesystemattribute[alignstate][public] % will make a single attributes for several states
@@ -35,16 +35,16 @@
\c_attr_alignstate\attributeunsetvalue
\to \everyforgetall
-\unexpanded\def\resetrealignsignal{\c_attr_realign\attributeunsetvalue}
-\unexpanded\def\signalinnerrealign{\clf_setrealign\plustwo}
-\unexpanded\def\signalouterrealign{\clf_setrealign\plusone}
+\permanent\protected\def\resetrealignsignal{\c_attr_realign\attributeunsetvalue}
+\permanent\protected\def\signalinnerrealign{\clf_setrealign\plustwo}
+\permanent\protected\def\signalouterrealign{\clf_setrealign\plusone}
\installcorenamespace{aligncommand}
\installcorenamespace{alignhorizontal}
\installcorenamespace{alignvertical}
-\installcorenamespace{alignmentnormalcache}
-\installcorenamespace{alignmentraggedcache}
+% \installcorenamespace{alignmentnormalcache}
+% \installcorenamespace{alignmentraggedcache}
% nasty hack:
@@ -54,8 +54,8 @@
\installcorenamespace{alignmentraggedcacheodd}
\installcorenamespace{alignmentraggedcacheeven}
-\def\??alignmentnormalcache{\ifodd\realpageno\??alignmentnormalcacheodd\else\??alignmentnormalcacheeven\fi}
-\def\??alignmentraggedcache{\ifodd\realpageno\??alignmentraggedcacheodd\else\??alignmentraggedcacheeven\fi}
+\immutable\def\??alignmentnormalcache{\ifodd\realpageno\??alignmentnormalcacheodd\else\??alignmentnormalcacheeven\fi}
+\immutable\def\??alignmentraggedcache{\ifodd\realpageno\??alignmentraggedcacheodd\else\??alignmentraggedcacheeven\fi}
\newtoks\everyresetalign % todo
@@ -65,48 +65,48 @@
\newconditional\displaylefttoright \settrue\displaylefttoright
\newconditional\inlinelefttoright \settrue\inlinelefttoright
-\unexpanded\def\lefttoright
+\permanent\protected\def\lefttoright
{\ifvmode
\spac_directions_lefttoright_vmode
\else
\spac_directions_lefttoright_hmode
\fi}
-\unexpanded\def\righttoleft
+\permanent\protected\def\righttoleft
{\ifvmode
\spac_directions_righttoleft_vmode
\else
\spac_directions_righttoleft_hmode
\fi}
-\unexpanded\def\spac_directions_lefttoright_vmode
+\protected\def\spac_directions_lefttoright_vmode
{\settrue\displaylefttoright
\settrue\inlinelefttoright
\textdirection\directionlefttoright
\pardirection \directionlefttoright}
-\unexpanded\def\spac_directions_righttoleft_vmode
+\protected\def\spac_directions_righttoleft_vmode
{\setfalse\displaylefttoright
\setfalse\inlinelefttoright
\textdirection\directionrighttoleft
\pardirection \directionrighttoleft}
-\unexpanded\def\spac_directions_lefttoright_hmode
+\protected\def\spac_directions_lefttoright_hmode
{\linedirection\directionlefttoright % linedir keeps subtype of skip
\settrue\inlinelefttoright}
-\unexpanded\def\spac_directions_righttoleft_hmode
+\protected\def\spac_directions_righttoleft_hmode
{\linedirection\directionrighttoleft % linedir keeps subtype of skip
\setfalse\inlinelefttoright}
-\unexpanded\def\synchronizelayoutdirection
+\permanent\protected\def\synchronizelayoutdirection
{\ifconditional\layoutlefttoright
\spac_directions_synchronize_lr
\else
\spac_directions_synchronize_rl
\fi}
-\unexpanded\def\synchronizedisplaydirection
+\permanent\protected\def\synchronizedisplaydirection
{\ifconditional\displaylefttoright
\spac_directions_synchronize_lr
\else
@@ -123,30 +123,30 @@
\textdirection\directionrighttoleft
\pardirection \directionrighttoleft}
-\unexpanded\def\synchronizeinlinedirection
+\permanent\protected\def\synchronizeinlinedirection
{% why not \linedirection here
\textdirection\ifconditional\inlinelefttoright\directionlefttoright\else\directionrighttoleft\fi}
-\unexpanded\def\checkedlefttoright
+\permanent\protected\def\checkedlefttoright
{\ifvmode
\spac_directions_lefttoright_vmode
\else
\spac_directions_lefttoright_hmode_checked
\fi}
-\unexpanded\def\checkedrighttoleft
+\permanent\protected\def\checkedrighttoleft
{\ifvmode
\spac_directions_righttoleft_vmode
\else
\spac_directions_righttoleft_hmode_checked
\fi}
-\unexpanded\def\spac_directions_lefttoright_hmode_checked
+\protected\def\spac_directions_lefttoright_hmode_checked
{\ifconditional\inlinelefttoright\else
\lefttoright
\fi}
-\unexpanded\def\spac_directions_righttoleft_hmode_checked
+\protected\def\spac_directions_righttoleft_hmode_checked
{\ifconditional\inlinelefttoright
\righttoleft
\fi}
@@ -156,10 +156,10 @@
\letvalue{\??bidi\v!left }\checkedlefttoright \letvalue{\??bidi l2r}\checkedlefttoright
\letvalue{\??bidi\v!right}\checkedrighttoleft \letvalue{\??bidi r2l}\checkedrighttoleft
-\unexpanded\def\usebidiparameter#1%
+\permanent\protected\def\usebidiparameter#1%
{\begincsname\??bidi#1\c!bidi\endcsname}
-\unexpanded\def\showdirections
+\permanent\protected\def\showdirections
{\dontleavehmode
\begingroup\infofont\textdirection\directionlefttoright[\space
layout: \ifconditional\layoutlefttoright l2r\else r2l\fi\space
@@ -167,20 +167,20 @@
inline: \ifconditional\inlinelefttoright l2r\else r2l\fi\space
]\endgroup}
-\unexpanded\def\righttolefthbox#1#{\reversehbox#1\bgroup\righttoleft\let\next} \let\rtlhbox\righttolefthbox
-\unexpanded\def\lefttorighthbox#1#{\naturalhbox#1\bgroup\lefttoright\let\next} \let\ltrhbox\lefttorighthbox
-\unexpanded\def\righttoleftvbox#1#{\reversevbox#1\bgroup\righttoleft\let\next} \let\rtlvbox\righttoleftvbox
-\unexpanded\def\lefttorightvbox#1#{\naturalvbox#1\bgroup\lefttoright\let\next} \let\ltrvbox\lefttorightvbox
-\unexpanded\def\righttoleftvtop#1#{\reversevtop#1\bgroup\righttoleft\let\next} \let\rtlvtop\righttoleftvtop
-\unexpanded\def\lefttorightvtop#1#{\naturalvtop#1\bgroup\lefttoright\let\next} \let\ltrvtop\lefttorightvtop
+\permanent\protected\def\righttolefthbox#1#{\reversehbox#1\bgroup\righttoleft\let\next} \let\rtlhbox\righttolefthbox
+\permanent\protected\def\lefttorighthbox#1#{\naturalhbox#1\bgroup\lefttoright\let\next} \let\ltrhbox\lefttorighthbox
+\permanent\protected\def\righttoleftvbox#1#{\reversevbox#1\bgroup\righttoleft\let\next} \let\rtlvbox\righttoleftvbox
+\permanent\protected\def\lefttorightvbox#1#{\naturalvbox#1\bgroup\lefttoright\let\next} \let\ltrvbox\lefttorightvbox
+\permanent\protected\def\righttoleftvtop#1#{\reversevtop#1\bgroup\righttoleft\let\next} \let\rtlvtop\righttoleftvtop
+\permanent\protected\def\lefttorightvtop#1#{\naturalvtop#1\bgroup\lefttoright\let\next} \let\ltrvtop\lefttorightvtop
-\unexpanded\def\autodirhbox#1#{\hbox#1\bgroup\synchronizeinlinedirection\let\next}
-\unexpanded\def\autodirvbox#1#{\vbox#1\bgroup\synchronizeinlinedirection\let\next} % maybe also pardir or maybe just a \vbox
-\unexpanded\def\autodirvtop#1#{\vtop#1\bgroup\synchronizeinlinedirection\let\next} % maybe also pardir or maybe just a \vtop
+\permanent\protected\def\autodirhbox#1#{\hbox#1\bgroup\synchronizeinlinedirection\let\next}
+\permanent\protected\def\autodirvbox#1#{\vbox#1\bgroup\synchronizeinlinedirection\let\next} % maybe also pardir or maybe just a \vbox
+\permanent\protected\def\autodirvtop#1#{\vtop#1\bgroup\synchronizeinlinedirection\let\next} % maybe also pardir or maybe just a \vtop
-\unexpanded\def\leftorrighthbox{\ifconditional\displaylefttoright\expandafter\lefttorighthbox\else\expandafter\righttolefthbox\fi}
-\unexpanded\def\leftorrightvbox{\ifconditional\displaylefttoright\expandafter\lefttorightvbox\else\expandafter\righttoleftvbox\fi}
-\unexpanded\def\leftorrightvtop{\ifconditional\displaylefttoright\expandafter\lefttorightvtop\else\expandafter\righttoleftvtop\fi}
+\permanent\protected\def\leftorrighthbox{\ifconditional\displaylefttoright\expandafter\lefttorighthbox\else\expandafter\righttolefthbox\fi}
+\permanent\protected\def\leftorrightvbox{\ifconditional\displaylefttoright\expandafter\lefttorightvbox\else\expandafter\righttoleftvbox\fi}
+\permanent\protected\def\leftorrightvtop{\ifconditional\displaylefttoright\expandafter\lefttorightvtop\else\expandafter\righttoleftvtop\fi}
% Tolerance and hyphenation
@@ -203,7 +203,7 @@
\def\spac_align_set_raggedness_middle{\ifzeropt\hsize\plussix\bodyfontsize\else.5\hsize\fi}
-\unexpanded\def\setraggedness#1% tricky .. we keep the global tolerance otherwise ... to be reconsidered
+\protected\def\setraggedness#1% tricky .. we keep the global tolerance otherwise ... to be reconsidered
{\ifnum\tolerance<\c_spac_tolerance_minimum
\tolerance\c_spac_tolerance_minimum % small values have unwanted side effects
\else
@@ -215,37 +215,37 @@
% no need to do something as we're in \nohyphens
\fi}
-\unexpanded\def\spac_align_set_tolerant
+\protected\def\spac_align_set_tolerant
{\tolerance\c_spac_tolerance_normal}
-\unexpanded\def\spac_align_set_very_tolerant
+\protected\def\spac_align_set_very_tolerant
{\tolerance\c_spac_tolerance_extreme}
-\unexpanded\def\spac_align_set_stretch
+\protected\def\spac_align_set_stretch
{\emergencystretch\bodyfontsize}
-\unexpanded\def\spac_align_set_extreme_stretch
+\protected\def\spac_align_set_extreme_stretch
{\emergencystretch10\bodyfontsize}
% Vertical
\newconstant\c_spac_align_state_vertical
-\unexpanded\def\spac_align_set_vertical_none
- {\let\raggedtopcommand \relax
- \let\raggedbottomcommand\relax}
+\protected\def\spac_align_set_vertical_none
+ {\enforced\let\raggedtopcommand \relax
+ \enforced\let\raggedbottomcommand\relax}
-\unexpanded\def\spac_align_set_vertical_lohi
- {\let\raggedtopcommand \vfilll
- \let\raggedbottomcommand\vfilll}
+\protected\def\spac_align_set_vertical_lohi
+ {\enforced\let\raggedtopcommand \vfilll
+ \enforced\let\raggedbottomcommand\vfilll}
-\unexpanded\def\spac_align_set_vertical_low
- {\let\raggedtopcommand \vfilll
- \let\raggedbottomcommand\relax}
+\protected\def\spac_align_set_vertical_low
+ {\enforced\let\raggedtopcommand \vfilll
+ \enforced\let\raggedbottomcommand\relax}
-\unexpanded\def\spac_align_set_vertical_high
- {\let\raggedtopcommand \relax
- \let\raggedbottomcommand\vfilll}
+\protected\def\spac_align_set_vertical_high
+ {\enforced\let\raggedtopcommand \relax
+ \enforced\let\raggedbottomcommand\vfilll}
\def\spac_align_flush_vertical
{\ifcase\c_spac_align_state_vertical
@@ -289,7 +289,7 @@
% \s!plus ... slower than inline
-\unexpanded\def\spac_align_set_horizontal_none % should also relax \updateraggedskips
+\permanent\protected\def\spac_align_set_horizontal_none % should also relax \updateraggedskips
{\raggedstatus \zerocount
\c_attr_alignstate\attributeunsetvalue
\leftskip \plusone\leftskip
@@ -301,7 +301,7 @@
\setfalse \raggedonelinerstate % now here
\let\updateraggedskips\relax} % no need for adaption
-\unexpanded\def\spac_align_set_horizontal_left
+\permanent\protected\def\spac_align_set_horizontal_left
{\setraggedness \spac_align_set_raggedness_left
\raggedstatus \plusone
\c_attr_alignstate\plusone
@@ -314,7 +314,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_center
+\permanent\protected\def\spac_align_set_horizontal_center
{\setraggedness \spac_align_set_raggedness_middle
\raggedstatus \plustwo
\c_attr_alignstate\plustwo
@@ -327,7 +327,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_right
+\permanent\protected\def\spac_align_set_horizontal_right
{\setraggedness \spac_align_set_raggedness_right
\raggedstatus \plusthree
\c_attr_alignstate\plusthree
@@ -340,7 +340,7 @@
%\parindent \parindent
\relax}
-\unexpanded\def\spac_align_set_horizontal_very_left
+\permanent\protected\def\spac_align_set_horizontal_very_left
{\raggedstatus \plusone
\c_attr_alignstate\plusone
\leftskip \plusone\leftskip \s!plus\v_spac_align_fill_amount
@@ -352,7 +352,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_very_center
+\permanent\protected\def\spac_align_set_horizontal_very_center
{\raggedstatus \plustwo
\c_attr_alignstate\plustwo
\leftskip \plusone\leftskip \s!plus\v_spac_align_fill_amount
@@ -364,7 +364,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_very_right
+\permanent\protected\def\spac_align_set_horizontal_very_right
{\raggedstatus \plusthree
\c_attr_alignstate\plusthree
\leftskip \plusone\leftskip \s!plus\zeropoint
@@ -376,7 +376,7 @@
%\parindent \parindent
\relax}
-\unexpanded\def\spac_align_set_horizontal_wide_center
+\permanent\protected\def\spac_align_set_horizontal_wide_center
{\setraggedness \spac_align_set_raggedness_middle
\raggedstatus \plustwo
\c_attr_alignstate\plustwo
@@ -389,7 +389,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_centered_last_line
+\permanent\protected\def\spac_align_set_horizontal_centered_last_line
{\raggedstatus \zerocount
\c_attr_alignstate\attributeunsetvalue
\leftskip \plusone\leftskip \s!plus\v_spac_align_fill_amount\relax
@@ -401,7 +401,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_flushedright_last_line
+\permanent\protected\def\spac_align_set_horizontal_flushedright_last_line
{\raggedstatus \zerocount
\c_attr_alignstate\attributeunsetvalue
\leftskip \plusone\leftskip \s!plus\v_spac_align_fill_amount\relax
@@ -413,7 +413,7 @@
\parindent \zeropoint
\relax}
-\unexpanded\def\spac_align_set_horizontal_right_tt % a plain command
+\permanent\protected\def\spac_align_set_horizontal_right_tt % a plain command
{\tttf % brrr
\raggedstatus \plusthree
\c_attr_alignstate\plusthree
@@ -426,7 +426,7 @@
%\parindent \parindent
\relax}
-\unexpanded\def\spac_align_set_horizontal_extra
+\permanent\protected\def\spac_align_set_horizontal_extra
{\xspaceskip\zeropoint\s!plus\v_spac_align_fill_amount_space\relax}
\def\spac_align_flush_horizontal
@@ -496,21 +496,21 @@
\newconstant\bottomraggednessmode % 0=ragged 1=normal/align 2=baseline
-\unexpanded\def\raggedbottom
+\permanent\protected\def\raggedbottom
{\bottomraggednessmode\zerocount
\settopskip}
-\unexpanded\def\alignbottom
+\permanent\protected\def\alignbottom
{\bottomraggednessmode\plusone
\settopskip}
-\unexpanded\def\baselinebottom
+\permanent\protected\def\baselinebottom
{\bottomraggednessmode\plustwo
\settopskip}
\let\normalbottom\alignbottom % downward compatible
-\unexpanded\def\setbottomalignmode#1%
+\permanent\protected\def\setbottomalignmode#1%
{\bottomraggednessmode#1%
\settopskip}
@@ -548,7 +548,7 @@
\let\updateraggedskips\relax
\def\spac_align_add_to_cache
- {\let\raggedbox\relax % why
+ {\enforced\let\raggedbox\relax % why
% we inherit hyphenation and tolerance
\t_spac_align_collected \emptytoks
\c_spac_align_state_broad \zerocount
@@ -582,7 +582,7 @@
% The local (key driven) setter:
-\unexpanded\def\spac_align_prepare#1% deferred
+\permanent\protected\def\spac_align_prepare#1% deferred
{\edef\m_spac_align_asked{#1}%
\expandafter\let\expandafter\raggedcommand\csname\??alignmentnormalcache\m_spac_align_asked\endcsname
\ifx\raggedcommand\relax
@@ -595,10 +595,7 @@
% The regular align setter:
-\unexpanded\def\setupalign
- {\dosingleempty\spac_align_setup}
-
-\def\spac_align_setup[#1]% immediate
+\permanent\tolerant\protected\def\setupalign[#1]% immediate
{\edef\m_spac_align_asked{#1}%
\expandafter\let\expandafter\raggedcommand\csname\??alignmentnormalcache\m_spac_align_asked\endcsname
\ifx\raggedcommand\relax
@@ -608,13 +605,13 @@
\fi
\raggedcommand}
-\unexpanded\def\usealignparameter#1% faster local variant
+\permanent\protected\def\usealignparameter#1% faster local variant
{\edef\m_spac_align_asked{#1\c!align}%
\ifx\m_spac_align_asked\empty\else
\spac_align_use_indeed
\fi}
-\unexpanded\def\dousealignparameter#1% faster local variant
+\permanent\protected\def\dousealignparameter#1% faster local variant
{\edef\m_spac_align_asked{#1}%
\ifx\m_spac_align_asked\empty\else
\spac_align_use_indeed
@@ -631,7 +628,7 @@
% experiment
-\unexpanded\def\spac_align_use_later#1%
+\protected\def\spac_align_use_later#1%
{\begingroup
\edef\m_spac_align_asked{#1}%
\expandafter\let\expandafter\raggedcommand\csname\??alignmentnormalcache\m_spac_align_asked\endcsname
@@ -640,12 +637,12 @@
\fi
\endgroup}
-\unexpanded\def\spac_align_use_now#1%
+\protected\def\spac_align_use_now#1%
{\csname\??alignmentnormalcache#1\endcsname}
% Maybe we need something different in columns.
-\unexpanded\def\installalign#1#2% beware: commands must be unexpandable!
+\protected\def\installalign#1#2% beware: commands must be unexpandable!
{\ifcsname\??aligncommand#1\endcsname \else
\setvalue{\??aligncommand#1}{\toksapp\t_spac_align_collected{#2}}%
\fi}
@@ -659,7 +656,7 @@
%
% this one could deal with both
%
-% \unexpanded\def\installalignoption#1#2%
+% \protected\def\installalignoption#1#2%
% {\ifcsname\??aligncommand#1\endcsname \else
% \setvalue{\??aligncommand#1}%
% {\spac_align_set_horizontal_none
@@ -759,7 +756,7 @@
\spac_align_flush_parfill_indeed{\number\c_spac_align_state_par_fill}%
\fi}
-\unexpanded\def\spac_align_flush_parfill_indeed#1%
+\protected\def\spac_align_flush_parfill_indeed#1%
{\parfillskip
#1\directhspaceamount\v!final
% plus \dimexpr\availablehsize-#1\directhspaceamount\v!final\relax
@@ -775,7 +772,7 @@
\setvalue{\??aligncommand\v!left }{\c_spac_align_state_horizontal\plustwo }%
\to \t_spac_every_swap_align
-\unexpanded\def\enablereversealignment
+\permanent\protected\def\enablereversealignment
{\the\t_spac_every_swap_align
\t_spac_every_swap_align\emptytoks}
@@ -792,8 +789,7 @@
\let\centeredlastline \spac_align_set_horizontal_centered_last_line
\let\flushedrightlastline\spac_align_set_horizontal_flushedright_last_line
\let\ttraggedright \spac_align_set_horizontal_right_tt % a plain command
-
-\let\forgetragged \spac_align_set_horizontal_none
+\let\forgetragged \spac_align_set_horizontal_none
\appendtoks
\spac_align_set_horizontal_none
@@ -801,18 +797,18 @@
% Box commands.
-\unexpanded\def\ibox
+\permanent\protected\def\ibox
{\vbox\bgroup
\forgetall
- \let\\=\endgraf
+ \enforced\let\\\endgraf
\ifdoublesided\signalinnerrealign\fi
\doifelserightpage\spac_align_set_horizontal_right\spac_align_set_horizontal_left
\let\next}
-\unexpanded\def\obox
+\permanent\protected\def\obox
{\vbox\bgroup
\forgetall
- \let\\=\endgraf
+ \enforced\let\\\endgraf
\ifdoublesided\signalouterrealign\fi
\doifelserightpage\c_spac_align_state_horizontal_left\spac_align_set_horizontal_right
\let\next}
@@ -820,11 +816,11 @@
\let\raggedbox\relax
\def\dosetraggedvbox#1% can be more keys .. how about caching here (but seldom used)
- {\let\raggedbox\vbox
+ {\enforced\let\raggedbox\vbox
\processcommacommand[#1]\spac_align_set_ragged_vbox}
\def\dosetraggedhbox#1% can be more keys .. how about caching here (but seldom used)
- {\let\raggedbox\hbox
+ {\enforced\let\raggedbox\hbox
\processcommacommand[#1]\spac_align_set_ragged_hbox}
\def\spac_align_set_ragged_vbox#1%
@@ -839,35 +835,52 @@
\quitcommalist
\fi}
-\setvalue{\??alignvertical \v!left }{\let\raggedbox\lbox}
-\setvalue{\??alignvertical \v!right }{\let\raggedbox\rbox}
-\setvalue{\??alignvertical \v!middle }{\let\raggedbox\cbox}
-\setvalue{\??alignvertical \v!inner }{\let\raggedbox\ibox}
-\setvalue{\??alignvertical \v!outer }{\let\raggedbox\obox}
-\setvalue{\??alignvertical \v!flushleft }{\let\raggedbox\rbox}
-\setvalue{\??alignvertical \v!flushright}{\let\raggedbox\lbox}
-\setvalue{\??alignvertical \v!center }{\let\raggedbox\cbox}
-\setvalue{\??alignvertical \v!no }{\def\raggedbox{\vbox\bgroup\spac_align_set_horizontal_right\let\next=}]}
-
-% maybe \let's
-
-\setvalue{\??alignhorizontal\v!left }{\def\raggedbox{\doalignedline\v!left }}
-\setvalue{\??alignhorizontal\v!right }{\def\raggedbox{\doalignedline\v!right }}
-\setvalue{\??alignhorizontal\v!middle }{\def\raggedbox{\doalignedline\v!middle}}
-\setvalue{\??alignhorizontal\v!inner }{\def\raggedbox{\doalignedline\v!inner }}
-\setvalue{\??alignhorizontal\v!outer }{\def\raggedbox{\doalignedline\v!outer }}
-\setvalue{\??alignhorizontal\v!flushleft }{\def\raggedbox{\doalignedline\v!right }}
-\setvalue{\??alignhorizontal\v!flushright}{\def\raggedbox{\doalignedline\v!left }}
-\setvalue{\??alignhorizontal\v!center }{\def\raggedbox{\doalignedline\v!middle}}
+\permanent\protected\def\spac_align_vertical_left {\lbox}
+\permanent\protected\def\spac_align_vertical_right {\rbox}
+\permanent\protected\def\spac_align_vertical_middle {\cbox}
+\permanent\protected\def\spac_align_vertical_inner {\ibox}
+\permanent\protected\def\spac_align_vertical_outer {\obox}
+\permanent\protected\def\spac_align_vertical_flushleft {\rbox}
+\permanent\protected\def\spac_align_vertical_flushright{\lbox}
+\permanent\protected\def\spac_align_vertical_center {\cbox}
+\permanent\protected\def\spac_align_vertical_no {\vbox\bgroup\spac_align_set_horizontal_right\let\next=}
+
+\permanent\protected\def\spac_align_horizontal_left {\doalignedline\v!left}
+\permanent\protected\def\spac_align_horizontal_right {\doalignedline\v!right}
+\permanent\protected\def\spac_align_horizontal_middle {\doalignedline\v!middle}
+\permanent\protected\def\spac_align_horizontal_inner {\doalignedline\v!inner}
+\permanent\protected\def\spac_align_horizontal_outer {\doalignedline\v!outer}
+\permanent\protected\def\spac_align_horizontal_flushleft {\doalignedline\v!right}
+\permanent\protected\def\spac_align_horizontal_flushright{\doalignedline\v!left}
+\permanent\protected\def\spac_align_horizontal_center {\doalignedline\v!middle}
+
+\setvalue{\??alignvertical \v!left }{\enforced\let\raggedbox\spac_align_vertical_left}
+\setvalue{\??alignvertical \v!right }{\enforced\let\raggedbox\spac_align_vertical_right}
+\setvalue{\??alignvertical \v!middle }{\enforced\let\raggedbox\spac_align_vertical_middle}
+\setvalue{\??alignvertical \v!inner }{\enforced\let\raggedbox\spac_align_vertical_inner}
+\setvalue{\??alignvertical \v!outer }{\enforced\let\raggedbox\spac_align_vertical_outer}
+\setvalue{\??alignvertical \v!flushleft }{\enforced\let\raggedbox\spac_align_vertical_flushleft }
+\setvalue{\??alignvertical \v!flushright}{\enforced\let\raggedbox\spac_align_vertical_flushright}
+\setvalue{\??alignvertical \v!center }{\enforced\let\raggedbox\spac_align_vertical_center}
+\setvalue{\??alignvertical \v!no }{\enforced\let\raggedbox\spac_align_vertical_no}
+
+\setvalue{\??alignhorizontal\v!left }{\enforced\let\raggedbox\spac_align_horizontal_left}
+\setvalue{\??alignhorizontal\v!right }{\enforced\let\raggedbox\spac_align_horizontal_right}
+\setvalue{\??alignhorizontal\v!middle }{\enforced\let\raggedbox\spac_align_horizontal_middle}
+\setvalue{\??alignhorizontal\v!inner }{\enforced\let\raggedbox\spac_align_horizontal_inner}
+\setvalue{\??alignhorizontal\v!outer }{\enforced\let\raggedbox\spac_align_horizontal_outer}
+\setvalue{\??alignhorizontal\v!flushleft }{\enforced\let\raggedbox\spac_align_horizontal_flushleft}
+\setvalue{\??alignhorizontal\v!flushright}{\enforced\let\raggedbox\spac_align_horizontal_flushright}
+\setvalue{\??alignhorizontal\v!center }{\enforced\let\raggedbox\spac_align_horizontal_center}
% The next one can be in use so we keep it around but oen should
% be aware of possible interference.
-\unexpanded\def\setraggedskips#1#2#3#4#5#6#7% never change this name (todo: inline this one .. less tracingall)
- {\unexpanded\def\updateraggedskips{\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
+\permanent\protected\def\setraggedskips#1#2#3#4#5#6#7% never change this name (todo: inline this one .. less tracingall)
+ {\protected\def\updateraggedskips{\dosetraggedskips{#1}{#2}{#3}{#4}{#5}{#6}{#7}}%
\updateraggedskips}
-\def\dosetraggedskips#1#2#3#4#5#6#7%
+\permanent\def\dosetraggedskips#1#2#3#4#5#6#7%
{\raggedstatus #1\relax
\leftskip 1\leftskip \s!plus#2\relax
\rightskip 1\rightskip\s!plus#3\relax
@@ -890,7 +903,7 @@
\expandafter\spac_show_par_data
\fi}
-\unexpanded\def\showpardata
+\permanent\protected\def\showpardata
{\edef\thepardata
{\hbox{font: \fontname\font}\endgraf
\spac_show_par_data
@@ -909,24 +922,24 @@
\endgroup
\let\showpardata\relax}
-\unexpanded\def\startshowpardata
+\permanent\protected\def\startshowpardata
{\begingroup
\showstruts
\tracingparagraphs\maxdimen
\appendtoksonce\showpardata\to\everypar}
-\unexpanded\def\stopshowpardata
+\permanent\protected\def\stopshowpardata
{\endgraf
\endgroup}
% Structure:
-\unexpanded\def\startalignment
+\protected\def\startalignment
{\par
\begingroup
\setupalign}
-\unexpanded\def\stopalignment
+\protected\def\stopalignment
{\par
\endgroup}
@@ -937,19 +950,19 @@
\newtoks \everyleftofalignedline
\newtoks \everyrightofalignedline
-\unexpanded\def\shiftalignedline#1#2#3#4% left, right, inner, outer
+\permanent\protected\def\shiftalignedline#1#2#3#4% left, right, inner, outer
{\rightorleftpageaction
{\everyleftofalignedline {\hskip\dimexpr#1+#3\relax}%
\everyrightofalignedline{\hskip\dimexpr#2+#4\relax}}
{\everyleftofalignedline {\hskip\dimexpr#1+#4\relax}%
\everyrightofalignedline{\hskip\dimexpr#2+#3\relax}}}
-\def\doalignline#1#2% \\ == newline
+\permanent\def\doalignline#1#2% \\ == newline
{\noindentation % was \noindent
\dontleavehmode % added in marrakesch at TUG 2006\begingroup
\begingroup
\setlocalhsize % new
- \def\\{\egroup\par\doalignline{#1}{#2}\bgroup}%
+ \enforced\permanent\protected\def\\{\egroup\par\doalignline{#1}{#2}\bgroup}%
\dowithnextbox
{\hbox to \localhsize
{\ifcase\alignstrutmode\or\strut\fi
@@ -961,10 +974,10 @@
% plain commands
-\ifdefined\line \else \def\line {\hbox to\hsize} \fi
-\ifdefined\leftline \else \def\leftline #1{\line{#1\hss}} \fi
-\ifdefined\rightline \else \def\rightline #1{\line{\hss#1}} \fi
-\ifdefined\centerline \else \def\centerline#1{\line{\hss#1\hss}} \fi
+\ifdefined\line \else \permanent\def\line {\hbox to\hsize} \fi
+\ifdefined\leftline \else \permanent\def\leftline #1{\line{#1\hss}} \fi
+\ifdefined\rightline \else \permanent\def\rightline #1{\line{\hss#1}} \fi
+\ifdefined\centerline \else \permanent\def\centerline#1{\line{\hss#1\hss}} \fi
% direct commands
@@ -978,36 +991,32 @@
\def\spac_align_wrapper_middle {\doalignline\hss \hss}
\def\spac_align_wrapper_handle#1%
- %{\csname\??alignwrapper\ifcsname\??alignwrapper#1\endcsname#1\else\v!middle\fi\endcsname}
{\ifcsname\??alignwrapper#1\endcsname\expandafter\lastnamedcs\else\expandafter\spac_align_wrapper_middle\fi}
-\unexpanded\def\spac_align_wrapper_start[#1]%
+\permanent\tolerant\protected\def\startlinealignment[#1]%
{\spac_align_wrapper_handle{#1}%
\bgroup\ignorespaces}
-\unexpanded\def\spac_align_wrapper_stop
+\protected\def\spac_align_wrapper_stop
{\removeunwantedspaces\egroup}
-\unexpanded\def\startlinealignment
- {\dosingleempty\spac_align_wrapper_start}
-
-\let\stoplinealignment\spac_align_wrapper_stop
+\permanent\let\stoplinealignment\spac_align_wrapper_stop
-\unexpanded\def\startleftaligned {\spac_align_wrapper_start[\v!left ]} \let\stopleftaligned \spac_align_wrapper_stop
-\unexpanded\def\startmiddlealigned{\spac_align_wrapper_start[\v!middle]} \let\stopmiddlealigned\spac_align_wrapper_stop
-\unexpanded\def\startrightaligned {\spac_align_wrapper_start[\v!right ]} \let\stoprightaligned \spac_align_wrapper_stop
-\unexpanded\def\startmaxaligned {\spac_align_wrapper_start[\v!max ]} \let\stopmaxaligned \spac_align_wrapper_stop
+\permanent\protected\def\startleftaligned {\startlinealignment[\v!left ]} \permanent\let\stopleftaligned \spac_align_wrapper_stop
+\permanent\protected\def\startmiddlealigned{\startlinealignment[\v!middle]} \permanent\let\stopmiddlealigned\spac_align_wrapper_stop
+\permanent\protected\def\startrightaligned {\startlinealignment[\v!right ]} \permanent\let\stoprightaligned \spac_align_wrapper_stop
+\permanent\protected\def\startmaxaligned {\startlinealignment[\v!max ]} \permanent\let\stopmaxaligned \spac_align_wrapper_stop
-\let\startmidaligned \startmiddlealigned \let\stopmidaligned \stopmiddlealigned
-\let\startcenteraligned\startmiddlealigned \let\stopcenteraligned\stopmiddlealigned
+\aliased\let\startmidaligned \startmiddlealigned \aliased\let\stopmidaligned \stopmiddlealigned
+\aliased\let\startcenteraligned\startmiddlealigned \aliased\let\stopcenteraligned\stopmiddlealigned
-\unexpanded\def\leftaligned {\spac_align_wrapper_handle\v!left }
-\unexpanded\def\middlealigned{\spac_align_wrapper_handle\v!middle}
-\unexpanded\def\rightaligned {\spac_align_wrapper_handle\v!right }
-\unexpanded\def\maxaligned {\spac_align_wrapper_handle\v!max }
+\permanent\protected\def\leftaligned {\spac_align_wrapper_handle\v!left }
+\permanent\protected\def\middlealigned{\spac_align_wrapper_handle\v!middle}
+\permanent\protected\def\rightaligned {\spac_align_wrapper_handle\v!right }
+\permanent\protected\def\maxaligned {\spac_align_wrapper_handle\v!max }
-\let\midaligned \middlealigned
-\let\centeraligned\middlealigned
+\aliased\let\midaligned \middlealigned
+\aliased\let\centeraligned\middlealigned
\installcorenamespace{alignline}
@@ -1019,17 +1028,17 @@
\letvalue{\??alignline\v!center }\midaligned
\letvalue{\??alignline\v!max }\maxaligned
-\def\doalignedline#1{\resetrealignsignal\csname\??alignline#1\endcsname}
+% \permanent\protected\def\doalignedline#1{\resetrealignsignal\csname\??alignline#1\endcsname}
%D Experimental (will be redone when floats are redone as it's real messy
%D now). It can also be made faster (if needed).
-\def\doxalignline#1#2#3#4#5#6%
+\permanent\protected\def\doxalignline#1#2#3#4#5#6%
{\noindentation % was \noindent
\dontleavehmode % added in marrakesch at TUG 2006\begingroup
\begingroup
\setlocalhsize
- \def\\{\egroup\par\doxalignline#1#2#3#4#5#6\bgroup}% inefficient
+ \enforced\permanent\protected\def\\{\egroup\par\doxalignline#1#2#3#4#5#6\bgroup}% inefficient
\dowithnextbox
{\hbox to \localhsize
{#1\hskip\ifdone#2\else#3\fi#4%
@@ -1042,7 +1051,7 @@
\endgroup}
\hbox}
-\def\doxcheckline % used for floats so multipass anyway
+\permanent\protected\def\doxcheckline % used for floats so multipass anyway
{\signalrightpage\doifelserightpage\donetrue\donefalse}
\setvalue{\??alignline\v!inner }{\doxalignline\doxcheckline++\zeropoint \relax\hss }
@@ -1059,11 +1068,9 @@
\setvalue{\??alignline\v!leftedge }{\doxalignline\donefalse --\leftedgetotal \hss \relax}
\setvalue{\??alignline\v!rightedge }{\doxalignline\donefalse ++\rightedgetotal \relax\hss }
-\def\doalignedline#1% unchecked
- {\csname\??alignline#1\endcsname} % no \resetrealignsignal here ?
+\permanent\protected\def\doalignedline#1{\csname\??alignline#1\endcsname} % no \resetrealignsignal here ?
-\def\alignedline#1#2% setting default
- % {\csname\??alignline\ifcsname\??alignline#1\endcsname#1\else#2\fi\endcsname}
+\permanent\protected\def\alignedline#1#2% setting default
{\ifcsname\??alignline#1\endcsname
\expandafter\lastnamedcs
\else
@@ -1076,15 +1083,12 @@
%D We need to pick up a box (downward compatible in case \type {\bgroup}
%D is used (test suite index example).
-\unexpanded\def\wordright
- {\dosingleempty\spac_word_right}
-
-\def\spac_word_right[#1]%
+\permanent\tolerant\protected\def\wordright[#1]%
{\dowithnextbox
{\normalexpanded{\spac_word_right_indeed{#1}{\hpack{\thebox\nextbox}}}}
\hbox}
-\unexpanded\def\spac_word_right_indeed#1#2%
+\protected\def\spac_word_right_indeed#1#2%
{\registerparwrapper
{\v!word:\v!right}
{\begingroup
@@ -1119,13 +1123,13 @@
% Trick posted by WS on mailing list, generalized a bit. The bottom text only shows
% op when there is one line space available. We could add some extra space if needed.
-% \unexpanded\def\bottomword
+% v\protected\def\bottomword
% {\par
% \dowithnextbox
% {\leaders\box\nextbox\vfil\page}
% \vbox to \lineheight}
%
-% \unexpanded\def\bottomword
+% \permanent\protected\def\bottomword
% {\par
% \groupedcommand
% {\leaders
@@ -1141,9 +1145,9 @@
% todo: also handle \bgroup ... \egroup
-\unexpanded\def\spac_align_simple_left #1{{#1\hss}}
-\unexpanded\def\spac_align_simple_right #1{{\hss#1}}
-\unexpanded\def\spac_align_simple_middle#1{{\hss#1\hss}}
+\protected\def\spac_align_simple_left #1{{#1\hss}}
+\protected\def\spac_align_simple_right #1{{\hss#1}}
+\protected\def\spac_align_simple_middle#1{{\hss#1\hss}}
\letvalue{\??alignsimple \v!right }\spac_align_simple_left
\letvalue{\??alignsimple \v!outer }\spac_align_simple_left % not managed! see linenumbers
@@ -1161,7 +1165,7 @@
\letvalue{\??alignsimplereverse\v!flushright}\spac_align_simple_left
\letvalue{\??alignsimplereverse\v!middle }\spac_align_simple_middle
-\unexpanded\def\simplealignedbox#1#2%
+\permanent\protected\def\simplealignedbox#1#2%
{\hbox \ifdim#1>\zeropoint to #1
\ifcsname\??alignsimple#2\endcsname
\doubleexpandafter\lastnamedcs
@@ -1170,7 +1174,7 @@
\fi
\fi}
-\unexpanded\def\simplealignedspreadbox#1#2%
+\permanent\protected\def\simplealignedspreadbox#1#2%
{\hbox \ifdim#1>\zeropoint spread #1
\ifcsname\??alignsimple#2\endcsname
\doubleexpandafter\lastnamedcs
@@ -1179,7 +1183,7 @@
\fi
\fi}
-\unexpanded\def\simplealignedboxplus#1#2#3%
+\permanent\protected\def\simplealignedboxplus#1#2#3%
{\hbox #3 \ifdim#1>\zeropoint to #1
\ifcsname\??alignsimple#2\endcsname
\doubleexpandafter\lastnamedcs
@@ -1190,7 +1194,7 @@
\newconditional\alignsimplelefttoright \settrue\alignsimplelefttoright
-\unexpanded\def\simplereversealignedbox#1#2%
+\permanent\protected\def\simplereversealignedbox#1#2%
{\hbox \ifdim#1>\zeropoint to #1
\ifcsname\??alignsimplereverse#2\endcsname
\doubleexpandafter\lastnamedcs
@@ -1199,7 +1203,7 @@
\fi
\fi}
-\unexpanded\def\simplereversealignedboxplus#1#2#3%
+\permanent\protected\def\simplereversealignedboxplus#1#2#3%
{\hbox #3 \ifdim#1>\zeropoint to #1
\ifcsname\??alignsimplereverse#2\endcsname
\doubleexpandafter\lastnamedcs
@@ -1220,16 +1224,13 @@
% \setvalue{\??alignsets\v!lohi }#1#2{\let#1\vss \let#2\vss }
% \setvalue{\??alignsets\s!unknown }#1#2{\let#1\relax\let#2\relax}
%
-% \unexpanded\def\spac_align_set_ss#1%
+% \protected\def\spac_align_set_ss#1%
% {\csname\??alignsetss\ifcsname\??alignsetss#1\endcsname#1\else\s!unknown\fi\endcsname}
% Some obsolete (old) helpers:
-\unexpanded\def\definehbox
- {\dodoubleargument\spac_align_definehbox}
-
-\def\spac_align_definehbox[#1][#2]%
- {\setvalue{hbox#1}##1{\hbox to #2{\begstrut##1\endstrut\hss}}}
+\permanent\tolerant\protected\def\definehbox[#1][#2]%
+ {\ifarguments\else\setvalue{hbox#1}##1{\hbox to #2{\begstrut##1\endstrut\hss}}\fi}
%D Some direction related helpers:
@@ -1238,6 +1239,6 @@
\setvalue{\??reverse\v!normal }{\ifconditional\inlinelefttoright\else\s!reverse\fi}
\setvalue{\??reverse\v!reverse}{\ifconditional\inlinelefttoright \s!reverse\fi}
-\def\usedirectionparameterreverse#1{\begincsname\??reverse#1\c!direction\endcsname}
+\permanent\def\usedirectionparameterreverse#1{\begincsname\??reverse#1\c!direction\endcsname}
\protect \endinput