%D \module %D [ file=x-fig-01, %D version=2001.03.21, %D title=\CONTEXT\ Style File, %D subtitle=Figure Base Generation, %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. % \readfile {x-res-01} \donothing \donothing \endinput %D See \type {x-fig-00.tex} for more information on how to use %D and generate figure databases. This file loads the file %D named \type {\jobfilename} (\TEXEXEC\ will set this %D variable). You can apply this style to a database by %D saying: %D %D \starttyping %D texexec --pdf --use=fig-make yourfile.xml %D \stoptyping %D %D The following modes are supported: %D %D \starttabulate[|lT|l|] %D \NC letter \NC map the preview on letter size \NC \NR %D \NC compact \NC use an alternative presentation \NC \NR %D \stoptabulate %D %D The resulting file has the following characteristics: %D %D \startitemize[packed] %D \item the document is split into three sections: first each %D figure is shown at its own page, then an overview of %D figures is shown with some data alongside, and %D finally an index and table of contents shows up %D \item there is no title page, which means that one can %D access a figure by page number without offset %D \item the document is opened at the first overview page, %D that is, when the viewer supports it %D \item the graphic is shown 3~times: on a page of its own, %D scaled to a fixed dimension, and relative to a4 or %D letter paper size %D \item the labels can be accessed in an index and list at %D the end of the document %D \stopitemize %D %D We use named destinations, which means that one can %D access a figure by name from an external application. \usemodule[fig-00] \setupoutput[pdftex] \overcomePDFspacefalse \doifnothing {\jobfilename} {\end} \doiffileelse {\jobfilename.xml} {} {\end} \definesymbol [attachment] [{\bf\color[darkred]{\jobname.xml}}] \setupattachments [symbol=attachment] \useattachment [datafile] [\jobname.xml] \def\StartDescription {\bgroup \defineXMLpush[organization] \defineXMLpush[project] \defineXMLpush[product] \defineXMLpush[comment]} \def\StopDescription {\subject {Figure collection} \starttabulate[|lBe|p|] \doifXMLdataelse{organization} {\NC organization \NC \XMLpop{organization} \NC \NR}{} \doifXMLdataelse{project} {\NC project \NC \XMLpop{project} \NC \NR}{} \doifXMLdataelse{product} {\NC product \NC \XMLpop{product} \NC \NR}{} \doifXMLdataelse{comment} {\NC comment \NC \XMLpop{comment} \NC \NR}{} \NC specification \NC \attachment[datafile] \NC \NR \stoptabulate \blank[2*big] \egroup} \def\StartFigureA {\bgroup \defineXMLpush[file] \XMLassign{file}{buffer} \defineXMLpush[dummy] \defineXMLpush[label] \defineXMLpush[copyright] \defineXMLpush[comment] \defineXMLpush[status]} \defineoverlay[page][\overlaybutton{Description}] \startbuffer \framed [width=\XMLpar{dummy}{width}{12cm}, height=\XMLpar{dummy}{height}{8cm}, background=color, backgroundcolor=gray, foregroundcolor=darkred, frame=off] {\bf \XMLpop{dummy}} \stopbuffer \def\StopFigureA {\doglobal\increment\CurrentPage \setupbackgrounds[page][background=page] \doifelsenothing{\XMLpop{label}} {\expanded{\definereference[Description][about: \XMLpop{file}]}% \pagereference[\XMLpop{file}]} {\expanded{\definereference[Description][about: \XMLpop{label}]}% \pagereference[\XMLpop{label}]} \pagefigure[\XMLpop{file}] \setupbackgrounds[page][background=] \egroup} \def\StartFigureB {\StartFigureA} \defineregister [figureindex] [figureindices] \setupregister [figureindex] [ownnumber=yes, criterium=text, interaction=text, indicator=no] \definelist [figurelist] \setuplist [figurelist] [criterium=text, pagenumber=no, width=2em, interaction=all] \setupcolors [state=start] \setuptolerance [verytolerant] % Ugly: \startnotmode[previewpage-letter,previewpage-S6] \enablemode[previewpage-A4] \stopnotmode \startmode[letter] % downward compatible \enablemode[previewpage-letter] \stopmode %startbuffer[paper] \startsetups[paper] \startmode[previewpage-A4] \framed [width=210mm,height=297mm,offset=overlay,frame=off, background=color,backgroundcolor=white] {\externalfigure[\XMLpop{file}][reset=yes]} \stopmode \startmode[previewpage-letter] \framed [width=8.5in,height=11in,offset=overlay,frame=off, background=color,backgroundcolor=white] {\externalfigure[\XMLpop{file}][reset=yes]} \stopmode \startmode[previewpage-S6] \framed [width=600pt,height=450pt,offset=overlay,frame=off, background=color,backgroundcolor=white] {\externalfigure[\XMLpop{file}][reset=yes]} \stopmode \stopsetups %stopbuffer \setupbuttons [offset=10pt, width=broad, strut=no, rulethickness=1pt, framecolor=darkred] \def\StopFigureB {\par \doglobal\increment\CurrentPage \doifelsenothing{\XMLpop{label}} {\expanded{\definereference[Figure][\XMLpop{file}]}% \expanded{\definereference[GridPg][grid:\XMLpop{file}]}} {\expanded{\definereference[Figure][\XMLpop{label}]}% \expanded{\definereference[GridPg][grid:\XMLpop{label}]}}% \button % content in setup {\hbox to \hsize {\forgetall \dontcomplain \doifelsenothing{\XMLpop{label}} {\pagereference[about: \XMLpop{file}]} {\pagereference[about: \XMLpop{label}]}% % moved here, because descriptions may be absent \ifnum\CurrentPage=1 \pagereference[begin]\fi % \expanded{\writetolist[figurelist]{\CurrentPage}{\XMLpop{label}}}% \expanded{\figureindex{\CurrentPage}{\XMLpop{label}}}% \startnotmode[compact]% \vbox to 100pt {\hsize30pt \vskip5pt \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}% \vfill}% \advance\hsize by -30pt \stopnotmode \startmode[compact]% \advance\hsize by -10pt \hskip10pt \stopmode \button % \framed [width=150pt,height=100pt,offset=10pt,frame=off, background=color,backgroundcolor=white,color=] {\externalfigure [\XMLpop{file}] [maxheight=80pt,frame=off,maxwidth=130pt,factor=max]}% [GridPg]% \let\FigWid\figurenaturalwidth \let\FigHei\figurenaturalheight \advance\hsize by -150pt \hskip10pt \advance\hsize by -10pt \vbox to 100pt {\hsize40pt %\externalfigure % [paper] % [type=buffer,frame=on, % framecolor=darkred,rulethickness=.5pt, % width=40pt,object=no] \framed [offset=overlay, framecolor=darkred, rulethickness=.5pt] {\scale[width=40pt]{\setups[paper]}}% {\disableXML\getbuffer[paper]}}% \startmode[compact]% \vfill \hbox to \hsize{\hss\strut\bf\CurrentPage\hss}% \stopmode \vfill}% \advance\hsize by -40pt \hskip10pt \advance\hsize by -10pt \vbox to 100pt {\blank[disable] \starttabulate[|Bel|p|] \NC file \NC \XMLpop{file} \NC \NR \doifXMLdata{label} {\NC label \NC \XMLpop{label} \NC \NR} \NC w$\times$h \NC \FigWid$\times$\FigHei \NC \NR \doifXMLdata{copyright} {\NC copyright \NC \XMLpop{copyright} \NC \NR} \doifXMLdata{status} {\doifelse{\XMLpop{status}}{obsolete} {\NC status \NC \bf\darkred\XMLpop{status} \NC \NR} {\NC status \NC \XMLpop{status} \NC \NR}} \doifXMLdata{comment} {\NC comment \NC \XMLpop{comment} \NC \NR} \stoptabulate \vfill}}}% [Figure] \vskip10pt \egroup} \def\StartFigureC {\StartFigureA} \def\StopFigureC {\doglobal\increment\NumberOfFigures \egroup} \setuplayout [topspace=15pt,backspace=15pt, header=0pt,footer=0pt,bottom=20pt,bottomdistance=10pt, width=middle,height=fit] \setupbackgrounds [page] [background=, backgroundcolor=gray] \setupinteractionscreen [width=max, height=max] \setupcolors [state=start] \setupinteraction [style=, color=, contrastcolor=, state=start] \setuphead [section] [style=bfb] \setupbodyfont [pos] \setupinteractionmenu [bottom] [left=\hfill, middle=\hskip10pt, frame=off, style=bold, background=color, backgroundcolor=darkred, foregroundcolor=white] \startinteractionmenu[bottom] \but [begin] begin \\ \but [index] index \\ \but [list] list \\ \but [CloseDocument] close \\ \but [PreviousJump] go back \\ \stopinteractionmenu \setupinteraction [openaction=begin] \defineXMLenvironment [figurelibrary] \StartLibrary \StopLibrary \starttext \def\StartLibrary{\mainlanguage[\XMLpar{figurelibrary}{language}{en}]} \def\StopLibrary {} \defineXMLignore [description] \defineXMLenvironment [figure] \StartFigureC \StopFigureC \doglobal\newcounter\CurrentPage \processXMLfilegrouped{\jobfilename.xml} \increment\NumberOfFigures \defineXMLignore [description] \defineXMLenvironment [figure] \StartFigureA \StopFigureA \doglobal\newcounter\CurrentPage \processXMLfilegrouped{\jobfilename.xml} \setuppapersize [S6][S6] \setupbackgrounds [page] [background=color] \setupinteraction [menu=on] \defineXMLenvironment [description] \StartDescription \StopDescription \defineXMLenvironment [figure] \StartFigureB \StopFigureB \doglobal\newcounter\CurrentPage \processXMLfilegrouped{\jobfilename.xml} \page \subject [list] {List of figures} \placelist[figurelist] \page \subject [index] {Index of figures} \startcolumns \placeregister[figureindex] \stopcolumns \doifmodeelse{clipgrid-distance,clipgrid-steps}{\page}{\stoptext} \startuniqueMPgraphic{clipgrid}{dx,dy,nx,ny,type} numeric gdx, gdy, lbx, lby ; if \MPvar{type}=1 : gdx := \MPvar{dy} ; gdy := \MPvar{dx} ; else : gdx := OverlayWidth /\MPvar{nx} ; gdy := OverlayHeight/\MPvar{ny} ; fi ; lbx := gdx ; lby := gdy ; defaultfont := "\truefontname{Mono}" ; defaultscale := .5 ; numeric pen ; pen := .25pt ; def MyGrid text t = draw vlingrid (0,OverlayWidth ,gdy,OverlayWidth ,OverlayHeight) t ; draw hlingrid (0,OverlayHeight,gdx,OverlayHeight,OverlayWidth ) t ; enddef ; pickup pencircle scaled pen ; MyGrid withcolor white ; MyGrid dashed evenly scaled pen ; draw OverlayBox withcolor white ; draw OverlayBox dashed evenly scaled pen ; draw vlinlabel.bot(0,eps+OverlayWidth /lby,2,OverlayWidth ) ; draw hlinlabel.lft(0,eps+OverlayHeight/lbx,2,OverlayHeight) ; setbounds currentpicture to OverlayBox enlarged (2*EmWidth) ; \stopuniqueMPgraphic \presetMPvariable[clipgrid][dx=10pt] \presetMPvariable[clipgrid][dy=10pt] \presetMPvariable[clipgrid][nx=10] \presetMPvariable[clipgrid][ny=10] \startmode[clipgrid-distance] \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=1}] \stopmode \startmode[clipgrid-steps] \defineoverlay[grid][\uniqueMPgraphic{clipgrid}{type=2}] \stopmode \setupexternalfigures [background={color,foreground,grid}, backgroundcolor=white] \def\StartFigureD {\StartFigureA} \def\StopFigureD {\doglobal\increment\CurrentPage \setupbackgrounds[page][background=page] \startpagefigure[\XMLpop{file}][offset=20pt]% \doifelsenothing{\XMLpop{label}} {\expanded{\definereference[Description][about: \XMLpop{file}]}% \pagereference[grid:\XMLpop{file}]} {\expanded{\definereference[Description][about: \XMLpop{label}]}% \pagereference[grid:\XMLpop{label}]} \stoppagefigure %\pagefigure[\XMLpop{file}][offset=20pt] \setupbackgrounds[page][background=] \egroup} \defineXMLignore [description] \defineXMLenvironment [figure] \StartFigureD \StopFigureD \doglobal\newcounter\CurrentPage \processXMLfilegrouped{\jobfilename.xml} \page \stoptext