summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/pack-com.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/pack-com.mkxl')
-rw-r--r--tex/context/base/mkiv/pack-com.mkxl949
1 files changed, 0 insertions, 949 deletions
diff --git a/tex/context/base/mkiv/pack-com.mkxl b/tex/context/base/mkiv/pack-com.mkxl
deleted file mode 100644
index 9392a68a6..000000000
--- a/tex/context/base/mkiv/pack-com.mkxl
+++ /dev/null
@@ -1,949 +0,0 @@
-%D \module
-%D [ file=pack-com, % used to be in core-mis,
-%D version=20120111,
-%D title=\CONTEXT\ Packing Macros,
-%D subtitle=Combinations,
-%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 Packaging Macros / Combinations}
-
-\unprotect
-
-% \startfloatcombination will be redone ... we can decouple the floatcontent
-% and caption and pass them to combinations so that we get better fit when the
-% caption is wider than the float, testcase:
-%
-% \startfloatcombination [2*2]
-% \placefigure[local]{alpha}{\externalfigure[cow.pdf][width=1cm]}%
-% \placefigure[local]{beta} {\externalfigure[cow.pdf][width=2cm]}%
-% \placefigure[local]{gamma}{\externalfigure[cow.pdf][width=3cm]}
-% \placefigure[local]{delta}{\externalfigure[cow.pdf][width=4cm]}
-% \stopfloatcombination
-
-%D We could of course map combinations onto one of the table mechanisms but as it
-%D has served us well for ages we keep this one. The code has been cleaned up a bit
-%D and mkiv'd.
-%D
-%D Okay ... I might luafy this one eventually.
-
-% \startcombination {alpha} {a} {beta} {b} \stopcombination
-% \startcombination[2*1] {alpha} {a} {beta} {b} \stopcombination
-% \startcombination[1*2] {alpha} {a} {beta} {b} \stopcombination
-% \startcombination[2] {alpha} {a} {beta} {b} \stopcombination
-% \startcombination[2] \combination {alpha} {a} \combination{beta} {b} \stopcombination
-
-%D We do support some structure but the order matters and currently it's only window
-%D dressing:
-
-%D \starttyping
-%D \let\startcontent\bgroup
-%D \let\stopcontent \egroup
-%D \let\startcaption\bgroup
-%D \let\stopcaption \egroup
-%D \stoptyping
-%D
-%D Of course we should have started with more structure as it would simply the code.
-%D
-%D \starttyping
-%D \startcombination
-%D \startcontent
-%D \externalfigure[cow]
-%D \stopcontent
-%D \startcaption
-%D Some cow.
-%D \stopcaption
-%D \startcontent
-%D \externalfigure[cow]
-%D \stopcontent
-%D \startcaption
-%D The same cow.
-%D \stopcaption
-%D \stopcombination
-%D \stoptyping
-
-\ifdefined\dotagcombination \else \let\dotagcombination\relax \fi
-
-\newsystemmode{combination}
-
-\appendtoks
- \globalresetsystemmode{combination}%
-\to \everyinsidefloat
-
-\newcount\c_pack_combinations_nesting % local
-
-\newcount\c_pack_combinations_x % global
-\newcount\c_pack_combinations_y % global
-\newcount\c_pack_combinations_max % global
-
-\newdimen\d_pack_combinations_ht % global
-
-\newbox \b_pack_combinations_captions % global % can go
-\newbox \b_pack_combinations_temp % global % can go
-\newbox \b_pack_combinations_content % local
-\newbox \b_pack_combinations_caption % local
-
-\installcorenamespace{combination}
-
-\installcommandhandler \??combination {combination} \??combination
-
-\initializeboxstack{\??combination captions}
-\initializeboxstack{\??combination temp}
-
-\newcount\c_pack_combinations_x_saved
-\newcount\c_pack_combinations_y_saved
-\newcount\c_pack_combinations_max_saved
-
-\newdimen\d_pack_combinations_ht_saved
-
-\newbox \b_pack_combinations_captions_saved
-\newbox \b_pack_combinations_temp_saved
-\newbox \b_pack_combinations_content_saved
-\newbox \b_pack_combinations_caption_saved
-
-\setfalse\c_strc_constructions_define_commands
-
-\def\pack_combinations_push
- {\advance\c_pack_combinations_nesting\plusone
- \ifnum\c_pack_combinations_nesting>\plusone
- \c_pack_combinations_x_saved \c_pack_combinations_x
- \c_pack_combinations_y_saved \c_pack_combinations_y
- \c_pack_combinations_max_saved\c_pack_combinations_max
- \d_pack_combinations_ht_saved \d_pack_combinations_ht
- \setbox\b_pack_combinations_captions_saved\box\b_pack_combinations_captions
- \setbox\b_pack_combinations_temp_saved \box\b_pack_combinations_temp
- \setbox\b_pack_combinations_content_saved \box\b_pack_combinations_content
- \setbox\b_pack_combinations_caption_saved \box\b_pack_combinations_caption
- \else
- \globalsetsystemmode{combination}% why global
- \fi}
-
-\def\pack_combinations_pop
- {\ifnum\c_pack_combinations_nesting>\plusone
- \global\c_pack_combinations_x \c_pack_combinations_x_saved
- \global\c_pack_combinations_y \c_pack_combinations_y_saved
- \global\c_pack_combinations_max\c_pack_combinations_max_saved
- \global\d_pack_combinations_ht \d_pack_combinations_ht_saved
- \global\setbox\b_pack_combinations_captions\box\b_pack_combinations_captions_saved
- \global\setbox\b_pack_combinations_temp \box\b_pack_combinations_temp_saved
- \setbox\b_pack_combinations_content \box\b_pack_combinations_content_saved
- \setbox\b_pack_combinations_caption \box\b_pack_combinations_caption_saved
- \else
- \globalresetsystemmode{combination}% why global
- \fi
- \advance\c_pack_combinations_nesting\minusone}
-
-\definelabel
- [\v!combination] % handy for configuring
- [\c!numberconversion=\v!character,
- \c!text=]
-
-\settrue\c_strc_constructions_define_commands
-
-\setupcombination
- [\c!width=\v!fit,
- \c!height=\v!fit,
- \c!distance=\emwidth,
- \c!location=\v!bottom, % can be something {top,left}
- \c!before=\blank,
- \c!after=,
- \c!inbetween={\blank[\v!medium]},
- %\c!style=,
- %\c!color=,
- \c!nx=2, % new
- \c!ny=1, % new
- \c!align=\v!middle]
-
-\let\setupcombinations\setupcombination % for the moment (we might distinguish)
-
-\installcorenamespace{combinationlocation}
-\installcorenamespace{combinationalternative}
-
-\appendtoks
- \setfalse\c_strc_constructions_define_commands
- \normalexpanded
- {\definelabel
- [\v!combination:\currentcombination]%
- [\v!combination\ifempty\currentcombinationparent\else:\currentcombinationparent\fi]}%
- [\s!counter=\currentcombination,\c!levels=1]%
- \settrue\c_strc_constructions_define_commands
-\to \everydefinecombination
-
-\setvalue{\??combinationlocation\v!left }{\let\m_pack_combinations_leftfiller\relax}
-\setvalue{\??combinationlocation\v!right }{\let\m_pack_combinations_rightfiller\relax}
-\setvalue{\??combinationlocation\v!top }{\let\m_pack_combinations_valigner\depthonlybox}
-\setvalue{\??combinationlocation\v!middle}{\let\m_pack_combinations_valigner\halfwaybox}
-
-\def\pack_combinations_location_reset
- {\let\m_pack_combinations_rightfiller\hfil
- \let\m_pack_combinations_leftfiller \hfil
- \let\m_pack_combinations_valigner \firstofoneargument}
-
-\pack_combinations_location_reset
-
-\def\pack_combinations_location_step#1%
- {\csname\??combinationlocation#1\endcsname}
-
-% formally ok:
-%
-% \protected\def\stopcombination
-% {\egroup
-% \egroup}
-%
-% more robust:
-%
-% \protected\def\stopcombination
-% {{}{}{}{}{}{}{}{}% catches (at most 4) missing entries
-% \egroup
-% \egroup}
-%
-% even better:
-%
-% \protected\def\stopcombination
-% {\bgroup
-% \scratchtoks{{}}%
-% \dorecurse\c_pack_combinations_y
-% {\toksapp{{}{}}}%
-% \expandafter\egroup\the\scratchtoks
-% \egroup
-% \dostoptagged
-% \egroup}
-%
-% faster
-
-\protected\def\pack_common_content_start{\bgroup\ignorespaces}
-\protected\def\pack_common_content_stop {\removeunwantedspaces\egroup}
-\protected\def\pack_common_caption_start{\bgroup\ignorespaces}
-\protected\def\pack_common_caption_stop {\removeunwantedspaces\egroup}
-
-\newtoks\everycombination
-
-\protected\def\stopcombination
- {\bgroup\normalexpanded{\egroup{}\ntimes{{}{}}\c_pack_combinations_y}% brr
- \dostoptagged
- \egroup
- \pack_combinations_pop
- \egroup}
-
-\permanent\tolerant\protected\def\startcombination[#1]#*[#2]% can be simplified
- {\bgroup % so we can grab a group
- \pack_combinations_push
- \edef\currentcombination{#1}%
- \edef\currentcombinationspec{#2}%
- \ifempty\currentcombinationspec
- \ifcondition\validassignment{#1}%
- \let\currentcombination\empty
- \setupcurrentcombination[#1]%
- \edef\currentcombinationspec{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
- \else
- \doifelseinstring{*}\currentcombination
- {\edef\currentcombinationspec{\currentcombination*\plusone*}%
- \let\currentcombination\empty}
- {\doifelsenumber\currentcombination
- {\edef\currentcombinationspec{\currentcombination*\plusone*}%
- \let\currentcombination\empty}
- {\edef\currentcombinationspec{\combinationparameter\c!nx*\combinationparameter\c!ny*}}}%
- \fi
- \else
- \ifcondition\validassignment{#2}%
- \setupcurrentcombination[#2]%
- \edef\currentcombinationspec{\combinationparameter\c!nx*\combinationparameter\c!ny*}%
- \else
- \edef\currentcombinationspec{\currentcombinationspec*\plusone*}%
- \fi
- \fi
- %
- \forgetall
- %
- \the\everycombination
- %
- \let\startcontent\pack_common_content_start
- \let\stopcontent \pack_common_content_stop
- \let\startcaption\pack_common_caption_start
- \let\stopcaption \pack_common_caption_stop
- %
- \edef\p_height {\combinationparameter\c!height}%
- \edef\p_width {\combinationparameter\c!width}%
- \edef\p_location{\combinationparameter\c!location}%
- \edef\p_distance{\combinationparameter\c!distance}%
- %
- \pack_combinations_location_reset
- \rawprocesscommacommand[\p_location]\pack_combinations_location_step
- %
- \dostarttaggedchained\t!combination\currentcombination\??combination
- \vbox \ifx\p_height\v!fit\else to \p_height \fi \bgroup
- \let\combination\empty % permits \combination{}{} handy for cld
- \normalexpanded{\pack_combinations_start_indeed[\currentcombinationspec]}}
-
-\let\pack_combinations_check_x_y\relax
-
-\protected\def\pack_combinations_start_indeed[#1*#2*#3]%
- {\global\c_pack_combinations_x#1\relax
- \global\c_pack_combinations_y#2\relax
- \setexpandedcombinationparameter\c!nx{\the\c_pack_combinations_x}% in case we access it
- \setexpandedcombinationparameter\c!ny{\the\c_pack_combinations_y}% in case we access it
- \pack_combinations_check_x_y
- \dotagcombination
- \global\setbox\b_pack_combinations_captions\emptybox
- \global\c_pack_combinations_max\c_pack_combinations_x
- \multiply\c_pack_combinations_y\c_pack_combinations_x
- \tabskip\zeropoint
- \halign \ifx\p_width\v!fit\else to \p_width \fi \bgroup % repetitive preamble
- \aligntab
- \m_pack_combinations_leftfiller
- \alignmark\alignmark
- \m_pack_combinations_rightfiller
- \aligntab
- \tabskip\zeropoint \s!plus 1fill % \fillskip
- \alignmark\alignmark
- \cr
- \pack_combinations_pickup}
-
-%D I've first considered using a constructor directly but it's more overhead and
-%D some settings conflict with already used combination settings so instead we plug
-%D in labels. This also permits extensions later on.
-
-\appendtoks
- \edef\p_pack_combinations_alternative{\combinationparameter\c!alternative}%
-\to \everydefinecombination
-
-\def\pack_combinations_pickup
- {\dostarttagged\t!combinationpair\empty % better make this text
- \dostarttagged\t!combinationcontent\empty
- \assumelongusagecs\pack_combinations_pickup_content_indeed}
-
-\def\pack_combinations_pickup_content_indeed
- {\dowithnextboxcs\pack_combinations_pickup_content\hbox}
-
-\def\pack_combinations_pickup_content % we want to add struts but still ignore an empty box
- {\dostoptagged
- \setbox\b_pack_combinations_content\box\nextbox
- \dostarttagged\t!combinationcaption\empty
- \expandnamespacemacro\??combinationalternative\p_pack_combinations_alternative\v!text}
-
-\setvalue{\??combinationalternative\v!text}%
- {\assumelongusagecs\pack_combinations_alternative_text_indeed}
-
-\setvalue{\??combinationalternative\v!label}%
- {\assumelongusagecs\pack_combinations_alternative_label_indeed}
-
-\def\pack_combinations_alternative_text_indeed
- {\dowithnextboxcs\pack_combinations_pickup_caption\vtop\bgroup
- \afterassignment\pack_combinations_caption_first
- \let\nexttoken=}
-
-\def\pack_combinations_alternative_label_indeed
- {\dowithnextboxcs\pack_combinations_pickup_caption\vtop\bgroup
- \hsize\wd\b_pack_combinations_content
- \usealignparameter\combinationparameter
- \usecombinationstyleandcolor\c!style\c!color
- \begstrut
- \normalexpanded{\strc_labels_command[\v!combination\ifempty\currentcombination\else:\currentcombination\fi]}%
- \endstrut
- \egroup}
-
-\appendtoks
- \edef\p_pack_combinations_alternative{\combinationparameter\c!alternative}%
- \ifx\p_pack_combinations_alternative\v!label
- \edef\p_continue{\combinationparameter\c!continue}%
- \ifx\p_continue\v!yes \else
- \normalexpanded{\strc_labels_reset{\v!combination\ifempty\currentcombination\else:\currentcombination\fi}{1}}%
- \fi
- \fi
-\to \everycombination
-
-\def\pack_combinations_pickup_caption
- {\dostoptagged
- \dostoptagged
- \setbox\b_pack_combinations_caption\box\nextbox
- \pack_combinations_pickup_package_pair}
-
-\def\pack_combinations_caption_first
- {\futurelet\nexttoken\pack_combinations_caption_second}
-
-\def\pack_combinations_caption_second
- {\ifx\nexttoken\egroup
- % the caption is empty
- \orelse\ifx\nexttoken\stopcaption
- % the caption is empty (new per 2014-05-24)
- \else
- % todo: \p_pack_combinations_alternative\v!none: no style, strut etc
- \hsize\wd\b_pack_combinations_content
- \usealignparameter\combinationparameter
- \usecombinationstyleandcolor\c!style\c!color
- \bgroup
- \aftergroup\endstrut
- \aftergroup\egroup
- \begstrut
- \fi}
-
-\def\pack_combinations_pickup_package_pair % we need to store the caption row
- {\vbox
- {\forgetall
- \m_pack_combinations_valigner{\box\b_pack_combinations_content}%
- % we need to save the caption for a next alignment line
- \pack_combinations_save_caption}%
- \ifnum\c_pack_combinations_y>\plusone
- \global\advance\c_pack_combinations_y\minusone
- \global\advance\c_pack_combinations_x\minusone
- \ifcase\c_pack_combinations_x
- \doubleexpandafter\pack_combinations_pickup_package_pair_a
- \else
- \doubleexpandafter\pack_combinations_pickup_package_pair_b
- \fi
- \else
- \singleexpandafter\pack_combinations_pickup_package_pair_c
- \fi}
-
-\def\pack_combinations_pickup_package_pair_a
- {\cr
- \pack_combinations_flush_captions
- \noalign
- {\forgetall
- \global\setbox\b_pack_combinations_captions\emptybox
- \nointerlineskip
- \combinationparameter\c!after
- \combinationparameter\c!before
- \vss
- \nointerlineskip}%
- \global\c_pack_combinations_x\c_pack_combinations_max
- \pack_combinations_pickup}
-
-\def\pack_combinations_pickup_package_pair_b
- {\aligntab
- \aligntab
- \aligntab
- \kern\p_distance
- \aligntab
- \pack_combinations_pickup}
-
-\def\pack_combinations_pickup_package_pair_c
- {\cr
- \pack_combinations_flush_captions
- \egroup}
-
-\installcorenamespace{combinationcaption}
-
-\def\pack_combinations_save_caption
- {\ifdim\htdp\b_pack_combinations_caption>\d_pack_combinations_ht
- \global\d_pack_combinations_ht\htdp\b_pack_combinations_caption
- \fi
- \savebox{\??combinationcaption:\number\c_pack_combinations_nesting}{\number\c_pack_combinations_x}{\box\b_pack_combinations_caption}}
-
-\def\pack_combinations_flush_captions
- {\noalign
- {\ifdim\d_pack_combinations_ht>\zeropoint
- \nointerlineskip % indeed
- \combinationparameter\c!inbetween
- \global\c_pack_combinations_x\c_pack_combinations_max
- \glet\pack_combinations_flush_captions_indeed\pack_combinations_flush_captions_yes
- \else
- \glet\pack_combinations_flush_captions_indeed\pack_combinations_flush_captions_nop
- \fi}%
- \pack_combinations_flush_captions_indeed
- \crcr}
-
-\def\pack_combinations_flush_captions_yes
- {\vpack to \d_pack_combinations_ht\bgroup
- \foundbox{\??combinationcaption:\number\c_pack_combinations_nesting}{\number\c_pack_combinations_x}%
- \vss
- \egroup
- \global\advance\c_pack_combinations_x\minusone
- \ifnum\c_pack_combinations_x>\zerocount % \c_pack_combinations_max
- \expandafter\pack_combinations_flush_captions_yes_followup
- \else
- \global\d_pack_combinations_ht\zeropoint
- \initializeboxstack{\??combinationcaption:\number-\c_pack_combinations_nesting}%
- \fi}
-
-\let\pack_combinations_flush_captions_nop\donothing
-
-\def\pack_combinations_flush_captions_yes_followup
- {\aligntab
- \aligntab
- \aligntab
- \aligntab
- \pack_combinations_flush_captions_indeed}
-
-%D \macros
-%D {startfloatcombination}
-%D
-%D \setupexternalfigures[directory={../sample}]
-%D \startbuffer
-%D \placefigure
-%D [left,none]
-%D {}
-%D {\startfloatcombination[2*2]
-%D \placefigure{alpha}{\externalfigure[cow.pdf][width=1cm]}
-%D \placefigure{beta} {\externalfigure[cow.pdf][width=2cm]}
-%D \placefigure{gamma}{\externalfigure[cow.pdf][width=3cm]}
-%D \placefigure{delta}{\externalfigure[cow.pdf][width=4cm]}
-%D \stopfloatcombination}
-%D
-%D \input tufte
-%D \stopbuffer
-%D
-%D \typebuffer \getbuffer
-
-\protected\def\pack_combinations_float_hack_a#1%
- {\strc_floats_build_box_separate_split{#1}%
- \box\b_strc_floats_separate_content}
-
-\protected\def\pack_combinations_float_hack_b#1%
- {\box\b_strc_floats_separate_caption}
-
-\permanent\tolerant\protected\def\startfloatcombination[#1]#*[#2]%
- {\ifinsidefloat\else\dontleavehmode\fi % tricky, floatcombinations fail to align well otherwise
- \vbox\bgroup
- \strc_floats_build_box_separate_set
- %\insidecolumnstrue % trick, forces no centering, todo: proper switch/feature
- \postcenterfloatmethod\zerocount
- \forcelocalfloats
- \protected\def\stopfloatcombination{\pack_combinations_stop_float{#1}}}
-
-\let\stopfloatcombination\relax
-
-\def\pack_combinations_float_check_x_y
- {\ifnum\numexpr\c_pack_combinations_x*\c_pack_combinations_y\relax<\noflocalfloats\relax
- \global\c_pack_combinations_x\noflocalfloats
- \global\c_pack_combinations_y\plusone
- \fi
- \let\pack_combinations_check_x_y\relax}%
-
-\def\pack_combinations_stop_float#1%
- {\scratchtoks\emptytoks
- \dorecurse\noflocalfloats
- {\appendetoks
- {\pack_combinations_float_hack_a{\recurselevel}}%
- {\pack_combinations_float_hack_b{\recurselevel}}%
- \to\scratchtoks}% brrr
- \let\pack_combinations_check_x_y\pack_combinations_float_check_x_y
- \expanded{\startcombination[#1]\the\scratchtoks}\stopcombination
- \resetlocalfloats
- \egroup}
-
-%D \macros
-%D {definepairedbox, setuppairedbox, placepairedbox}
-%D
-%D Paired boxes, formally called legends, but from now on a legend is just an
-%D instance, are primarily meant for typesetting some text alongside an
-%D illustration. Although there is quite some variation possible, the functionality
-%D is kept simple, if only because in most cases such pairs are typeset sober.
-%D
-%D The location specification accepts a pair, where the first keyword specifies the
-%D arrangement, and the second one the alignment. The first key of the location pair
-%D is one of \type {left}, \type {right}, \type {top} or \type {bottom}, while the
-%D second key can also be \type {middle}.
-%D
-%D The first box is just collected in an horizontal box, but the second one is a
-%D vertical box that gets passed the bodyfont and alignment settings.
-%D
-%D In many cases the table builders can be used instead, but as this mechanism is a
-%D traditional \CONTEXT\ one we keep it around.
-
-%D \macros
-%D {setuplegend, placelegend}
-%D
-%D It makes sense to typeset a legend to a figure in \TEX\ and not in a drawing
-%D package. The macro \type {\placelegend} combines a figure (or something else) and
-%D its legend. This command is just a paired box.
-%D
-%D The legend is placed according to \type {location}, being \type {bottom} or \type
-%D {right}. The macro macro is used as follows.
-%D
-%D \starttyping
-%D \placefigure
-%D {whow}
-%D {\placelegend
-%D {\externalfigure[cow]}
-%D {\starttabulate
-%D \NC 1 \NC head \NC \NR
-%D \NC 2 \NC legs \NC \NR
-%D \NC 3 \NC tail \NC \NR
-%D \stoptabulate}}
-%D
-%D \placefigure
-%D {whow}
-%D {\placelegend
-%D {\externalfigure[cow]}
-%D {\starttabulate[|l|l|l|l|]
-%D \NC 1 \NC head \NC 3 \NC tail \NC \NR
-%D \NC 2 \NC legs \NC \NC \NC \NR
-%D \stoptabulate}}
-%D
-%D \placefigure
-%D {whow}
-%D {\placelegend[n=2]
-%D {\externalfigure[cow]}
-%D {\starttabulate
-%D \NC 1 \NC head \NC \NR
-%D \NC 2 \NC legs \NC \NR
-%D \NC 3 \NC tail \NC \NR
-%D \stoptabulate}}
-%D
-%D \placefigure
-%D {whow}
-%D {\placelegend[n=2]
-%D {\externalfigure[cow]}
-%D {head \par legs \par tail}}
-%D
-%D \placefigure
-%D {whow}
-%D {\placelegend[n=2]
-%D {\externalfigure[cow]}
-%D {\startitemize[packed]
-%D \item head \item legs \item tail \item belly \item horns
-%D \stopitemize}}
-%D
-%D \placefigure
-%D {whow}
-%D {\placelegend[n=2,width=.8\hsize]
-%D {\externalfigure[cow]}
-%D {\startitemize[packed]
-%D \item head \item legs \item tail \item belly \item horns
-%D \stopitemize}}
-%D
-%D \def\MytTestTwo#1#2%
-%D {\placefigure
-%D {whow}
-%D {\placelegend[location={#1,#2}]
-%D {\externalfigure[cow]}
-%D {\starttabulate
-%D \NC 1 \NC head \NC \NR
-%D \NC 2 \NC legs \NC \NR
-%D \NC 3 \NC tail \NC \NR
-%D \stoptabulate}}}
-%D
-%D \def\MytTestOne#1{\processcommalist[left,right,top,bottom]{\MytTestTwo{#1}}}
-%D
-%D \processcommalist[left,right,top,bottom,middle]\MytTestOne
-%D \stoptyping
-%D
-%D More structure is also possible (the order matters!):
-%D
-%D \starttyping
-%D \startplacefigure[title=whow]
-%D \startplacelegend[location={bottom,middle},color=red]
-%D \startcontent
-%D \externalfigure[cow]
-%D \stopcontent
-%D \startcaption
-%D \starttabulate[|l|l|]
-%D \NC 1 \NC head \NC \NR
-%D \NC 2 \NC legs \NC \NR
-%D \NC 3 \NC tail \NC \NR
-%D \stoptabulate
-%D \stopcaption
-%D \stopplacelegend
-%D \stopplacefigure
-%D \stoptyping
-
-% todo: natural size
-
-\newsystemmode{pairedbox}
-
-\appendtoks
- \globalresetsystemmode{pairedbox}%
-\to \everyinsidefloat
-
-\installcorenamespace {pairedbox}
-
-\installcommandhandler \??pairedbox {pairedbox} \??pairedbox
-
-\setuppairedbox
- [\c!n=1,
- \c!distance=\bodyfontsize,
- %\c!before=,
- %\c!after=,
- %\c!color=,
- %\c!style=,
- \c!inbetween={\blank[\v!medium]},
- \c!width=\hsize,
- \c!height=\vsize,
- \c!maxwidth=\textwidth, % \makeupwidth,
- \c!maxheight=\textheight, % \makeupheight,
- %\c!bodyfont=,
- %\c!align=,
- \c!location=\v!bottom]
-
-% watch the hsize/vsize tricks
-
-\newbox \b_pack_pairedboxes_first
-\newbox \b_pack_pairedboxes_second
-\newdimen\s_pack_pairedboxes_size
-
-\appendtoks
- \setuevalue{\e!setup\currentpairedbox\e!endsetup}{\setuppairedbox [\currentpairedbox]}%
- \setuevalue{\e!place\currentpairedbox }{\placepairedbox [\currentpairedbox]}% one argument is mandate anyway
- \setuevalue{\e!start\e!place\currentpairedbox }{\startplacepairedbox[\currentpairedbox]}% one argument is mandate anyway
- \setuevalue{\e!stop\e!place \currentpairedbox }{\stopplacepairedbox }%
-\to \everydefinepairedbox
-
-\permanent\tolerant\protected\def\startplacepairedbox[#1]#*[#2]%
- {\bgroup
- \edef\currentpairedbox{#1}%
- \setupcurrentpairedbox[#2]%
- \pairedboxparameter\c!before
- \bgroup
- \edef\p_location{\pairedboxparameter\c!location}%
- \edef\p_n {\pairedboxparameter\c!n}%
- %
- \let\startcontent\pack_common_content_start
- \let\stopcontent \pack_common_content_stop
- \let\startcaption\pack_common_caption_start
- \let\stopcaption \pack_common_caption_stop
- %
- \globalsetsystemmode{pairedbox}%
- \pack_pairedboxes_before
- \assumelongusagecs\pack_pairedboxes_first_pickup}
-
-\permanent\protected\def\stopplacepairedbox{} % we just pick up two boxes
-
-\let\placepairedbox\startplacepairedbox % we just pick up two boxes
-
-\def\pack_pairedboxes_first_pickup
- {\dowithnextboxcs\pack_pairedboxes_first\hbox
- \bgroup
- \let\next=}
-
-\def\pack_pairedboxes_first
- {\pack_pairedboxes_between
- \assumelongusagecs\pack_pairedboxes_second_pickup}
-
-\def\pack_pairedboxes_second_pickup
- {\dowithnextboxcs\pack_pairedboxes_second\vbox
- \bgroup
- \pack_pairedboxes_inside_second
- \let\next=}
-
-\def\pack_pairedboxes_second
- {\pack_pairedboxes_after
- \egroup
- \pairedboxparameter\c!after
- \egroup}
-
-\newconditional\c_pack_pairedboxes_horizontal \settrue\c_pack_pairedboxes_horizontal
-
-\installcorenamespace{pairedboxnature}
-\installcorenamespace{pairedboxalign}
-
-\let\pack_pairedboxes_fill_top \relax
-\let\pack_pairedboxes_fill_bottom\relax
-
-\setvalue{\??pairedboxnature\v!left}%
- {\settrue\c_pack_pairedboxes_horizontal
- \let\pack_pairedboxes_flush\pack_pairedboxes_flush_left}
-
-\setvalue{\??pairedboxnature\v!right}%
- {\settrue\c_pack_pairedboxes_horizontal
- \let\pack_pairedboxes_flush\pack_pairedboxes_flush_right}
-
-\setvalue{\??pairedboxnature\v!top}%
- {\setfalse\c_pack_pairedboxes_horizontal
- \let\pack_pairedboxes_fill_top\relax
- \let\pack_pairedboxes_fill_bottom\vss
- \let\pack_pairedboxes_flush\pack_pairedboxes_flush_top}
-
-\setvalue{\??pairedboxnature\v!bottom}%
- {\setfalse\c_pack_pairedboxes_horizontal
- \let\pack_pairedboxes_fill_top\vss
- \let\pack_pairedboxes_fill_bottom\relax
- \let\pack_pairedboxes_flush\pack_pairedboxes_flush_bottom}
-
-\def\pack_pairedboxes_flush_left
- {\box\b_pack_pairedboxes_second
- \kern\pairedboxparameter\c!distance
- \box\b_pack_pairedboxes_first}
-
-\def\pack_pairedboxes_flush_right
- {\box\b_pack_pairedboxes_first
- \kern\pairedboxparameter\c!distance
- \box\b_pack_pairedboxes_second}
-
-\def\pack_pairedboxes_flush_top
- {\box\b_pack_pairedboxes_second
- \endgraf
- \nointerlineskip
- \pairedboxparameter\c!inbetween
- \box\b_pack_pairedboxes_first}
-
-\def\pack_pairedboxes_flush_bottom
- {\box\b_pack_pairedboxes_first
- \endgraf
- \nointerlineskip
- \pairedboxparameter\c!inbetween
- \box\b_pack_pairedboxes_second}
-
-\setvalue{\??pairedboxalign\v!left}% 0
- {\let\pack_pairedboxes_align_l\relax
- \let\pack_pairedboxes_align_r\hss
- \let\pack_pairedboxes_align_t\relax
- \let\pack_pairedboxes_align_b\relax}
-
-\setvalue{\??pairedboxalign\v!right}% 1
- {\let\pack_pairedboxes_align_l\hss
- \let\pack_pairedboxes_align_r\relax
- \let\pack_pairedboxes_align_t\relax
- \let\pack_pairedboxes_align_b\relax}
-
-\setvalue{\??pairedboxalign\v!high}% 2
- {\let\pack_pairedboxes_align_l\relax
- \let\pack_pairedboxes_align_r\relax
- \let\pack_pairedboxes_align_t\relax
- \let\pack_pairedboxes_align_b\vss}
-
-\setvalue{\??pairedboxalign\v!low}% 3
- {\let\pack_pairedboxes_align_l\relax
- \let\pack_pairedboxes_align_r\relax
- \let\pack_pairedboxes_align_t\vss
- \let\pack_pairedboxes_align_b\relax}
-
-\setvalue{\??pairedboxalign\v!middle}% 4
- {\let\pack_pairedboxes_align_l\hss
- \let\pack_pairedboxes_align_r\hss
- \let\pack_pairedboxes_align_t\vss
- \let\pack_pairedboxes_align_b\vss}
-
-\setvalue{\??pairedboxalign\v!bottom}{\getvalue{\??pairedboxalign\v!low }}
-\setvalue{\??pairedboxalign \v!top}{\getvalue{\??pairedboxalign\v!high}}
-
-\def\pack_pairedbox_valign#1{\setbox#1\vpack to \s_pack_pairedboxes_size{\pack_pairedboxes_align_t\box#1\pack_pairedboxes_align_b}}
-\def\pack_pairedbox_halign#1{\setbox#1\hpack to \s_pack_pairedboxes_size{\pack_pairedboxes_align_l\box#1\pack_pairedboxes_align_r}}
-
-\def\pack_pairedboxes_before
- {\ifempty\p_location
- \csname\??pairedboxnature\v!left \endcsname
- \csname\??pairedboxalign \v!middle\endcsname
- \else
- \getfromcommacommand[\p_location][1]%
- \csname\??pairedboxnature
- \ifcsname\??pairedboxnature\commalistelement\endcsname\commalistelement\else\v!left\fi
- \endcsname
- \getfromcommacommand[\p_location][2]%
- \csname\??pairedboxalign
- \ifcsname\??pairedboxalign\commalistelement\endcsname\commalistelement\else\v!middle\fi
- \endcsname
- \fi}
-
-\def\pack_pairedboxes_between
- {\usebodyfontparameter\pairedboxparameter
- \setbox\b_pack_pairedboxes_first\box\nextbox
- \ifconditional\c_pack_pairedboxes_horizontal
- \pack_pairedboxes_between_horizontal
- \else
- \pack_pairedboxes_between_vertical
- \fi
- \ifnum\p_n>\plusone
- \setrigidcolumnhsize\hsize{\pairedboxparameter\c!distance}\p_n
- \fi}
-
-\def\pack_pairedboxes_between_horizontal
- {\scratchdistance\pairedboxparameter\c!distance
- \scratchwidth\pairedboxparameter\c!maxwidth\relax
- \setlocalhsize
- \hsize\dimexpr\availablehsize-\wd\b_pack_pairedboxes_first-\scratchdistance\relax
- \hsize\pairedboxparameter\c!width\relax % can be \hsize
- \scratchdimen\dimexpr\wd\b_pack_pairedboxes_first+\scratchdistance\relax
- \ifdim\dimexpr\hsize+\scratchdimen\relax>\scratchwidth
- \hsize\dimexpr\scratchwidth-\scratchdimen\relax
- \fi}
-
-\def\pack_pairedboxes_between_vertical
- {\scratchwidth\pairedboxparameter\c!maxwidth\relax
- \hsize\wd\b_pack_pairedboxes_first
- \hsize\pairedboxparameter\c!width\relax % can be \hsize
- \ifdim\hsize>\scratchwidth\relax
- \hsize\scratchwidth
- \fi}
-
-\def\pack_pairedboxes_after
- {\setbox\b_pack_pairedboxes_second\vpack
- {\ifnum\p_n>\plusone
- \rigidcolumnbalance\nextbox
- \else
- \box\nextbox
- \fi}%
- \ifconditional\c_pack_pairedboxes_horizontal
- \pack_pairedboxes_pack_horizontal
- \else
- \pack_pairedboxes_pack_vertical
- \fi}
-
-\def\pack_pairedboxes_pack_horizontal
- {\dontleavehmode\hbox\bgroup
- \forgetall
- \s_pack_pairedboxes_size\ht
- \ifdim\ht\b_pack_pairedboxes_first>\ht\b_pack_pairedboxes_second
- \b_pack_pairedboxes_first
- \else
- \b_pack_pairedboxes_second
- \fi
- \vsize\s_pack_pairedboxes_size
- \ifdim\s_pack_pairedboxes_size<\pairedboxparameter\c!height\relax % can be \vsize
- \s_pack_pairedboxes_size\pairedboxparameter\c!height
- \fi
- \ifdim\s_pack_pairedboxes_size>\pairedboxparameter\c!maxheight\relax
- \s_pack_pairedboxes_size\pairedboxparameter\c!maxheight
- \fi
- \pack_pairedbox_valign\b_pack_pairedboxes_first
- \pack_pairedbox_valign\b_pack_pairedboxes_second
- \pack_pairedboxes_flush
- \egroup}
-
-\def\pack_pairedboxes_pack_vertical
- {\dontleavehmode\vpack\bgroup
- \forgetall
- \s_pack_pairedboxes_size\wd
- \ifdim\wd\b_pack_pairedboxes_first>\wd\b_pack_pairedboxes_second
- \b_pack_pairedboxes_first
- \else
- \b_pack_pairedboxes_second
- \fi
- \pack_pairedbox_halign\b_pack_pairedboxes_first
- \pack_pairedbox_halign\b_pack_pairedboxes_second
- \s_pack_pairedboxes_size\ht\b_pack_pairedboxes_second
- \vsize\s_pack_pairedboxes_size
- \ifdim\ht\b_pack_pairedboxes_second<\pairedboxparameter\c!height\relax % can be \vsize
- \s_pack_pairedboxes_size\pairedboxparameter\c!height\relax % \relax needed
- \fi
- \ifdim\s_pack_pairedboxes_size>\pairedboxparameter\c!maxheight\relax % todo: totale hoogte
- \s_pack_pairedboxes_size\pairedboxparameter\c!maxheight\relax % \relax needed
- \fi
- \ifdim\s_pack_pairedboxes_size>\ht\b_pack_pairedboxes_second
- \setbox\b_pack_pairedboxes_second\vpack to \s_pack_pairedboxes_size
- {\pack_pairedboxes_fill_top
- \box\b_pack_pairedboxes_second
- \pack_pairedboxes_fill_bottom}% \kern\zeropoint
- \fi
- \pack_pairedboxes_flush
- \egroup}
-
-\def\pack_pairedboxes_inside_second
- {\forgetall
- \setupalign[\pairedboxparameter\c!align]%
- \usepairedboxstyleandcolor\c!style\c!color
- \tolerantTABLEbreaktrue % hm.
- \blank[\v!disable]% use fast one
- \everypar{\begstrut}} % also flushers here (see bTABLE)
-
-\definepairedbox[\v!legend]
-
-\permanent\protected\def\placeontopofeachother{\bgroup\dowithnextboxcs\pack_topofeachother_one\hbox}
-\permanent\protected\def\placesidebyside {\bgroup\dowithnextboxcs\pack_sidebyside_one \hbox}
-
-\def\pack_topofeachother_one{\bgroup\setbox\scratchboxone\box\nextbox\dowithnextboxcs\pack_topofeachother_two\hbox}
-\def\pack_sidebyside_one {\bgroup\setbox\scratchboxone\box\nextbox\dowithnextboxcs\pack_sidebyside_two \hbox}
-
-\def\pack_topofeachother_two{\setbox\scratchboxtwo\box\nextbox
- \halign{\hss\alignmark\alignmark\hss\cr\box\scratchboxone\cr\box\scratchboxtwo\cr}%
- \egroup\egroup}
-\def\pack_sidebyside_two {\setbox\scratchboxtwo\box\nextbox
- \valign{\vss\alignmark\alignmark\vss\cr\box\scratchboxone\cr\box\scratchboxtwo\cr}%
- \egroup\egroup}
-
-\protect \endinput