%D \module
%D   [file=s-map-10.mkiv,
%D   version=2012.06.06,
%D   title=\CONTEXT\ Style File,
%D   subtitle=\MAPS\ journal style,
%D   author={Hans Hagen, Taco Hoekwater and Siep Kroonenberg},
%D   date=\currentdate,
%D   copyright=NTG/MAPS]

% This module implements the MAPS style for use with the Context
% macro package. The original MAPS layout was designed and
% implemented in LaTeX by Taco Hoekwater and Siep Kroonenberg.

% - three layouts:
%   1. two columns
%   2. one column, with wide outer margins (option onecolumn)
%   3. one column, with wide left margin (option asym)
% - font sizes deviate from TeX's usual geometric progression
% - use of sans-serif for headers and various details
% - option realfonts uses Linux Libertine, Euler Math and Inconsolata.
%   This is used for final typesetting.
%   The default font setup, intended for authors, uses Computer
%   Modern Math instead of Euler Math (which is still in beta),
%   and LM Mono instead of Inconsolata.

% A mode nosubsub defines only two levels of sectioning. If you
% don't need more and use the two-column layout, then this option
% will probably improve the looks of your paper.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newif\ifMapsInColumns
\doifmode{asym}{\enablemode[onecolumn]} % implies onecolumn
\doifnotmode{onecolumn}{\MapsInColumnstrue}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% fonts

%%%%%%%%% first, font sizes
\definebodyfontenvironment [7pt][% LaTeX: scriptsize
   interlinespace=8pt,
   big=8pt,
   small=6pt%
]

\definebodyfontenvironment [8pt][% LaTeX: footnotesize
   interlinespace=9pt,
   big=9pt,
   small=7pt,
   x=6pt%
]

\definebodyfontenvironment [9pt][% LaTeX: small
   interlinespace=10pt,
   big=10pt,
   small=8pt,%
   x=7pt,%
   script=6pt%
]

\definebodyfontenvironment [10pt][% LaTeX: normalsize
   interlinespace=11pt,
   big=11pt,
   a=11pt,
   small=9pt,%
   x=8pt,%
   script=7pt%
]

\definebodyfontenvironment [11pt][% LaTeX: large
   interlinespace=11pt,
   big=11pt,
   small=10pt,%
   x=9pt,%
   script=8pt%
]

\definebodyfontenvironment [14pt][%
   interlinespace=14pt,
   big=18pt,
   small=11pt,
   x=10pt%
]

\definebodyfontenvironment [18pt][%
   interlinespace=18pt,
   big=24pt,
   small=14pt,
   x=10pt%
]

\definebodyfontenvironment [24pt][%
   interlinespace=24pt,
   big=24pt,
   small=18pt,
   x=11pt%
]

%%% font families

\starttypescript [maps]
\definetypeface [maps] [rm] [serif] [modern]      [default] [rscale=0.95]
\definetypeface [maps] [mm] [math]  [modern]      [latin-modern]
\definetypeface [maps] [tt] [mono]  [modern]      [default] [rscale=0.90]
\definetypeface [maps] [ss] [sans]  [modern]      [default] [rscale=0.95]
\stoptypescript

\startmode[realfonts]
\usetypescriptfile[type-libertine]

\usetypescriptfile[type-inconsolata]

\starttypescript [maps]
\definetypeface [maps] [rm] [serif] [libertine]   [default]
\definetypeface [maps] [mm] [math]  [euler]       [default] [rscale=0.9]
\definetypeface [maps] [tt] [mono]  [inconsolata] [default] [rscale=0.92]
\definetypeface [maps] [ss] [sans]  [modern]      [default] [rscale=0.95]
\stoptypescript
\stopmode

\setupbodyfont[maps,10pt,rm]

% activate protruding
\setupinterlinespace[line=11pt]

\setupfontsynonym[handling=pure]

\setupalign[hanging]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% additional general typographic details

\setupindenting [yes,next,11pt] % indenting after enumerations etc.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 3 versions of layout with matching headers

\definepapersize 
  [maps]
  [width=21cm,height=26.5cm]

\setuppapersize 
  [maps][maps]

\setuplayout[
  [topspace=40pt,
   height=688pt,
   header=33pt,
   margin=106pt,
   leftmargindistance=11pt,
   rightmargindistance=11pt]

\setupblank[5.5pt]

\setuppagenumbering [location=]

\definetyping [widetyping]

\setupheader [style=\ss]
\setupfooter [style=\ss]

\def\AuHead{\MapsRunningAuthor}
\def\TiHead{\ifnum\pageno=\MapsPage \relax \MapsRunningAuthor \else \MapsRunningTitle\fi}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% sectioning

\setupheads[sectionnumber=no, align=right]

\def\hfonti{\ssbfa}
\def\hfontii{\ssbf}
\def\hfontiii{\rm\it}

\doifelsemode{nosubsub}{%
\setuphead [section][%
  style=\hfontii,
  before={\blank[line]},
  after={}%
]
\setuphead [subsection][%
  style=\hfontiii,
  alternative=text,
  distance=6pt,
  before={\blank[halfline]}%
]}{%
\setuphead [section][%
  style=\hfonti,
  before={\blank[line]},
  after={\blank[halfline]}%
]
\setuphead [subsection][%
  style=\hfontii,
  before={\blank[halfline]},
  after={}%
]
\setuphead [subsubsection][%
  style=\hfontiii,
  distance=6pt,
  alternative=text,
  before={\blank[halfline]}%
]}

\doifelsemode{nosubsub}{%
\setuphead [subject][%
  style=\hfontii,
  before={\blank[halfline]},
  after={}%
]
\setuphead [subsubject][%
  style=\hfontiii,
  alternative=text,
  before={\blank[halfline]}%
]}{%
\setuphead [subject][%
  style=\hfonti,
  before={\blank},
  after={\blank[halfline]}%
]
\setuphead [subsubject][%
  style=\hfontii,
  before={\blank[halfline]},
  after={}%
]
\setuphead [subsubsubject][%
  style=\hfontiii,
  alternative=text,
  before={\blank[halfline]}%
]}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% floats

\setupfloats [location=center, before={\ss}]
\setupcaptions [headstyle={\ssbf},style={\ssx},
   suffix=.,distance=6pt,
   inbetween={\blank[halfline]}]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% various document elements

\definesymbol [1][\getnamedglyphdirect{file:stmary10}{boxempty}]

\setupitemize[1][packed]

\setupitemize [each][%
  indentnext=no,
  align=right,
  width=1em,
  distance=0pt%
]

% an outer form of itemize that does not indent
% the paragraph.

\definecomplexorsimpleempty\startouteritemize
\def\complexstartouteritemize[#1]{\begingroup
  \startitemize[width=1sp,#1]
  \let\doitem\item
  \def\item{\doitem[]\hbox{}\kern12pt\rightskip=0pt}%
}

\def\stopouteritemize{\stopitemize\endgroup}


\setupenumerations [indentnext=no]

\setupdescriptions [indentnext=no]

\unexpanded\def\smalltyping{%
  \switchtobodyfont[tt]%
  \parindent=0pt
}

% typing:
% - prettyverbatim is NOT the default
% - smaller size

\unexpanded\def
  \XeTeX{X\lower.5ex\hbox{\kern-.1em\mirror{E}}\kern-.1667em\TeX}

\setuptyping [%
  style={\smalltyping},
  option=none,
  indentnext=no%
]

\def\footnum#1{#1.}

\setupnotation
   [footnote]
   [alternative=serried,
    before=,
    after=,
    location=none,
    width=\textwidth,
    before={\blank},
    numbercommand=,
    command=\footnum,
    distance=0.5em]

\setuptabulate
   [before=\blank,
    inner=\ss,
    after=\blank]

\def\startIntroEntry#1%
 {\startlinecorrection
  \bgroup
  \setupalign[right]
  \setuptolerance[verytolerant]
  \setupindenting[no]
  \noindent
  \switchtobodyfont[9pt]%
  \setuplocalinterlinespace[line=10pt]%
  %\hyphenpenalty10000
  \parfillskip 0pt plus 1fill
  \rightskip6pt plus 1fill
  \ss
  \bgroup\bf #1\par\egroup
  \ignorespaces }

\def\stopIntroEntry
  {\par\egroup \stoplinecorrection
   \blank[line] }

\def\defineIntroEntry[#1][#2][#3]%
  {\setvalue{start#1}{\startIntroEntry{#2}}%
   \setvalue {stop#1}{\stopIntroEntry#3}}

\defineIntroEntry[Keywords][Keywords][]
\defineIntroEntry[Abstract][Abstract][]

% article parameters (other fields and defaults)
\def\MapsBibData[#1]%
  {\getparameters [Maps]
	[SubTitle=,
     RunningAuthor=,
     RunningTitle=,
     Email=,
     Address=,
     Page=1,
     Title=,
     Author=,
     Period=,
     Number=,
     Year=,
     #1]%
  \doifnothing{\MapsPeriod}{%
    \ifnum \normalmonth<6 \gdef\MapsPeriod{VOORJAAR}\else \gdef\MapsPeriod{NAJAAR}\fi}
  \doifelseinstring{oorjaar}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
  \doifelseinstring{pring}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
  \doifelseinstring{ajaar}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
  \doifelseinstring{utumn}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
  \doifnothing{\MapsYear}{\gdef\MapsYear{\the\year}}%
  \doifnothing{\MapsNumber}{%
    \ifnum \normalmonth<6
      \xdef\MapsNumber{\the\numexpr (\the\year-1990)*2\relax}%
    \else
      \xdef\MapsNumber{\the\numexpr (\the\year-1990)*2+1\relax}%
    \fi }%
  \doifnothing\MapsRunningAuthor
    {\global\let\MapsRunningAuthor\MapsAuthor}%
  \doifnothing\MapsRunningTitle
    {\global\let\MapsRunningTitle\MapsTitle}}%

\def\dostartArticle[#1]{%
  \MapsBibData[#1]
  \pageno=\MapsPage
  \setupuserpagenumber[start=\MapsPage]
  \startbaselinecorrection
  \bgroup
    \hsize = 457pt
    \let\\\crlf
    \blank[35pt,force]
    \switchtobodyfont[24pt]
    \setupalign[right]
    {\noindent\bf\MapsTitle\par}
    \ifx\MapsSubTitle\empty
      \blank[30pt]
    \else
      \bgroup
      \blank[12pt]
      \switchtobodyfont[18pt]\noindent \it
      \advance \rightskip 0pt plus 2em
      \MapsSubTitle\par
      \egroup
      \blank[30pt]
    \fi
  \egroup
  \setupalign[width]
  \switchtobodyfont[rm,10pt]
  \stopbaselinecorrection
  \ifMapsInColumns
    \startcolumns\hyphenpenalty1000
  \else
    \clubpenalty10000
    \widowpenalty10000
  \fi
}

\def\startArticle{\dosingleempty\dostartArticle}

\def\signArticle{%
  \blank\let\\\crlf
  \noindent\switchtobodyfont[ss,9pt]%
  \MapsAuthor
  \doifsomething{\MapsAddress}{\\\MapsAddress}%
  \doifsomething{\MapsEmail}{\\\MapsEmail}%
  \switchtobodyfont[10pt]%
  \def\signArticle{}%
}

\def\stopArticle{%
  \par\signArticle
  \ifMapsInColumns \stopcolumns \fi
  \page
}

\installpagebreakmethod{last}{}

%%% `logos' %%%%%%%%%%%%%%%%%%%%%%%%%%

\unexpanded\def\LaTeX % requested by erik frambach
  {{\setbox\scratchbox\hbox{L}%
    \scratchdimen\ht\scratchbox
    \setbox\scratchbox\hbox{\switchtobodyfont[script]A}%
    L\kern-.55\wd\scratchbox
    \raise\scratchdimen\hbox{\lower\ht\scratchbox\copy\scratchbox}%
    \kern-.2\wd\scratchbox\TeX}}


\def\CONTEXT{Con{\TeX}t}
\def\ConTeXt{Con{\TeX}t}
\def\METAFONT{Metafont}
\def\METAPOST{MetaPost}
\def\POSTSCRIPT{PostScript}

\def\acro#1{{\switchtobodyfont[9pt]#1}}


%%%%%%%%%%%

\doifelsemode{onecolumn}{%
  \setuplayout[width=340pt]
  \doifelsemode{asym}{% one col, asymmetric
    \setuplayout[backspace=187.3pt]%
    \setuptyping [widetyping][oddmargin=-117pt]
    \setuppagenumbering [alternative={singlesided,doublesided}]
    \setupheadertexts
      [{\hbox{}\hskip-117pt\TiHead}]
      [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
      [{\hbox{}\hskip-147pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
      [\AuHead]
    \setupfootertexts
  }{% one col, symmetric
    \setuplayout[backspace=70.3pt]
    \setuppagenumbering [alternative=doublesided]
    \setuptyping[blank=halfline]
    \setupheadertexts
      [\TiHead]
      [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-147pt\hbox{}}]
      [{\hbox{}\hskip-147pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
      [\AuHead]
    \setupfootertexts
}}{% two col
  \setuplayout[width=457pt]
  \setupcolumns[n=2,tolerance=verytolerant,distance=11pt]
  \setuplayout[backspace=70.3pt,grid=yes]
  \setuppagenumbering [alternative=doublesided]
   \setuptyping[blank=halfline]
   \setupheadertexts
    [\TiHead]
    [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
    [{\hbox{}\hskip-30pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
    [\AuHead]
  \setupfootertexts
}

\def\fulltextwidth{457pt}

\def\startdescription
  {\blank
   \bgroup
   \def\sym##1{\par\noindent\hbox{\bf\kern -16pt ##1}\hskip 12pt}
   \startnarrower[left]
   }
\def\stopdescription
  {\par \stopnarrower \egroup \blank \noindentation }

\frenchspacing
\setuptolerance[tolerant]

\endinput
