diff options
Diffstat (limited to 'tex/context/base/mkiv/node-rul.mkxl')
-rw-r--r-- | tex/context/base/mkiv/node-rul.mkxl | 618 |
1 files changed, 0 insertions, 618 deletions
diff --git a/tex/context/base/mkiv/node-rul.mkxl b/tex/context/base/mkiv/node-rul.mkxl deleted file mode 100644 index 3697e92ef..000000000 --- a/tex/context/base/mkiv/node-rul.mkxl +++ /dev/null @@ -1,618 +0,0 @@ -%D \module -%D [ file=node-rul, -%D version=2009.11.03, % 1995.10.10, -%D title=\CONTEXT\ Core Macros, -%D subtitle=Bars, -%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. - -% todo: ex and and em traveling with attribute -% todo: this will move to typo-rul + ctxcommands - -\writestatus{loading}{ConTeXt Core Macros / Bars} - -%D \macros -%D {underbar,underbars, -%D overbar,overbars, -%D overstrike,overstrikes, -%D setupbar} -%D -%D In the rare case that we need undelined words, for instance because all font -%D alternatives are already in use, one can use \type {\underbar} and \type -%D {\overstrike} and their plural forms. -%D -%D \startbuffer -%D \underbars {drawing \underbar{bars} under words is a typewriter leftover} -%D \overstrikes {striking words makes them \overstrike {unreadable} but -%D sometimes even \overbar {top lines} come into view.} -%D \stopbuffer -%D -%D \typebuffer -%D -%D \startlines -%D \getbuffer -%D \stoplines -%D -%D The formal definitions are: -%D -%D \showsetup{underbar} -%D \showsetup{underbars} -%D \showsetup{overbar} -%D \showsetup{overbars} -%D \showsetup{overstrike} -%D \showsetup{overstrikes} -%D -%D \showsetup{setupbars} -%D -%D Units can be any normal \TEX\ unit: -%D -%D \startbuffer -%D \setupbars[unit=mm,rulethickness=1] bar\startbar[underbar]foo\stopbar bar\blank -%D \setupbars[unit=ex,rulethickness=1] bar\startbar[underbar]foo\stopbar bar\blank -%D \setupbars[unit=pt,rulethickness=1] bar\startbar[underbar]foo\stopbar bar\blank -%D \setupbars[unit=pt,rulethickness=10pt] bar\startbar[underbar]foo\stopbar bar -%D \stopbuffer -%D -%D \typebuffer \blank \getbuffer \blank -%D -%D As with many early usage of \LUA\ in \MKIV\ this mechanism explores a way -%D to deal with local settings at the \TEX\ end and remembering parameters -%D at the \LUA\ end. We might do things differently now, but as settings normally -%D don't change that often, we're not in a hurry to do that now. The problem at -%D the \LUA\ end is that we don't know when to clean up. - -\unprotect - -%definesystemattribute[ruled] -%definesystemattribute[shifted] - -\registerctxluafile{node-rul}{optimize} - -\installcorenamespace{bar} -\installcorenamespace{barindex} -\installcorenamespace{barattribute} -\installcorenamespace{barstack} - -\installcommandhandler \??bar {bar} \??bar - -\newtoks\t_node_rules_checklist - -\let\c_node_rules_index\relax % temporary synonym -\let\p_node_rules_color\empty - -\aliased\let\setupbars\setupbar - -\appendtoks - \ifsecondargument - \node_rules_define - \else - \the\t_node_rules_checklist - \fi -\to \everysetupbar - -\appendtoks - \ifcsname\??barindex\currentbar\endcsname - \lastnamedcs\zerocount - \else - \expandafter\newcount\csname\??barindex\currentbar\endcsname - \fi - % \normalexpanded{\t_node_rules_checklist{\node_rules_redefine{\currentbar}\the\t_node_rules_checklist}}% - \normalexpanded{\t_node_rules_checklist{\the\t_node_rules_checklist\relax\node_rules_redefine{\currentbar}}}% - % \etoksapp\t_node_rules_checklist{\node_rules_redefine{\currentbar}}% - \node_rules_define - \frozen\instance\setuevalue\currentbar{\node_rules_direct{\currentbar}}% -\to \everydefinebar - -\newbox\b_node_rules - -\protected\def\node_rules_define - {\edef\p_node_rules_color{\barparameter\c!color}% - \edef\p_node_text{\barparameter\c!text}% - \ifx\p_node_text\empty\else - \setbox\b_node_rules\hbox{\p_node_text}% - \fi - \setevalue{\??barattribute\currentbar}{\number - \clf_definerule - continue {\barparameter\c!continue}% - unit {\barparameter\c!unit}% - order {\barparameter\c!order}% - rulethickness {\barparameter\c!rulethickness}% - method \barparameter\c!method - max \barparameter\c!max\space % number - mp {\includeMPgraphic{\barparameter\c!mp}} - ma \thecolormodelattribute - ca \thecolorattribute\p_node_rules_color - ta \thetransparencyattribute\p_node_rules_color - offset \barparameter\c!offset\space % number - dy \barparameter\c!dy\space % number - empty {\barparameter\c!empty}% - \ifx\p_node_text\empty\else - % not that useful and efficient, more for testing something - text \b_node_rules - repeat {\barparameter\c!repeat}% - \fi - \relax}} - -\protected\def\node_rules_redefine#1% - {\def\currentbar{#1}\node_rules_define} - -\protected\def\node_rules_direct#1% - {\groupedcommand - {\node_rules_set{#1}\barparameter\c!left}% - {\relax\barparameter\c!right}} - -\permanent\protected\def\inlinebar[#1]% - {\node_rules_direct{#1}} - -% \protected\def\inlinecurrentbar -% {\node_rules_direct{\currentbar}} - -% store in properties - -\permanent\protected\def\node_rules_set#1% maybe reverse the 1000 (also maybe use more attributes instead of settings) - {\edef\currentbar{#1}% - \usebarstyleandcolor\c!foregroundstyle\c!foregroundcolor - % maybe: \usebarstyleandcolor\c!textgroundstyle\c!textcolor - % todo: move this to lua .. we callout anyway - \expandafter\let\expandafter\c_node_rules_index\csname\??barindex#1\endcsname - \advance\c_node_rules_index\plusone - \clf_enablerules % will be relaxed - \c_attr_ruled\numexpr - \plusthousand*\c_node_rules_index - % optimizing this one needs testing - +\csname\??barattribute#1\ifcsname\??bar#1:\number\c_node_rules_index\s!parent\endcsname:\number\c_node_rules_index\fi\endcsname - \relax} - -\permanent\protected\def\resetbar - {\c_attr_ruled\attributeunsetvalue} - -\permanent\protected\def\nobar - {\groupedcommand - {\resetbar\barparameter\c!left}% - {\relax\barparameter\c!right}} - -\permanent\protected\def\startbar[#1]% - {\begingroup - \node_rules_set{#1}% - \ignorespaces - \barparameter\c!left} - -\permanent\protected\def\stopbar - {\removeunwantedspaces - \barparameter\c!right - \endgroup} - -\permanent\protected\def\setbar[#1]% - {\node_rules_set{#1}} - -\aliased\let\directsetbar\node_rules_set - -% ungrouped - -\newcount\c_node_rules_nesting % todo: same as colors - -\permanent\protected\def\pushbar[#1]% - {\global\advance\c_node_rules_nesting\plusone - \expandafter\edef\csname\??barstack\number\c_node_rules_nesting\endcsname{\c_attr_ruled\the\c_attr_ruled}% - \node_rules_set{#1}} - -\permanent\protected\def\popbar - {\csname\??barstack\number\c_node_rules_nesting\endcsname - \global\advance\c_node_rules_nesting\minusone} - -\setupbars - [\c!method=0, % new: 0=center nested, 1=stack nested - \c!continue=\v!no, - \c!empty=, % new: yes = hide text - \c!offset=0, % upwards, replaces: topoffset bottomoffset - \c!dy=0, - \c!max=3, - \c!style=, - \c!rulethickness=.1, - \c!order=\v!foreground, - \c!unit=ex, % so now we are relative - \c!color=] % replaces: rulecolor - -% \definebar[touchbar] [\c!method=0,\c!dy=-0.4,\c!offset=-0.0] -% \definebar[touchbars] [touchbar] [\c!continue=\v!yes] - -\pushoverloadmode - -\aliased\let\normalmathoverbar \overbar -\aliased\let\normalmathunderbar \underbar -\aliased\let\normalmathoverstrike \overstrike -\aliased\let\normalmathunderstrike\understrike - -\definebar[\v!overbar] [\c!method=1,\c!dy=0.4,\c!offset=1.8,\c!continue=\v!yes] -\definebar[\v!underbar] [\c!method=1,\c!dy=-0.4,\c!offset=-0.3,\c!continue=\v!yes] -\definebar[\v!overstrike][\c!method=0,\c!dy=0.4,\c!offset=0.5,\c!continue=\v!yes] - -\definebar - [\v!understrike] - [\c!method=0, - \c!offset=1.375, - \c!rulethickness=2.5, - \c!continue=\v!yes, - \c!order=\v!background, - \c!color=lightgray] - -\definebar[\v!overbars] [\v!overbar] [\c!continue=\v!no] -\definebar[\v!underbars] [\v!underbar] [\c!continue=\v!no] -\definebar[\v!overstrikes] [\v!overstrike] [\c!continue=\v!no] -\definebar[\v!understrikes][\v!understrike][\c!continue=\v!no] - -\definebar - [\v!hiddenbar] - [\v!underbar] - [\c!continue=\v!yes, - \c!empty=\v!yes, - \c!left=\zwj, - \c!right=\zwj] - -% \setupbar[\v!overstrike][continue=all] - -% we want these always so ... - -\ifdefined\normalmathunderbar - \enforced\permanent\expandafter\let\expandafter\normaltextunderbar\csname\v!underbar\endcsname - \enforced\permanent\protected\def\underbar{\mathortext\normalmathunderbar\normaltextunderbar} -\else - \enforced\permanent\expandafter\let\expandafter\underbar\csname\v!underbar\endcsname -\fi - -\ifdefined\normalmathoverbar - \enforced\permanent\expandafter\let\expandafter\normaltextoverbar\csname\v!overbar\endcsname - \enforced\permanent\protected\def\overbar{\mathortext\normalmathoverbar\normaltextoverbar} -\else - \enforced\permanent\expandafter\let\expandafter\overbar\csname\v!overbar\endcsname -\fi - -\ifdefined\normalmathunderstrike - \enforced\permanent\expandafter\let\expandafter\normaltextunderstrike\csname\v!understrike\endcsname - \enforced\permanent\protected\def\understrike{\mathortext\normalmathunderstrike\normaltextunderstrike} -\else - \enforced\permanent\expandafter\let\expandafter\understrike\csname\v!understrike\endcsname -\fi - -\ifdefined\normalmathoverstrike - \enforced\permanent\expandafter\let\expandafter\normaltextoverstrike\csname\v!overstrike\endcsname - \enforced\permanent\protected\def\overstrike{\mathortext\normalmathoverstrike \normaltextoverstrike} -\else - \enforced\permanent\expandafter\let\expandafter\overstrike\csname\v!overstrike\endcsname -\fi - -\enforced\permanent\expandafter\let\expandafter\overstrikes\csname\v!overstrikes\endcsname -\enforced\permanent\expandafter\let\expandafter\underbars \csname\v!underbars \endcsname -\enforced\permanent\expandafter\let\expandafter\overbars \csname\v!overbars \endcsname - -\enforced\permanent\protected\def\setupunderbar[#1]% too incompatible for the moment - {} - -\popoverloadmode - -%D An experimental new feature: -%D -%D \startbuffer -%D test {\red\underrandoms{test me}} and \underrandom{test} or \underrandom{grep} \blank -%D test {\red\underdashes {test me}} and \underdash {test} or \underdash {grep} \blank -%D test {\red\underdots {test me}} and \underdot {test} or \underdot {grep} \blank -%D \stopbuffer -%D -%D \typebuffer \getbuffer - -\startuseMPgraphic{rules:under:random} - draw - ((0,RuleDepth) ... (RuleWidth,RuleDepth)) randomized (4*RuleThickness) - shifted (0,RuleFactor*RuleOffset) - withpen pencircle scaled RuleThickness - withcolor RuleColor ; - setbounds currentpicture to unitsquare xysized(RuleWidth,RuleHeight) ; -\stopuseMPgraphic - -\startuseMPgraphic{rules:under:dash} - draw - ((0,RuleDepth) -- (RuleWidth,RuleDepth)) - shifted (0,RuleFactor*RuleOffset) - dashed dashpattern(on RuleFactor/2 off RuleFactor/2) - withpen pencircle scaled RuleThickness - withcolor RuleColor ; - setbounds currentpicture to unitsquare xysized(RuleWidth,RuleHeight) ; -\stopuseMPgraphic - -\startuseMPgraphic{rules:under:dots} - path p ; p := (0,RuleDepth) -- (RuleWidth,RuleDepth) ; - numeric l ; l := arclength(p); - l := l mod RuleThickness/4; - draw - p - shifted (l,RuleFactor*RuleOffset) - dashed dashpattern(off 2RuleThickness+l on 0 off 2RuleThickness) - withpen pencircle scaled 2RuleThickness - withcolor RuleColor ; - setbounds currentpicture to unitsquare xysized(RuleWidth,RuleHeight) ; -\stopuseMPgraphic - -\definebar - [undergraphic] - [\c!mp=rules:under:dash, - \c!offset=-.2, - \c!order=\v!background] - -\definebar[underrandom] [undergraphic][\c!mp=rules:under:random] -\definebar[underrandoms][underrandom] [\c!continue=\v!yes] - -\definebar[underdash] [undergraphic][\c!mp=rules:under:dash] -\definebar[underdashes] [underdash] [\c!continue=\v!yes] - -\definebar[underdot] [undergraphic][\c!mp=rules:under:dots] -\definebar[underdots] [underdot] [\c!continue=\v!yes] - -%D This will move: (a bit duplicated) - -\installcorenamespace{shift} -\installcorenamespace{shiftindex} -\installcorenamespace{shiftattribute} - -\installcommandhandler \??shift {shift} \??shift - -\newtoks\t_node_shifts_checklist - -\let\c_node_shifts_index\relax % temporary synonym - -\let\setupshifts\setupshift - -\appendtoks - \ifsecondargument - \node_shifts_define - \else - \the\t_node_shifts_checklist - \fi -\to \everysetupshift - -\appendtoks - \ifcsname\??shiftindex\currentshift\endcsname - \lastnamedcs\zerocount - \else - \expandafter\newcount\csname\??shiftindex\currentshift\endcsname - \fi - \normalexpanded{\t_node_shifts_checklist{\the\t_node_shifts_checklist\node_shifts_redefine{\currentshift}}}% order ? - \node_shifts_define - \setuevalue\currentshift{\node_shifts_direct{\currentshift}}% -\to \everydefineshift - -\protected\def\node_shifts_define - {\setevalue{\??shiftattribute\currentshift}{\number - \clf_defineshift - continue {\shiftparameter\c!continue}% - unit {\shiftparameter\c!unit}% - method \shiftparameter\c!method - dy \shiftparameter\c!dy % number - \relax}} - -\protected\def\node_shifts_redefine#1% - {\def\currentshift{#1}\node_shifts_define} - -% \protected\def\node_shifts_set -% {\clf_enableshifts -% \glet\node_shifts_set\node_shifts_set_indeed -% \node_shifts_set} -% -% \def\node_shifts_set_indeed#1% todo: check parent ! - -\protected\def\node_shifts_set#1% todo: check parent ! todo: move attr etc to lua - {\def\currentshift{#1}% - \expandafter\let\expandafter\c_node_shifts_index\csname\??shiftindex#1\endcsname - \advance\c_node_shifts_index\plusone - \clf_enableshifts % will be relaxed - \c_attr_shifted\numexpr - \plusthousand*\c_node_shifts_index - +\csname\??shiftattribute#1\ifcsname\??shift#1:\number\c_node_shifts_index\s!parent\endcsname:\number\c_node_shifts_index\fi\endcsname - \relax - \useshiftstyleandcolor\c!style\c!color - \dosetupisolatedalign{\shiftparameter\c!align}} % weird feature that i probably needed once - -\protected\def\startshift[#1]% - {\begingroup - \node_shifts_set{#1}% - \ignorespaces} - -\protected\def\stopshift - {\removeunwantedspaces - \endgroup} - -% \protected\def\node_shifts_direct#1% -% {\doisolatedgroupedalign{\node_shifts_set{#1}}\donothing} - -\protected\def\node_shifts_direct#1% - {\groupedcommand - {\begingroup\dostartisolation\begingroup\node_shifts_set{#1}\ignorespaces} - {\removeunwantedspaces\endgroup\dostopisolation\endgroup}} - -\setupshifts - [\c!method=0, - \c!continue=\v!no, - \c!dy=0, - \c!unit=ex, - \c!align=, - \c!style=, - \c!color=] - -\defineshift [\v!shiftup] [\c!method=0,\c!dy=-1,\c!unit=ex,\c!continue=\v!yes,\c!style=\txx,\c!color=] -\defineshift [\v!shiftdown] [\c!method=1,\c!dy=.3,\c!unit=ex,\c!continue=\v!yes,\c!style=\txx,\c!color=] - -% we want these always so ... - -\expandafter\let\expandafter\shiftup \csname\v!shiftup \endcsname -\expandafter\let\expandafter\shiftdown \csname\v!shiftdown \endcsname - -% This is a weird helper: - -\protected\def\dostartisolation{\signalcharacter} -\protected\def\dostopisolation {\signalcharacter} -\protected\def\doisolator {\signalcharacter} - -\protected\def\dosetupisolatedalign#1% - {\doisolator - \setupalign[#1]\relax} - -\protected\def\doisolatedgroupedalign#1#2% - {\groupedcommand - {\begingroup\dostartisolation\begingroup#1} - {#2\endgroup\dostopisolation\endgroup}} - -%D More rules. - -% The following code rocks and was written with the Toto Live in Poland bluray -% in loop mode on my 5.1 surround development setup (the Toto lineup with Simon -% Phillips on drums). The Amsterdam concert is equally energizing. - -\installcorenamespace{linefiller} -\installcorenamespace{linefillerindex} -\installcorenamespace{linefillerattribute} - -\installcommandhandler \??linefiller {linefiller} \??linefiller - -\definesystemattribute[linefiller][public] - -\newtoks\t_node_linefiller_checklist - -\let\c_node_linefiller_index\relax % temporary synonym - -\aliased\let\setuplinefillers\setuplinefiller - -\appendtoks - \ifsecondargument - \node_linefiller_define - \else - \the\t_node_linefiller_checklist - \fi -\to \everysetuplinefiller - -\appendtoks - \ifcsname\??linefillerindex\currentlinefiller\endcsname - \lastnamedcs\zerocount - \else - \expandafter\newcount\csname\??linefillerindex\currentlinefiller\endcsname - \fi - \etoksapp\t_node_linefiller_checklist{\t_node_linefiller_checklist\node_linefiller_redefine{\currentlinefiller}}% - \node_linefiller_define -\to \everydefinelinefiller - -\protected\def\node_linefiller_define - {\edef\p_node_rules_color{\linefillerparameter\c!color}% - \setevalue{\??linefillerattribute\currentlinefiller}{\number - \clf_definelinefiller - %method \linefillerparameter\c!method - location {\linefillerparameter\c!location}% - scope {\linefillerparameter\c!scope}% - mp {\includeMPgraphic{\linefillerparameter\c!mp}}% - ma \thecolormodelattribute - ca \thecolorattribute\p_node_rules_color - ta \thetransparencyattribute\p_node_rules_color - height \dimexpr\linefillerparameter\c!height\relax - depth \dimexpr\linefillerparameter\c!depth\relax - distance \dimexpr\linefillerparameter\c!distance\relax - threshold \dimexpr\linefillerparameter\c!threshold\relax - rulethickness \dimexpr\linefillerparameter\c!rulethickness\relax - \relax}} - -\protected\def\node_linefiller_redefine#1% - {\def\currentlinefiller{#1}\node_linefiller_define} - -\protected\def\node_linefiller_set#1% todo: check parent ! todo: move attr etc to lua - {\def\currentlinefiller{#1}% - \expandafter\let\expandafter\c_node_linefiller_index\csname\??linefillerindex#1\endcsname - \advance\c_node_linefiller_index\plusone - \clf_enablelinefillers - \c_attr_linefiller\numexpr - \plusthousand*\c_node_linefiller_index - +\csname\??linefillerattribute#1\ifcsname\??linefiller#1:\number\c_node_linefiller_index\s!parent\endcsname:\number\c_node_linefiller_index\fi\endcsname - \relax} - -\permanent\tolerant\protected\def\startlinefiller[#1]#*[#2]% - {\begingroup - \par - \def\currentlinefiller{#1}% - \ifargument#1\or - % we need to update settings - \setuplinefiller[#1][#2]% no \setupcurrentlinefiller as we need to update settings - \fi - \node_linefiller_set{#1}% - \linefillerparameter\c!before - \usealignparameter\linefillerparameter - \uselinefillerstyleandcolor\c!textstyle\c!textcolor} % bars have foregroundcolor - -\permanent\protected\def\stoplinefiller - {\par - \linefillerparameter\c!after - \endgroup} - -\permanent\protected\def\setlinefiller[#1]% - {\node_linefiller_set{#1}} - -\setuplinefillers - [%c!method=0, - %c!mp=, - \c!location=\v!both, - \c!scope=\v!local, - \c!distance=\zeropoint, - \c!threshold=\zeropoint, - \c!rulethickness=\linewidth, - \c!height=\linewidth, - \c!depth=\zeropoint, - %\c!textcolor=, - %\c!textstyle=, - %\c!align=, - %\c!before=, - %\c!after=, - \c!color=] - -\definelinefiller - [filler] - [\c!height=.75\exheight, - %\c!mp=rules:filler:demo, - %\c!threshold=.25\emwidth, - \c!distance=.25\emwidth, - \c!rulethickness=.25\exheight] - -%D Bonus: -%D -%D \starttyping -%D \startuseMPgraphic{foo} -%D fill unitsquare -%D xyscaled (RuleWidth,RuleHeight+RuleDepth) enlarged (ExHeight/4,ExHeight/8) -%D shifted (-ExHeight/8,ExHeight/16) -%D withcolor RuleColor ; -%D \stopuseMPgraphic -%D -%D \definelinefiller[foo][mp=foo,color=darkred] -%D -%D \linefillerhbox[foo]{OEPS} -%D \stoptyping - -\protected\def\node_backgrounds_filler_box#1#2[#3]% - {\bgroup - \clf_enablebackgroundboxes - \dowithnextbox{% - \node_linefiller_set{#3}% already sets the attribute - #1% - attr \backgroundattribute \plusone - % attr \linefillerattribute \the\c_attr_linefiller - {\box\nextbox}% - \egroup}% - #2} - -\permanent\protected\def\linefillerhbox{\node_backgrounds_filler_box\hpack\hbox} -\permanent\protected\def\linefillervbox{\node_backgrounds_filler_box\vpack\vbox} -\permanent\protected\def\linefillervtop{\node_backgrounds_filler_box\tpack\vtop} - -%D Bonus: - -\permanent\protected\def\autorule{\clf_autorule} % todo: public implementor - -\protect \endinput |