diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkxl/page-app.mkxl')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkxl/page-app.mkxl | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkxl/page-app.mkxl b/Master/texmf-dist/tex/context/base/mkxl/page-app.mkxl new file mode 100644 index 00000000000..d75366cca0d --- /dev/null +++ b/Master/texmf-dist/tex/context/base/mkxl/page-app.mkxl @@ -0,0 +1,205 @@ +%D \module +%D [ file=page-app, % from meta-fig +%D version=1998.01.15, +%D title=\CONTEXT\ Page Macros, +%D subtitle=Independent page building, +%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. + +\writestatus{loading}{ConTeXt Page Macros / Applications} + +%D This needs an update with a proper define and inheritance. + +\unprotect + +\installcorenamespace{fittingpage} + +\installframedcommandhandler \??fittingpage {fittingpage} \??fittingpage + +\newdimen\d_page_fitting_width +\newdimen\d_page_fitting_height +\newbox \b_page_fitting + +\definepapersize + [fittingpage] + [\c!width=\d_page_fitting_width, + \c!height=\d_page_fitting_height] + +\definemakeup + [fittingpage] + [\c!textstate=\v!empty, + \c!doublesided=\v!no, + \c!location=\v!top, % no topskip + \c!pagestate=\fittingpageparameter\c!pagestate]% + +\definelayout + [fittingpage] + [\v!page] + [\c!width=\d_page_fitting_width, + \c!height=\d_page_fitting_height, + \c!location=\v!middle] + +\appendtoks + \frozen\instance\protected\edefcsname\e!start\currentfittingpage\endcsname{\startfittingpage[\currentfittingpage]}% + \frozen\instance\protected\edefcsname\e!stop \currentfittingpage\endcsname{\stopfittingpage}% +\to \everydefinefittingpage + +\permanent\tolerant\protected\def\startfittingpage[#1]#*[#2]% + {\page % this is kind of tricky! there can be preceding page refs + \autostarttext + \bgroup % resulting in a zero height page; test fig-make ! + \setupinterlinespace[\v!top=0]% no topskip + \def\currentfittingpage{#1}% + \dontcomplain + % runs under current page regime, i.e. page variables passed to mp + \setupcurrentfittingpage[\c!paper=,#2]% auto or size or nothing + \doifelsenothing{\fittingpageparameter\c!command} + \page_fitting_start_normal + \page_fitting_start_command} + +\def\page_fitting_start_command + {\grabuntil{\e!stop\currentfittingpage}\page_fitting_stop_command} + +\def\page_fitting_stop_command#1% + {\page_fitting_start_normal + \fittingpageparameter\c!command{#1}% + \page_fitting_stop_normal} + +\def\page_fitting_start_normal + {\setbox\b_page_fitting\hbox + \bgroup + \inheritedfittingpageframed + \bgroup + \gobblespacetokens} + +\protected\def\page_fitting_stop_normal % todo: figure out why a small mp image gets shifted + {\removeunwantedspaces + \egroup + \egroup + % finalize + \doif{\fittingpageparameter\c!margin}\v!page + {\setbox\b_page_fitting\hpack\bgroup + \offsetbox + [\c!leftoffset=\backspace, + \c!rightoffset=\cutspace, + \c!topoffset=\topspace, + \c!bottomoffset=\bottomspace] + {\box\b_page_fitting}% + \egroup}% + \doifsomething{\fittingpageparameter\c!scale} + {\setbox\b_page_fitting\hpack\bgroup + \scale[\c!scale=\fittingpageparameter\c!scale]{\box\b_page_fitting}% + \egroup}% + \ifdim\ht\b_page_fitting=\zeropoint + \ht\b_page_fitting\onepoint + \fi + \ifdim\wd\b_page_fitting=\zeropoint + \wd\b_page_fitting\onepoint + \fi + \d_page_fitting_width \wd\b_page_fitting + \d_page_fitting_height\ht\b_page_fitting + \startlocallayout % hm, we change the papersize so we still need it + \enforced\let\checkcurrentlayout\relax % else interference with odd/even layout + \processaction + [\fittingpageparameter\c!paper] + [ \v!auto=>\let\scratchstringone\printpapersize, + \s!unknown=>\let\scratchstringone\commalistelement, + \s!default=>\def\scratchstringone{fittingpage}]% + \normalexpanded{\setuppapersize[fittingpage][\scratchstringone]}% + \startmakeup[fittingpage]% + \box\b_page_fitting + \stopmakeup + \stoplocallayout % we need to get rid of this and use the built-in + \egroup + \autostoptext} + +\permanent\let\stopfittingpage\page_fitting_stop_normal + +\setupfittingpage + [%\c!scale=1000, + %\c!pagestate=, + \c!strut=\v!no, + \c!align=\v!normal, + \c!offset=\v!overlay, + \c!width=\v!fit, + \c!height=\v!fit, + \c!frame=\v!off] + +%D \TEX\ pages (for \METAPOST\ pages, see \type {meta-fig}): + +%D \starttyping +%D \startTEXpage[align=normal,width=900pt,autowidth=force] +%D \framed[width=800pt,frame=off]{\number\dimexpr800pt}\par +%D \input tufte\par +%D \stopTEXpage +%D \stoptyping +%D +%D Beware: the width is the textwidth! + +\definefittingpage + [TEXpage] + [\c!align=\v!normal] % needed, else problems ! + +\permanent\protected\def\setupTEXpage + {\setupfittingpage[TEXpage]} + +%D For Mojca: +%D +%D \starttyping +%D \startTEXstream \chapter{Bla} Hello world!\crlf Hello world! \stopTEXstream +%D \startTEXpage \chapter{Bla} Hello world!\crlf Hello world! \stopTEXpage +%D \stoptyping +%D +%D maybe I should support stream=yes in framed. + +\permanent\tolerant\protected\def\startTEXstream[#1]% old code, to be redone + {\page + \enableoutputstream[tex]} + +\permanent\protected\def\stopTEXstream + {\disableoutputstream + \startTEXpage % [\c!align=\v!normal] + \outputstreamunvbox[tex]% + \stopTEXpage} + +%D Application pages, a quick \MKIV\ hack: + +\definetypesetting[TEXapplication] +\definebuffer[TEXapplication] + +% we could use a counter and saves runs on numbering them. + +\permanent\def\TEXapplicationfilename{\jobname-texapplication.tex} + +\permanent\protected\def\stopTEXapplication + {\savebuffer[\thedefinedbuffer{TEXapplication}][\TEXapplicationfilename]% + \typesetfile[TEXapplication][\TEXapplicationfilename]\relax} + +%D \macros +%D {startpagefigure} +%D +%D \starttyping +%D \starttext \pagefigure[two.1] \stoptext +%D \stoptyping + +\defineexternalfigure[\v!page:\v!figure][\c!offset=\v!overlay] % we force a parent + +\permanent\tolerant\protected\def\startpagefigure[#1]#*[#2]% + {\bgroup + \setupexternalfigure[\v!page:\v!figure][\c!offset=\v!overlay,#2]% + \startTEXpage[\c!offset=\namedexternalfigureparameter{\v!page:\v!figure}\c!offset,\c!align=\v!normal]% + \externalfigure[#1]\ignorespaces} % so we can put some text below the graphic + +\permanent\protected\def\stoppagefigure + {\stopTEXpage + \egroup} + +\permanent\tolerant\protected\def\pagefigure[#1]#*[#2]% + {\startpagefigure[#1][#2]\stoppagefigure} + +\protect \endinput |