summaryrefslogtreecommitdiff
path: root/tex/context/base/anch-bar.mkiv
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2012-10-19 01:20:13 +0300
committerMarius <mariausol@gmail.com>2012-10-19 01:20:13 +0300
commit69d2352af4b60929b37fc49f3bdb263977016244 (patch)
treedb5eb11398e345dfa23b4c4500fb93575d2afb7c /tex/context/base/anch-bar.mkiv
parentc18f7cbe51449a611ea1819fedd9a4ff18529b7d (diff)
downloadcontext-69d2352af4b60929b37fc49f3bdb263977016244.tar.gz
stable 2012.05.30 11:26
Diffstat (limited to 'tex/context/base/anch-bar.mkiv')
-rw-r--r--tex/context/base/anch-bar.mkiv150
1 files changed, 43 insertions, 107 deletions
diff --git a/tex/context/base/anch-bar.mkiv b/tex/context/base/anch-bar.mkiv
index c7c6190be..9f9770fb6 100644
--- a/tex/context/base/anch-bar.mkiv
+++ b/tex/context/base/anch-bar.mkiv
@@ -58,9 +58,7 @@
\installcommandhandler \??sidebar {sidebar} \??sidebar
\newcount\c_anch_sidebars_n
-\newcount\c_anch_sidebars_current % local
-\newdimen\d_anch_sidebars_distance
-\newcount\c_anch_sidebars_level
+\newdimen\c_anch_sidebars_distance
% \setupMPvariables
% [mpos:sidebar]
@@ -69,60 +67,24 @@
% distance=5pt]
\setupsidebar
- [\c!rulethickness=\dimexpr\bodyfontsize/6\relax, % 2pt default
+ [\c!rulethickness=2pt,
\c!rulecolor=\s!black,
\c!alternative=0,
- \c!topoffset=\zeropoint,
- \c!bottomoffset=\zeropoint,
- \c!distance=.5\bodyfontsize,
- \c!level=,
- \c!leftmargindistance=\zeropoint]
+ \c!topoffset=0pt,
+ \c!bottomoffset=0pt,
+ \c!distance=.5\bodyfontsize]
\let\setupsidebars\setupsidebar
\unexpanded\def\startsidebar
{\dosingleempty\anch_sidebars_start}
-\unexpanded\def\startsidebar
- {\dodoubleempty\anch_sidebars_start}
-
-\def\anch_sidebars_start[#1][#2]%
+\def\anch_sidebars_start[#1]%
{\bgroup
+ \def\currentsidebar{#1}%
\dontleavehmode
- \advance\c_anch_sidebars_level\plusone
\global\advance\c_anch_sidebars_n\plusone
- \c_anch_sidebars_current\c_anch_sidebars_n\relax % relax needed
- \doifassignmentelse{#1}
- {\edef\currentsidebar{\the\c_anch_sidebars_level}%
- \checksidebarparent
- \setupcurrentsidebar[#1]}
- {\def\currentsidebar{#1}%
- \setupcurrentsidebar[#2]}%
- \scratchdistance\sidebarparameter\c!distance\relax
- \edef\m_level{\sidebarparameter\c!level}%
- \ifx\m_level\empty
- \ifnum\c_anch_sidebars_level=\plusone
- \scratchdimen\sidebarparameter\c!leftmargindistance\relax
- \ifdim\scratchdimen=\zeropoint
- \advance\d_anch_sidebars_distance\scratchdistance\relax
- \else
- \d_anch_sidebars_distance\scratchdimen
- \fi
- \else
- \advance\d_anch_sidebars_distance\scratchdistance\relax
- \fi
- \else
- \ifnum\m_level=\plusone
- \scratchdimen\sidebarparameter\c!leftmargindistance\relax
- \ifdim\scratchdimen=\zeropoint
- \advance\d_anch_sidebars_distance\scratchdistance\relax
- \else
- \d_anch_sidebars_distance\scratchdimen
- \fi
- \else
- \d_anch_sidebars_distance\dimexpr\scratchdimen+\numexpr\m_level-\plusone\relax\dimexpr\scratchdistance\relax\relax
- \fi
- \fi
+ \advance\c_anch_sidebars_distance\sidebarparameter\c!distance
\startpositionoverlay{text-1}%
\normalexpanded{\setMPpositiongraphicrange % maybe expand in definition
{b:sidebar:\the\c_anch_sidebars_n}%
@@ -132,17 +94,15 @@
linewidth=\sidebarparameter\c!rulethickness,
linecolor=\sidebarparameter\c!rulecolor,
alternative=\sidebarparameter\c!alternative,
- topoffset=\the\dimexpr\sidebarparameter\c!topoffset,
- bottomoffset=\the\dimexpr\sidebarparameter\c!bottomoffset,
- distance=\the\d_anch_sidebars_distance}%
- }%
+ topoffset=\sidebarparameter\c!topoffset,
+ bottomoffset=\sidebarparameter\c!bottomoffset,
+ distance=\the\c_anch_sidebars_distance}}%
\stoppositionoverlay
- \bpos{sidebar:\the\c_anch_sidebars_current}%
- \ignorespaces}
+ \bpos{sidebar:\the\c_anch_sidebars_n}}
\unexpanded\def\stopsidebar
{\removelastspace
- \epos{sidebar:\the\c_anch_sidebars_current}
+ \epos{sidebar:\the\c_anch_sidebars_n}
\carryoverpar\egroup}
%D Let's keep this nice and simple (okay, we could pass the 6 variables in
@@ -161,73 +121,49 @@
\MPpositiongraphic{mpos:sidebar}{}%
\stopMPpositionmethod
-%D We now reimplement the \MKII\ margin rules handler in a more
-%D modern way.
-%D
-%D \setupmarginrules
-%D [rulecolor=darkred,
-%D rulethickness=2pt]
+%D We now reimplement the margin rules handler defined in
+%D \type {core-rul}:
%D
-%D \setupmarginrules % sidebar
-%D [2]
-%D [rulecolor=darkblue]
+%D \setupmarginrules[level=5]
%D
%D \startmarginrule[1]
-%D \input ward
-%D \startmarginrule[2]
-%D \input ward
-%D \startmarginrule[3]
-%D \input ward
-%D \startmarginrule[level=6,rulecolor=darkgreen]
-%D \input ward
-%D \stopmarginrule
-%D \input ward
-%D \stopmarginrule
-%D \input ward
-%D \stopmarginrule
-%D \input ward
+%D First we set the level at~5. Next we typeset this first
+%D paragraph as a level~1 one. As expected no rule show up.
%D \stopmarginrule
%D
-%D Compared to the old mechanism we now can pass settings too.
+%D \startmarginrule[5]
+%D The second paragraph is a level~5 one. As we can see here,
+%D the marginal rule gets a width according to its level.
+%D \stopmarginrule
+%D
+%D \startmarginrule[8]
+%D It will of course be no surprise that this third paragraph
+%D has a even thicker margin rule. This behavior can be
+%D overruled by specifying the width explictly.
+%D \stopmarginrule
\definesidebar
[\v!margin]
- [\c!leftmargindistance=\dimexpr\leftmargindistance+\sidebarparameter\c!rulethickness/2\relax]
+ [\c!rulethickness=\@@karulethickness,
+ \c!distance=\dimexpr\leftmargindistance-\@@karulethickness/2\relax]
-\dorecurse{5}{\definesidebar[\v!margin:#1][\v!margin]} % let's be nice and predefine 5 levels
+\definecomplexorsimple\startmarginrule
-\unexpanded\def\setupmarginrule
- {\dodoubleargument\anch_marginrules_setup}
+\def\simplestartmarginrule
+ {\complexstartmarginrule[1]}
-\def\anch_marginrules_setup[#1][#2]%
- {\ifsecondargument
- \setupsidebar[\v!margin:#1][#2]%
- \else
- \setupsidebar[\v!margin][#1]%
- \fi}
-
-\let\setupmarginrules\setupmarginrule
-
-\unexpanded\def\startmarginrule
- {\dosingleempty\anch_marginrules_start}
-
-\unexpanded\def\startmarginrule
- {\dosingleempty\anch_marginrules_start}
-
-\def\anch_marginrules_start[#1]% pretty inefficient checking
- {\edef\m_anch_marginrules_kind{#1}%
- \ifx\m_anch_marginrules_kind\empty
- \anch_sidebars_start[\v!margin][]%
+\def\complexstartmarginrule[#1]%
+ {\bgroup
+ \ifnum#1<\@@kalevel\relax
+ \let\stopmarginrule\egroup
\else
- \doifassignmentelse\m_anch_marginrules_kind
- {\anch_sidebars_start[\v!margin][#1]}%
- {\anch_marginrules_check{#1}%
- \anch_sidebars_start[\v!margin:#1][\c!level=#1]}%
+ \def\@@kadefaultwidth{#1}%
+ \let\stopmarginrule\dostopmarginrule
+ \normalexpanded{\startsidebar[\v!margin]}% why expanded
\fi}
-\def\anch_marginrules_check#1%
- {\doifnotcommandhandler\??sidebar{\v!margin:#1}{\definesidebar[\v!margin:#1][\v!margin]}}
-
-\let\stopmarginrule\stopsidebar
+\def\dostopmarginrule
+ {\stopsidebar
+ \egroup}
\protect \endinput