%D \module %D [ file=s-pre-04, %D version=1998.09.06, %D title=\CONTEXT\ Style File, %D subtitle=Presentation Environment 4, %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. \usemodule[pre-general] %D \macros %D {setupbodyfont} %D %D This is just another environment for typesetting interactive %D presentations. I wrote this module on behalf of a course I %D gave for the United Kingdom \TeX\ users group. \setupbodyfont[ams,pos,14.4pt] %D \macros %D {setupcolors,definecolor} %D %D I started using dark blue for the navigational elements. In %D that context, dark red is a logical choice for the contrast %D color. While playing around with the navigational elements %D I decided to use the not so dominant color yellow for the %D status bar. %D %D A few days before I wrote this style, the recent acquisition %D of Mondriaans last painting by the Dutch governement was a %D hot topic in the dutch news scenary. Therefore I decided to %D replace the rather dull title page by something more %D colorful, in mondriaan colors, but far more random than any %D of his paintings. For consistence we remap the already %D defined primary colors. \setupcolors [state=start] \definecolor [NoneColor] [s=.6] \definecolor [GotoColor] [b=.6] \definecolor[blue] [GotoColor] \definecolor [ExitColor] [r=.6] \definecolor[red] [ExitColor] \definecolor [JumpColor] [s=.6] \definecolor [UserColor] [g=.6] \definecolor[green] [UserColor] \definecolor [StepColor] [r=.6,g=.6] \definecolor[yellow][StepColor] \definecolor [PageColor] [s=.80] \definecolor[gray] [PageColor] \definecolor [TextColor] [s=.90] %D \macros %D {setuppapersize} %D %D As usual, we take a screen oriented paper size: \setuppapersize [S6][S6] %D \macros %D {setuplayout,setupinteractionscreen} %D %D The layout definition fits into this $600\times450$ point %D area, but the dimensions are somewhat diffused by the text %D background offset. \setuplayout [width=530pt, height=400pt, header=0pt, footer=0pt, backspace=15pt, topspace=15pt, bottomdistance=15pt, bottom=10pt, margin=0pt, rightedgedistance=15pt, rightedge=30pt] \setupinteractionscreen [option=max] %D \macros %D {setupbackgrounds} %D %D Both the page and the text area have a gray background. %D The \type {[text,text]} area also has an offset. Later we %D will see that we have to compensate for that in the %D navigational areas. \setupbackgrounds [page] [background=color, backgroundcolor=PageColor] \setupbackgrounds [text][text] [background=color, backgroundcolor=TextColor, backgroundoffset=5pt] %D \macros %D {setupinteraction} %D %D For convenient navigation, we turn on interaction. \setupinteraction [state=start, menu=on, color=UserColor, contrastcolor=NoneColor] %D \macros %D {setupsubpagenumber} %D %D When navigating the document, we keep the title page out %D of sight, therefore we use sub page numbers. \setupsubpagenumber [state=start, way=bytext] %D \macros %D {setupinteractionmenu} %D %D There is only one interaction menu, located in the right %D edge of the screen. Both offsets enlarge the edge by the %D same amount as the text background offset. \setupinteractionmenu [right] [state=start, frame=off, strut=no, offset=0pt, inbetween=, bottomoffset=-5pt, topoffset=-5pt] %D \macros %D {startinteractionmenu} %D %D The menu itself is not that spectacular. We use the %D start||stop alternative for setting the content. The macro %D \type {\interactioncolor} expands into either the %D interaction color or the contrast color, the latter only %D when no jump is possible. \startinteractionmenu[right] \setupinteraction[color=GotoColor] \but [previoussubpage] \Triangle {90}\framedwidth\interactioncolor \\ \vskip10pt \but [nextsubpage] \Triangle{270}\framedwidth\interactioncolor \\ \vfill \but [PreviousJump] \Triangle{180}\framedwidth{NoneColor} \\ \vskip-5pt \but [NextJump] \Triangle {0}\framedwidth{NoneColor} \\ \stopinteractionmenu %D \macros %D {setupinteractionbar} %D %D The interaction bar at the bottom is also larger than the %D normal width of the bottom area. \setupinteractionbar [alternative=f, width=\textwidth, height=\bottomheight, distance=10pt, color=NoneColor, contrastcolor=StepColor] %D \macros %D {setupbottomtexts} %D %D The bar is centered in the middle. \setupbottomtexts [\interactionbar] %D We can exit viewing with a close button, located on the %D rightmost bottom area. \def\CloseButton {\button [width=\rightedgewidth,height=\bottomheight,offset=overlay, background=color,backgroundcolor=ExitColor,frame=off] {}% [CloseDocument]} \setupbottomtexts [edge][][\CloseButton] %D \macros %D {definesymbol,setupitemize} %D %D Because some prominent things are rectangular or triangular, %D we prefer some different symbols in itemizations: \definesymbol[1][$\blacktriangleright$] \definesymbol[2][$\blacktriangledown$] \definesymbol[3][$\blacktriangleright$] \definesymbol[4][$\blacktriangledown$] \setupitemize[each][color=NoneColor] %D \macros %D {TitlePage,defineoverlay,button,setupalign, %D setupbackgrounds,setupinteraction,setupinteractionbar, %D startstandardmakeup,switchtobodyfont,setupinterlinespace} %D %D Now the main layout and navigational definitions are %D done, it makes sense to define and tune some structuring %D commands. First we build the titlepage. \defineoverlay [TitleGraphic] [\useMPgraphic{title}] \defineoverlay [NextPage] [\overlaybutton{nextpage}] \def\StartTitlePage {\setupbackgrounds[page][background={color,TitleGraphic,NextPage}] \setupbackgrounds[text][text][background=] \setupinteraction[menu=off] \setupinteractionbar[state=stop] \startstandardmakeup \switchtobodyfont[24pt] \bfd\setupinterlinespace \setupalign[middle] \vfil \let\\=\vfil} \def\StopTitlePage {\vfil\vfil\vfil \stopstandardmakeup \setupinteraction[menu=on] \setupinteractionbar[state=start] \setupbackgrounds[page][background=color] \setupbackgrounds[text][text][background=color] \setupsubpagenumber[reset]} \def\TitlePage#1% {\StartTitlePage#1\StopTitlePage} %D \macros %D {Topic, Nopic, Subject, %D definehead, setuphead} %D %D We use \type {\Topic} and \type {\Subject} instead of %D chapters and sections. The \type {\Nopic} alternative is %D meant for internal use. \definehead [Topic] [chapter] \definehead [Nopic] [title] \definehead [Subject] [section] \setuphead [Topic, Nopic] [after={\blank[3*medium]}, number=no, style=\tfb, page=yes, alternative=middle] \setuphead [Subject] [after=\blank, number=no, page=yes, continue=no, style=\tfa] %D \macros %D {Topics, Subjects, %D setuplist, placelist, startcolumns} %D %D This style is meant for the more large presentations, and %D therefore provided for a list of topics as well as local %D lists of subjects. When many topics are introduces, the %D list is typeset in columns. \setuplist [Topic,Subject] [alternative=g, interaction=all, before=, after=] \setuplist [Topic] [criterium=all] \def\Topics#1% {\determinelistcharacteristics[Topic] \ifnum\utilitylistlength>0 \Nopic[Topics]{#1} \ifnum\utilitylistlength>12 \startcolumns \placelist[Topic] \stopcolumns \else \placelist[Topic] \fi \fi} \def\Subjects% {\placelist[Subject]} %D Last we define the overlays. Look at the way colors are %D linked into the macros. \startMPinclusions def triangle (expr wid, rot, col) = x1 := x3 := y1 := 0 ; x2 := y3 := wid ; y2 := .5y3 ; fill (z1--z2--z3--cycle) rotated rot withcolor col ; currentpicture := currentpicture xysized (wid,wid) ; enddef ; \stopMPinclusions \setupMPvariables [triangle] [width=1cm, rotation=0, color=black] \startuniqueMPgraphic{triangle}{width,rotation,color} triangle(\MPvar{width},\MPvar{rotation},\MPvar{color}) ; \stopuniqueMPgraphic \def\Triangle#1#2#3% {\uniqueMPgraphic{triangle}{rotation=#1,width=#2,color=#3}} \startuseMPgraphic{title} % can be simplified with "randomized" color c ; path p ; for i=1 upto 250 : x0 := uniformdeviate \overlaywidth ; y0 := uniformdeviate \overlayheight ; sx := uniformdeviate 20 ; sy := uniformdeviate 20 ; cc := round(uniformdeviate 2) ; if cc=0 : c := \MPcolor{GotoColor} fi ; if cc=1 : c := \MPcolor{ExitColor} fi ; if cc=2 : c := \MPcolor{StepColor} fi ; qq := round(uniformdeviate 1) ; if qq=0 : p := unitsquare xscaled sx yscaled sy ; else : rr := round(uniformdeviate 3) * 90 ; x1 := x3 := y1 := 0 ; x2 := y3 := sx; y2 := .5y3 ; p := (z1--z2--z3--cycle) rotated rr ; fi ; fill p shifted z0 withcolor c ; endfor ; \stopuseMPgraphic \doifnotmode{demo}{\endinput} %D The (rather silly) demo section. \starttext \TitlePage{Title Page\\pre-colorfull} \Topics{Some Nice Quotes} \Topic{A Few} \Subject{Knuth} \input knuth \Subject{Tufte} \input tufte \Topic{Some More} \Subject{Zapf} \input zapf \Subject{Bryson} \input bryson \stoptext