diff options
Diffstat (limited to 'tex/context/base/m-visual.mkiv')
-rw-r--r-- | tex/context/base/m-visual.mkiv | 581 |
1 files changed, 12 insertions, 569 deletions
diff --git a/tex/context/base/m-visual.mkiv b/tex/context/base/m-visual.mkiv index 504c0d0c5..5d259f6ab 100644 --- a/tex/context/base/m-visual.mkiv +++ b/tex/context/base/m-visual.mkiv @@ -13,9 +13,6 @@ \unprotect -%D Much will probably be replaced by \LUA\ based solutions which is -%D rather trivial and fun doing. - %D This module collect a few more visual debugger features. I %D needed them for manuals and styles. The macros are documented %D in a my way document. @@ -31,11 +28,11 @@ \begingroup \directcolored[fakerulecolor]% \iffakebaseline - \vrule\s!height1.25ex\s!depth-.05ex\s!width#1% + \vrule\!!height1.25ex\!!depth-.05ex\!!width#1% \kern-#1% - \vrule\s!height-.05ex\s!depth .25ex\s!width#1% + \vrule\!!height-.05ex\!!depth .25ex\!!width#1% \else - \vrule\s!height1.25ex\s!depth .25ex\s!width#1% + \vrule\!!height1.25ex\!!depth .25ex\!!width#1% \fi \endgroup \allowbreak} @@ -119,9 +116,9 @@ \ifx\dofakedroppedcaps\relax {\fakeparindentcolor \vrule - \s!height \strutheight % not longer .5ex - \s!depth \strutdepth % not longer 0pt - \s!width \parindent}% + \!!height \strutheight % not longer .5ex + \!!depth \strutdepth % not longer 0pt + \!!width \parindent}% \else \dofakedroppedcaps \let\dofakedroppedcaps\relax \fi @@ -140,9 +137,9 @@ \advance\scratchdimen -\lineheight \advance\scratchdimen \dp\strutbox \vrule - \s!width#1\wd\scratchbox - \s!height\ht\scratchbox - \s!depth\scratchdimen}% + \!!width#1\wd\scratchbox + \!!height\ht\scratchbox + \!!depth\scratchdimen}% \ht\scratchbox\ht\strutbox \dp\scratchbox\dp\strutbox \hangindent\wd\scratchbox @@ -217,7 +214,7 @@ {\hss\lower.5\ht\scratchbox\box\scratchbox\hss}% \hbox to \zeropoint {\hss - \black\vrule\s!width6\linewidth\s!height3\linewidth\s!depth3\linewidth + \black\vrule\!!width6\linewidth\!!height3\linewidth\!!depth3\linewidth \hss}}} \unexpanded\def\bodyfontgrid @@ -246,564 +243,10 @@ \placefigure{\fakewords{8}{15}}{\fakeimage{5cm}{3cm}{10cm}{5cm}} \dorecurse{2}{\fakewords{100}{200}\endgraf}}}}} -%D Moved code: - -%D \module -%D [ file=trac-vis, % was core-vis, -%D version=1996.06.01, -%D title=\CONTEXT\ Tracking Macros, -%D subtitle=Visualization, -%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. - -%D This module adds some more visualization cues to the ones -%D supplied in the support module. -%D -%D %\everypar dual character, \the\everypar and \everypar= -%D %\hrule cannot be grabbed in advance, switches mode -%D %\vrule cannot be grabbed in advance, switches mode -%D % -%D %\indent only explicit ones -%D %\noindent only explicit ones -%D %\par only explicit ones -%D -%D %\leftskip only if explicit one -%D %\rightskip only if explicit one - -\writestatus{loading}{ConTeXt Tracking Macros / Visualization} - -\unprotect - -%D \macros -%D {indent, noindent, par} -%D -%D \TeX\ acts upon paragraphs. In mosts documents paragraphs -%D are separated by empty lines, which internally are handled as -%D \type{\par}. Paragraphs can be indented or not, depending on -%D the setting of \type{\parindent}, the first token of a -%D paragraph and/or user suppressed or forced indentation. -%D -%D Because the actual typesetting is based on both explicit -%D user and implicit system actions, visualization is only -%D possible for the user supplied \type{\indent}, -%D \type{\noindent}, and \type{\par}. Other -%D 'clever' tricks will quite certainly lead to more failures -%D than successes, so we only support these three explicit -%D primitives and one macro: - -\unexpanded\def\showparagraphcue#1#2#3#4#5% - {\bgroup - \scratchdimen#1\relax - \dontinterfere - \dontcomplain - %boxrulewidth5\testrulewidth - #3#4\relax - \setbox\scratchbox\normalhbox to \scratchdimen - {#2{\ruledhbox to \scratchdimen - {\vrule #5 20\testrulewidth \s!width \zeropoint - \normalhss}}}% - \smashbox\scratchbox - \normalpenalty\plustenthousand - \box\scratchbox - \egroup} - -\unexpanded\def\ruledhanging - {\ifdim\hangindent>\zeropoint - \ifnum\hangafter<\zerocount - \normalhbox - {%boxrulewidth5\testrulewidth - \setbox\scratchbox\ruledhbox to \hangindent - {\scratchdimen\strutht - \advance\scratchdimen \strutdp - \vrule - \s!width \zeropoint - \s!height \zeropoint - \s!depth -\hangafter\scratchdimen}% - \normalhskip-\hangindent - \smashbox\scratchbox - \raise\strutht\box\scratchbox}% - \fi - \fi} - -\unexpanded\def\ruledparagraphcues - {\bgroup - \dontcomplain - \normalhbox to \zeropoint - {\ifdim\leftskip>\zeropoint\relax - \showparagraphcue\leftskip\llap\relax\relax\!!depth - \normalhskip-\leftskip - \fi - \ruledhanging - \normalhskip\hsize - \ifdim\rightskip>\zeropoint\relax - \normalhskip-\rightskip - \showparagraphcue\rightskip\relax\relax\relax\!!depth - \fi}% - \egroup} - -\unexpanded\def\ruledpar - {\relax - \ifhmode - \showparagraphcue{40\testrulewidth}\relax\rightrulefalse\relax\s!height - \fi - \normalpar} - -\unexpanded\def\rulednoindent - {\relax - \normalnoindent - \ruledparagraphcues - \showparagraphcue{40\testrulewidth}\llap\leftrulefalse\relax\s!height} - -\unexpanded\def\ruledindent - {\relax - \normalnoindent - \ruledparagraphcues - \ifdim\parindent>\zeropoint - \showparagraphcue\parindent\relax\relax\relax\s!height - \else - \showparagraphcue{40\testrulewidth}\llap\relax\relax\s!height - \fi - \normalhskip\parindent} - -\unexpanded\def\dontshowimplicits - {\let\noindent \normalnoindent - \let\indent \normalindent - \let\par \normalpar} - -\unexpanded\def\showimplicits - {\testrulewidth \defaulttestrulewidth - \let\noindent \rulednoindent - \let\indent \ruledindent - \let\par \ruledpar} - -%D The next few||line examples show the four cues. Keep in -%D mind that we only see them when we explicitly open or close -%D a paragraph. -%D -%D \bgroup -%D \def\voorbeeld#1% -%D {#1Visualizing some \TeX\ primitives and Plain \TeX\ -%D macros can be very instructive, at least it is to me. -%D Here we see {\tt\string#1} and {\tt\string\ruledpar} in -%D action, while {\tt\string\parindent} equals -%D {\tt\the\parindent}.\ruledpar} -%D -%D \showimplicits -%D -%D \voorbeeld \indent -%D \voorbeeld \noindent -%D -%D \parindent=60pt -%D -%D \voorbeeld \indent -%D \voorbeeld \noindent -%D -%D \startnarrower -%D \voorbeeld \indent -%D \voorbeeld \noindent -%D \stopnarrower -%D \egroup -%D -%D These examples also demonstrate the visualization of -%D \type {\leftskip} and \type {\rightskip}. The macro -%D \type {\nofruledbaselines} determines the number of lines -%D shown. - -\newcounter\ruledbaselines - -\def\nofruledbaselines{3} - -\unexpanded\def\ruledbaseline - {\vrule \s!width \zeropoint - \bgroup - \dontinterfere - \doglobal\increment\ruledbaselines - \scratchdimen\nofruledbaselines\baselineskip - \setbox\scratchbox\normalvbox to 2\scratchdimen - {\leaders - \normalhbox - {\strut - \vrule - \s!height \testrulewidth - \s!depth \testrulewidth - \s!width 120\points} - \normalvfill}% - \smashbox\scratchbox - \advance\scratchdimen \strutheightfactor\baselineskip - \setbox\scratchbox\normalhbox - {\normalhskip -48\points - \normalhbox to 24\points - {\normalhss - {\ttxx\ruledbaselines}% - \normalhskip6\points}% - \raise\scratchdimen\box\scratchbox}% - \smashbox\scratchbox - \box\scratchbox - \egroup} - -\unexpanded\def\showbaselines - {\testrulewidth\defaulttestrulewidth - \EveryPar{\ruledbaseline}} - -%D \macros -%D {showpagebuilder} -%D -%D The next tracing option probaly is only of use to me and a -%D few \CONTEXT\ hackers. - -\unexpanded\def\showpagebuilder - {\EveryPar{\doshowpagebuilder}} - -\unexpanded\def\doshowpagebuilder - {\strut\llap - {\startcolor[blue]\vl - \high{\infofont v:\the\vsize }\vl - \high{\infofont g:\the\pagegoal }\vl - \high{\infofont t:\the\pagetotal}\vl - \stopcolor}} - -%D \macros -%D {colormarkbox,rastermarkbox} -%D -%D This macro is used in the pagebody routine. No other use -%D is advocated here. -%D -%D \starttyping -%D \colormarkbox0 -%D \stoptyping - -\def\colormarkoffset{\cutmarkoffset} -\def\colormarklength{\cutmarklength} - -\def\dodocolorrangeA#1% - {\fastcolored[#1]{\hrule\s!width3em\s!height\scratchdimen\s!depth\zeropoint}} - -\def\docolorrangeA#1 #2 % - {\vbox - {\hsize3em % \scratchdimen - \ifcase#1\or - \dodocolorrangeA{c=#2}\or - \dodocolorrangeA{m=#2}\or - \dodocolorrangeA{y=#2}\or - \dodocolorrangeA{m=#2,y=#2}\or - \dodocolorrangeA{c=#2,y=#2}\or - \dodocolorrangeA{c=#2,m=#2}\fi - \ifdim\scratchdimen>1ex - \vskip-\scratchdimen - \vbox to \scratchdimen - {\vss\hbox to 3em{\hss#2\hss}\vss}% - \fi}} - -\def\colorrangeA#1% - {\vbox - {\startcolor[\s!white]% - \scratchdimen\dimexpr(-\colormarklength*4+\tractempheight+\tractempdepth)/21\relax - \offinterlineskip - \docolorrangeA #1 1.00 \docolorrangeA #1 0.95 - \docolorrangeA #1 0.75 - \docolorrangeA #1 0.50 - \docolorrangeA #1 0.25 \docolorrangeA #1 0.05 - \docolorrangeA #1 0.00 - \stopcolor}} - -\def\docolorrangeB #1 #2 #3 #4 #5 % - {\fastcolored - [\c!c=#2,\c!m=#3,\c!y=#4,\c!k=#5] - {\vrule\s!width\scratchdimen\s!height\colormarklength\s!depth\zeropoint}% - \ifdim\scratchdimen>2em - \hskip-\scratchdimen - \vbox to \colormarklength - {\vss\hbox to \scratchdimen{\hss#1\hss}\vss}% - \fi} - -\def\colorrangeB - {\hbox - {\startcolor[\s!white]% - \scratchdimen\dimexpr(-\colormarklength*\plustwo+\tractempwidth)/11\relax - \docolorrangeB .5~C .5 0 0 0 - \docolorrangeB .5~M 0 .5 0 0 - \docolorrangeB .5~Y 0 0 .5 0 - \docolorrangeB .5~K 0 0 0 .5 - \docolorrangeB C 1 0 0 0 - \docolorrangeB G 1 0 1 0 - \docolorrangeB Y 0 0 1 0 - \docolorrangeB R 0 1 1 0 - \docolorrangeB M 0 1 0 0 - \docolorrangeB B 1 1 0 0 - \docolorrangeB K 0 0 0 1 - \stopcolor}} - -\def\docolorrangeC#1 % - {\fastcolored - [\c!s=#1]% - {\vrule\s!width\scratchdimen\s!height\colormarklength\s!depth\zeropoint}% - \ifdim\scratchdimen>2em - \hskip-\scratchdimen - \vbox to \colormarklength - {\vss\hbox to \scratchdimen{\hss#1\hss}\vss}% - \fi} - -\def\colorrangeC - {\hbox - {\startcolor[\s!white]% - \scratchdimen\dimexpr(-\colormarklength*2+\tractempwidth)/14\relax - \docolorrangeC 1 \docolorrangeC .95 - \docolorrangeC .9 \docolorrangeC .85 - \docolorrangeC .8 \docolorrangeC .75 - \docolorrangeC .7 - \docolorrangeC .6 - \docolorrangeC .5 - \docolorrangeC .4 - \docolorrangeC .3 - \docolorrangeC .2 - \docolorrangeC .1 - \docolorrangeC 0 - \stopcolor}} - -\def\docolormarkbox#1#2% - {\tractempheight\ht#2% - \tractempdepth \dp#2% - \tractempwidth \wd#2% - \setbox#2\hbox - {\scratchdimen\dimexpr\colormarklength/2\relax - \forgetall - \ssxx - \setbox\scratchbox\vbox - {\offinterlineskip - \vskip\dimexpr-\colormarkoffset\scratchdimen-2\scratchdimen\relax - \ifcase#1\relax - \vskip\dimexpr\colormarklength+\scratchdimen+\tractempheight\relax - \else - \hbox to \tractempwidth{\hss\hbox{\colorrangeB}\hss}% - \vskip\colormarkoffset\scratchdimen - \vbox to \tractempheight - {\vss - \hbox to \tractempwidth - {\llap{\colorrangeA1\hskip\colormarkoffset\scratchdimen}\hfill - \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA4}}% - \vss - \hbox to \tractempwidth - {\llap{\colorrangeA2\hskip\colormarkoffset\scratchdimen}\hfill - \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA5}}% - \vss - \hbox to \tractempwidth - {\llap{\colorrangeA3\hskip\colormarkoffset\scratchdimen}\hfill - \rlap{\hskip\colormarkoffset\scratchdimen\colorrangeA6}}% - \vss}% - \fi - \vskip\colormarkoffset\scratchdimen - \hbox to \tractempwidth - {\hss\lower\tractempdepth\hbox{\colorrangeC}\hss}}% - \ht\scratchbox\tractempheight - \dp\scratchbox\tractempdepth - \wd\scratchbox\zeropoint - \box\scratchbox - \box#2}% - \wd#2\tractempwidth - \ht#2\tractempheight - \dp#2\tractempdepth} - -\unexpanded\def\colormarkbox {\docolormarkbox\plusone } % #1 -\unexpanded\def\rastermarkbox{\docolormarkbox\zerocount} % #1 - -%D \macros -%D {showwhatsits, dontshowwhatsits} -%D -%D \TEX\ has three so called whatsits: \type {\mark}, \type -%D {\write} and \type {\special}. The first one keeps track of -%D the current state at page boundaries, the last two are used -%D to communicate to the outside world. Due to fact that -%D especially \type {\write} is often used in conjunction with -%D \type {\edef}, we can only savely support that one in \ETEX. -%D -%D \bgroup \showwhatsits \setupcolors[state=start] -%D -%D Whatsits show up \color[blue]{in color} and are -%D characterized bij their first character.\footnote [some note] -%D {So we may encounter \type {w}, \type {m} and \type{s}.} -%D They are \writestatus{dummy}{demo}\color[yellow]{stacked}. -%D -%D \egroup - -\newif\ifimmediatewrite - -\let\supernormalmark \normalmark % mark may already been superseded -\let\supernormalmarks \normalmarks % mark may already been superseded - -\unexpanded\def\showwhatsits - {\protected\def\normalmark {\visualwhatsit100+m\supernormalmark }% - \protected\def\normalmarks{\visualwhatsit100+m\supernormalmarks}% - \protected\def\special {\visualwhatsit0100s\normalspecial }% - \protected\def\write {\visualwhatsit001-w\normalwrite }% - \let\immediate\immediatewhatsit - \appendtoks\dontshowwhatsits\to\everystoptext} - -\unexpanded\def\immediatewhatsit - {\bgroup\futurelet\next\doimmediatewhatsit} - -\unexpanded\def\doimmediatewhatsit - {\ifx\next\write - \egroup\immediatewritetrue - \else - \egroup\expandafter\normalimmediate - \fi} - -\unexpanded\def\dontshowwhatsits - {\let\immediate \normalimmediate - \let\normalmark\supernormalmark - \let\special \normalspecial - \let\write \normalwrite} - -\unexpanded\def\visualwhatsit#1#2#3#4#5% - {\bgroup - \pushwhatsit - \dontinterfere - \dontcomplain - \dontshowcomposition - \dontshowwhatsits - \ttx - \ifvmode\donetrue\else\donefalse\fi - \setbox\scratchbox\hbox - {\ifdone - \colored[r=#1,g=#2,b=#3]{#5}% temp hack - \else - \colored[s=0]{#5}% temp hack - \fi}% - \setbox\scratchbox\hbox - {\ifdone - \colored[r=#1,g=#2,b=#3]{\vrule\s!width\wd\scratchbox}% temp hack - \else - \colored[s=0]{\vrule\s!width\wd\scratchbox}% temp hack - \fi - \hskip-\wd\scratchbox\box\scratchbox}% - \scratchdimen1ex - \setbox\scratchbox\hbox - {\ifdone\hskip\else\raise#4\fi\scratchdimen\box\scratchbox}% - \smashbox\scratchbox - \ifdone\nointerlineskip\fi - \box\scratchbox - \ifvmode\nointerlineskip\fi - \popwhatsit - \egroup - \ifimmediatewrite - \immediatewritefalse - \expandafter\normalimmediate - \fi} - -\unexpanded\def\pushwhatsit - {\ifzeropt\lastskip - \ifcase\lastpenalty - \ifzeropt\lastkern - \ifhmode - \let\popwhatsit\relax - \else - \edef\popwhatsit{\prevdepth\the\prevdepth}% - \fi - \else - \ifhmode - \edef\popwhatsit{\kern\the\lastkern}\unkern - \else - \edef\popwhatsit{\kern\the\lastkern\prevdepth\the\prevdepth}% - \kern-\lastkern - \fi - \fi - \else - \ifhmode - \edef\popwhatsit{\the\lastpenalty}% - \unpenalty - \else - \edef\popwhatsit{\penalty\the\lastpenalty\prevdepth\the\prevdepth}% - %\nobreak - \fi - \fi - \else - \ifhmode - \edef\popwhatsit{\hskip\the\lastskip}\unskip - \else - \edef\popwhatsit{\vskip\the\lastskip\prevdepth\the\prevdepth}% - \vskip-\lastskip - \fi - \fi} - -%D The next macro can be used to keep track of classes of -%D boxes (handy for development cq.\ tracing). - -\def\dodotagbox#1#2#3% can be reimplemented - {\def\next##1##2##3##4% - {\vbox to \ht#2{##3\hbox to \wd#2{##1#3##2}##4}}% - \processaction - [#1] - [ l=>\next\relax\hfill\vfill\vfill, - r=>\next\hfill\relax\vfill\vfill, - t=>\next\hfill\hfill\relax\vfill, - b=>\next\hfill\hfill\vfill\relax, - lt=>\next\relax\hfill\relax\vfill, - lb=>\next\relax\hfill\vfill\relax, - rt=>\next\hfill\relax\relax\vfill, - rb=>\next\hfill\relax\vfill\relax, - tl=>\next\relax\hfill\relax\vfill, - bl=>\next\relax\hfill\vfill\relax, - tr=>\next\hfill\relax\relax\vfill, - br=>\next\hfill\relax\vfill\relax, - \s!default=>\next\hfill\hfill\vfill\vfill, - \s!unknown=>\next\hfill\hfill\vfill\vfill]} - -\def\dotagbox[#1]#2% - {\bgroup - \dowithnextbox - {\setbox\scratchbox\flushnextbox - \setbox\nextbox\ifhbox\nextbox\hbox\else\vbox\fi - \bgroup - \startoverlay - {\copy\scratchbox} - {\dodotagbox{#1}\scratchbox{\framed - [\c!background=\v!screen,\c!backgroundscreen=1]{#2}}} - \stopoverlay - \egroup - \nextboxwd\the\wd\scratchbox - \nextboxht\the\ht\scratchbox - \nextboxdp\the\dp\scratchbox - \flushnextbox - \egroup}} - -\unexpanded\def\tagbox - {\dosingleempty\dotagbox} - -%D \macros -%D {coloredhbox,coloredvbox,coloredvtop, -%D coloredstrut} -%D -%D The following visualizations are used in some of the manuals: - -\definecolor[boxcolor:ht][r=.5,g=.75,b=.5] -\definecolor[boxcolor:dp][r=.5,g=.5,b=.75] -\definecolor[boxcolor:wd][r=.75,g=.5,b=.5] -\definecolor[strutcolor] [r=.5,g=.25,b=.25] - -\unexpanded\def\coloredbox#1% - {\dowithnextbox{#1{\hbox - {\blackrule[\c!width=\nextboxwd,\c!height=\nextboxht,\c!depth=\zeropoint,\c!color=boxcolor:ht]% - \hskip-\nextboxwd - \blackrule[\c!width=\nextboxwd,\c!height=\zeropoint,\c!depth=\nextboxdp,\c!color=boxcolor:dp]% - \hskip-\nextboxwd - \box\nextbox}}}#1} - -\unexpanded\def\coloredhbox{\coloredbox\hbox} -\unexpanded\def\coloredvbox{\coloredbox\vbox} -\unexpanded\def\coloredvtop{\coloredbox\vtop} - -\unexpanded\def\coloredstrut - {\color[strutcolor]{\def\strutwidth{2\points}\setstrut\strut}} - -\protect - \continueifinputfile{m-visual.mkiv} \starttext \simplethesis \stoptext + +\protect \endinput |