%D \module
%D   [      file=s-mag-01,
%D        version=2002.12.14,
%D          title=\CONTEXT\ Style File,
%D       subtitle=\CONTEXT\ Magazine Base Style,
%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.

% This style is used for producing explanationary documents.
% Don't misuse it for other purposes, since it may confuse
% users. Don't change the title either, since it provides a
% way to categorize documents. Numbers are disabled in
% instances produced outside PRAGMA ADE.
%
% The layout setup is such that one has several text areas
% available: headers and footers, margins and edges as well
% as the main text area. The surrounding (gray) makes the
% main page stand out and is suitable for viewing in spread
% mode.
%
% Since this style is under constant construction, messing
% around with settings will produce unwanted side effects.
% So, if some feature or settings is needed, let me know.

% todo: mp frames

\setvariables[magazine][number=0]
\setvariables[magazine][author=]
\setvariables[magazine][title={Zero Issue}]
\setvariables[magazine][date=\currentdate]

% These are reserved for PRAGMA-ADE, don't use them yourself!

% \setvariables[magazine][main=Tricky]
% \setvariables[magazine][main=Update]
% \setvariables[magazine][main=HOWTO]

% \setvariables[magazine][main=This Way]      % preludes to a/the manual
% \setvariables[magazine][main=A Better Way]  % dirty versus clean
% \setvariables[magazine][main=No Way]        % how users should not do it
% \setvariables[magazine][main=Your Way]      % how users do it
% \setvariables[magazine][main=My Way]        % how users do it
% \setvariables[magazine][main=Our Way]       % how we do things at pragma
% \setvariables[magazine][main=Their Way]     % how to do latex things in context

\setvariables[magazine][main=My Way]

\startmode[atpragma]
  \setvariables[magazine][main=This Way]
\stopmode

\definepapersize
  [magazine]
  [width=\dimexpr\paperwidth-.1\paperwidth\relax,
   height=\dimexpr\paperheight-.1\paperheight\relax]

\setuppapersize
  [magazine]
  [A4]

\setupinteractionscreen
  [option=doublesided]

\definecolor[OuterColor][s=.3]
\definecolor[InnerColor][s=.8]
\definecolor[MainColor] [s=.2]
\definecolor[TitleColor][s=.7]

\definecolor[MyRed]  [r=.6]
\definecolor[MyGreen][g=.6]
\definecolor[MyBlue] [b=.6]

\startuseMPgraphic{paper}
  sh := define_circular_shade(a,a,0,bbheight(OverlayBox),
   \MPcolor{InnerColor},\MPcolor{OuterColor}) ;
  fill OverlayBox withshade sh ;
\stopuseMPgraphic

\startreusableMPgraphic{middlepaper}
  pair a ; a := center OverlayBox ;
  \includeMPgraphic{paper}
\stopreusableMPgraphic

\startreusableMPgraphic{rightpaper}
  pair a ; a := .5[urcorner OverlayBox,lrcorner OverlayBox] ;
  \includeMPgraphic{paper}
\stopreusableMPgraphic

\startreusableMPgraphic{leftpaper}
  pair a ; a := .5[ulcorner OverlayBox,llcorner OverlayBox] ;
  \includeMPgraphic{paper}
\stopreusableMPgraphic

\startreusableMPgraphic{page}
  fill OverlayBox withcolor white ;
\stopreusableMPgraphic

\startusableMPgraphic{text}
  StartPage ;
    for i = Header,Text,Footer :
      for j = LeftEdge, LeftMargin, Text, RightMargin, RightEdge :
        draw Field[i][j] withpen pencircle scaled .5pt ;
      endfor ;
    endfor ;
  StopPage ;
  setbounds currentpicture to Field[Text][Text] ;
\stopusableMPgraphic

\startsetups[paper]

  \doifmodeelse{*makeup}
    {\reuseMPgraphic{middlepaper}}
    {\doifoddpageelse
       {\reuseMPgraphic{rightpaper}}
       {\reuseMPgraphic{leftpaper}}}

\stopsetups

\defineoverlay[paper] [\setups{paper}]
\defineoverlay[page]  [\reuseMPgraphic{page}]
\defineoverlay[text]  [\doifmode{frame}{\useMPgraphic{text}}]

\setupbackgrounds [paper] [background=paper]
\setupbackgrounds [page]  [background={page,title}]
\setupbackgrounds [text]  [background=text]

\definelayer
  [title]
  [state=repeat,
   hoffset=-1cm,
   voffset=1cm,
   width=\paperwidth,
   height=\paperheight]

\setupoutput
  [pdftex]

\setuplayout
  [width=middle,
   topspace=1.5cm,
   height=middle,
   header=1.5cm,
   footer=1cm,
  %grid=yes,
   headerdistance=.25cm,
   footerdistance=.5cm,
   backspace=3cm,
   margin=1.5cm,
   margindistance=.25cm,
   edge=.75cm,
   edgedistance=.25cm,
   bottomdistance=1.5cm,
   bottom=.1\printpaperheight]

\definelayout
  [makeup]
  [topspace=1cm,
   backspace=1cm,
   header=0pt,
   footer=0pt,
   bottom=0pt]

\setuppagenumbering
  [alternative=doublesided]

\setupcolors
  [state=start]

\usetypescript
  [palatino][\defaultencoding]

\setupbodyfont
  [palatino,10pt]

\setuptolerance
  [verytolerant,stretch]

\appendtoks\setups[papershift]\to\beforeeverypage

\startsetups[papershift]

  \setuppapersize[top=\vskip.5cm,bottom=\vss]

  \doifmodeelse{*makeup}
    {\setuppapersize[left=\hfill,right=\hfill]}
    {\doifoddpageelse
       {\setuppapersize[right=\hfill]}
       {\setuppapersize[left=\hfill]}}

\stopsetups

\setupbottomtexts
  [\setups{rightbanner}] []
  [] [\setups{leftbanner}]

\startsetups [leftbanner]

  \definedfont[Regular at \the\bottomheight]
  \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
  \ht\scratchbox1ex
  \dp\scratchbox\zeropoint
  \MainColor
  \definedfont[Regular sa 2]
  \doifsomething{\getvariable{magazine}{number}}
    {\doifnot{\getvariable{magazine}{number}}{0}
       {\#\getvariable{magazine}{number}}}
  \quad
  \currentdate
  \quad
  \scale[height=.25\bottomheight]{\box\scratchbox}
  \quad
  \hbox to 1.5em{\hss\pagenumber\hss}
  \quad
  \hskip-\backspace

\stopsetups

\startsetups [rightbanner]

  \definedfont[Regular at \the\bottomheight]
  \setbox\scratchbox\hbox{\TitleColor\getvariable{magazine}{main}}
  \ht\scratchbox1ex
  \dp\scratchbox\zeropoint
  \MainColor
  \hskip-\backspace
  \definedfont[Regular sa 2]
  \quad
  \hbox to 1.5em{\hss\pagenumber\hss}
  \quad
  \scale[height=.25\bottomheight]{\box\scratchbox}
  \quad
  \currentdate
  \quad
  \doifmode{atpragma}{\#\getvariable{magazine}{number}}

\stopsetups

\startsetups[titlepage]

  \disablemode[frame]

  \setuplayout[makeup]

  \startstandardmakeup[doublesided=no]

  \dontcomplain

  \definelayer
    [makeup]
    [width=\textwidth,
     height=\textheight]

  \setlayerframed
    [makeup]
    [corner={left,top},location={right,bottom}]
    [frame=off,
     foregroundcolor=MainColor]
    {\scale
       [width=\makeupwidth]
       {\definedfont[Regular sa 10]%
        \getvariable{magazine}{main}}}

  \setlayerframed
    [makeup]
    [corner={right,top},location={left},y=.4\textheight]
    [frame=off,
     foregroundcolor=MainColor,
     width=\textwidth,
     align=left]
    {\definedfont[Regular sa 2.5]\setupinterlinespace
     \startmode[atpragma]
       \strut \ConTeXt\ magazine \#\getvariable{magazine}{number}\endgraf
     \stopmode
     \strut \getvariable{magazine}{date} \endgraf
     \blank
     \strut \getvariable{magazine}{title}\endgraf
     \doifsomething{\getvariable{magazine}{author}}
       {\strut \getvariable{magazine}{author}\endgraf}
     \doifsomething{\getvariable{magazine}{affiliation}}
       {\strut \getvariable{magazine}{affiliation}\endgraf}}

  \setlayerframed
    [makeup]
    [corner={right,bottom},location={left,top}]
    [frame=off,
     align=normal,
     width=.8\textwidth,
     foregroundcolor=MainColor]
    {\getbuffer[abstract]}

  \flushlayer[makeup]

  \stopstandardmakeup

  \setuplayout[reset]

\stopsetups

\startsetups[listing]

  \page \disablemode[frame]

  \setuptexttexts  [][] \setuptexttexts  []
  \setupheadertexts[][] \setupheadertexts[source code of this document]
  \setupfootertexts[][] \setupfootertexts[]

  \start \dontcomplain

    \typefile[TEX]{\inputfilename}

  \stop

\stopsetups

\startsetups[lastpage]

  \page \disablemode[frame] \page[even]

  \doifoddpageelse
    {}
    {\setuplayout[makeup]
     \startstandardmakeup[doublesided=no,page=]
     \stopstandardmakeup
     \setuplayout[reset]}

\stopsetups

\startsetups[title]

  \disablemode[frame]

  \setlayerframed
    [title]
    [corner={left,top},location={left,bottom},
     rotation=90]
    [frame=off,
     foregroundcolor=MainColor]
    {\definedfont[RegularBold sa 2]\strut\getvariable{magazine}{title}}

  \setlayerframed
    [title]
    [corner={right,top},
     rotation=270]
    [frame=off,
     foregroundcolor=MainColor]
    {\definedfont[RegularBold sa 2]\strut\getvariable{magazine}{title}}

\stopsetups

\startbuffer[abstract]
  % no abstract
\stopbuffer

\setuphead
  [chapter]
  [page=yes,
   after={\blank[2*big]},
   color=MainColor,
   style=\bfc]

\setuphead
  [section]
  [before={\blank[2*big]},
   after=\blank,
   color=MainColor,
   style=\bfb]

\setuphead
  [subsection]
  [before=\blank,
   after=,
   color=MainColor,
   style=\bf]

\setupwhitespace
  [big]

\definetyping[xtyping] [style=\ttx]
\definetyping[xxtyping][style=\ttxx]

\definetypeface
  [narrowtt] [tt]
  [mono] [modern-cond] [default] [encoding=\defaultencoding]

\definetyping[ntyping] \setuptyping[ntyping][style=\narrowtt]
\definetype  [ntype]   \setuptype  [ntype]  [style=\narrowtt]

\doifnotmode{demo}{\endinput}

% \usemodule[mag-01]

\setvariables
  [magazine]
  [title={Introduction},
   author=Hans Hagen,
   affiliation=PRAGMA ADE,
   date=Januari 2003,
   number=0]

\startbuffer[abstract]
  This is the zero issue of a semi periodical. The
  associated style can be used by \CONTEXT\ users to
  typeset and publish their own issues.
\stopbuffer

\starttext \setups [titlepage] \setups [title]

\setupheadertexts[welcome]

This is the zero issue of a range of \CONTEXT\ related
publications, in most cases short introductions to new
functionality. The style may be used by users for providing
similar documents, but preferably not for other purposes,
since it may confuse readers in their expectations.

We've chosen a layout which is more functional than
beautiful. This layout provides several text areas: headers
and footers, margins and edges as well as a main text area.
The surrounding (gray) makes the main page (which is
slightly smaller than A4) stand out and is suitable for
viewing in spread mode.

The documents produced at \PRAGMA\ are called {\bf This
Way}, user documents gets the title {\bf My Way}. The
\PRAGMA\ issues are numbered. We strongly advise you not to
use the \type {mag-} prefix for your issues, since this may
lead to clashes with files distributed by \PRAGMA.

\setups [listing]

\setups [lastpage]

\stoptext
