diff options
author | Taco Hoekwater <taco@elvenkind.com> | 2011-06-01 08:54:21 +0000 |
---|---|---|
committer | Taco Hoekwater <taco@elvenkind.com> | 2011-06-01 08:54:21 +0000 |
commit | d7ccb42582f85acf30568913610ccf4d602023fb (patch) | |
tree | 7292e3545a420676878e7451b68892d360c62cb6 /Master/texmf-dist/tex/context/base/spac-ali.mkiv | |
parent | 2d62a6fe9b80def59c392268022f1f9a2d6e358f (diff) |
commit context 2011.05.18
git-svn-id: svn://tug.org/texlive/trunk@22719 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/spac-ali.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/spac-ali.mkiv | 209 |
1 files changed, 139 insertions, 70 deletions
diff --git a/Master/texmf-dist/tex/context/base/spac-ali.mkiv b/Master/texmf-dist/tex/context/base/spac-ali.mkiv index b168a02be27..0cf22f470cf 100644 --- a/Master/texmf-dist/tex/context/base/spac-ali.mkiv +++ b/Master/texmf-dist/tex/context/base/spac-ali.mkiv @@ -15,6 +15,18 @@ \unprotect +\registerctxluafile{spac-ali}{1.001} + +\definesystemattribute[realign][public] + +\unexpanded\def\resetrealignsignal{\attribute\realignattribute\attributeunsetvalue} +\unexpanded\def\signalinnerrealign{\ctxcommand{setrealign(2)}} +\unexpanded\def\signalouterrealign{\ctxcommand{setrealign(1)}} + +\appendtoks + \resetrealignsignal +\to \everyforgetall + % We will not use bodydir and pagedir so we disable them. That way we get % normal hyperlink support. @@ -69,44 +81,66 @@ \unexpanded\def\definehbox {\dodoubleargument\dodefinehbox} -\def\iobox#1#2#3#% here #3# is not really needed - {\vbox\bgroup % we want to return a vbox like the others - \hbox\bgroup% we need to pack the signal with the box - \signalrightpage - \dowithnextboxcontent - {\let\\=\endgraf\forgetall\doifrightpageelse#1#2} - {\box\nextbox\egroup\egroup} - \vbox#3} +% To be redone: + +\def\ibox#1#2#3% + {\vbox\bgroup + \forgetall + \let\\=\endgraf + \ifdoublesided\signalinnerrealign\fi + \doifrightpageelse\raggedright\raggedleft + \let\next} + +\def\obox#1#2#3% + {\vbox\bgroup + \forgetall + \let\\=\endgraf + \ifdoublesided\signalouterrealign\fi + \doifrightpageelse\raggedleft\raggedright + \let\next} + +\def\@@ragged@@command{@@ragged@@c} +\def\@@ragged@@hbox {@@ragged@@h} +\def\@@ragged@@vbox {@@ragged@@v} + +\def\dosetraggedvbox#1% can be more keys + {\let\raggedbox\vbox + \processcommacommand[#1]\dosetraggedvbox} -\def\obox{\iobox\raggedleft \raggedright} % outerbox -\def\ibox{\iobox\raggedright\raggedleft} % innerbox +\def\dosetraggedhbox#1% can be more keys + {\let\raggedbox\hbox + \processcommacommand[#1]\dosetraggedhbox} \def\dosetraggedvbox#1% - {\let\raggedbox\vbox - \processfirstactioninset - [#1] - [ \v!left=>\let\raggedbox\lbox, - \v!right=>\let\raggedbox\rbox, - \v!middle=>\let\raggedbox\cbox, - \v!inner=>\let\raggedbox\ibox, - \v!outer=>\let\raggedbox\obox, - \v!flushleft=>\let\raggedbox\rbox, - \v!flushright=>\let\raggedbox\lbox, - \v!center=>\let\raggedbox\cbox, - \v!no=>\def\raggedbox{\vbox\bgroup\raggedright\let\next=}]} + {\ifcsname\@@ragged@@vbox#1\endcsname + \csname\@@ragged@@vbox#1\endcsname + \quitcommalist + \fi} \def\dosetraggedhbox#1% - {\let\raggedbox\hbox - \processaction % slow - [#1] - [ \v!left=>\def\raggedbox{\doalignedline\v!left }, - \v!right=>\def\raggedbox{\doalignedline\v!right }, - \v!middle=>\def\raggedbox{\doalignedline\v!middle}, - \v!inner=>\def\raggedbox{\doalignedline\v!inner }, - \v!outer=>\def\raggedbox{\doalignedline\v!outer }, - \v!flushleft=>\def\raggedbox{\doalignedline\v!right }, - \v!flushright=>\def\raggedbox{\doalignedline\v!left }, - \v!center=>\def\raggedbox{\doalignedline\v!middle}]} + {\ifcsname\@@ragged@@hbox#1\endcsname + \csname\@@ragged@@hbox#1\endcsname + \quitcommalist + \fi} + +\setvalue{\@@ragged@@vbox\v!left }{\let\raggedbox\lbox} +\setvalue{\@@ragged@@vbox\v!right }{\let\raggedbox\rbox} +\setvalue{\@@ragged@@vbox\v!middle }{\let\raggedbox\cbox} +\setvalue{\@@ragged@@vbox\v!inner }{\let\raggedbox\ibox} +\setvalue{\@@ragged@@vbox\v!outer }{\let\raggedbox\obox} +\setvalue{\@@ragged@@vbox\v!flushleft }{\let\raggedbox\rbox} +\setvalue{\@@ragged@@vbox\v!flushright}{\let\raggedbox\lbox} +\setvalue{\@@ragged@@vbox\v!center }{\let\raggedbox\cbox} +\setvalue{\@@ragged@@vbox\v!no }{\def\raggedbox{\vbox\bgroup\raggedright\let\next=}]} + +\setvalue{\@@ragged@@hbox\v!left }{\def\raggedbox{\doalignedline\v!left }} +\setvalue{\@@ragged@@hbox\v!right }{\def\raggedbox{\doalignedline\v!right }} +\setvalue{\@@ragged@@hbox\v!middle }{\def\raggedbox{\doalignedline\v!middle}} +\setvalue{\@@ragged@@hbox\v!inner }{\def\raggedbox{\doalignedline\v!inner }} +\setvalue{\@@ragged@@hbox\v!outer }{\def\raggedbox{\doalignedline\v!outer }} +\setvalue{\@@ragged@@hbox\v!flushleft }{\def\raggedbox{\doalignedline\v!right }} +\setvalue{\@@ragged@@hbox\v!flushright}{\def\raggedbox{\doalignedline\v!left }} +\setvalue{\@@ragged@@hbox\v!center }{\def\raggedbox{\doalignedline\v!middle}} \def\dosetraggedcommand#1% {\normalexpanded{\noexpand\dodosetraggedcommand{#1}}} @@ -115,12 +149,17 @@ \def\raggedcommand{\the\everyraggedcommand} -\def\dodosetraggedcommand#1% beware: #1=empty is ignored, keep that! - {\everyraggedcommand\emptytoks +% slow, we can do this in lua ... some day + +\let\raggedbox\relax + +\unexpanded\def\dodosetraggedcommand#1% beware: #1=empty is ignored, keep that! + {\everyraggedcommand{\resetrealignsignal}% \emptytoks maybe only when #1 <> empty \let\raggedtopcommand\empty \let\raggedbottomcommand\empty - \chardef\raggedoneliner\zerocount - \doifsomething{#1} + \let\raggedbox\relax + \setfalse\raggedonelinerstate + \doifsomething{#1}% {\doifinsetelse\v!broad{#1}\!!doneatrue\!!doneafalse \doifinsetelse\v!wide {#1}\!!donebtrue\!!donebfalse \!!donectrue @@ -129,8 +168,6 @@ \def\dododosetraggedcommand#1% {\executeifdefined{\@@ragged@@command\string#1}\relax} -\def\@@ragged@@command{@@raggedcommand} - \setvalue{\@@ragged@@command\v!hanging }{\appendtoks\enableprotruding \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!nothanging }{\appendtoks\disableprotruding \to\everyraggedcommand} \setvalue{\@@ragged@@command\v!hz }{\appendtoks\enableadjusting \to\everyraggedcommand} @@ -193,16 +230,20 @@ \setvalue{\@@ragged@@command\v!normal}% {\appendtoks\notragged\to\everyraggedcommand} -\setvalue{\@@ragged@@command\v!inner}% not yet perfect - {\signalrightpage % may interfere - \doifrightpageelse - {\getvalue{\@@ragged@@command\v!right}} - {\getvalue{\@@ragged@@command\v!left}}} +\setvalue{\@@ragged@@command\v!inner}% + {\ifdoublesided + \appendtoks\signalinnerrealign\to\everyraggedcommand + \fi + \rightorleftpageaction + {\getvalue{\@@ragged@@command\v!right}}% + {\getvalue{\@@ragged@@command\v!left }}} -\setvalue{\@@ragged@@command\v!outer}% not yet perfect - {\signalrightpage % may interfere - \doifrightpageelse - {\getvalue{\@@ragged@@command\v!left}} +\setvalue{\@@ragged@@command\v!outer}% + {\ifdoublesided + \appendtoks\signalouterrealign\to\everyraggedcommand + \fi + \rightorleftpageaction + {\getvalue{\@@ragged@@command\v!left }}% {\getvalue{\@@ragged@@command\v!right}}} \setvalue{\@@ragged@@command\v!lesshyphenation}% @@ -223,10 +264,10 @@ \setvalue{\@@ragged@@command\v!disable}% for one liners {\appendtoks\raggedright\parfillskip\zeropoint\to\everyraggedcommand} -\chardef\raggedoneliner\zerocount +\ifdefined\raggedonelinerstate \else \newconditional\raggedonelinerstate \fi \setvalue{\@@ragged@@command\v!line}% - {\chardef\raggedoneliner\plusone} + {\settrue\raggedonelinerstate} % More alignments: @@ -234,7 +275,7 @@ % \tolerance >= 1500 % was 200 % \raggedness = 2 .. 6\bodyfontsize -\chardef\raggedstatus=0 % normal left center right +\newconstant\raggedstatus % normal left center right \def\leftraggedness {2\bodyfontsize} \def\rightraggedness {2\bodyfontsize} @@ -249,7 +290,7 @@ %D More hyphenation control, will be combined with align %D setup. -\def\nohyphens +\def\nohyphens % % % % % not clever, we still hyphenate but supress application {\ifx\dohyphens\relax \edef\dohyphens {\hyphenpenalty\the\hyphenpenalty @@ -285,7 +326,7 @@ \updateraggedskips} \def\dosetraggedskips#1#2#3#4#5#6#7% - {\chardef \raggedstatus#1\relax + {\raggedstatus#1\relax \leftskip 1\leftskip \!!plus#2\relax % zie: Tex By Topic 8.1.3 \rightskip 1\rightskip\!!plus#3\relax % zie: Tex By Topic 8.1.3 \spaceskip #4\relax @@ -325,7 +366,7 @@ \begingroup \dontshowcomposition \inleftmargin{\vsmash - {\switchtobodyfont[7pt,tt]% + {\infofont \framed[\c!align=\v!right]{\thepardata}}}% \endgroup} @@ -347,7 +388,7 @@ \def\raggedxspaceamount {.5em} \unexpanded\def\notragged - {\chardef\raggedstatus\zerocount + {\raggedstatus\zerocount \leftskip 1\leftskip \rightskip 1\rightskip \spaceskip \zeropoint @@ -433,6 +474,11 @@ \setvalue{@@ngila@@\v!broad }{\!!doneatrue} \setvalue{@@ngila@@\v!wide }{\!!donebtrue} +\def\setraggedparagraphmode + {\doifrightpageelse + {\ifdoublesided\signalinnerrealign\expandafter\firstoftwoarguments \fi} + {\ifdoublesided\signalouterrealign\expandafter\secondoftwoarguments\fi}} + \def\installalign#1#2{\setvalue{@@align@@#1}{#2}} % can be used for overloads \installalign \v!new {\@@asraggedfalse} @@ -504,6 +550,8 @@ \def\dosetupalign[#1]% can be made faster by checking for defined #1 {\!!doneafalse \!!donebfalse + \raggedstatus\zerocount + \resetrealignsignal \processcommacommand[#1]\dodosetupngila \processcommacommand[#1]\dodosetupalign} @@ -524,7 +572,7 @@ {\par \egroup} -\chardef\alignstrutmode=1 +\setnewconstant\alignstrutmode\plusone % see later for the real definition, which in the simple case is: @@ -568,7 +616,7 @@ \let\centeraligned\midaligned -\def\regelbegrensd#1{\limitatetext{#1}{\hsize}{\unknown}} % to be translated +% \def\regelbegrensd#1{\limitatetext{#1}{\hsize}{\unknown}} % to be translated % indirecte commando's @@ -579,9 +627,10 @@ \letvalue{\s!do\v!line\v!flushright}\leftaligned \letvalue{\s!do\v!line\v!center }\midaligned -\def\doalignedline#1{\csname\s!do\v!line#1\endcsname} +\def\doalignedline#1{\resetrealignsignal\csname\s!do\v!line#1\endcsname} -%D Experimental: +%D Experimental (will be redone when floats are redone as it's real messy +%D now): \def\doxalignline#1#2#3#4#5#6% {\noindentation % was \noindent @@ -602,7 +651,7 @@ \endgroup} \hbox} -\def\doxcheckline +\def\doxcheckline % used for floats so multipass anyway {\signalrightpage\doifrightpageelse\donetrue\donefalse} \setvalue{\s!do\v!line\v!inner }{\doxalignline\doxcheckline++\zeropoint \relax\hss } @@ -630,9 +679,6 @@ \def\alignedline#1#2% setting default {\csname\s!do\v!line\ifcsname\s!do\v!line#1\endcsname#1\else#2\fi\endcsname} -% \def\woordrechts -% {\groupedcommand{\hfill\hbox}{\parfillskip\zeropoint}} - % beware: \wordright{whatever\kern-\rightskip} should work! % so, no funny boxing here @@ -666,12 +712,35 @@ % \simplealignedbox{2cm}{right}{x} -\setvalue{\s!simple\c!align\v!right }#1#2{\hbox to #1{#2\hss}} -\setvalue{\s!simple\c!align\v!left }#1#2{\hbox to #1{\hss#2}} -\setvalue{\s!simple\c!align\v!flushright }#1#2{\hbox to #1{\hss#2}} -\setvalue{\s!simple\c!align\v!flushleft }#1#2{\hbox to #1{#2\hss}} -\setvalue{\s!simple\c!align\v!middle }#1#2{\hbox to #1{\hss#2\hss}} - -\unexpanded\def\simplealignedbox#1{\executeifdefined{\s!simple\c!align#1}{\getvalue{\s!simple\c!align\v!right}}} +% \setvalue{\s!simple\c!align\v!right }#1#2{\hbox to #1{#2\hss}} +% \setvalue{\s!simple\c!align\v!left }#1#2{\hbox to #1{\hss#2}} +% \setvalue{\s!simple\c!align\v!flushright }#1#2{\hbox to #1{\hss#2}} +% \setvalue{\s!simple\c!align\v!flushleft }#1#2{\hbox to #1{#2\hss}} +% \setvalue{\s!simple\c!align\v!middle }#1#2{\hbox to #1{\hss#2\hss}} + +% \unexpanded\def\simplealignedbox#1% +% {\csname\s!simple\c!align\ifcsname\s!simple\c!align#1\endcsname#1\else\v!right\fi\endcsname} + +\setvalue{\s!simple:\c!align:\v!right }#1{{#1\hss}} +\setvalue{\s!simple:\c!align:\v!left }#1{{\hss#1}} +\setvalue{\s!simple:\c!align:\v!flushright }#1{{\hss#1}} +\setvalue{\s!simple:\c!align:\v!flushleft }#1{{#1\hss}} +\setvalue{\s!simple:\c!align:\v!middle }#1{{\hss#1\hss}} + +\unexpanded\def\simplealignedbox#1#2% + {\hbox to #1\csname\s!simple:\c!align:\ifcsname\s!simple:\c!align:#2\endcsname#2\else\v!right\fi\endcsname} + +% \setvalue{spac_align_set_ss_\v!right }#1#2{\let#1\relax\let#2\hss } +% \setvalue{spac_align_set_ss_\v!left }#1#2{\let#1\hss \let#2\relax} +% \setvalue{spac_align_set_ss_\v!flushright}#1#2{\let#1\hss \let#2\relax} +% \setvalue{spac_align_set_ss_\v!flushleft }#1#2{\let#1\relax\let#2\hss } +% \setvalue{spac_align_set_ss_\v!middle }#1#2{\let#1\hss \let#2\hss } +% \setvalue{spac_align_set_ss_\v!low }#1#2{\let#1\vss \let#2\relax} +% \setvalue{spac_align_set_ss_\v!high }#1#2{\let#1\relax\let#2\vss } +% \setvalue{spac_align_set_ss_\v!lohi }#1#2{\let#1\vss \let#2\vss } +% \setvalue{spac_align_set_ss_\s!unknown }#1#2{\let#1\relax\let#2\relax} + +% \unexpanded\def\spac_align_set_ss#1% +% {\csname spac_align_set_ss_\ifcsname spac_align_set_ss_#1\endcsname#1\else\s!unknown\fi\endcsname} \protect \endinput |