summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/page-mak.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/page-mak.mkvi')
-rw-r--r--Master/texmf-dist/tex/context/base/page-mak.mkvi210
1 files changed, 210 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/page-mak.mkvi b/Master/texmf-dist/tex/context/base/page-mak.mkvi
new file mode 100644
index 00000000000..f37c4f6135a
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/page-mak.mkvi
@@ -0,0 +1,210 @@
+%D \module
+%D [ file=page-mak, % copied from main-001,
+%D version=1997.03.31,
+%D title=\CONTEXT\ Page Macros,
+%D subtitle=Simple MakeUp,
+%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 / MakeUp}
+
+\unprotect
+
+%D \macros
+%D {definemakeup, setupmakeup, startmakeup}
+%D
+%D A makeup is a separate page, like a title page or colofon.
+%D There is one standard makeup page, but you can define more
+%D if needed.
+%D
+%D \starttyping
+%D \startstandardmakeup
+%D My Fancy Title
+%D \stopstandardmakeup
+%D \stoptyping
+%D
+%D The associated commands are:
+%D
+%D \showsetup{definemakeup}
+%D \showsetup{setupmakeup}
+%D \showsetup{startmakeup}
+
+%D New is that we have a layout with the same name so one can set
+%D up a special layout tthat then gets used.
+
+\installcorenamespace{makeup}
+\installcorenamespace{makeupdoublesided}
+
+\installcommandhandler \??makeup {makeup} \??makeup
+
+\appendtoks
+ \setuevalue{\e!start\currentmakeup\e!makeup}{\startmakeup[\currentmakeup]}%
+ \setuevalue{\e!stop \currentmakeup\e!makeup}{\stopmakeup}%
+ \doiflayoutdefinedelse\currentmakeup\donothing{\definelayout[\currentmakeup]}% new
+\to \everydefinemakeup
+
+%D The \type{\start}||\type{\stop} macros are used for both
+%D the direct and indirect way. The parameterless call will
+%D build a simple box.
+
+\unexpanded\def\startmakeup
+ {\dodoubleempty\page_makeup_start}
+
+\let\stopmakeup\relax
+
+\def\page_makeup_start
+ {\iffirstargument
+ \expandafter\page_makeup_start_yes
+ \else
+ \expandafter\page_makeup_start_nop
+ \fi}
+
+%D The simple case: just a box with text dimensions.
+
+\unexpanded\def\page_makeup_start_nop[#name][#settings]% dummies
+ {\page
+ \setupheader[\c!state=\v!empty]%
+ \setupfooter[\c!state=\v!empty]%
+ \bgroup
+ \forgetall % else indented flush
+ \dontcomplain
+ \vbox to \textheight \bgroup
+ \setsystemmode\v!makeup
+ \hsize\textwidth
+ \let\stopmakeup\page_makeup_stop_nop}
+
+\unexpanded\def\page_makeup_stop_nop
+ {\egroup
+ \egroup
+ \page}
+
+%D The normal variant.
+
+\newbox \b_page_makeup
+\newtoks\t_page_makeup_every_setup
+
+\def\page_makeup_start_yes[#name][#settings]%
+ {\doifelsenothing{\namedmakeupparameter{#name}\c!page}
+ {\page}% new, so best not have dangling mess here like references (we could capture then and flush embedded)
+ {\page[\namedmakeupparameter{#name}\c!page]}%
+ \startlayout[#name]% includes \page
+ \bgroup
+ \edef\currentmakeup{#name}%
+ \setupcurrentmakeup[#settings]%
+ \setsystemmode\v!makeup
+ \the\t_page_makeup_every_setup
+ \makeupparameter\c!commands % hm, what is this one doing here ?
+ \forgetall % else indented flush
+ \dontcomplain
+ \global\setbox\b_page_makeup\vbox to \makeupparameter\c!height \bgroup
+ \usemakeupstyleandcolor\c!style\c!color
+ \hsize\makeupparameter\c!width
+ \setupalign[\makeupparameter\c!align]%
+ \doprocesslocalsetups{\makeupparameter\c!setups}% lua(..),xml(...,..),tex(..)
+ \makeupparameter\c!top
+ \let\stopmakeup\page_makeup_stop_yes}
+
+\unexpanded\def\page_makeup_stop_yes
+ {\endgraf
+ \makeupparameter\c!bottom
+ \egroup
+ \pushpagestate % new
+ \makeupparameter\c!before
+ \relax % to be sure we don't enter the \if
+ \ifdim\ht\b_page_makeup>\vsize
+ \ht\b_page_makeup\vsize % is already set to \textheight (maybe set dp to 0)
+ \fi
+ \setuppagenumber[\c!state=\makeupparameter\c!pagestate]%
+ \box\b_page_makeup
+ \the\t_page_makeup_every_setup
+ \page
+ \makeupparameter\c!after
+ \relax % to be sure we don't enter the \if
+ \ifdoublesided \ifodd\realpageno \else
+ \getvalue{\??makeupdoublesided\makeupparameter\c!doublesided}%
+ \fi \fi
+ \poppagestate % new
+ \egroup
+ \stoplayout} % includes \page
+
+\setvalue{\??makeupdoublesided\v!yes}%
+ {\emptyhbox
+ \page}
+
+\setvalue{\??makeupdoublesided\v!empty}%
+ {\the\t_page_makeup_every_setup
+ % == \page[\v!dummy]
+ \page[\v!blank]%
+ \emptyhbox
+ \page}
+
+%D The text surrounding the main body text can be influenced
+%D by setting their associated status variables. The
+%D connection between them is made by the following macro
+
+\appendtoks % this might need a revision
+ \setupfooter[\c!state=\makeupparameter\c!footerstate]%
+ \setupheader[\c!state=\makeupparameter\c!headerstate]%
+ \setuptext [\c!state=\makeupparameter\c!textstate]%
+ \setupbottom[\c!state=\makeupparameter\c!bottomstate]%
+ \setuptop [\c!state=\makeupparameter\c!topstate]%
+\to \t_page_makeup_every_setup
+
+%D The standard page template is defined as follows:
+
+\setupmakeup
+ [\c!width=\innermakeupwidth, % example in manual / was \makeupwidth
+ \c!height=\textheight, % example in manual
+ %\c!commands=,
+ %\c!setups=,
+ %\c!color=,
+ %\c!align=,
+ %\c!before=,
+ %\c!after=,
+ \c!page=\v!right,
+ \c!doublesided=\v!empty,
+ \c!top=\vss,
+ \c!bottom=\vss,
+ \c!bottomstate=\v!normal,
+ \c!topstate=\v!normal,
+ \c!textstate=\v!normal,
+ \c!headerstate=\v!stop,
+ \c!footerstate=\v!stop,
+ \c!pagestate=\v!stop] % in manual ! ! !
+
+\definemakeup
+ [\v!standard]
+ [\c!width=\innermakeupwidth,
+ \c!height=\textheight,
+ \c!page=\v!right,
+ \c!doublesided=\v!empty]
+
+\definemakeup
+ [\v!text]
+ [\c!topstate=\v!start,
+ \c!headerstate=\v!start,
+ \c!textstate=\v!start,
+ \c!footerstate=\v!start,
+ \c!bottomstate=\v!start,
+ \c!doublesided=\v!no,
+ \c!page=\v!yes,
+ \c!top=\pseudostrut\ignorespaces,
+ \c!bottom=\obeydepth\vss]
+
+\definemakeup
+ [\v!page]
+ []
+
+\definemakeup
+ [\v!middle]
+ [\v!standard]
+
+% \definelayout[standard]
+% \definelayout[text]
+
+\protect