At 05:17 PM 5/8/2002 -0400, John Culleton wrote:

>Is there something wrong with my overall approach?

Of course -)

You should use the other background mechanism, the atributes one, which (of 
course) is not yet documented since it's quite new and under development 
(details.pdf will cover it).

However, that method would be overkill, so best use a simpler approach. The 
attached file demos it.

(BTW, i haven't used side bars for years and don't expect to use them in 
the future, so testing is for others)

Hans


You can test the following file:

   texexec --mode=demo --pdf m-yesno

It supports colered sidebars, crossing pages, nested bars, etc

============ m-yesno.tex =========================

%D \module
%D   [       file=m-yesno,
%D        version=2000.05.10,
%D          title=\CONTEXT\ Extra Modules,
%D       subtitle=Handy, Yes or No?,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright=PRAGMA-ADE]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\unprotect

\newcounter\currentsidebar
\newdimen\sidebardistance

\definesystemvariable{sr}

\def\setupsidebars
   {\dodoubleargument\dosetupsidebars}

\def\dosetupsidebars[#1][#2]%
   {\ifsecondargument
      \getparameters[\??sr#1][#2]%
    \else
      \getparameters[\??sr][#1]%
    \fi}

% \setupMPvariables
%   [mpos:bar]
%   [linecolor=red,
%    linewidth=2pt,
%    distance=5pt]

\setupsidebars
   [\c!lijndikte=2pt,
    \c!lijnkleur=red,
    \c!afstand=.5\bodyfontsize]

\def\definesidebar
   {\dodoubleempty\dodefinesidebar}

\def\dodefinesidebar[#1][#2]%
   {\copyparameters
      [\??sr#1][\??sr]
      [\c!lijndikte,\c!lijnkleur,\c!afstand]%
    \getparameters
      [\??sr#1][#2]}

\def\startsidebar
   {\dosingleempty\dostartsidebar}

\def\dostartsidebar[#1]%
   {\bgroup
    \dontleavehmode
    \checktextbackgrounds
    \doglobal\increment\currentsidebar
    \doifelsenothing{#1}
      {\advance\sidebardistance\@@srafstand}
      {\doifelsevaluenothing{\??sr#1\c!afstand}
         {\advance\sidebardistance\@@srafstand}
         {\sidebardistance\getvalue{\??sr#1\c!afstand}}}%
    \startpositionoverlay{text-1}%
      \expanded{\setMPpositiongraphicrange
        {b:side:\currentsidebar}%
        {e:side:\currentsidebar}%
        {mpos:bar}%
        {self=side:\currentsidebar,
         linewidth=\getvalue{\??sr#1\c!lijndikte},
         linecolor=\getvalue{\??sr#1\c!lijnkleur},
         distance=\the\sidebardistance}}%
    \stoppositionoverlay
    \bpos{side:\currentsidebar}\ignorespaces}

\def\stopsidebar
   {\removelastspace\tpos{side:\currentsidebar}\egroup}

\startMPpositionmethod{mpos:bar}
   \startMPpositiongraphic{mpos:bar}{linecolor,linewidth,distance}%
     StartPage ;
       path p ; p :=
       if \MPp\MPbself=\MPp\MPeself :
         (xpart ulcorner Field[Text][Text],\MPy\MPbself+\MPh\MPbself) --
         (xpart llcorner Field[Text][Text],\MPy\MPeself-\MPd\MPeself) ;
       elseif RealPageNumber=\MPp\MPbself :
         (xpart ulcorner Field[Text][Text],\MPy\MPbself+\MPh\MPbself) --
         (llcorner Field[Text][Text]) ;
       elseif RealPageNumber=\MPp\MPeself :
         (ulcorner Field[Text][Text]) --
         (xpart llcorner Field[Text][Text],\MPy\MPeself-\MPd\MPeself) ;
       else :
         (ulcorner Field[Text][Text]) --
         (llcorner Field[Text][Text]) ;
       fi ;
       draw p shifted (-\MPvar{distance},0)
         withpen pencircle scaled \MPvar{linewidth}
         withcolor \MPvar{linecolor} ;
       anchor_par(\MPanchor\MPbself) ;
     StopPage ;
   \stopMPpositiongraphic
   \MPpositiongraphic{mpos:bar}{}%
\stopMPpositionmethod

\protect

\doifnotmode{demo}{\endinput}

\showframe \setupcolors[state=start]

\definesidebar[whow][rulecolor=green,distance=]

\starttext

\input tufte \par
\startsidebar
   \input tufte \par
   \input tufte \par
   \startsidebar[whow]
     \input tufte \par
     \input tufte \par
     \input tufte \par
   \stopsidebar
   \input tufte \par
   \input tufte
\stopsidebar
\input tufte \par
\input tufte \par
\startsidebar
   \input tufte \par
   \input tufte \par
   \input tufte \par
   \input tufte \par
   \input tufte
\stopsidebar
\input tufte \par
\input tufte \par
\startsidebar
   \input tufte
   \input tufte
   \input tufte
   \input tufte
   \input tufte
\stopsidebar

\stoptext


-------------------------------------------------------------------------
                                   Hans Hagen | PRAGMA ADE | [EMAIL PROTECTED]
                       Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
  tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com
-------------------------------------------------------------------------
                        information: http://www.pragma-ade.com/roadmap.pdf
                     documentation: http://www.pragma-ade.com/showcase.pdf
-------------------------------------------------------------------------

Reply via email to