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
-------------------------------------------------------------------------