summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/meta-ini.tex
diff options
context:
space:
mode:
authorTaco Hoekwater <taco@elvenkind.com>2009-08-23 11:11:32 +0000
committerTaco Hoekwater <taco@elvenkind.com>2009-08-23 11:11:32 +0000
commit8fc3039c82d48605b5ca8b2eda3f4fdd755681e1 (patch)
tree3cd9bbdd599bc4d1ac0409e167fee2136e4c0ec9 /Master/texmf-dist/tex/context/base/meta-ini.tex
parent850fc99b7cd3ae7a20065531fe866ff7bae642ec (diff)
this is context 2009.08.19 17:10
git-svn-id: svn://tug.org/texlive/trunk@14827 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/meta-ini.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/meta-ini.tex1090
1 files changed, 0 insertions, 1090 deletions
diff --git a/Master/texmf-dist/tex/context/base/meta-ini.tex b/Master/texmf-dist/tex/context/base/meta-ini.tex
deleted file mode 100644
index e2f9fa1f9f7..00000000000
--- a/Master/texmf-dist/tex/context/base/meta-ini.tex
+++ /dev/null
@@ -1,1090 +0,0 @@
-%D \module
-%D [ file=meta-ini,
-%D version=1999.07.10,
-%D title=\METAPOST\ Graphics,
-%D subtitle=Initialization,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-% currently the running color influences the mp graphic in
-% pdftex, but this will change [i.e. become optional]; one
-% problem is that pdf has no grouping with regards to the
-% color
-
-\writestatus{loading}{MetaPost Graphics / Initializations}
-
-\unprotect
-
-\startmessages dutch library: metapost
- title: metapost
- 1: metapost bibliotheek -- wordt geladen
-\stopmessages
-
-\startmessages english library: metapost
- title: metapost
- 1: loading metapost library --
-\stopmessages
-
-\startmessages german library: metapost
- title: metapost
- 1: loading metapost library --
-\stopmessages
-
-\startmessages czech library: metapost
- title: metapost
- 1: loading metapost library --
-\stopmessages
-
-\startmessages italian library: metapost
- title: metapost
- 1: caricamento della libreria metapost --
-\stopmessages
-
-\startmessages norwegian library: metapost
- title: metapost
- 1: metapost bibliotek -- blir lest inn
-\stopmessages
-
-\startmessages romanian library: metapost
- title: metapost
- 1: se incarca biblioteca metapost --
-\stopmessages
-
-\startmessages french library: metapost
- title: metapost
- 1: chargement de la bibliothèque metapost --
-\stopmessages
-
-%D This module extends the functionality of the support module
-%D \type {supp-mps}, the module that is responsible for
-%D \METAPOST\ inclusion in \CONTEXT. Some basic macros will be
-%D extended. Since some support is depends on \METAPOST\
-%D macros. so let's first preload a few auxiliary \METAPOST\
-%D files.
-
-\maxnofMPgraphics = 4000 % metafun disables the 4K boundary
-
-\startMPextensions
- if unknown context_tool: input mp-tool; fi;
- if unknown context_spec: input mp-spec; fi;
- if unknown context_grph: input mp-grph; fi;
-\stopMPextensions
-
-%D Since we want lables to follow the document settings, we
-%D also set the font related variables.
-
-\startMPinitializations % scale is not yet ok
- defaultfont:="\truefontname{Regular}";
- defaultscale:=\the\bodyfontsize/10pt;
-\stopMPinitializations
-
-%D In order to support fancy text features (like outline
-%D fonts), we set:
-
-\startMPextensions
- graphictextformat:="context";
- graphictextdirective "\the\everyMPTEXgraphic";
-\stopMPextensions
-
-% \startMPextensions
-% textextdirective "\the\everyMPTEXgraphic";
-% \stopMPextensions
-
-%D A signal that we're in combines \CONTEXT||\METAFUN mode:
-
-\startMPextensions
- string contextversion;
- contextversion:="\contextversion";
-\stopMPextensions
-
-%D Some safeguards:
-%D
-%D \starttyping
-%D \appendtoks \cleanupfeatures \to \everyMPgraphic
-%D \stoptyping
-%D
-%D No, we don't want that (else we loose UTF etc).
-
-%D Another one:
-
-\prependtoks \MPstaticgraphictrue \to \everyoverlay
-\prependtoks \MPstaticgraphictrue \to \everypagebody
-
-%D We save the number of graphics for the sake of \TEXEXEC.
-
-\newcounter\totalnofMPgraphics
-
-\def\thenofMPgraphics{\the\nofMPgraphics} % from supp-mps
-
-\appendtoks
- \savecurrentvalue\totalnofMPgraphics\thenofMPgraphics
-\to \everybye
-
-%D \macros
-%D {setupMPvariables}
-%D
-%D When we build collections of \METAPOST\ graphics, like
-%D background and buttons, the need for passing settings
-%D arises. By (mis|)|using the local prefix that belongs to
-%D \type {\framed}, we get a rather natural interface to
-%D backgrounds. To prevent conflicts, we will use the \type
-%D {-} in \METAPOST\ specific variables, like:
-%D
-%D \starttyping
-%D \setupMPvariables[meta:button][size=20pt]
-%D \stoptyping
-
-\def\@@meta{meta:}
-
-\def\setupMPvariables
- {\dodoubleempty\dosetupMPvariables}
-
-\def\dosetupMPvariables[#1][#2]%
- {\ifsecondargument
- \getrawparameters[#1:][#2]% brr, todo: [\@@meta#1:]
- \else
- \getrawparameters[\@@meta][#1]%
- \fi}
-
-\let\@@framed\s!unknown
-
-% \def\MPvariable#1%
-% {\getvalue{\ifundefined{\@@framed\@@meta#1}\else\@@framed\fi\@@meta#1}}
-
-\beginTEX
-
-\def\MPvariable#1%
- {\csname
- \@EA\ifx\csname\@@framed\@@meta#1\endcsname\relax\else\@@framed\fi\@@meta#1%
- \endcsname}
-
-\endTEX
-
-\beginETEX \ifcsname
-
-\def\MPvariable#1%
- {\csname
- \ifcsname\@@framed\@@meta#1\endcsname\@@framed\fi\@@meta#1%
- \endcsname}
-
-\endETEX
-
-\let\MPvar\MPvariable
-
-\let\setMPvariables\setupMPvariables
-
-\def\MPrawvar#1#2{\csname#1:#2\endcsname}
-
-%D \macros
-%D {startuniqueMPgraphic, uniqueMPgraphic}
-%D
-%D This macros is probably of most use to myself, since I like
-%D to use graphics that adapt themselves. The next \METAPOST\
-%D kind of graphic is both unique and reused when possible.
-%D
-%D \starttyping
-%D \defineoverlay[example][\uniqueMPgraphic{test}]
-%D
-%D \startuniqueMPgraphic {test}
-%D draw unitsquare xscaled \overlaywidth yscaled \overlayheight ;
-%D \stopuniqueMPgraphic
-%D \stoptyping
-
-%D For educational purposes, we show the original version
-%D first. This one used a rather simple method for determining
-%D the uniqueness.
-%D
-%D \starttyping
-%D \long\def\startuniqueMPgraphic#1#2\stopuniqueMPgraphic%
-%D {\setvalue{\@@MPG#1}%
-%D {\startreusableMPgraphic{\overlaystamp:#1}#2\stopreusableMPgraphic
-%D \reuseMPgraphic{\overlaystamp:#1}}}
-%D
-%D \def\uniqueMPgraphic#1%
-%D {\getvalue{\@@MPG#1}}
-%D \stoptyping
-
-%\def\overlaystamp % watch the \MPcolor, since colors can be redefined
-% {\overlaywidth:\overlayheight:\overlaydepth
-% :\MPcolor{\overlaycolor}:\MPcolor{\overlaylinecolor}}
-
-\def\overlaystamp % watch the \MPcolor, since colors can be redefined
- {\overlaywidth:\overlayheight:\overlaydepth
- :\MPcolor\overlaycolor:\MPcolor\overlaylinecolor}
-
-%D A better approach is to let additional variables play a role
-%D in determining the uniqueness. In the next macro, the
-%D second, optional, argument is used to guarantee the
-%D uniqueness, as well as prepare variables for passing them to
-%D \METAPOST.
-%D
-%D \starttyping
-%D \startuniqueMPgraphic{meta:hash}{gap,angle,...}
-%D \stoptyping
-%D
-%D The calling macro also accepts a second argument. For
-%D convenient use in overlay definitions, we use \type {{}}
-%D instead of \type {[]}.
-%D
-%D \starttyping
-%D \uniqueMPgraphic{meta:hash}{gap=10pt,angle=30}
-%D \stoptyping
-
-\long\def\handleuniqueMPgraphic#1#2#3%
- {\blabelgroup
- \def\@@meta{#1:}%
- \extendMPoverlaystamp{#2}% incl prepare
- \ifundefined{\@@MPG\overlaystamp:#1}%
- \enableincludeMPgraphics
- \startMPgraphic#3\stopMPgraphic
- \doifobjectssupportedelse\donothing\useMPboxfalse
- \ifuseMPbox
- \@EA\douseMPbox
- \else
- \@EA\nouseMPbox
- \fi {\@@MPG\overlaystamp:#1}%
- \fi
- \getvalue{\@@MPG\overlaystamp:#1}%
- \elabelgroup}
-
-\long\def\startuniqueMPgraphic
- {\blabelgroup
- \dodoublegroupempty\dostartuniqueMPgraphic}
-
-\long\def\dostartuniqueMPgraphic
- {\obeyMPlines
- \dodostartuniqueMPgraphic}
-
-\long\def\dodostartuniqueMPgraphic#1#2#3\stopuniqueMPgraphic%
- {\long\setgvalue{\@@MPG#1}{\handleuniqueMPgraphic{#1}{#2}{#3}}%
- \elabelgroup}
-
-\unexpanded\def\uniqueMPgraphic
- {\dodoublegroupempty\douniqueMPgraphic}
-
-\def\douniqueMPgraphic#1#2%
- {\blabelgroup
- \setupMPvariables[#1][#2]%
- \getvalue{\@@MPG#1}{}%
- \elabelgroup}
-
-\let\stopuniqueMPcode \relax % so that we can use it in \expanded
-
-\long\def\handleuseMPgraphic#1#2#3%
- {\blabelgroup
- \def\@@meta{#1:}%
- \prepareMPvariables{#2}%
- \enableincludeMPgraphics
- \startMPgraphic#3\stopMPgraphic
- \ifMPrun \else % see mfun-004 : processing buffer
- \loadMPgraphic{\MPgraphicfile.\the\currentMPgraphic}{}%
- \placeMPgraphic
- \fi
- \deallocateMPslot\currentMPgraphic
- \elabelgroup}
-
-\long\def\startuseMPgraphic
- {\blabelgroup
- \dodoublegroupempty\dostartuseMPgraphic}
-
-\long\def\dostartuseMPgraphic
- {\obeyMPlines
- \dodostartuseMPgraphic}
-
-\long\def\dodostartuseMPgraphic#1#2#3\stopuseMPgraphic
- {\long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
- \elabelgroup}
-
-\long\def\startusableMPgraphic % redundant but handy
- {\blabelgroup
- \dodoublegroupempty\dostartusableMPgraphic}
-
-\long\def\dostartusableMPgraphic % redundant but handy
- {\obeyMPlines
- \dodostartusableMPgraphic}
-
-\long\def\dodostartusableMPgraphic#1#2#3\stopusableMPgraphic
- {\long\setgvalue{\@@MPG#1}{\handleuseMPgraphic{#1}{#2}{#3}}%
- \elabelgroup}
-
-\long\def\handlereusableMPgraphic#1#2#3%
- {\blabelgroup
- \def\@@meta{#1:}%
- \prepareMPvariables{#2}%
- \enableincludeMPgraphics
- \startMPgraphic#3\stopMPgraphic
- \doifobjectssupportedelse\donothing\useMPboxfalse
- \ifuseMPbox
- \@EA\douseMPbox
- \else
- \@EA\nouseMPbox
- \fi {\@@MPG#1}%
- \getvalue{\@@MPG#1}%
- \elabelgroup}
-
-\long\def\startreusableMPgraphic
- {\blabelgroup
- \dodoublegroupempty\dostartreusableMPgraphic}
-
-\def\dostartreusableMPgraphic
- {\obeyMPlines
- \dodostartreusableMPgraphic}
-
-\long\def\dodostartreusableMPgraphic#1#2#3\stopreusableMPgraphic
- {\long\setgvalue{\@@MPG#1}{\handlereusableMPgraphic{#1}{#2}{#3}}%
- \elabelgroup}
-
-\unexpanded\def\useMPgraphic
- {\dodoublegroupempty\douseMPgraphic}
-
-\def\douseMPgraphic#1#2%
- {\blabelgroup
- \setupMPvariables[#1][#2]%
- \getvalue{\@@MPG#1}{}%
- \elabelgroup}
-
-\let\reuseMPgraphic\useMPgraphic
-
-\let\stopuseMPcode \relax % so that we can use it in \expanded
-\let\stopusableMPcode \relax % so that we can use it in \expanded
-\let\stopreusableMPcode \relax % so that we can use it in \expanded
-\let\stopuniqueMPcode \relax % so that we can use it in \expanded
-
-\def\enableincludeMPgraphics
- {\let\handleuseMPgraphic \thirdofthreearguments
- \let\handlereusableMPgraphic\thirdofthreearguments}
-
-% todo: each code/page/buffer a var class
-
-%D \macros
-%D {startuniqueMPpagegraphic,uniqueMPpagegraphic}
-%D
-%D Experimental.
-
-\def\MPpageprefix{\doifoddpageelse oe:}
-
-\def\overlaypagestamp
- {\MPpageprefix\overlaywidth:\overlayheight:\overlaydepth
- :\MPcolor\overlaycolor:\MPcolor\overlaylinecolor}
-
-\long\def\startuniqueMPpagegraphic
- {\blabelgroup
- \dodoublegroupempty\dostartuniqueMPpagegraphic}
-
-\long\def\dostartuniqueMPpagegraphic
- {\obeyMPlines
- \dodostartuniqueMPpagegraphic}
-
-\long\def\dodostartuniqueMPpagegraphic#1#2#3\stopuniqueMPpagegraphic
- {\long\setgvalue{\@@MPG o:#1}{\handleuniqueMPgraphic{o:#1}{#2}{#3}}%
- \long\setgvalue{\@@MPG e:#1}{\handleuniqueMPgraphic{e:#1}{#2}{#3}}%
- \elabelgroup}
-
-\unexpanded\def\uniqueMPpagegraphic
- {\dodoublegroupempty\douniqueMPpagegraphic}
-
-% \def\douniqueMPpagegraphic#1#2%
-% {\blabelgroup
-% \let\overlaystamp\overlaypagestamp
-% \setupMPvariables[#1][#2]%
-% \getvalue{\@@MPG\MPpageprefix#1}{}%
-% \elabelgroup}
-
-\def\douniqueMPpagegraphic#1#2%
- {\blabelgroup
- \let\overlaystamp\overlaypagestamp
- \setupMPvariables[\MPpageprefix#1][#2]% prefix is new here
- \getvalue{\@@MPG\MPpageprefix#1}{}%
- \elabelgroup}
-
-%D One way of defining a stamp is:
-%D
-%D \starttyping
-%D \def\extendMPoverlaystamp#1%
-%D {\def\docommand##1%
-%D {\edef\overlaystamp{\overlaystamp:\MPvariable{##1}}}%
-%D \processcommalist[#1]\docommand}
-%D \stoptyping
-
-%D Since we need to feed \METAPOST\ with expanded dimensions,
-%D we introduce a dedicated expansion engine.
-
-\def\prepareMPvariable#1%
- {\ifundefined{\@@framed\@@meta#1}%
- \doprepareMPvariable{\@@meta#1}%
- \else
- \doprepareMPvariable{\@@framed\@@meta#1}%
- \fi}
-
-% \startlines
-% \def\xxx{\lineheight} \doprepareMPvariable{xxx} \xxx
-% \def\xxx{2pt} \doprepareMPvariable{xxx} \xxx
-% \def\xxx{2} \doprepareMPvariable{xxx} \xxx
-% \def\xxx{\scratchcounter} \doprepareMPvariable{xxx} \xxx
-% \def\xxx{red} \doprepareMPvariable{xxx} \xxx
-% \def\xxx{0.4} \doprepareMPvariable{xxx} \xxx
-% \stoplines
-
-\def\doprepareMPvariable#1%
- {\edef\theMPvariable{\getvalue{#1}}%
- \doifelsenothing\theMPvariable
- {\setevalue{#1}{\MPcolor{black}}}
- {\convertcommand\theMPvariable\to\ascii % otherwise problems
- \doifcolorelse \ascii % with 2\bodyfontsize
- {\setevalue{#1}{\MPcolor\theMPvariable}}
- {% can be aux macro
- \setbox\scratchbox\hbox{\scratchdimen\theMPvariable sp}%
- \ifdim\wd\scratchbox=\zeropoint
- % \scratchcounter\theMPvariable
- % \setevalue{#1}{\the\scratchcounter}%
- % also accepts 0.number :
- \setevalue{#1}{\number\theMPvariable}%
- \else
- \scratchdimen\theMPvariable
- \setevalue{#1}{\the\scratchdimen}%
- \fi}}}
-
-%D We redefine \type {\extendMPoverlaystamp} to preprocess
-%D variables using \type {\prepareMPvariable}.
-
-\def\doextendMPoverlaystamp#1%
- {\prepareMPvariable{#1}%
- \edef\overlaystamp{\overlaystamp:\MPvariable{#1}}}
-
-\def\extendMPoverlaystamp#1%
- {\processcommalist[#1]\doextendMPoverlaystamp}
-
-\def\prepareMPvariables#1%
- {\processcommalist[#1]\prepareMPvariable}
-
-%D \macros
-%D {MPdatafile}
-%D
-%D We redefine a macro from \type {supp-mps.tex}:
-
-\def\MPdatafile
- {\bufferprefix mpd-\the\currentMPgraphic.mpd}
-
-%D \macros
-%D {MPrunfile}
-%D
-%D This one is more abstract and does not assume knowledge
-%D of buffer prefixes.
-
-\def\MPrunfile#1%
- {\bufferprefix mprun.#1}
-
-%D We also have to make sure that \METAPOST\ knows this:
-
-\startMPextensions
- if not known _data_prefix_:
- string _data_prefix_,_data_suffix_;
- fi;
- _data_prefix_:="\bufferprefix mpd-";
- _data_suffix_:=".mpd";
-\stopMPextensions
-
-%D \macros
-%D {getMPdata}
-%D
-%D The current data is loaded with:
-
-\def\getMPdata
- {\startreadingfile
- \readlocfile\MPdatafile\donothing\donothing
- \stopreadingfile}
-
-%D When we collect graphics in one file, we run into
-%D troubles, since \METAPOST\ has a built in limit (of 4)
-%D on the number of files it can handle. It's therefore
-%D better to collect all data in one file and filter it.
-
-\def\getMPdata
- {\long\def\MPdata##1##2%
- {\ifnum##1=\currentMPgraphic\relax##2\fi}%
- \startreadingfile
- \readlocfile{\MPgraphicfile.mpd}\donothing\donothing
- \stopreadingfile}
-
-%D We have to enable this mechanism with:
-
-\startMPextensions
- boolean collapse_data; collapse_data:=true;
- _data_suffix_:=".mpd"; % overloads previous one
-\stopMPextensions
-
-%D For the moment, the next one is a private macro:
-
-\def\processMPbuffer
- {\dosingleempty\doprocessMPbuffer}
-
-\def\doprocessMPbuffer[#1]%
- {\doifelsenothing{#1}
- {\doprocessMPbuffer[\jobname]}
- {\bgroup
- \setnormalcatcodes
- \obeyMPlines
- %\let\par\empty % oeps, this makes dvi mode graphics hang when not found
- \!!toksa\emptytoks
- \def\copyMPbufferline{\expandafter\appendtoks\fileline\to\!!toksa}%
- \def\dodoprocessMPbuffer##1%
- {\doprocessfile\scratchread{\TEXbufferfile{##1}}\copyMPbufferline}%
- \processcommalist[#1]\dodoprocessMPbuffer
- \@EA\startMPcode\the\!!toksa\stopMPcode % more efficient
- \egroup}}
-
-\def\runMPbuffer
- {\dosingleempty\dorunMPbuffer}
-
-\def\dorunMPbuffer[#1]% processing only
- {{\MPruntrue\doprocessMPbuffer[#1]}}
-
-%D \macros
-%D {startMPenvironment, resetMPenvironment}
-%D
-%D In order to synchronize the main \TEX\ run and the runs
-%D local to \METAPOST, environments can be passed.
-
-\ifx\everyMPTEXgraphic\undefined
- \newtoks\everyMPTEXgraphic
-\fi
-
-%D A more general way of passing environments is:
-
-% ok but introduces \relax's
-%
-% \def\startMPenvironment % second arg gobbles spaces, so
-% {\dodoubleempty\dostartMPenvironment} % that reset gives \emptytoks
-%
-% \long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment%
-% {\doif{#1}\s!reset\resetMPenvironment % reset mp toks
-% \doif{#1}\v!globaal{#3}% % use in main doc too
-% \doif{#1}+{#3}% % use in main doc too
-% \convertargument#3\to\ascii
-% \expandafter\appendtoks\ascii\to\everyMPTEXgraphic}
-
-\def\startMPenvironment % second arg gobbles spaces, so that reset gives \emptytoks
- {\bgroup
- \catcode`\^^M=\@@space
- \dodoubleempty\dostartMPenvironment}
-
-\long\def\dostartMPenvironment[#1][#2]#3\stopMPenvironment
- {\egroup
- \doif{#1}\s!reset\resetMPenvironment % reset mp toks
- \doif{#1}\v!global{#3}% % use in main doc too
- \doif{#1}+{#3}% % use in main doc too
- \convertargument#3\to\ascii
- \expandafter\appendtoks\ascii\to\everyMPTEXgraphic}
-
-\def\resetMPenvironment
- {\everyMPTEXgraphic\emptytoks % = is really needed !
- \startMPenvironment
- \global\loadfontfileoncetrue
- \stopMPenvironment}
-
-\resetMPenvironment
-
-\def\useMPenvironmentbuffer[#1]%
- {\expanded{\startMPenvironment\noexpand\readfile{\TEXbufferfile{\jobname}}{}{}}\stopMPenvironment}
-
-\useMPenvironmentbuffer[mp]
-
-%D This command takes \type {[reset]} as optional
-%D argument.
-%D
-%D \starttyping
-%D \startMPenvironment
-%D \setupbodyfont[pos,14.4pt]
-%D \stopMPenvironment
-%D
-%D \startMPcode
-%D draw btex \sl Hans Hagen etex scaled 5 ;
-%D \stopMPcode
-%D \stoptyping
-%D
-%D The \type {\resetMPenvironment} is a quick way to erase
-%D the token list.
-%D
-%D You should be aware of independencies. For instance, if you use a font
-%D in a graphic that is not used in the main document, you need to load the
-%D typescript at the outer level (either directly or by using the global
-%D option).
-%D
-%D \starttyping
-%D \usetypescript[palatino][texnansi]
-%D
-%D \startMPenvironment
-%D \usetypescript[palatino][texnansi]
-%D \enableregime[utf]
-%D \setupbodyfont[palatino]
-%D \stopMPenvironment
-%D
-%D \startMPpage
-%D draw btex aap‒noot coördinatie – één etex ;
-%D \stopMPpage
-%D \stoptyping
-
-%D We don't want spurious files, do we?
-
-%\def\initializeMPgraphics
-% {%\ifx\bufferprefix\empty \else
-% \immediate\openout\MPwrite\MPgraphicfile.mp
-% \immediate\write\MPwrite{end.}%
-% \immediate\closeout\MPwrite
-% }%\fi}
-
-% strange :
-
-% \def\initializeMPgraphicfile
-% {\bgroup
-% \doinitializeMPgraphicfile
-% \MPruntrue
-% \doinitializeMPgraphicfile
-% \egroup}
-
-% \def\doinitializeMPgraphicfile
-% {\immediate\openout\scratchwrite\MPgraphicfile.mp
-% \immediate\write\scratchwrite{end.}%
-% \immediate\closeout\scratchwrite}
-
-\def\initializeMPgraphicfile
- {\immediate\openout\scratchwrite\MPgraphicfile.mp
- \immediate\write\scratchwrite{end.}%
- \immediate\closeout\scratchwrite}
-
-\def\initializeMPgraphics
- {\bgroup
- \initializeMPgraphicfile
- \ifx\bufferprefix\empty\else
- \let\bufferprefix\empty
- \initializeMPgraphicfile
- \fi
- \egroup}
-
-%D Loading specific \METAPOST\ related definitions is
-%D accomplished by:
-
-\def\douseMPlibrary#1%
- {\ifundefined{\c!file\f!javascriptprefix#1}%
- \letvalueempty{\c!file\f!javascriptprefix#1}%
- \makeshortfilename[\truefilename{\f!metapostprefix#1}]%
- \startreadingfile
- \readsysfile\shortfilename{\showmessage\m!metapost1{#1}}\donothing
- \stopreadingfile
- \fi}
-
-\def\useMPlibrary[#1]%
- {\processcommalist[#1]\douseMPlibrary}
-
-%D \macros
-%D {setMPtext, MPtext, MPstring, MPbetex}
-%D
-%D To be documented:
-%D
-%D \starttyping
-%D \setMPtext{identifier}{text}
-%D
-%D \MPtext {identifier}
-%D \MPstring{identifier}
-%D \MPbetex {identifier}
-%D \stoptyping
-
-\def\@@MPT{@MPT@}
-
-\def\forceMPTEXgraphic
- {\long\def\checkMPTEXgraphic##1{\global\MPTEXgraphictrue}}
-
-\def\setMPtext#1#2% todo : #1 must be made : safe
- {%\forceMPTEXgraphic
- \convertargument#2\to\ascii
- \dodoglobal\letvalue{\@@MPT#1}\ascii}
-
-% \def\MPtext #1{\getvalue{\@@MPT#1}}
-% \def\MPstring #1{"\getvalue{\@@MPT#1}"}
-% \def\MPbetex #1{btex \getvalue{\@@MPT#1} etex}
-
-\def\MPtext #1{\executeifdefined{\@@MPT#1}\empty}
-\def\MPstring #1{"\executeifdefined{\@@MPT#1}\empty"}
-\def\MPbetex #1{btex \executeifdefined{\@@MPT#1}\empty\space etex}
-
-%D Unfortunately \METAPOST\ does not have \CMYK\ support
-%D built in, but by means of specials we can supply the
-%D information needed to handle them naturaly.
-
-\newif\ifMPcmykcolors \MPcmykcolorstrue
-\newif\ifMPspotcolors \MPspotcolorstrue
-
-\startMPinitializations
- cmykcolors:=\ifMPcmykcolors true\else false\fi;
- spotcolors:=\ifMPspotcolors true\else false\fi;
-\stopMPinitializations
-
-%D In order to communicate conveniently with the \TEX\
-%D engine, we introduce some typesetting variables.
-
-% todo : backgroundoffsets
-
-\startMPextensions
- color OverlayColor,OverlayLineColor;
-\stopMPextensions
-
-\startMPinitializations
- OverlayWidth:=\overlaywidth;
- OverlayHeight:=\overlayheight;
- OverlayDepth:=\overlayheight;
- OverlayColor:=\MPcolor{\overlaycolor};
- OverlayLineWidth:=\overlaylinewidth;
- OverlayLineColor:=\MPcolor{\overlaylinecolor};
- %
- BaseLineSkip:=\the\baselineskip;
- LineHeight:=\the\baselineskip;
- BodyFontSize:=\the\bodyfontsize;
- %
- TopSkip:=\the\topskip;
- StrutHeight:=\strutheight;
- StrutDepth:=\strutdepth;
- %
- CurrentWidth:=\the\hsize;
- CurrentHeight:=\the\vsize;
- %
- EmWidth:=\the\emwidth;
- ExHeight:=\the\exheight;
- %
- PageNumber:=\the\pageno;
- RealPageNumber:=\the\realpageno;
- LastPageNumber:= lastpage;
-\stopMPinitializations
-
-\appendtoks
- \disablediscretionaries
- \disablecompoundcharacters
-\to\everyMPgraphic
-
-\appendtoks
- \expanded{\definecolor[currentcolor][\currentcolorname]}%
-\to \everyMPgraphic
-
-\appendtoks
- \baselineskip1\baselineskip
- \lineheight 1\lineheight
- \topskip 1\topskip
-\to \everyMPgraphic
-
-%D Alas, the prologue settings differ per driver.
-
-\ifx\undefined\MPprologues \def\MPprologues{0} \fi
-
-\startMPinitializations
- prologues:=\MPprologues;
- mpprocset:=1;
-\stopMPinitializations
-
-\appendtoks
- \def\MPprologues{0}%
- \def\MPOSTdriver{dvips}%
-\to \everyresetspecials
-
-%D \macros
-%D {PDFMPformoffset}
-%D
-%D In \PDF, forms are clipped and therefore we have to take
-%D precautions to get this right. Since this is related to
-%D objects, we use the same offset as used there.
-
-\def\PDFMPformoffset{\objectoffset}
-
-%D \macros
-%D {insertMPfile}
-%D
-%D Bypassing the special driver and figure mechanism is not
-%D that nice but saves upto 5\% time in embedding \METAPOST\
-%D graphics by using the low level \PDF\ converter directly,
-%D given of course that we use \PDFTEX. As a result we need to
-%D fool around with the object trigger.
-
-\newtoks\everyinsertMPfile
-
-%D First we present the reasonable fast alternative that we
-%D happily used for some time.
-%D
-%D \starttyping
-%D \def\insertMPfile#1#2%
-%D {\ifx\undefined\externalfigure
-%D \message{[insert file #1 here]}%
-%D \else
-%D \bgroup
-%D \the\everyinsertMPfile
-%D \externalfigure
-%D [#1]
-%D [\c!type=\c!mps,\c!object=\v!no,%
-%D \c!symbol=\v!yes,\c!reset=\v!yes,%
-%D \c!maxwidth=,\c!maxheight=,%
-%D \c!frame=\v!off,\c!background=,%
-%D #2]%
-%D \egroup
-%D \fi}
-%D \stoptyping
-%D
-%D However, on a 1 Gig Pentium, the next alternative saves
-%D us 20 seconds run time for the 300 page \METAFUN\ manual:
-
-\let\insertMPfileARG\insertMPfile
-
-\def\insertMPfile#1#2% in context #2 is empty
- {\doifelsenothing{#2}{\doinsertMPfile{#1}}{\insertMPfileARG{#1}{#2}}}
-
-\def\includeMPasEPS#1% untested !!
- {\bgroup
- \message{[MP as EPS #1]}%
- \the\everyinsertMPfile
- \dogetEPSboundingbox{#1}\!!widtha\!!heighta\!!widthb\!!heightb
- \setbox\scratchbox\vbox to \!!heightb
- {\vfill
- \let \@@DriverImageType \c!mps
- \def \@@DriverImageFile {#1}%
- \edef\@@DriverImageWidth {\the\!!widthb }%
- \edef\@@DriverImageHeight{\the\!!heightb}%
- \doinsertfile}%
- \wd\scratchbox\!!widthb
- \dp\scratchbox\zeropoint
- \box\scratchbox
- \egroup}
-
-\def\includeMPasPDF#1%
- {\bgroup
- \the\everyinsertMPfile
- \ifinobject \else \chardef\makeMPintoPDFobject\plustwo \fi % when needed
- \convertMPtoPDF{#1}{1}{1}% no \plusone !
- \egroup}
-
-%D So, using a low level approach (thereby avoiding the slower
-%D figure analysis macros) pays off. This kind of
-%D optimizations are a bit tricky since we must make sure that
-%D special resources end up in the (PDF) files. Because the
-%D \METAPOST\ to \PDF\ can handle objects itself, it is not
-%D that complicated.
-
-%D We hook a couple of initializations into the graphic
-%D macros.
-
-\appendtoks
- \let\figuretypes\c!mps
- \runutilityfilefalse
- \consultutilityfilefalse
-\to \everyinsertMPfile
-
-%D One more: (still needed?)
-
-\startMPextensions
- def initialize_form_numbers =
- do_initialize_numbers;
- enddef;
-\stopMPextensions
-
-\startMPinitializations
- HSize:=\the\hsize ;
- VSize:=\the\vsize ;
-\stopMPinitializations
-
-\startMPextensions
- vardef ForegroundBox =
- unitsquare xysized(HSize,VSize)
- enddef ;
- vardef PageFraction =
- if \lastpage>1: (\realfolio-1)/(\lastpage-1) else: 1 fi
- enddef ;
-\stopMPextensions
-
-%D And some more. These are not really needed since we
-%D don't use the normal figure inclusion macros any longer.
-
-\appendtoks
- \externalfigurepostprocessors\emptytoks % safeguard
-\to \everyinsertMPfile
-
-%D We also take care of disabling fancy figure features, that
-%D can terribly interfere when dealing with symbols,
-%D background graphics and running (postponed) graphics.
-%D You won't believe me if I tell you what funny side effects
-%D can occur. One took me over a day to uncover when
-%D processing the screen version of the \METAFUN\ manual.
-
-%D For my eyes only:
-
-\def\doifelseMPgraphic#1{\doifdefinedelse{\@@MPG#1}}
-
-%D \macros
-%D {startMPcolor}
-%D
-%D The following time consuming method uses \METAPOST\ to
-%D calculate a color. This enables a match between colors
-%D resulting from a complex calculation (e.g. for a title
-%D page) and those in the text.
-
-% \startuseMPgraphic{somecolors}
-% color c[] ; c[1] := .7[red,green] ; c[2] := .7[blue,yellow] ;
-% \stopuseMPgraphic
-
-% \startMPcolor[shade-1][t=.2,a=1]
-% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[1] ;
-% \stopMPcolor
-
-% \startMPcolor[shade-2][t=.2,a=1]
-% \includeMPgraphic{somecolors} ; fill fullcircle withcolor c[2] ;
-% \stopMPcolor
-
-% \blackrule[width=\hsize,height=4cm,color=shade-1]
-% \blackrule[width=\hsize,height=4cm,color=shade-2]
-
-\def\startMPcolor
- {\dodoubleempty\dostartMPcolor}
-
-\long\def\dostartMPcolor[#1][#2]#3\stopMPcolor % slow but sometimes handy
- {\startnointerference
- \def\handleMPgraycolor{\expanded{\defineglobalcolor[#1][s=\!MPgMPa1,#2]}}%
- \def\handleMPrgbcolor {\expanded{\defineglobalcolor[#1][r=\!MPgMPa1,g=\!MPgMPa2,b=\!MPgMPa3,#2]}}%
- \def\handleMPcmykcolor{\expanded{\defineglobalcolor[#1][c=\!MPgMPa1,m=\!MPgMPa2,y=\!MPgMPa3,k=\!MPgMPa4,#2]}}%
- \startMPcode#3\stopMPcode
- \stopnointerference}
-
-%D New:
-
-\definelayerpreset % no dx,dy - else nasty non-mp placement
- [mp]
- [\c!y=-\MPury bp,
- \c!x=\MPllx bp,
- \c!method=\v!fit]
-
-\definelayer
- [mp]
- [\c!preset=mp]
-
-%D Usage:
-%D
-%D \starttyping
-%D \defineproperty[one][layer][state=start]
-%D \defineproperty[two][layer][state=stop]
-%D
-%D \startuseMPgraphic{step-1}
-%D fill fullcircle scaled 10cm withcolor red ;
-%D \stopuseMPgraphic
-%D
-%D \startuseMPgraphic{step-2}
-%D fill fullcircle scaled 5cm withcolor green ;
-%D \stopuseMPgraphic
-%D
-%D \setlayer[mp]{\property[one]{\useMPgraphic{step-1}}}
-%D \setlayer[mp]{\property[two]{\useMPgraphic{step-2}}}
-%D
-%D \ruledhbox{\flushlayer[mp]}
-%D \stoptyping
-%D
-%D Reusing graphics is also possible (now):
-%D
-%D \starttyping
-%D \startreusableMPgraphic{axis}
-%D tickstep := 1cm ; ticklength := 2mm ;
-%D drawticks unitsquare xscaled 4cm yscaled 3cm shifted (-1cm,-1cm) ;
-%D tickstep := tickstep/2 ; ticklength := ticklength/2 ;
-%D drawticks unitsquare xscaled 4cm yscaled 3cm shifted (-1cm,-1cm) ;
-%D \stopreusableMPgraphic
-%D
-%D \startuseMPgraphic{demo}
-%D drawpoint "1cm,1.5cm" ;
-%D \stopuseMPgraphic
-%D
-%D \definelayer[mp][preset=mp]
-%D \setlayer[mp]{\reuseMPgraphic{axis}}
-%D \setlayer[mp]{\useMPgraphic{demo}}
-%D \ruledhbox{\flushlayer[mp]}
-%D \stoptyping
-
-%D \macros
-%D {startstaticMPfigure,useMPstaticfigure}
-%D
-%D Static figures are processed only when there has been
-%D something changed. Here is Aditya Mahajan's testcase:
-%D
-%D \startbuffer
-%D \startstaticMPfigure{circle}
-%D fill fullcircle scaled 1cm withcolor blue;
-%D \stopstaticMPfigure
-%D
-%D \startstaticMPfigure{axis}
-%D drawarrow (0,0)--(2cm,0) ;
-%D drawarrow (0,0)--(0,2cm) ;
-%D label.llft(textext("(0,0)") ,origin) ;
-%D \stopstaticMPfigure
-%D \stopbuffer
-%D
-%D \typebuffer \getbuffer
-
-\def\usestaticMPfigure[#1]%
- {\dodoubleempty\externalfigure[\jobname-#1.pdf]}
-
-\def\startstaticMPfigure
- {\begingroup
- \obeyMPlines
- \dostartstaticMPfigure}
-
-\def\dostartstaticMPfigure#1#2\stopstaticMPfigure
- {\startstaticMPgraphic{\jobname-#1}#2\stopstaticMPgraphic
- \endgroup}
-
-% faster, but more tricky
-%
-% \def\startstaticMPfigure
-% {\doifmodeelse{*\v!first}
-% {\begingroup
-% \obeyMPlines
-% \dostartstaticMPfigure}
-% {\gobbleuntil\stopstaticMPfigure}}
-%
-% \def\dostartstaticMPfigure#1#2\stopstaticMPfigure
-% {\startMPstaticgraphic{\jobname-#1}#2\stopMPstaticgraphic
-% % dirty trick, don't register, so no second main run of texexec:
-% \global\advance\nofMPgraphics \minusone
-% \endgroup}}
-
-%D New:
-
-% \appendtoks \closeMPgraphicfiles \to \everystoptext
-
-%D New:
-
-\newconditional\manyMPspecials % when set to true, > 1000 specials can be used
-
-\settrue \manyMPspecials % per 1/4/2006
-
-\prependtoks
- _special_div_ := 1000\ifconditional\manyMPspecials0\fi ;
-\to \MPextensions
-
-%D Needed (will become default):
-
-\prependtoks
- \resetlanguagespecifics
-\to \everyMPgraphic
-
-% Done.
-
-\protect \endinput
-
-%D Experimental:
-
-\appendtoks
- \ifrunMPgraphics \ifcase\systemcommandmode \or
- \runMPgraphicsfalse
- \fi \fi
-\to \everyjob
-
-% also:
-%
-% linecap := rounded ;
-% linejoin := rounded ;
-% drawoptions () ;