%% %% This is file `mfpic.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% mfpic.dtx (with options: `tex') %% %% ------------------------------------------------------------------- %% %% Copyright 2002--2009, Daniel H. Luecking %% %% Mfpic may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at %% your option) any later version. The latest version of this license is in %% %% and version 1.3c or later is part of all distributions of LaTeX version %% 2008/12/01 or later. %% %% Mfpic has maintenance status "author-maintained". The Current Maintainer %% is Daniel H. Luecking. There are several Base Interpreters associated %% with mfpic: plain TeX, LaTeX, plain Metafont and plain MetaPost. %% %%% File: mfpic.dtx %%% A part of mfpic 1.04 2010/03/30 %%% \ifx\mfpfileversion\UndEfInEd\else\expandafter\endinput\fi% {% \catcode\lq\.12 \catcode\lq\/12% \gdef\mfpfileversion{1.04}% \gdef\mfpfiledate{2010/03/30}% \gdef\mfpicversion{104}% }% \let\mfpsaveplus\+% \let\+\tabalign% {% \catcode61\space12\relax% 61=equal sign \catcode32=10\relax% 32=space \catcode13=5 % 13=EOL \catcode96=12 % 96=left quote \catcode`\@=11 \gdef\MFPsavecodes{% \edef\mfp@restoreNLchar{\newlinechar\number\newlinechar\relax}% \edef\mfp@restoreELchar{\endlinechar\number\endlinechar\relax}% \edef\mfp@restoreSP{\catcode32=\number\catcode32\relax}% \edef\mfp@restoreEOL{\catcode13=\number\catcode13\relax}% \edef\mfp@restoreALL{\mfp@restorecode{=}\mfp@restorecode{@}% \mfp@restorecode{$}\mfp@restorecode{:}\mfp@restorecode{;}% \mfp@restorecode{.}\mfp@restorecode{,}\mfp@restorecode{!}% \mfp@restorecode{?}\mfp@restorecode{(}\mfp@restorecode{)}% \mfp@restorecode{[}\mfp@restorecode{]}\mfp@restorecode{<}% \mfp@restorecode{>}\mfp@restorecode{*}\mfp@restorecode{/}% \mfp@restorecode{+}\mfp@restorecode{-}\mfp@restorecode{"}% \mfp@restorecode{'}\mfp@restorecode{_}\mfp@restorecode{`}% \mfp@restoreEOL\mfp@restoreSP\catcode10=\number\catcode10 \mfp@restoreNLchar\mfp@restoreELchar}}% \gdef\mfp@restorecode#1{\catcode`\string#1=\number\catcode`#1\relax}% \ifx\@makeother\UndEfInEd \gdef\@makeother#1{\catcode`#1=12\relax}\fi \gdef\MFPsanitize{\endlinechar13 \newlinechar10 \catcode10=12 \catcode13=5 \catcode`\$=3 \catcode`\ =10 \@makeother\:\@makeother\;\@makeother\.\@makeother\,% \@makeother\!\@makeother\?\@makeother\(\@makeother\)% \@makeother\[\@makeother\]\@makeother\>\@makeother\<% \@makeother\/\@makeother\*\@makeother\+\@makeother\-% \@makeother\'\@makeother\"\@makeother\_\@makeother\`% \@makeother\=\@makeother\@}% }% \MFPsavecodes\MFPsanitize \catcode`@11 \chardef\mfp@ctrlJ 10 \chardef\mfp@ctrlM 13 \newif\ifmfpicdebug \ifx\mfpicdebug\UndEfInEd \mfpicdebugfalse \else \mfpicdebugtrue \fi \def\mfp@DBlog#1{% \ifmfpicdebug{\let\@msgbreak\mfp@errbrk\wlog{Mfpic debug: #1}}\fi}% \def\mfp@msg#1{% {\newlinechar\mfp@ctrlJ\def\@nl{^^J}\immediate\write16{#1}}}% \def\mfp@spaces{\space\space\space\space\space\space}% \def\mfp@msgbrk{^^J\mfp@spaces\space}% \def\mfp@errbrk{\mfp@msgbrk\mfp@spaces}% \def\mfp@warnbrk{\mfp@errbrk\space\space}% \def\Mfpic@msg#1{{\let\@msgbreak\mfp@msgbrk\mfp@msg{Mfpic: #1}}}% \def\Mfpic@warn#1{% {\let\@msgbreak\mfp@warnbrk\mfp@msg{\@nl Mfpic warning: #1}}}% \def\mfp@errmsg#1#2{{\newlinechar\mfp@ctrlJ\let\@msgbreak\mfp@errbrk \errhelp{#2}\errmessage{Mfpic error: #1}}}% \def\mfp@lineno{line \number\inputlineno\space in the TeX source}% \let\@xp\expandafter \def\@XP{\@xp\@xp\@xp}% \long\def\@firstoftwo#1#2{#1}% \long\def\@secondoftwo#1#2{#2}% \def\mfp@ifdefined#1{% \ifx#1\UndEfInEd \@xp\@secondoftwo \else\ifx#1\relax \@XP\@secondoftwo \else \@XP\@firstoftwo \fi\fi}% \mfp@ifdefined\@empty{}{\def\@empty{}}% \mfp@ifdefined\@gobble{}{\def\@gobble#1{}}% \mfp@ifdefined\@firstofone{}{\long\def\@firstofone#1{#1}}% \mfp@ifdefined\on@line{}% {\def\on@line{ on input line \number\inputlineno}}% \let\mfp@enddef\@empty \long\def\mfp@gobbledef#1\mfp@enddef{}% \def\mfp@ifundefined#1{\mfp@ifdefined#1\mfp@gobbledef\@empty}% \mfp@ifundefined\@ifundefined \def\@ifundefined#1{% \@xp\ifx\csname #1\endcsname\relax \@xp\@firstoftwo \else \@xp\@secondoftwo \fi}% \mfp@enddef \mfp@ifdefined\g@addto@macro{}{% \long\def\g@addto@macro#1#2{% \begingroup \toks@\@xp{#1#2}% \xdef#1{\the\toks@}% \endgroup}}% \mfp@ifdefined\g@prependto@macro{}{% \long\def\g@prependto@macro#1#2{% \begingroup \toks@{#2}\toks2\@xp{#1}% \xdef#1{\the\toks@\the\toks2}% \endgroup}}% \newif\ifmfp@latex \mfp@latexfalse \mfp@ifdefined\documentstyle {\ifx \amstexloaded@\relax \mfp@DBlog{AmS-TeX detected.}% \else \mfp@DBlog{LaTeX detected.}\mfp@latextrue \fi}% {\mfp@DBlog{Neither LaTeX nor AmS-TeX detected.}}% \newif\ifmfp@latexe \mfp@latexefalse \mfp@ifdefined\documentclass {\mfp@latexetrue \mfp@DBlog{LaTeX2e detected.}}% {\mfp@DBlog{Not LaTeX2e.}}% \newif\ifmfp@pdf \mfp@pdffalse \mfp@ifdefined\pdfoutput {\mfp@DBlog{PdfTeX detected...}% \ifnum\pdfoutput<1 \mfp@DBlog{...with dvi output.}% \else \mfp@pdftrue \mfp@DBlog{...with PDF output.}% \fi}% {\mfp@DBlog{Not pdfTeX.}}% \ifmfp@latex \else \let\@@par\endgraf \fi \def\mfp@restorepar{\let\par\@@par}% \mfp@ifdefined\@namedef{}% {\def\@namedef#1{\@xp\def\csname #1\endcsname}}% \mfp@ifdefined\@namelet{}% {\def\@namelet#1{\@xp\let\csname #1\endcsname}}% \mfp@ifdefined\@nameuse{}% {\def\@nameuse#1{\csname #1\endcsname}}% \mfp@ifundefined\@bsphack \@nameuse{newskip}\@savsk \@nameuse{newcount}\@savsf \def\@bsphack{\relax \ifhmode \@savsk\lastskip \@savsf\spacefactor \fi}% \def\@esphack{\relax \ifhmode \spacefactor\@savsf \ifdim\@savsk>\z@ \ignorespaces \fi\fi}% \mfp@enddef \mfp@DBlog{Defining test for previous definitions of macros.}% \def\mfp@testdef#1{% \ifx#1\UndEfInEd \else\ifx#1\relax \Mfpic@warn{\string#1 was previouly defined to be \string\relax.}% \else \Mfpic@warn{\string#1 is already defined.}% \fi\fi}% \mfp@testdef\newdef \def\newdef#1{\mfp@testdef#1\def#1}% \newdef\newlet#1{\mfp@testdef#1\let#1}% \newdef\mfp@useMP@error{% \mfp@errmsg {Command \mfp@b usemetapost too late}% {It is too late to select the metapost option.^^J% It must be selected before the \opengraphsfile command.^^J% If you proceed, the metafont option will be assumed.}}% \def\mfp@nooutput@error#1{% \mfp@errmsg {No output file has been opened}% {You have tried to used a command, #1, that requires an output^^J% file to be opened with the \opengraphsfile command, which^^J% was either not issued or was not successful.}}% \newdef\mfp@noMP@error#1{% \mfp@errmsg {Metafont does not support #1, use MetaPost}% {Metafont doesn't support #1. Perhaps you forgot to turn on^^J% MetaPost support by using the metapost option or issuing the^^J% command \usemetapost. For now, I will ignore it.}}% \newdef\mfp@noMF@warn#1{% \Mfpic@warn {Metapost does not support \string#1, it will be ignored.}}% \def\mfp@afteropen@error#1{% \mfp@errmsg{Improper use of command \string#1\on@line}% {You must issue the command #1 prior to \opengraphsfile. It will be ignored now.}}% \newdef\mfp@end{% \mfp@errmsg {Unexpected token \string\mfp@end}% {If you get this message but did not misuse the command^^J% \mfp@end, it could mean you have unbalanced braces.}}% \newdef\mfp@nofile@error#1{% \mfp@errmsg{No data file: #1}% {The data file you tried to plot was not found.}}% \newdef\mfp@nodata@error#1{% \mfp@errmsg{Empty data file: #1}% {The data file contained only empty lines and comments.}}% \newdef\mfp@justify@error{% \mfp@errmsg{Invalid justification parameter for text label}% {The optional argument for an mfpic text label must be^^J% one of B, b, c or t, followed by^^J one of l, r or c, optionally followed by an angle.}}% \newdef\mfp@untilwarn{% \Mfpic@warn{\mfp@b mfploop without \string\mfpuntil!}}% \newlet\ifmfpmpost\iffalse \newdef\mfp@mposttrue {\global\let\ifmfpmpost\iftrue}% \newdef\mfp@mpostfalse{\global\let\ifmfpmpost\iffalse}% \newdef\mfp@ifmpost{% \ifmfpmpost\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}% \newdef\usemetafont{\mfp@mpostfalse \nomplabels \def\preparemfpicgraphic##1{}% \def\setmfpicgraphic##1{\mfp@graphfont\char\mfp@count}% \def\getmfpicoffset##1{\gdef\mfpicllx{0}\gdef\mfpiclly{0}}}% \newdef\mfp@ifopengraphsfile{\mfp@ifdefined\mfp@filename}% \newdef\mfmode#1{\edef\mfp@mode{#1}% \mfp@ifopengraphsfile% {\mfp@afteropen@error\mfmode}% {\mfp@ifmpost{\mfp@noMF@warn\mfmode}{}}}% \newdef\mfresolution#1{\edef\mfp@resolution{#1}% \mfp@ifopengraphsfile% {\mfp@afteropen@error\mfresolution}% {\mfp@ifmpost{\mfp@noMF@warn\mfresolution}{}}}% \newdef\setmfvariable#1{% \MFP@sp@def\mfp@tempa{#1}\@setmfvariable\mfp@tempa}% \newdef\@setmfvariable#1#2#3{% \mfp@ifopengraphsfile% {\mfcmd{set#1 (#2) #3}}% {\mfp@nooutput@error\setmfvariable}}% \newdef\setmfboolean{\@setmfvariable{boolean}}% \newdef\setmfnumeric{\@setmfvariable{numeric}}% \newdef\setmfpair {\@setmfvariable{pair}}% \newdef\setmfcolor {\@setmfvariable{color}}% \newdef\globalsetmfvariable#1#2#3{% \MFP@sp@def\mfp@tempa{#1}% \mfp@ifopengraphsfile {\mfcmd{\ifx\mfp@tempa\mfp@C gsetcolor \else gsetvariable (#1) \fi (#2) #3}}% {\mfp@nooutput@error\globalsetmfvariable}}% \newlet\setmpvariable\setmfvariable \newlet\globalsetmpvariable\globalsetmfvariable \newlet\ifin@mfpicenv\iffalse \newdef\mfp@local{\relax\ifin@mfpicenv\else\global\fi}% \newdef\mfp@let{\mfp@local\let}% \newdef\mfp@def{\mfp@local\def}% \newdef\mfp@T{true}% \newdef\mfp@F{false}% \newdef\mfp@C{color}% \newdef\usecenteredcaptions{\mfp@let\ifmfp@centcapt\iftrue}% \newdef\nocenteredcaptions {\mfp@let\ifmfp@centcapt\iffalse}% \nocenteredcaptions \newdef\useraggedcaptions{\mfp@let\mfp@capsettings\mfp@raggedcap}% \newdef\noraggedcaptions{\mfp@let\mfp@capsettings\mfp@justifiedcap}% \newdef\mfp@raggedcap{% \ifmfp@latex \ifmfp@centcapt \centering \else \raggedright \fi \else \rightskip 0pt plus 1fil \ifmfp@centcapt \leftskip 0pt plus 1fil \parfillskip 0pt plus 1fil\relax \fi \def\\{\unskip\hbox{}\penalty-\@M\ignorespaces}% \fi}% \def\mfp@justifiedcap{% \ifmfp@centcapt \leftskip 0pt plus 0.5fil \rightskip 0pt plus -0.5fil \parfillskip 0pt plus 1fil\relax \fi \def\\{\unskip\hbox{}\hfil\penalty-\@M\ignorespaces}}% \noraggedcaptions \newdef\mfp@makeoption#1#2#3#4{% \newdef#1{\mfp@let#4\iftrue \mfp@ifopengraphsfile{\setmfboolean{#3}\mfp@T}{}}% \newdef#2{\mfp@let#4\iffalse \mfp@ifopengraphsfile{\setmfboolean{#3}\mfp@F}{}}% #2}% \mfp@makeoption\clipmfpic\noclipmfpic{clipall}\ifmfp@clip \mfp@makeoption\usetruebbox\notruebbox{truebbox}\ifmfp@truebbox \newdef\usemplabels{\mfp@let\ifmfp@mplabels\iftrue \mfp@ifopengraphsfile {\mfp@ifmpost{}% {\mfp@noMP@error{mplabels}\global\let\ifmfp@mplabels\iffalse}}{}}% \newdef\nomplabels{\mfp@let\ifmfp@mplabels\iffalse}% \newdef\@ifmplabels{% \ifmfp@mplabels\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}% \nomplabels \newdef\mp@mksharpother{\@ifmplabels{\@makeother\#}{}}% \mfp@makeoption% \overlaylabels\nooverlaylabels{overlaylabels}\ifmfp@overlabels \mfp@makeoption% \clearsymbols\noclearsymbols{clearsymbols}\ifmfp@clearsym \mfp@makeoption\stopshipping\resumeshipping{noship}\ifmfp@noship \newlet\noship\stopshipping \newlet\ifmfp@readlog\iffalse \newdef\mfpreadlog{% \mfp@ifopengraphsfile {\mfp@afteropen@error\mfpreadlog}{\global\let\ifmfp@readlog\iftrue}}% \newdef\mfpicllx{0}% \newdef\mfpiclly{0}% \newdef\normal@setmfpgraphic#1{% \preparemfpicgraphic{#1}\setmfpicgraphic{#1}\getmfpicoffset{#1}}% \newdef\nofile@setmfpgraphic#1{% {\edef\mfp@tempa{#1}% \vbox to 0pt{\vss \rlap{\kern2pt \mfpdraftfont \mfp@sanitized\mfp@tempa}\kern 2pt}}}% \mfp@ifdefined\strip@prefix{}{\def\strip@prefix#1>{}}% \newdef\mfp@sanitized{\@xp\strip@prefix\meaning}% \newlet\@setmfpicgraphic\normal@setmfpgraphic \usemetafont \newdef\setfilename#1#2{#1.#2}% \newdef\setfilenametemplate#1{% \begingroup \def\_{\mfp@p j}% \def\#{\mfp@p c}% \let\@nl\relax \xdef\mfp@settemplate{\@nl setoutputtemplate "#1";\@nl}% \let\number\relax \let\mfp@count\relax \let\mfp@filename\relax \def\_{\mfp@filename}% \def\#{\number\mfp@count}% \xdef\setfilename##1##2{#1}% \endgroup }% \newif\ifmfpicdraft \newlet\ifmfp@draft\iffalse \newlet\ifmfp@final\iffalse \newlet\ifmfp@nowrite\iffalse \newdef\mfpicdraft{% \mfp@ifopengraphsfile{\global\mfpicdrafttrue}% {\global\let\ifmfp@draft\iftrue}}% \newdef\mfpicfinal{% \mfp@ifopengraphsfile{\global\mfpicdraftfalse}% {\global\let\ifmfp@final\iftrue}}% \newdef\mfpicnowrite{% \mfp@ifopengraphsfile{\mfp@afteropen@error\mfpicnowrite}% {\global\let\ifmfp@nowrite\iftrue}}% \newdef\usemetapost{% \mfp@ifopengraphsfile{\mfp@mpostfalse\mfp@useMP@error}% {\mfp@mposttrue \@usemetapost}}% \ifmfp@latexe \InputIfFileExists{mfpic.cfg}{}{}% \ProcessOptions*\relax \mfp@ifmpost{\usemetapost}{}% \AtEndDocument{\mfp@closegraphsfile}% \else \mfp@msg{}\Mfpic@msg{\mfpfiledate\space v\mfpfileversion.\@nl}% \newdef\mfp@useMP#1#2#3#4#5{% \mfp@ifdefined#1{}{% \InputIfFileExists{#2}{}{% \InputIfFileExists{#3}{}{% \mfp@errmsg{Files not found: #1, #2}% {One of the two named files is necessary for mfpic, but neither was found.}}}}% \global\let\setmfpicgraphic\mfp@includeMPS \gdef\getmfpicoffset##1{\xdef\mfpicllx{#4}\xdef\mfpiclly{#5}}}% \ifmfp@pdf \newdef\mfp@includeMPS#1{\convertMPtoPDF{#1}{1}{1}}% \newdef\@usemetapost{% \mfp@useMP\convertMPtoPDF{supp-pdf.mkii}{supp-pdf.tex}% \MPllx\MPlly}% \else \newdef\mfp@includeMPS#1{\epsfbox{#1}}% \newdef\@usemetapost{% \mfp@useMP\epsfbox{epsf.tex}{epsf.sty}\epsfllx\epsflly}% \fi \fi \mfp@DBlog{Handlers for optional parameters.}% \mfp@ifundefined\@ifnextchar \long\def\@ifnextchar#1#2#3{% \let\reserved@d#1% \def\reserved@a{#2}% \def\reserved@b{#3}% \futurelet\@let@token\@ifnch}% \def\@ifnch{% \ifx\@let@token\@sptoken \let\reserved@c\@xifnch \else \ifx\@let@token\reserved@d \let\reserved@c\reserved@a \else \let\reserved@c\reserved@b \fi \fi \reserved@c}% {% \def\:{\global\let\@sptoken= }\: % this makes \@sptoken a space token \def\:{\@xifnch}\@xp\gdef\: {\futurelet\@let@token\@ifnch}% }% \mfp@enddef \def\mfp@tempa#1{% \def\MFP@sp@def##1##2{% \futurelet\mfp@next\MFP@sp@d##2\@nil\@nil#1\@nil\relax##1}% \def\MFP@sp@d{% \ifx\mfp@next\@sptoken \expandafter\MFP@sp@b \else \expandafter\MFP@sp@b\expandafter#1% \fi}% \def\MFP@sp@b#1##1 \@nil{\MFP@sp@c##1}}% \mfp@tempa{ }% \def\MFP@sp@c#1\@nil#2\relax#3{\mfp@toks{#1}\edef#3{\the\mfp@toks}}% \def\mfp@iftoken#1#2{\@ifnextchar#1{\@firstoftwo{#2}}}% \def\mfp@ifstar#1#2#3{\mfp@iftoken*{#1{#2}}{#1{#3}}}% \def\mfp@ifend{\mfp@iftoken\mfp@end}% \def\mfp@ifendorcomma#1#2#3{\mfp@ifend{#1}{\mfp@iftoken,{#2}{#3}}}% {% \catcode`Q3 \catcode`\~12 \gdef\mfp@ifempty#1{\if~#1~\@xp\@firstoftwo\else\@xp\@secondoftwo\fi}% \gdef\mfp@ifexist#1{\if~#1~\@xp\@gobble\else\@xp\@firstofone\fi}% \gdef\mfp@emptysub#1#2{\if~#1~#2\else#1\fi}% \long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}% \long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}% }% \newdef\mfp@defaultopt#1#2{% \@ifnextchar[{\mfp@ifemptyopt{#1}{#2}}{#1{#2}}}% \newdef\mfp@ifemptyopt#1#2[#3]{\mfp@ifempty{#3}{#1{#2}}{#1{#3}}}% \newdef\mfp@nullopt#1{\@ifnextchar[{\mfp@getopt{#1}}{#1{}}}% \newdef\mfp@getopt#1[#2]{#1{#2}}% \mfp@DBlog{Direct output to Metafont/Post file.}% {% \catcode\mfp@ctrlM\active% \gdef\@activectrlM{^^M}% \gdef\mfp@obeylines{\catcode\mfp@ctrlM\active\let^^M\relax}% }% \newdef\mfp@keeplines{\newlinechar\mfp@ctrlM \endlinechar\newlinechar \mfp@obeylines}% \newdef\mfsrc {\mfp@write\mfp@src\mfsrc}% \newdef\mfcmd {\mfp@write\mfp@cmd}% \newdef\mflist{\mfp@write\mfp@wlist}% \newdef\mfp@write{\begingroup\mfp@keeplines \let\@nl\@activectrlM}% \newdef\mfp@src#1#2{% \mfp@ifopengraphsfile{\immediate\write\mfp@out{#2}}% {\mfp@nooutput@error{#1}}\endgroup}% \newdef\mfp@cmd#1{\mfp@src\mfcmd{#1;}}% \newdef\mfp@wlist#1{\mfp@src\mflist{(#1);}}% \edef\mfp@p{\@xp\@gobble\string\%}% percent (%) \edef\mfp@s{\@xp\@gobble\string\#}% sharp (#) \edef\mfp@b{\@xp\@gobble\string\\}% backslash (\) \newdef\mfp@d{--------------}% \mfp@ifdefined\two@digits{}% {\def\two@digits#1{\ifnum#1<10 0\fi\number#1}}% {% \mfp@ifdefined\normalmonth {\let\month\normalmonth\let\year\normalyear}{}% \count@\time \divide\count@ by 60 \xdef\mfp@now{\number\year/\two@digits\month/\two@digits\day \space at \two@digits\count@:}% \multiply\count@ by -60 \advance\count@\time \xdef\mfp@now{\mfp@now\two@digits\count@}% }% \mfp@DBlog{Declarations used with data and graphs files.}% \newwrite\mfp@out \newread\mfp@graph \newlet\mfp@data\mfp@graph \newcount\mfp@count \newcount\mfp@linetype \newcount\mfp@sequence \newtoks\mfp@toks \newtoks\mfp@verbtex \newtoks\mfp@commonverbatimtex \newif\ifmfp@switch \begingroup \mfp@keeplines\@makeother\#% \@makeother\%\global\mfp@commonverbatimtex {\gdef\mpxshipout{\afterassignment\middlempxshipout\setbox0=\hbox}% \gdef\middlempxshipout{\aftergroup\finishmpxshipout}% \gdef\finishmpxshipout{\dimen1=\ht0 \dimen2=\dp0 \dimen0=\dimen1 \advance\dimen0\dimen2 \setbox0=\hbox{\hbox{\box0 \ifnum\dimen0>0 \vrule width1sp height\dimen1 depth\dimen2 \else \vrule width1sp height1sp depth0sp\relax \fi}}% \ht0=0pt \dp0=0pt \shipout\hbox{\box0}}% \def\MFPtext#1{\vbox{\def\\{\cr}\MFPcfont\everylabel \halign{##\hfil\cr#1\crcr}}}% }\endgroup% \newdef\mfp@versioninfo{% \mfp@p\space\mfp@filename.m\mfp@ifmpost{p}{f}, generated by Mfpic, v\mfpfileversion\space\mfpfiledate,\@nl \mfp@p\space from TeX source "\jobname" on \mfp@now\@nl numeric mfpicversion; mfpicversion := \mfpicversion;\@nl}% \newdef\mfp@init@outfile{% if unknown mode: mode := localfont; fi\@nl if unknown mag: mag := \number\mag/1000; fi\@nl if unknown grafbase: input grafbase; fi\@nl\@nl}% \newdef\mfp@versioncheck{% if unknown grafbaseversion: grafbaseversion := 0; fi\@nl if grafbaseversion <> mfpicversion :\@nl GBmsg "Bad mfpic installation: mfpic and grafbase % versions do not match.";\@nl fi\@nl}% \newdef\mfp@openfile{% \ifmfp@nowrite \else \mfp@msg{}% \Mfpic@msg{Initializing \mfp@filename\mfp@ext.}% \immediate\openout\mfp@out=\mfp@filename\mfp@ext\relax \Mfpic@msg{Don't forget to process \mfp@filename\mfp@ext!}% \Mfpic@msg{Apply \mfp@progname\space to \mfp@filename\mfp@ext% \mfp@ifmpost{}{, then gftopk to the resulting gf file}.}% \Mfpic@msg{Then reprocess this file "\jobname".\@nl}% \fi}% \mfp@ifundefined\IfFileExists \def\IfFileExists#1{\openin\mfp@graph=#1\relax \ifeof\mfp@graph \@xp\@secondoftwo \else \immediate\closein\mfp@graph \@xp\@firstoftwo \fi}% \def\InputIfFileExists#1#2{\IfFileExists{#1}{#2\input #1\relax}}% \mfp@enddef \newdef\mfp@checkoutput#1#2#3{% \IfFileExists{\setfilename\mfp@filename{#1}}% {\global\mfpicdraftfalse #2}% {\global\mfpicdrafttrue #3\mfp@msg{}% \Mfpic@msg{No file \setfilename\mfp@filename{#1}.}% }}% \newdef\mfp@checkMPoutput{\mfp@checkoutput{\number\mfp@count}{}{}}% \newdef\mfp@checkMFoutput{\mfp@checkoutput{tfm}% {\global\font\mfp@graphfont\mfp@filename\relax}% {\global\let\mfp@graphfont\mfp@dummy}}% \newdef\mfp@MPextras{\mfp@toks\@xp{\every@tlabel}% \mfsrc{% if unknown Apricot: input dvipsnam.mp; fi\@nl verbatimtex\@nl \ifmfp@verbtex \the\mfp@verbtex\@nl \fi \relax\@nl \the\mfp@commonverbatimtex \def\noexpand\everylabel{\the\mfp@toks}\@nl etex;\@nl \mfp@ifdefined\mfp@settemplate\mfp@settemplate{}% }% \global\mfp@verbtexfalse \global\mfp@verbtex{}% \@ifmplabels\usemplabels{}% \ifmfp@truebbox \usetruebbox \fi \ifmfp@overlabels \overlaylabels \fi}% \def\mfp@MFextras{% \mfp@ifdefined\mfp@resolution% {GBresolution := \mfp@resolution;\@nl}{}% \mfp@ifdefined\mfp@mode{mode := \mfp@mode;\@nl}{}}% \def\mfp@dospecials{\do\$\do\&\do\#\do\^\do\_\do\%\do\~}% \mfp@DBlog{Macros to open and close graphs files.}% \newdef\opengraphsfile{\@bsphack \begingroup \let\do\@makeother \mfp@dospecials\@opengraphsfile}% \newdef\@opengraphsfile#1{% \xdef\mfp@tempa{#1}% \endgroup \mfp@ifopengraphsfile% {\Mfpic@warn {\@nl An attempt has been made to open a graph file, \mfp@sanitized\mfp@tempa\@msgbreak while another, \mfp@filename, is still open. \@msgbreak Closing \mfp@filename.}\mfp@closegraphsfile}% {}% \xdef\mfp@filename{\mfp@sanitized\mfp@tempa}% \xdef\mfp@progname{meta\mfp@ifmpost{pos}{fon}t}% \xdef\mfp@ext{.m\mfp@ifmpost{p}{f}}% \mfp@ifmpost\mfp@checkMPoutput\mfp@checkMFoutput \mfp@openfile \ifmfp@draft \global\mfpicdrafttrue \fi \ifmfp@final \global\mfpicdraftfalse \fi \ifmfp@nowrite \gdef\mfp@src##1##2{\endgroup}\fi \mfsrc{\mfp@versioninfo \mfp@ifmpost{}\mfp@MFextras \mfp@init@outfile \mfp@versioncheck}% \mfp@ifmpost\mfp@MPextras{}% \ifmfp@clip \clipmfpic \fi \ifmfp@clearsym \clearsymbols \fi \ifmfp@noship \stopshipping \fi \ifmfp@readlog \mfp@readlogfile \fi \@esphack}% \newdef\closegraphsfile{% \mfp@ifopengraphsfile{}{\mfp@nooutput@error\closegraphsfile}% \mfp@closegraphsfile}% \newdef\mfp@closegraphsfile{% \mfp@ifopengraphsfile {\ifmfp@nowrite \else \mfsrc{\@nl end.}\immediate\closeout\mfp@out \fi \global\let\mfp@filename\UndEfInEd}{}}% \edef\mfpicvalue{\string\mfpicvalue}% \newdef\mfp@cmdname{% mfpic-\ifin@mfpicenv\number\mfp@count\fi-\@xp\@gobble\string}% \newdef\assignmfvalue{\mfp@assign\@empty}% \newdef\globalassignmfvalue{\mfp@assign\global}% \newdef\mfp@assign#1#2#3{% #1\edef#2{% \@ifundefined{\mfp@cmdname#2}{???}{\@nameuse{\mfp@cmdname#2}}}% \@ifundefined{\mfp@cmdname#2}% {\mfp@msg{}\Mfpic@msg{No value for \string#2\ifin@mfpicenv\space in mfpic figure \number\mfp@count\fi.\@nl}}% {}% \mfsrc{\@ifmplabels{\@nl verbatimtex #1\def\string#2{#2} etex;\@nl}{}% message "\string\mfpicvalue";\@nl message "\mfp@cmdname#2";\@nl show #3;\@nl message "";}}% \newlet\assignmpvalue\assignmfvalue \newlet\globalassignmpvalue\globalassignmfvalue \newdef\strip@gtgt>> #1\mfp@end{#1}% \newdef\mfp@readlogfile{% \openin\mfp@data=\mfp@filename.log\relax \ifeof\mfp@data \Mfpic@msg{No file \mfp@filename.log.}% \else {% \mfp@resetwhitespace \endlinechar -1 \catcode`\>12 \def\@mfpicvalue{\mfpicvalue}% \message{< Mfpic: Reading \mfp@filename.log}% \mfp@readloglines \message{>}% }% \fi \closein\mfp@data}% \newdef\mfp@readloglines{% \read\mfp@data to \mfp@tempa \ifeof\mfp@data \else \ifx\mfp@tempa\@mfpicvalue \read\mfp@data to \mfp@tempa \read\mfp@data to \mfp@tempb \@XP\xdef\@nameuse\mfp@tempa{\@xp\strip@gtgt\mfp@tempb\mfp@end}% \fi \@xp\mfp@readloglines \fi}% \mfp@DBlog{Using dummy font's dimensions, to spare TeX registers.}% \font\mfp@dummy=dummy scaled 1042 \fontdimen100\mfp@dummy0pt \newcount\mfp@fdc \mfp@fdc22 \newdef\newfdim#1{% \global\advance\mfp@fdc1 \xdef#1{\fontdimen\number\mfp@fdc\mfp@dummy}% \wlog{\string#1=\fontdimen\number\mfp@fdc\mfp@dummy}}% \mfp@DBlog{A box register for whole labeled graph, % and a temporary one.}% \newbox\@wholegraph \newbox\@textbox \newdef\tb@ht{\ht\@textbox}% \newdef\tb@dp{\dp\@textbox}% \newdef\tb@wd{\wd\@textbox}% \newbox\@alltlabels \newbox\@backtext \newfdim\@tlabelstop \newfdim\@tlabelsbot \newfdim\@tlabelsleft \mfp@DBlog{Internal dimension parameters for graph dimensions...}% \newfdim\@graphright \newfdim\@graphleft \newfdim\@graphtop \newfdim\@graphbot \mfp@DBlog{...and dimension parameters for tlabel positioning.}% \newfdim\tb@raise \newfdim\tb@moveright \newfdim\tb@totalht \newfdim\tlabel@hadj \newfdim\tlabel@vadj \newfdim\tlabel@sep \newfdim\tlpath@sep \tlabel@hadj0pt \tlabel@vadj0pt \tlabel@sep0pt \tlpath@sep0pt \mfp@DBlog{User level dimension parameters, with default settings.}% \newfdim\mfpicunit \newfdim\@mfpicunit % internal version \newfdim\pointsize \newfdim\shadespace \newfdim\polkadotspace \newfdim\hatchspace \newfdim\headlen \newfdim\axisheadlen \newfdim\sideheadlen \newfdim\hashlen \newfdim\dashlen \newfdim\dashspace \newfdim\dotsize \newfdim\griddotsize \newfdim\dotspace \newfdim\symbolspace \mfpicunit1pt \pointsize2pt \shadespace1pt \polkadotspace10pt \hatchspace3pt \headlen3pt \axisheadlen5pt \sideheadlen0pt \hashlen4pt \dashlen4pt \dashspace4pt \dotsize0.5pt \griddotsize0.5pt \dotspace3pt \symbolspace5pt \newdef\save@mfpicdimens{% \edef\restore@mfpicdimens{% \mfpicunit \the\mfpicunit \pointsize \the\pointsize \shadespace \the\shadespace \polkadotspace \the\polkadotspace \hatchspace \the\hatchspace \headlen \the\headlen \axisheadlen \the\axisheadlen \sideheadlen \the\sideheadlen \hashlen \the\hashlen \dashlen \the\dashlen \dashspace \the\dashspace \dotsize \the\dotsize \griddotsize \the\griddotsize \dotspace \the\dotspace \symbolspace \the\symbolspace \tlabel@hadj \the\tlabel@hadj \tlabel@vadj \the\tlabel@vadj \tlabel@sep \the\tlabel@sep \tlpath@sep \the\tlpath@sep}}% \newdimen\mfp@scratch \newdimen\mfpframesep \newdimen\mfpframethickness \newdimen\mfpicheight \newdimen\mfpicwidth \newskip\mfpiccaptionskip \mfpframethickness0.4pt \mfpframesep2pt \mfpiccaptionskip\medskipamount \def\mfpicnumber#1{\global\mfp@count#1\relax}% \newdef\mfpaddto#1#2{\mfp@scratch#1pt \advance\mfp@scratch#2pt \edef#1{\strip@pt\mfp@scratch}}% \newdef\mfpmultiply#1#2{\mfp@scratch#1pt \mfp@scratch#2\mfp@scratch \edef#1{\strip@pt\mfp@scratch}}% \mfp@ifundefined\strip@pt \begingroup \lccode`\/`\p \lccode`\?`\t \lowercase{% \endgroup \def\rem@pt#1.#2/?}{#1\ifnum#2>\z@.#2\fi}% \def\strip@pt{\@xp\rem@pt\the}% \mfp@enddef \newdef\pointdef#1(#2,#3){% \@ifundefined{#1} {}{\Mfpic@warn{\mfp@b#1 already defined.}}% \@ifundefined{#1x}{}{\Mfpic@warn{\mfp@b#1x already defined.}}% \@ifundefined{#1y}{}{\Mfpic@warn{\mfp@b#1y already defined.}}% \@namedef{#1}{(#2,#3)}\@namedef{#1x}{#2}\@namedef{#1y}{#3}}% \newdef\setmfarray#1#2{\mfsrc{setarray (#1) (#2)}\mfp@writedata}% \newlet\setmparray\setmfarray \newdef\pairarray{\setmfarray{pair}}% \newdef\numericarray{\setmfarray{numeric}}% \newdef\colorarray{\setmfarray{color}}% \newdef\rgbcolorarray{\setmfarray{rgbcolor}}% \newdef\cmykcolorarray{\setmfarray{cmykcolor}}% \newdef\globalsetmfarray#1#2{\mfsrc{gsetarray (#1) (#2)}\mfp@writedata}% \newlet\globalsetmparray\globalsetmfarray \newdef\lightershade{\shadespace1.2\shadespace}% \newdef\darkershade{\shadespace.83333\shadespace}% \newdef\dashlineset{\dashlen4pt \dashspace4pt }% \newdef\dotlineset{\dashlen1pt \dashspace2pt }% \let\ifpointfill\iftrue \newdef\pointfilltrue{\mfp@let\ifpointfill\iftrue}% \newdef\pointfillfalse{\mfp@let\ifpointfill\iffalse}% \newdef\mfpfor#1{\begingroup\mfsrc{for #1:}}% \newdef\endmfpfor{\mfsrc{endfor}\endgroup}% \newdef\mfploop{% \begingroup\mfsrc{forever:}\let\@nountil\mfp@untilwarn}% \newdef\mfpuntil#1{\mfcmd{exitif #1}\let\@nountil\@empty}% \newdef\endmfploop{\@nountil\endmfpfor}% \newdef\mfpwhile#1{\begingroup\mfcmd{forever: exitif not(#1)}}% \newlet\endmfpwhile\endmfpfor \newdef\plr#1{map (polar) (#1)}% \newdef\midpoint#1{(0.5[#1])}% \mfp@DBlog{Tests to control multiple prefix commands.}% \newif\if@mfpstart\@mfpstarttrue \newif\if@mfprend\@mfprendtrue \newdef\mfp@storepath{\mfsrc{\@nl store (curpath)}}% \newdef\mfp@first{\relax \if@mfpstart \mfp@storepath \@mfprendtrue \@mfpstartfalse\fi}% \newdef\mfp@rendmac{\mfp@first \@mfprendfalse \mfsrc}% \newdef\mfp@modmac{\mfp@first\mfp@autorend\mfsrc}% \newdef\mfp@autorend{\if@mfprend\@xp\mfp@render\fi}% \newdef\mfp@addmac{\mfp@first \mfsrc}% \newdef\mfp@render{\draw[]}% \newdef\setrender#1{\mfp@def\mfp@render{#1}}% \newdef\mfp@figmacbase{\mfp@first \mfp@autorend \@mfpstarttrue}% \newdef\mfp@figmac{\mfp@figmacbase\mfcmd}% \newdef\mfp@listmac#1{\mfp@figmacbase\mfsrc{#1}\mfp@writedata}% \newdef\mfp@writedata{\mfp@iftoken\datafile{\mfp@writefile}{\mflist}}% \newdef\mfp@writefile{% \mfp@ifopengraphsfile {\mfp@processfile{\mfp@rwdata}}{\mfp@nooutput@error\datafile}}% \newdef\mftitle#1{\@bsphack\mfp@title\mftitle{#1}\@esphack}% \newdef\tmtitle#1{\mfp@title\tmtitle{#1}\wlog{\the\mfp@toks}{#1}}% \newdef\mfp@title#1#2{\mfp@toks{#2}% \mfp@write\mfp@src#1{mftitle "\the\mfp@toks";}}% \newdef\mfp@processfile#1#2{% \openin\mfp@data=#2\relax \ifeof\mfp@data \mfp@nofile@error{#2}% \else \mfp@DBlog{Opening file #2 for data.}% {% \mfp@resetwhitespace \mfp@setcomment \mfp@skipblanklines \ifeof\mfp@data \mfp@nodata@error{#2}% \else \message{< Mfpic: Reading #2}% #1% \message{>}% \fi \@xp }\@xp\mfp@linetype\number\mfp@linetype\relax \mfp@DBlog{Closing file #2.}% \fi \closein\mfp@data}% \newdef\mfp@resetwhitespace{\mfp@restorepar \endlinechar`\^^M \catcode`\^^M5 \catcode`\ 10 \catcode`\^^I10 }% \newdef\mfp@skipcomments{\read\mfp@data to \mfp@temp \ifx\mfp@temp\@empty \@xp\mfp@skipcomments\fi}% \newdef\mfp@skipblanklines{\mfp@skipcomments \ifeof\mfp@data \else\ifx\mfp@temp\mfp@par \@XP\mfp@skipblanklines \fi\fi}% \newdef\mfp@nextdatum{\@xp\parse@data\mfp@temp\mfp@end}% \newdef\mfp@rwdata{\mfp@count1 \mfp@sequence1 \def\sequence{\number\mfp@sequence}% \edef\mfp@temp{\mfp@temp\space}% \edef\mfp@buffer{(\mfp@nextdatum}\mfp@rwdataloop}% \newdef\mfp@rwdataloop{% \read\mfp@data to \mfp@temp \ifx\mfp@temp\mfp@par \mfcmd{\mfp@buffer)}% \else \ifx\mfp@temp\@empty \else \edef\mfp@temp{\mfp@temp\space}% \advance\mfp@sequence1 \edef\mfp@buffer{\mfp@buffer\mfp@join}% \ifnum\mfp@count<\mfpdataperline\relax \advance\mfp@count1 \else \mfsrc{\mfp@buffer}\mfp@count1 \def\mfp@buffer{}% \fi \edef\mfp@buffer{\mfp@buffer\mfp@nextdatum}% \fi \@xp\mfp@rwdataloop \fi}% \newdef\pen#1{\mfcmd{\@nl resizedrawpen (#1)}}% \newlet\penwd\pen \newlet\drawpen\pen \newdef\shadewd#1{\setmfnumeric{shadewd}{#1}}% \newdef\polkadotwd#1{\setmfnumeric{polkadotwd}{#1}}% \newdef\hatchwd#1{\setmfnumeric{hatchwd}{#1}% \setmfvariable{pen}{hatchpen}{pencircle scaled hatchwd}}% \newdef\dashpattern#1{\mfsrc{save #1; dashpat (#1)}\mfp@writedata}% \newdef\settension#1{\setmfnumeric{default_tension}{#1}}% \newcount\tl@vpos \newcount\tl@hpos \newdef\mfp@tlh@l{-1}% \newdef\mfp@tlh@c{0}% \newdef\mfp@tlh@r{1}% \newdef\mfp@tlv@B{-1}% \newdef\mfp@tlv@b{0}% \newdef\mfp@tlv@c{1}% \newdef\mfp@tlv@t{2}% \newdef\tl@rot{}\tl@vpos-1 \tl@hpos-1 \newdef\tlabeljustify#1{\mfp@ifexist{#1}{\mfp@justify#1\mfp@end}}% \newdef\mfp@justify#1#2\mfp@end{\mfp@local\mfp@vconv{#1}% \mfp@ifexist{#2}{\mfp@@justify#2\mfp@end}}% \newdef\mfp@@justify#1#2\mfp@end{\mfp@local\mfp@hconv{#1}% \mfp@local\edef\tl@rot{#2}% \@ifmplabels{}% {\mfp@ifexist{#2}% {\Mfpic@warn{Rotation of labels is not supported without the mplabels\@msgbreak option. Rotation setting\on@line\space may be ignored.}}% }}% \newdef\mfp@vconv#1{% \@ifundefined{mfp@tlv@#1}% {\tl@vpos-1 \mfp@justify@error}% {\tl@vpos\@nameuse{mfp@tlv@#1}\relax}}% \newdef\mfp@hconv#1{% \@ifundefined{mfp@tlh@#1}% {\tl@hpos-1 \mfp@justify@error}% {\tl@hpos\@nameuse{mfp@tlh@#1}\relax}}% \newdef\tlpathjustify#1{% \mfp@ifexist{#1}{\tlp@justify#1\mfp@end}}% \newdef\tlp@justify#1#2\mfp@end{\mfp@def\tlpath@v{#1}% \mfp@ifexist{#2}{\tlp@@justify#2\mfp@end}}% \newdef\tlp@@justify#1#2\mfp@end{% \mfp@def\tlpath@h{#1}\mfp@def\tlpath@r{#2}}% \tlpathjustify{cc}% \newdef\tlpointsep#1{\mfp@local\tlabel@sep#1\relax \setmfnumeric{label_sep}{\the\tlabel@sep}}% \newdef\tlpathsep#1{\mfp@local\tlpath@sep#1\relax \setmfnumeric{labelpath_sep}{\the\tlpath@sep}}% \newdef\tlabelsep#1{\tlpointsep{#1}\tlpathsep{#1}}% \newdef\tlabeloffset#1#2{% \mfp@local\tlabel@hadj#1\relax \mfp@local\tlabel@vadj#2\relax \setmfpair{label_adjust}% {(\the\tlabel@hadj,\the\tlabel@vadj)}}% \newdef\everytlabel{\afterassignment\mfp@everytlabel\mfp@toks}% \newdef\mfp@everytlabel{\mfp@local\edef\every@tlabel{\the\mfp@toks}% \mfp@ifmpost {\mfp@ifopengraphsfile {\mfcmd{verbatimtex\@nl \def\noexpand\everylabel{\the\mfp@toks} etex}}% {}}% {}}% \newdef\every@tlabel{}% \newdef\extra@endtlabel{}% \newdef\pinumber{3.14159}% \newdef\headshape#1#2#3{\mfcmd{\@nl headshape (#1, #2, #3)}}% \newdef\mfp@arr@b#1{\edef\mfp@hlocate{#1}}% \newdef\mfp@arr@c#1{\edef\mfp@hcolour{#1}}% \newdef\mfp@arr@l#1{\edef\mfp@hlength{#1}}% \newdef\mfp@arr@r#1{\edef\mfp@hrotate{#1}}% \newlet\mfp@arr@f\mfp@arr@b \newlet\mfp@arr@s\mfp@arr@l \newdef\mfp@arc@s{pps}% \newdef\mfp@arc@t{ppp}% \newdef\mfp@arc@p{\ifmfp@switch plr\fi}% \newdef\mfp@arc@a{\ifmfp@switch alt\fi}% \newdef\mfp@arc@c{cp\ifmfp@switch s\fi}% \newdef\mfp@arc@r{pp (\mfp@T)}% \newdef\mfp@arc@q{pp (\mfp@F)}% \newdef\mfpdefinecolor#1#2#3{\setmfcolor{#1}{#2(#3)}}% \newdef\mfp@defclr#1#2#3{\setmfcolor{#1}{\mfp@ifempty{#2}{#3}{#2(#3)}}}% \newdef\mfp@newcolorcmd#1{% \@namedef{#1\mfp@C}{\mfp@nullopt{\mfp@defclr{#1\mfp@C}}}}% \mfp@newcolorcmd{draw}\mfp@newcolorcmd{fill}\mfp@newcolorcmd{tlabel}% \mfp@newcolorcmd{hatch}\mfp@newcolorcmd{head}\mfp@newcolorcmd{point}% \def\backgroundcolor{\mfp@nullopt{\mfp@defclr{background}}}% \newdef\dashedlines{\mfp@local\mfp@linetype0 \mfp@def\mfp@setstyle{\gendashed{getdashpat \number\mfp@linetype}}}% \dashedlines \newdef\coloredlines{% \mfp@ifmpost {\mfp@local\mfp@linetype0 \mfp@def\mfp@setstyle{\draw[getcolor \number\mfp@linetype]}}% {\Mfpic@warn{You can't use \mfp@b coloredlines in Metafont.\@msgbreak Using \dashedlines instead}% \dashedlines}}% \newdef\pointedlines{\mfp@local\mfp@linetype0 \mfp@def\mfp@setstyle{\plot{getsymbol \number\mfp@linetype}}}% \newdef\datapointsonly{\mfp@local\mfp@linetype0 \mfp@def\mfp@setstyle{\relax \plotnodes{getsymbol \number\mfp@linetype}}}% \newdef\reconfigureplot#1{\mfsrc{setdata#1}\mfp@writedata}% \newdef\defaultplot#1{\mfcmd{default#1}}% \newdef\mfplinetype#1{\mfp@local\mfp@linetype#1\relax}% \newlet\mfplinestyle\mfplinetype \mfplinetype{0}% \newdef\mfp@lshift{0}\newdef\mfp@bshift{0}% \newdef\mfp@rshift{0}\newdef\mfp@tshift{0}% \newdef\axismargin#1#2{\setmfnumeric{#1axis}{#2}% \mfp@local\@namedef{mfp@#1shift}{#2}}% \newdef\setaxismargins#1#2#3#4{\axismargin l{#1}\axismargin b{#2}% \axismargin r{#3}\axismargin t{#4}}% \newdef\setallaxismargins#1{\setaxismargins{#1}{#1}{#1}{#1}}% \def\mfp@axis@x{0}% \def\mfp@axis@y{1}% \def\mfp@axis@l{2}% \def\mfp@axis@b{3}% \def\mfp@axis@r{4}% \def\mfp@axis@t{5}% \def\mfp@getaxis#1#2\mfp@end#3{% \@ifundefined{mfp@axis@#1}% {\mfp@errmsg {Invalid axis letter "#1"}% {The command #3 requires an axis to be designated by one of^^J% the following letters: x, y, l, b, r, or t. If you proceed, ^^J% x will be assumed.}\def\mfp@axisnum{0}\def\mfp@axisletter{x}}% {\edef\mfp@axisnum{\@nameuse{mfp@axis@#1}}\def\mfp@axisletter{#1}}% \edef\mfp@defheadlen{% \the\ifnum\mfp@axisnum>1 \sideheadlen\else \axisheadlen\fi}}% \newdef\setaxismarks#1#2{\setmfnumeric{#1tick}{#2}}% \newdef\setxmarks#1{\setaxismarks x{#1}}% \newdef\setymarks#1{\setaxismarks y{#1}}% \newdef\setbordermarks#1#2#3#4{\setaxismarks l{#1}\setaxismarks b{#2}% \setaxismarks r{#3}\setaxismarks t{#4}}% \newdef\setallbordermarks#1{\setbordermarks{#1}{#1}{#1}{#1}}% \newdef\mfp@smdata#1{\mfp@def\mfp@smoothness{#1}% \mfp@nullopt{\mfp@def\mfp@tension}}% \newdef\smoothdata{\mfp@smdata{s}}% \newdef\unsmoothdata{\mfp@smdata{p}\@empty}% \unsmoothdata% default \newdef\using#1#2{\mfp@def\parse@data#1\mfp@end{#2}}% \newdef\usingpairdefault{\using{##1 ##2 ##3}{(##1,##2)}}% \newdef\usingnumericdefault{\using{##1 ##2}{##1}}% \usingpairdefault \newdef\mfpdataperline{5}% \newdef\mfp@par{\par}\newdef\mfp@join{,}% \newcount\mfp@commentchar \mfp@commentchar`\%% \newdef\makepercentother{\@makeother\%}% \newdef\makepercentcomment{\catcode`\%14 }% \newdef\mfpdatacomment#1{\mfp@local\mfp@commentchar`#1}% \newdef\mfp@setcomment{\makepercentother\catcode\mfp@commentchar14 }% \newdef\fdef{\begingroup\@makeother\#\mfp@keeplines\mfp@fdef}% \newdef\mfp@fdef#1#2#3{\mfcmd{\@nl save #1;\@nl vardef #1 (expr #2) = \@nl #3\@nl enddef}\endgroup}% \newdef\mfp@additions{}% \newdef\mfp@grafmacs{% \newdef\rect##1{\mfp@figmac{rect (##1)}}% \newdef\regpolygon##1##2##3##4{% \mfp@figmac{regularpolygon (##1) (##2) (##3; ##4;)}}% \def\circle{\mfp@switchfalse\mfp@defaultopt\mfp@arccircle{p}}% \newdef\ellipse{\mfp@defaultopt\mfp@ellipse{0}}% \newdef\sector##1{\mfp@figmac{sector (##1)}}% \newdef\arc{\mfp@iftoken*{\arccomplement\mfp@arc}{\mfp@arc}}% \newdef\pshcircle{\mfp@ifstar\mfp@pshcircle\mfp@F\mfp@T}% \newdef\lines{\mfp@listi{polyline}\mfp@F}% \newdef\polygon{\mfp@listi{polyline}\mfp@T}% \newdef\computedspline{\mfp@listi{dospline}\mfp@F}% \newdef\closedcomputedspline{\mfp@listi{dospline}\mfp@T}% \newdef\qspline{\mfp@listi{qspline}\mfp@F}% \newdef\closedqspline{\mfp@listi{qspline}\mfp@T}% \newdef\cspline{\mfp@listi{cspline}\mfp@F}% \newdef\closedcspline{\mfp@listi{cspline}\mfp@T}% \newdef\qbeziers{\mfp@listi{qbezier}\mfp@F}% \newdef\closedqbeziers{\mfp@listi{qbezier}\mfp@T}% \newdef\cbeziers{\mfp@listi{cbezier}\mfp@F}% \newdef\closedcbeziers{\mfp@listi{cbezier}\mfp@T}% \newdef\fcnspline{\mfp@listi{fcnspline}\mfp@F}% \newdef\periodicfcnspline{\mfp@listi{fcnspline}\mfp@T}% \newlet\closedpolyline\polygon \newlet\polyline\lines \newdef\curve{\mfp@curve{curve}\mfp@F}% \newdef\cyclic{\mfp@curve{curve}\mfp@T}% \newdef\convexcurve{\mfp@curve{ccurve}\mfp@F}% \newdef\convexcyclic{\mfp@curve{ccurve}\mfp@T}% \newdef\mfbezier{\mfp@curve{bezier}\mfp@F}% \newdef\closedmfbezier{\mfp@curve{bezier}\mfp@T}% \newlet\closedcurve\cyclic \newlet\closedconvexcurve\convexcyclic \newdef\fcncurve{\mfp@nullopt\mfp@fcncurve}% \newdef\turtle{\mfp@listmac{turtle}}% \newdef\brownianmotion##1{\mfp@figmac{brownianpath (##1)}}% \newdef\function{\mfp@fcn{function}s}% \newdef\parafcn{\mfp@fcn{parafcn}s}% \newdef\plrfcn{\mfp@fcn{plrfcn}s}% \newdef\btwnfcn{\mfp@btwn{btwnfcn}}% \newdef\btwnplrfcn{\mfp@btwn{btwnplrfcn}}% \newdef\belowfcn{\mfp@fcn{belowfcn}p}% \newdef\plrregion{\mfp@fcn{plrregion}p}% \def\levelcurve{\mfp@fcn{levelset}p}% \newdef\plotdata{\mfp@nullopt\mfp@plotdata}% \newdef\datafile{\mfp@nullopt\mfp@datafile}% \newdef\store##1##2{\mfp@rendmac{stored (##1)}##2}% \newdef\norender{\mfp@first\@mfprendfalse}% \newlet\mfobj\mfp@figmac \newlet\mpobj\mfobj \newdef\mfpimage{\mfp@defaultopt\mfp@image{(0,0)}}% \newdef\endmfpimage{\mfcmd{\@nl concludeimage}}% \newdef\putmfpimage##1{\mfsrc{\@nl putimage (##1)}\mfp@writedata}% \newdef\cutoffafter {\mfp@modi{cutoffafter}}% \newdef\cutoffbefore{\mfp@modi{cutoffbefore}}% \newdef\trimpath##1{\mfp@getdimens##1,,\mfp@end \mfp@modi{trimmedpath}\mfp@thedimens}% \newdef\partpath{\mfp@modi{partialpath}}% \newdef\subpath{\mfp@modi{gsubpath}}% \newdef\draw{\mfp@nullopt{\mfp@clroptrend{drawn}}}% \newdef\doubledraw{\mfp@defaultopt\mfp@doubledraw{2penwd}}% \newdef\dashed{\mfp@optrendi{DASHED}{\the\dashlen,\the\dashspace}}% \newdef\dotted{\mfp@optrendi{dotted}{\the\dotsize,\the\dotspace}}% \newdef\gendashed{\mfp@rendi{gendashed}}% \newdef\zigzag{\mfp@rendi{zigzag}}% \newdef\sinewave {\mfp@defaultopt{\mfp@wiggle{sinewave}}1}% \newdef\coil{\mfp@defaultopt{\mfp@wiggle{corkscrew}}1}% \newlet\corkscrew\coil \newdef\plot{\mfp@optrendii{doplot}{\the\pointsize,\the\symbolspace}}% \newdef\plotnodes{\mfp@optrendii{plotnodes}{\the\pointsize}}% \newdef\showcontrols{\mfp@optrendii{showcontrols}{\the\pointsize}}% \newdef\bclosed{\mfp@nullopt{\mfp@close b}}% \newdef\sclosed{\mfp@nullopt{\mfp@close s}}% \newdef\lclosed{\mfp@close l{}}% \newdef\cbclosed{\mfp@close{cb}{}}% \newdef\qbclosed{\mfp@close{qb}{}}% \newlet\uclosed\bclosed \newdef\makesector{\mfp@modmac{makesector}}% \newdef\tess{\mfp@rendi{tess}}% \newdef\shade{\mfp@optrendi{shade}{\the\shadespace}}% \newdef\polkadot{\mfp@optrendi{polkadot}{\the\polkadotspace}}% \newdef\thatch{\mfp@defaultopt\mfp@thatch{\the\hatchspace,0}}% \newdef\lhatch{\mfp@defaultopt\mfp@lhatch{\the\hatchspace}}% \newdef\rhatch{\mfp@defaultopt\mfp@rhatch{\the\hatchspace}}% \newdef\xhatch{\mfp@defaultopt\mfp@xhatch{\the\hatchspace}}% \newlet\hatch\xhatch \newdef\gfill{\mfp@nullopt{\mfp@clroptrend{filled}}}% \newdef\gclear{\mfp@rendmac{unfilled}}% \newdef\gclip{\mfp@rendmac{Clip}}% \newdef\reverse{\mfp@addmac{reverse}}% \newdef\xyswappath{\mfp@modmac{xyswappedpath}}% \newdef\rotatepath{\mfp@modi{rotatedpath}}% \newdef\shiftpath{\mfp@modi{shiftedpath}}% \newdef\scalepath{\mfp@modi{scaledpath}}% \newdef\xscalepath{\mfp@modi{xscaledpath}}% \newdef\yscalepath{\mfp@modi{yscaledpath}}% \newdef\slantpath{\mfp@modi{xslantedpath}}% \newlet\xslantpath\slantpath \newdef\yslantpath{\mfp@modi{yslantedpath}}% \newdef\reflectpath{\mfp@modi{reflectedpath}}% \newdef\transformpath{\mfp@modi{transformedpath}}% \newdef\parallelpath{\mfp@modi{parapath}}% \newdef\randomizepath{\mfp@modi{randompath}}% \newdef\randomlines{\mfp@modi{randomlines}}% \newdef\arccomplement{\mfp@modmac{arccomplement}}% \newdef\arrowhead{\mfp@ifstar\mfp@arrowhead\mfp@T\mfp@F}% \def\arrow{\mfp@ifstar\mfp@arrow{x}{}}% \newdef\arrowtail##1{\mfp@arr 0{tailpath (##1)}}% \newdef\arrowmid##1{\mfp@arr{0.5}{midpath (##1)}}% \newdef\coords{\mfsrc{\@nl bcoords\@nl}}% \newdef\endcoords{\mfsrc{\@nl ecoords\@nl}}% \newdef\applyT##1{\mfsrc{\@nl hide(apply_t (##1))}}% \def\rotate##1{\applyT{rotated ##1}}% \newdef\rotatearound##1##2{% \applyT{rotatedaround (##1, ##2)}}% \newdef\turn{\mfp@defaultopt\mfp@turn{(0,0)}}% \newdef\reflectabout##1##2{\applyT{reflectedabout (##1, ##2)}}% \let\mirror\reflectabout \newdef\shift##1{\applyT{shifted ##1}}% pair. \def\scale##1{\applyT{scaled ##1}}% same scaling \newdef\xscale##1{\applyT{xscaled ##1}}% \newdef\yscale##1{\applyT{yscaled ##1}}% \newdef\zscale##1{\applyT{zscaled ##1}}% \newdef\xslant##1{\applyT{xslant ##1}}% \newdef\yslant##1{\applyT{yslant ##1}}% \newdef\zslant##1{\applyT{zslant ##1}}% \newdef\boost##1{\applyT{boost ##1}}% \newdef\xyswap{\applyT{xyswap}}% \newdef\xaxis{\mfp@defaultopt{\mfp@simple{xaxis}}{\the\axisheadlen}}% \newdef\yaxis{\mfp@defaultopt{\mfp@simple{yaxis}}{\the\axisheadlen}}% \newdef\axes{\mfp@defaultopt {\mfp@simple{axes}}{\the\axisheadlen}}% \newdef\axis{\mfp@nullopt\mfp@axis}% \newdef\axisline##1{\mfp@figmac{axisline.##1}}% \newdef\doaxes{\mfp@nullopt\mfp@doaxes}% \newdef\border{\mfp@figmac{borderrect}}% \newdef\axismarks##1{\mfp@defaultopt{\mfp@marks{##1}}{\the\hashlen}}% \newdef\xmarks{\axismarks x}% \newdef\ymarks{\axismarks y}% \newdef\lmarks{\axismarks l}% \newdef\bmarks{\axismarks b}% \newdef\rmarks{\axismarks r}% \newdef\tmarks{\axismarks t}% \def\grid{\mfp@defaultopt{\mfp@simplei{vargrid}}{\the\griddotsize}}% \newlet\gridpoints\grid \newlet\lattice\grid \newdef\gridlines{\mfp@simple{gridlines}}% \newdef\vgridlines{\mfp@simple{vgridlines}}% \newdef\hgridlines{\mfp@simple{hgridlines}}% \newdef\plrgrid{\mfp@simple{polargrid}}% \newdef\plrgridpoints{% \mfp@defaultopt{\mfp@simplei{polargridpoints}}{\the\griddotsize}}% \newdef\gridarcs{\mfp@simple{gridarcs}}% \newdef\gridrays{\mfp@simple{gridrays}}% \newdef\plrpatch{\mfp@simple{polarpatch}}% \newdef\vectorfield{% \mfp@defaultopt{\mfp@vectorfield{}}{\the\headlen}}% \newdef\plrvectorfield{% \mfp@defaultopt{\mfp@vectorfield{plr}}{\the\headlen}}% \newdef\point{\mfp@defaultopt\mfp@point{\the\pointsize}}% \newdef\plotsymbol{\mfp@defaultopt\mfp@plotsymbol{\the\pointsize}}% \newdef\plottext{\begingroup\mfp@resetwhitespace\mp@mksharpother \mfp@defaultopt\mfp@plottext{cc}}% \newdef\tile{\mfp@simple{tile}}% \newdef\endtile{\mfcmd{\@nl endtile}}% \newdef\patharr##1{\begingroup \mfsrc{hide(numeric ##1; path ##1[]; ##1 = 0)}% \def\mfp@storepath{\mfsrc{\@nl store (##1[incr ##1])}}% \setrender{}}% \newdef\endpatharr{\endgroup}% \newdef\connect{\mfp@figmac{begingroup; save mfpicnexus}% \patharr{mfpicnexus}}% \newdef\endconnect{\endpatharr \mfcmd{\@nl mkpoly (\mfp@F, mfpicnexus)\@nl endgroup}% \mfp@checklatexenv{connect}{\aftergroup\@mfpstarttrue}{}}% \newlet\piechart\mfppiechart \newdef\piewedge{\mfp@defaultopt\mfp@piewedge{d}}% \newlet\barchart\mfpbarchart \newlet\bargraph\barchart \newlet\histogram\barchart \newlet\gantt\barchart \newdef\chartbar##1{\mfp@figmac{chartbar[##1]}}% \newlet\graphbar\chartbar \newlet\histobar\chartbar \newlet\ganttbar\chartbar }% end \mfp@grafmacs \def\mfp@abc#1#2#3#4#5#6#7#8/{#6#3#1#2#6#7#6#4#5}% \@namedef{\mfp@abc STAGGER LEE/}{% \mfpic[20]{-2}{2}{-3}{3}% \tile{peter, 1pt, 10, 10, false}% \penwd{1pt}% \draw[(1,0,0)]\lines{(0,0), (5,5), (10,0)}% \pointcolor{(0,.8,0)}% \point[3pt]{(2.5,7.5)}% \endtile \draw\tess{peter}\gfill[(1,1,0)]\ellipse{(0,0),2,3}% \endmfpic}% \newdef\mfppiechart{\mfp@defaultopt\mfp@piechart{c}}% \newdef\mfpbarchart{\mfp@defaultopt\mfp@barchart{0,1,1}}% \newlet\mfpbargraph\mfpbarchart \newlet\mfphistogram\mfpbarchart \newlet\mfpgantt\mfpbarchart \newdef\mfp@arc{\mfp@switchtrue\mfp@defaultopt\mfp@arccircle{s}}% \newdef\arc@or@circle{\ifmfp@switch arc\else circle\fi}% \newdef\mfp@arccircle#1#2{% \@ifundefined{mfp@arc@#1}% {\Mfpic@warn{Invalid option; ignoring \mfp@b\arc@or@circle\space command.}% \mfp@figmac{fallbackpath(\ifmfp@switch\mfp@F\else\mfp@T\fi) (#2)}}% {\mfp@figmac{\arc@or@circle\@nameuse{mfp@arc@#1} (#2)}}}% \newdef\mfp@ellipse#1#2{\mfp@figmac{ellipse (#2, #1)}}% \newdef\mfp@pshcircle#1#2{\mfp@figmac{pshcircle (#1, #2)}}% \newdef\mfp@curve#1#2{\mfp@nullopt{\mfp@@curve{#1}{#2}}}% \newdef\mfp@@curve#1#2#3{% \mfp@listmac{\mfp@ifempty{#3}{#1}{t#1 (#3)} (#2)}}% \newdef\mfp@fcncurve#1{% \mfp@listmac{\mfp@ifempty{#1}{fcncurve}{functioncurve (#1)}}}% \newdef\mfp@fcn#1#2{% \mfp@defaultopt{\mfp@dotension{\mfp@@fcn{#1}}}{#2}}% \newdef\mfp@@fcn#1#2#3{% \mfp@figmac{\mfp@t#1 (\mfp@sval) (#2) (#3)}}% \newdef\mfp@btwn#1{% \mfp@defaultopt{\mfp@dotension{\mfp@@btwn{#1}}}p}% \newdef\mfp@@btwn#1#2#3#4{% \mfp@figmac{\mfp@t#1 (\mfp@sval) (#2) (#3) (#4)}}% \newdef\mfp@dotension#1#2{\mfp@@dotension#2\mfp@end#1}% \newdef\mfp@@dotension#1#2\mfp@end{\def\mfp@t{}% \if p#1\relax \let\mfp@sval\mfp@F \else \let\mfp@sval\mfp@T \mfp@ifexist{#2}{\def\mfp@t{t}\edef\mfp@sval{\mfp@sval, #2}}% \fi}% \newdef\mfp@plotdata#1{\mfp@processfile{\mfp@doplots{#1}}}% \newdef\mfp@doplots#1{\mfp@setstyle \advance\mfp@linetype1 \mfp@figmacbase \mfp@@datafile{#1}\mfp@ifenddata{}{\mfp@doplots{#1}}}% \newdef\mfp@ifenddata{% \ifeof\mfp@data \@xp\@firstoftwo \else \mfp@skipcomments \ifx\mfp@temp\mfp@par \@XP\@firstoftwo \else \@XP\@secondoftwo \fi \fi}% \newdef\mfp@datafile#1{% \mfp@figmacbase\mfp@processfile{\mfp@@datafile{#1}}}% \newdef\mfp@@datafile#1{% \mfp@ifempty{#1}% {\mfp@dodatafile\mfp@smoothness\mfp@tension}% {\mfp@dodatafile#1}\mfp@end}% \newdef\mfp@dodatafile#1#2\mfp@end{% \mfsrc{% \if s#1 \mfp@ifempty{#2}{curve }{tcurve (#2) }% \else polyline \fi (\mfp@F)}\mfp@rwdata}% \newdef\mfp@image#1#2{\mfsrc{\@nl makeimage (#2, #1)}}% \newdef\mfp@getdimens#1,#2,#3\mfp@end{% \mfp@scratch \@ifmtarg{#1}{\z@}{#1}\relax \edef\mfp@thedimens{\the\mfp@scratch}% \@ifmtarg{#3}{}{\mfp@scratch \@ifmtarg{#2}{\z@}{#2}\relax}% \edef\mfp@thedimens{\mfp@thedimens,\the\mfp@scratch}}% \newdef\mfp@doubledraw#1{% \mfp@nullopt{\mfp@clroptrendi{doubledraw}{#1}}}% \newdef\mfp@wiggle#1#2{\mfp@rendi{#1 (#2)}}% \newdef\mfp@rendi#1#2{\mfp@rendmac{#1 (#2)}}% \newdef\mfp@rendii#1#2#3{\mfp@rendmac{#1 (#3, #2)}}% \newdef\mfp@optrendi#1{\mfp@defaultopt{\mfp@rendi{#1}}}% \newdef\mfp@optrendii#1{\mfp@defaultopt{\mfp@rendii{#1}}}% \newdef\mfp@modi#1#2{\mfp@modmac{#1 (#2)}}% \newdef\mfp@listi#1#2{\mfp@listmac{#1 (#2)}}% \newdef\mfp@clropt#1#2{\mfp@ifempty{#1}{#2}{\mfp@C#2 (#1)}}% \newdef\mfp@clroptrend#1#2{\mfp@rendmac{\mfp@clropt{#2}{#1}}}% \newdef\mfp@clroptrendi#1#2#3{\mfp@rendmac{\mfp@clropt{#3}{#1} (#2)}}% \newdef\mfp@simple#1#2{\mfcmd{\@nl #1 (#2)}}% \newdef\mfp@simplei#1#2#3{\mfcmd{\@nl #1 (#2, #3)}}% \newdef\mfp@close#1#2{\mfp@modmac{#1closed\mfp@ifexist{#2}{t (#2)}}}% \newdef\mfp@thatch#1{\mfp@nullopt{\mfp@clroptrendi{thatch}{#1}}}% \newdef\mfp@lhatch#1{\mfp@thatch{#1,-45}}% \newdef\mfp@rhatch#1{\mfp@thatch{#1,45}}% \newdef\mfp@xhatch#1{\mfp@nullopt{\mfp@clroptrendi{xhatch}{#1}}}% \newdef\mfp@arrowhead#1#2{\mfp@arr 0{Gheadpath (#1) (#2)}}% \newdef\mfp@arrow#1{\mfp@arr 0{headpath#1}}% \newdef\mfp@arr#1#2{\mfp@arr@c{}\mfp@arr@l{\the\headlen}% \mfp@arr@b{#1}\edef\mfp@hcommand{#2}\mfp@arr@r{0}\mfp@@arr}% \newdef\mfp@@arr{\@ifnextchar[{\mfp@arropt}{\mfp@doarrow}}% \newdef\mfp@arropt[#1]{% \mfp@ifexist{#1}{\mfp@@arropt#1\mfp@end}\mfp@@arr}% \newdef\mfp@@arropt#1#2\mfp@end{% \mfp@ifempty{#2}% {\Mfpic@warn{Arrow option #1 has no value\on@line; it will be ignored.}}% {\@ifundefined{mfp@arr@#1}% {\Mfpic@warn{Arrow option #1 invalid \on@line; it will be ignored}}% {\@nameuse{mfp@arr@#1}{#2}}% }}% \newdef\mfp@doarrow{% \mfp@addmac{\mfp@clropt{\mfp@hcolour}{\mfp@hcommand} (\mfp@hlength, \mfp@hrotate, \mfp@hlocate)}}% \newdef\mfp@turn#1#2{\rotatearound{#1}{#2}}% \newdef\mfp@axis#1#2{\mfp@getaxis#2{(none)}\mfp@end\axis \mfp@addmac{headpath (\mfp@emptysub{#1}{\mfp@defheadlen}, 0, 0)}% \axisline{\mfp@axisletter}}% \newdef\mfp@doaxes#1#2{\def\mfp@@axis##1{\mfp@axis{#1}{##1}\mfp@@doaxis}% \mfp@@doaxis#2\mfp@end}% \newdef\mfp@@doaxis{\mfp@ifend{}\mfp@@axis}% \newdef\mfp@marks#1#2{\mfsrc{\@nl #1marks (#2)}\mfp@writedata}% \newdef\mfp@vectorfield#1#2#3#4#5{% \mfcmd{#1vectorfield (#2, #3) (#4) (#5)}}% \newdef\mfp@point#1{% \mfsrc{\@nl pointd (#1, \ifpointfill\mfp@T\else\mfp@F\fi)}% \mfp@writedata}% \newdef\mfp@plotsymbol#1#2{% \mfsrc{\@nl plotsymbol (#2, #1)}\mfp@writedata}% \newdef\mfp@plottext#1#2#3{\tlabeljustify{#1}% \def\tl@points{#3}\mfp@toks{#2}\mfp@thelabel\endgroup}% \newdef\mfp@piechart#1{\mfp@@piechart#1\mfp@end}% \newdef\mfp@@piechart#1#2\mfp@end#3{% #3 = center,radius \mfsrc{\@nl piechart(\if a#1 \else-\fi1, % \mfp@emptysub{#2}{90}, #3)}\mfp@writedata}% \newdef\mfp@piewedge#1{\mfp@@piewedge#1\mfp@end}% \newdef\mfp@@piewedge#1#2\mfp@end#3{% #3=number \mfp@figmac{(piewedge[#3]% \mfp@ifexist{#2}% {\if #1x shifted (#2*piedirection[#3])% \else\if #1s shifted (#2)% \else\if #1m shifted (#2 - piecenter)% \fi\fi\fi})}}% \newdef\mfp@barchart#1#2{% \mfsrc{\@nl barchart (#1, \if h#2\mfp@F\else\mfp@T\fi)}% \mfp@writedata}% \newdef\everymfpic{\afterassignment\@everymfpic\mfp@toks}% \newdef\everyendmfpic{\afterassignment\@everyendmfpic\mfp@toks}% \newdef\@everymfpic{\edef\every@mfpic{\the\mfp@toks}}% \newdef\@everyendmfpic{\edef\every@endmfpic{\the\mfp@toks}}% \everymfpic{}\everyendmfpic{}% \newdef\mfpic{\mfp@defaultopt\@mfpicA{1}}% \newdef\@mfpicA#1{\mfp@defaultopt{\@mfpic{#1}}{#1}}% \newdef\@mfpic#1#2#3#4#5#6{% \save@mfpicdimens \begingroup % ended near end of \endmfpic \@mfpicunit\mfpicunit \@nameuse{@safe@activestrue}% \mfp@ifopengraphsfile{}% {\ifmfp@nowrite\else \mfp@nooutput@error\mfpic \def\mfp@src##1##2{\endgroup}% \fi}% \mfp@DBlog{Starting mfpic \number\mfp@count \on@line.}% \@xp\let\@xp\@tcurr\the\font \let\ifin@mfpicenv\iftrue \let\par\@empty \nullfont \mfp@grafmacs \mfp@additions \edef\xfactor{#1}\edef\yfactor{#2}% \edef\xmin{#3}\edef\xmax{#4}\edef\ymin{#5}\edef\ymax{#6}% \mfp@setconv \mfp@inittlabels \@xconv\xmax\@graphright \@yconv\ymax\@graphtop \@graphleft 0pt \@graphbot 0pt \mfsrc{\@nl \mfp@p\mfp@d\mfp@d<\number\mfp@count>\@nl unitlen := \the\@mfpicunit\mfp@s;\@nl xscale := #1; yscale := #2;\@nl bounds (#3, #4, #5, #6);\@nl \@nl beginmfpic(\number\mfp@count); \mfp@p\space\mfp@lineno. \mfp@ifmpost {\@nl verbatimtex \relax \bgroup\font\noexpand\MFPcfont=\fontname\@tcurr\relax etex;}{}}% \newdef\tlabel{\mfp@nullopt\mfp@label}% \newdef\startbacktext{\let\mfp@restoreOL\@empty \mfp@ifmpost {\ifmfp@overlabels \let\mfp@restoreOL\overlaylabels\nooverlaylabels \fi \setmfboolean{underlaylabels}{\mfp@T}}{}% \setbox\@wholegraph \box\@alltlabels \setbox\@alltlabels \vbox{\hbox{}}}% \newdef\stopbacktext{% \setbox\@backtext \box\@alltlabels \setbox\@alltlabels\box\@wholegraph \mfp@ifmpost{\setmfboolean{underlaylabels}{\mfp@F}}{}% \mfp@restoreOL}% \newdef\tlabelrect{\mfp@labelpath{rect}{0}}% \newdef\tlabeloval{\mfp@labelpath{oval}{1}}% \newdef\tlabelellipse{\mfp@labelpath{ellipse}{1}}% \newdef\tlabelcircle{% \mfp@iftoken*{\tlabelellipse*[1]}{\tlabelellipse[1]}}% \newdef\tlabels{\begingroup \mfp@resetwhitespace\mp@mksharpother \mfp@labels}% \newlet\axislabels\mfp@axislabels \let\mfp@docaption\@empty \newdef\tcaption{\mfp@defaultopt\mfp@caption{1.2,1.0}}% \every@mfpic}% End of \@mfpic \newdef\mfp@setconv{% \def\@xconv##1##2{% ##1 = coord. ##2 = dimension register or fdim {\mfp@scratch=##1\@mfpicunit \advance\mfp@scratch by -\xmin\@mfpicunit \mfp@scratch=\xfactor\mfp@scratch \global ##2=\mfp@scratch}}% \def\@yconv##1##2{% ditto {\mfp@scratch=##1\@mfpicunit \advance\mfp@scratch by -\ymin\@mfpicunit \mfp@scratch=\yfactor\mfp@scratch \global ##2=\mfp@scratch}}}% \newdef\mfp@inittlabels{% \setbox\@alltlabels\vbox{\hbox{}}% \setbox\@backtext\vbox{\hbox{}}% \@tlabelsbot \maxdimen \@tlabelstop -\maxdimen \@tlabelsleft \maxdimen}% \newdef\mfp@label#1{\begingroup\mfp@resetwhitespace\mp@mksharpother \tlabeljustify{#1}\@ifnextchar({\mfp@label@}{\mfp@label@@}}% \newdef\mfp@label@(#1,#2){\mfp@label@@{(#1,#2)}}% \newdef\mfp@label@@#1#2{\def\tl@points{#1}\mfp@toks{#2}\mfp@thelabel \endgroup\extra@endtlabel}% \newdef\mfp@thelabel{\@ifmplabels\mp@tlabel\tex@tlabel}% \newdef\mfp@btex#1{btex \noexpand\MFPtext{#1} etex}% \newdef\mfp@setMPpos{% \edef\mfp@MPpos{% \ifcase\tl@hpos .5\or 1\else 0\fi, % horizontal \ifcase\tl@vpos0\or .5\or 1\else 0\fi, % vertical \ifnum \tl@vpos<0 \mfp@T\else\mfp@F\fi, % true=Baseline \mfp@emptysub{\tl@rot}{0}}}% \newdef\mp@tlabel{\mfp@setMPpos \mfcmd{\@nl newgblabel(\mfp@MPpos)(\mfp@btex{\the\mfp@toks})\@nl (\tl@points)}}% \newdef\set@textbox#1{% \setbox\@textbox\vbox{\def\\{\cr}\mfp@restorepar \@tcurr\@nameuse{@safe@activesfalse}\every@tlabel \halign{##\hfil\cr#1\crcr}}}% \newdef\tex@tlabel{\@xp\@textlabel\tl@points\mfp@end}% \newdef\@textlabel{\mfp@ifendorcomma{}\@textlabel\@@textlabel}% \newdef\@@textlabel(#1,#2){\tex@@tlabel{#1}{#2}\@textlabel}% \newdef\tex@@tlabel#1#2{% \set@textbox{\the\mfp@toks}% \mfp@scratch\tb@ht \advance\mfp@scratch\tb@dp \tb@totalht\mfp@scratch \@xconv{#1}\mfp@scratch \begingroup \ifcase\tl@hpos \advance\mfp@scratch -0.5\tb@wd % center \or \advance\mfp@scratch -\tb@wd % right \advance\mfp@scratch -\tlabel@sep \else \advance\mfp@scratch \tlabel@sep % left (default) \fi \advance\mfp@scratch \tlabel@hadj \ifdim \mfp@scratch<\@tlabelsleft \@tlabelsleft\mfp@scratch \fi \tb@moveright\mfp@scratch \endgroup \@yconv{#2}\mfp@scratch \begingroup \ifcase\tl@vpos \advance\mfp@scratch \tb@totalht % bottom \advance\mfp@scratch \tlabel@sep \or \advance\mfp@scratch 0.5\tb@totalht % center \or \advance\mfp@scratch -\tlabel@sep % top \else \advance\mfp@scratch \tb@ht % baseline (default) \fi \advance\mfp@scratch \tlabel@vadj \ifdim \mfp@scratch>\@tlabelstop \@tlabelstop\mfp@scratch \fi \tb@raise\mfp@scratch \endgroup \begingroup \ifcase\tl@vpos \advance\mfp@scratch \tlabel@sep % bottom \or \advance\mfp@scratch -0.5\tb@totalht % center \or \advance\mfp@scratch -\tb@totalht % top \advance\mfp@scratch -\tlabel@sep \else \advance\mfp@scratch -\tb@dp % baseline (default) \fi \advance\mfp@scratch \tlabel@vadj \ifdim \mfp@scratch<\@tlabelsbot \@tlabelsbot\mfp@scratch \fi \endgroup \global \setbox\@alltlabels \vtop{\unvbox\@alltlabels \vbox to 0pt{\kern-\tb@raise \hbox{\kern\tb@moveright\box\@textbox}\vss}}% }% End \tex@@tlabel \newdef\mfp@labels#1{\let\extra@endtlabel\mfp@dolabel \mfp@dolabel#1\mfp@end}% \newdef\mfp@dolabel{\mfp@ifend\endgroup\tlabel}% \newdef\mfp@labelpath#1#2{\mfp@figmacbase \begingroup % ended in \tlabelpath@ \def\mfp@name{#1}\def\mfp@param{#2}% \mfp@ifstar\mfp@tlpath\mfp@switchtrue\mfp@switchfalse}% \newdef\mfp@tlpath#1{#1\mfp@defaultopt\mfp@@tlpath\mfp@param}% \newdef\mfp@@tlpath#1{\edef\mfp@param{#1}% \mfp@defaultopt\mfp@tlpath@{\tlpath@v\tlpath@h\tlpath@r}}% \newdef\mfp@tlpath@#1{\mfp@resetwhitespace\mp@mksharpother \tlabeljustify{#1}\@ifnextchar({\@tlabelpath}{\@@tlabelpath}}% \newdef\@tlabelpath(#1,#2){\@@tlabelpath{(#1,#2)}}% \newdef\@@tlabelpath#1#2{% \def\tl@points{#1}\mfp@toks{#2}\tlabelpath@}% \newdef\tlabelpath@{\@ifmplabels{}{\measure@textbox{\the\mfp@toks}}% \mfp@setMPpos \mfcmd{text\mfp@name x (\mfp@MPpos)\@nl (\@ifmplabels{origin, \mfp@btex{\the\mfp@toks}}{\tb@ll, \tb@ur}, \mfp@param) (\tl@points)}% \ifmfp@switch\else \mfp@thelabel\fi \endgroup}% \newdef\measure@textbox#1{\set@textbox{#1}% \mfp@scratch-\tb@dp \edef\tb@ll{(0, \the\mfp@scratch)}% \edef\tb@ur{(\the\tb@wd, \the\tb@ht)}}% \newdef\mfp@axislabels#1{% \begingroup % ended in \mfp@(@)doaxislabel \mfp@resetwhitespace \tl@vpos1 \tl@hpos0 \let\mfp@xcoord\@firstofone \let\mfp@ycoord\@firstofone \mfp@getaxis#1\relax\mfp@end\axislabels \ifcase\mfp@axisnum\relax \tl@vpos2 \def\mfp@ycoord{0}\or \tl@hpos1 \def\mfp@xcoord{0}\or \tl@hpos1\edef\mfp@xcoord{\mfp@lshift}% \mfpaddto\mfp@xcoord\xmin\or \tl@vpos2\edef\mfp@ycoord{\mfp@bshift}% \mfpaddto\mfp@ycoord\ymin\or \tl@hpos-1 \edef\mfp@xcoord{-\mfp@rshift}% \mfpaddto\mfp@xcoord\xmax\or \tl@vpos0 \edef\mfp@ycoord{-\mfp@tshift}% \mfpaddto\mfp@ycoord\ymax \fi \ifx\@firstofone\mfp@xcoord \edef\mfp@ycoord##1{\mfp@ycoord}% \else \edef\mfp@xcoord##1{\mfp@xcoord}% \fi \mp@mksharpother\mfp@nullopt\mfp@@axislabels}% \newdef\mfp@@axislabels#1#2{% \tlabeljustify{#1}\mfp@doaxislabel#2,\mfp@end}% \newdef\mfp@doaxislabel{% \mfp@ifendorcomma\endgroup\mfp@doaxislabel\mfp@@doaxislabel}% \newdef\mfp@@doaxislabel#1{\mfp@toks{#1}% \mfp@ifendorcomma\endgroup\mfp@doaxislabel\mfp@mkaxislabel}% \newdef\mfp@mkaxislabel#1,{% \@ifmtarg{#1}{}% {\edef\tl@points{(\mfp@xcoord{#1},\mfp@ycoord{#1})}\mfp@thelabel}% \mfp@doaxislabel}% \newdef\mfp@caption#1{\begingroup\mfp@resetwhitespace \mfp@@caption#1\mfp@end}% \long\def\mfp@@caption#1,#2\mfp@end#3{\endgroup \def\mfp@docaption{% \setbox\@textbox \hbox{\def\\{\hskip\@M\p@\let\\\relax}\mfp@restorepar \@nameuse{@safe@activesfalse}\@tcurr#3}% \mfp@scratch\wd\@wholegraph \ifdim\tb@wd>#1\mfp@scratch \setbox\@textbox \hbox{% \vbox{% \hsize#2\mfp@scratch \mfp@restorepar \leftskip0pt \rightskip0pt \mfp@capsettings \@nameuse{@safe@activesfalse}\noindent\@tcurr #3% }% End vbox. }% End hbox. \fi \ifdim \mfp@scratch<\tb@wd \mfp@scratch\tb@wd \fi \global\setbox\@wholegraph \vbox{\hbox to \mfp@scratch{\hss\box\@wholegraph\hss}% \nointerlineskip \vskip\mfpiccaptionskip \hbox to \mfp@scratch{\hss\box\@textbox\hss}}% End vbox. }% End \mfp@docaption. }% End \mfp@@caption. \def\mfp@adjustdim#1#2#3#4{% \mfp@scratch#1\relax \advance\mfp@scratch-#4 bp \ifdim\mfp@scratch#2#3\relax #3\mfp@scratch \fi #1\mfp@scratch}% \mfp@DBlog{Definition of closure of mfpic environment.}% \newdef\endmfpic{\every@endmfpic \mfsrc{\mfp@ifmpost{\@nl verbatimtex \relax\egroup\space etex;}{}\@nl endmfpic; \mfp@p\space(\number\mfp@count) \mfp@lineno.\@nl \mfp@p\mfp@d\mfp@d\mfp@d\@nl}% \ifmfpicdebug\wlog{}\wlog{Mfpic: ENTERED endmfpic.}\wlog{}\fi \ifmfp@noship \else \global\setbox\@wholegraph \vbox{% \ifmfpicdraft \vbox to \@graphtop{\vss \hbox to \@graphright{% \kern2pt \mfpdraftfont\#\number\mfp@count\hss}% \kern2pt}% \else \mfp@ifmpost{\vbox}{\vbox to \@graphtop}% {\vss \edef\@graphfilename{% \setfilename\mfp@filename{\number\mfp@count}}% \mfp@ifmpost {\IfFileExists{\@graphfilename}{}% {\Mfpic@msg{No graph file: \@graphfilename\space.}% \let\@setmfpicgraphic\nofile@setmfpgraphic}% \hbox}% {\hbox to \@graphright}% {\@xp\@setmfpicgraphic\@xp{\@graphfilename}\hss}% \kern0pt }% End vbox \fi }%% End \setbox\@wholegraph \vbox \mfp@ifmpost {\@graphright\wd\@wholegraph \@graphtop\ht\@wholegraph}{}% \ifmfpicdebug \wlog{Mfpic debug: Dimensions of wholegraph before labels are added, and before truebbox adjustments:}% \wlog{Mfpic: graphleft = \the\@graphleft}% \wlog{Mfpic: graphright = \the\@graphright}% \wlog{Mfpic: graphtop = \the\@graphtop}% \wlog{Mfpic: graphbot = \the\@graphbot}% \wlog{Mfpic: graphwd = \the\wd\@wholegraph}% \wlog{Mfpic: graphht = \the\ht\@wholegraph}% \wlog{Mfpic: graphdp = \the\dp\@wholegraph}% \wlog{}% \fi \ifmfpicdebug \wlog{Mfpic debug: Dimensions of alltlabels, before truebbox adjustments:}% \mfp@scratch\mfpicllx bp\relax \wlog{Mfpic: mfpicllx = \the\mfp@scratch}% \mfp@scratch\mfpiclly bp\relax \wlog{Mfpic: mfpiclly = \the\mfp@scratch}% \wlog{Mfpic: tlabelsleft = \the\@tlabelsleft}% \wlog{Mfpic: tlabelstop = \the\@tlabelstop}% \wlog{Mfpic: tlabelsbot = \the\@tlabelsbot}% \wlog{}% \fi \ifdim\@tlabelsleft < \maxdimen \setbox\@alltlabels\vtop to 0pt{% \kern \mfpiclly bp \moveleft \mfpicllx bp \box\@alltlabels\vss}% \setbox\@backtext \vtop to 0pt{% \kern \mfpiclly bp \moveleft \mfpicllx bp \box\@backtext \vss}% \mfp@adjustdim\@tlabelsleft <\@graphleft \mfpicllx \mfp@adjustdim\@tlabelstop >\@graphtop \mfpiclly \mfp@adjustdim\@tlabelsbot <\@graphbot \mfpiclly \ifmfpicdraft\else \setbox\@wholegraph \vtop{\offinterlineskip \box\@backtext\kern-\ht\@wholegraph \unvbox\@wholegraph\box\@alltlabels}% \fi \fi \ifmfpicdebug \wlog{Mfpic debug: Dimensions of alltlabels after truebbox adjustments:}% \wlog{Mfpic: tlabelsleft = \the\@tlabelsleft}% \wlog{Mfpic: tlabelstop = \the\@tlabelstop}% \wlog{Mfpic: tlabelsbot = \the\@tlabelsbot}% \wlog{}% \fi \mfp@scratch\@graphtop \advance\mfp@scratch by -\@graphbot \global \setbox\@wholegraph \vbox to \mfp@scratch{\vss \hbox{\kern-\@graphleft\box\@wholegraph}% \kern-\@graphbot}% End vbox. \ifmfpicdebug \wlog{Mfpic debug: Dimensions of wholegraph after labels are added:}% \wlog{Mfpic: graphleft = \the\@graphleft}% \wlog{Mfpic: graphright = \the\@graphright}% \wlog{Mfpic: graphtop = \the\@graphtop}% \wlog{Mfpic: graphbot = \the\@graphbot}% \wlog{Mfpic: graphwd = \the\wd\@wholegraph}% \wlog{Mfpic: graphht = \the\ht\@wholegraph}% \wlog{Mfpic: graphdp = \the\dp\@wholegraph}% \wlog{}% \fi \mfp@docaption \ifmfpicdebug \wlog{Mfpic debug: Values after tcaption added:}% \wlog{Mfpic: graphleft = \the\@graphleft}% \wlog{Mfpic: graphright = \the\@graphright}% \wlog{Mfpic: graphtop = \the\@graphtop}% \wlog{Mfpic: graphbot = \the\@graphbot}% \wlog{Mfpic: graphwd = \the\wd\@wholegraph}% \wlog{Mfpic: graphht = \the\ht\@wholegraph}% \wlog{Mfpic: graphdp = \the\dp\@wholegraph}% \wlog{}% \fi \global\mfpicheight\ht\@wholegraph \global\mfpicwidth\wd\@wholegraph \ifmfpicdraft \setbox\@wholegraph \hbox{\@mfpframed{-\mfpframethickness}{\box\@wholegraph}}% \fi \global\setbox\@wholegraph\box\@wholegraph \global \advance\mfp@count1 \fi % \ifmfp@noship \endgroup % Begun near start of \@mfpic \ifmfp@noship \else \mfp@ifdefined\s@vemfpic {\global\setbox\s@vemfpic\box\@wholegraph}% {\leavevmode\box\@wholegraph}% \global\let\s@vemfpic\UndEfInEd \fi \restore@mfpicdimens \mfp@checklatexenv{mfpic}{\@ignoretrue}{}% \global\let\in@mfpicenv\iffalse \ignorespaces }% endmfpic \ifmfp@latex \newdef\mfp@checklatexenv#1#2#3{% \def\mfp@tempa{#1}\ifx\mfp@tempa\@currenvir #2\else #3\fi}% \else \newdef\mfp@checklatexenv#1#2#3{#3}% \fi \ifmfp@latex \newlet\newsavepic\newsavebox \else \newdef\newsavepic#1{% \mfp@ifdefined{#1}% {\mfp@errmsg{Command \string #1 already defined}% {You have used \newsavepic with an already defined or an^^J% improper control sequence. Replace #1 with another name.^^J% If you proceed, \newsavepic will be ignored.}}% {\@nameuse{newbox}#1}}% \fi \newlet\newpic\newsavepic \newdef\savepic#1{\relax \mfp@ifdefined{#1}{\gdef\s@vemfpic{#1}}% {\mfp@errmsg{Box \string#1 undefined}% {You tried to save a picture in a box which had not been^^J% previously allocated. Use \newsavepic to allocate a box.}}}% \newdef\usepic#1{\leavevmode \copy#1\relax}% \newdef\mfpframed{\mfp@defaultopt\@mfpframed\mfpframesep}% \newdef\mfpframe{\mfp@defaultopt\@mfpframe\mfpframesep}% \newdef\@mfpframed#1#2{\@mfpframe{#1}#2\endmfpframe}% \newdef\@mfpframe#1{% \leavevmode\hbox\bgroup \mfpframesep#1\relax \vrule width\mfpframethickness \vtop\bgroup \vbox\bgroup \hrule height\mfpframethickness \kern\mfpframesep \hbox\bgroup \kern\mfpframesep \ignorespaces}% \newdef\endmfpframe{\unskip \kern\mfpframesep \egroup % end hbox \egroup % end vbox \kern\mfpframesep \hrule height\mfpframethickness \egroup % end vtop \vrule width\mfpframethickness \egroup}% end hbox \mfp@ifdefined\framed{}{\let\framed\mfpframed}% \def\mfpverbtex{\futurelet\mfp@next\@mfpverbtex}% \def\@mfpverbtex{% \begingroup \@makeother\#\@makeother\%\mfp@keeplines \afterassignment\mfp@writetex\global\mfp@toks}% \newif\ifmfp@verbtex \def\mfp@writetex{% \endgroup \mfp@ifopengraphsfile {\mfp@ifmpost {\mfcmd{verbatimtex\@nl\the\mfp@toks\@nl\mfp@p\@nl etex}}% {\mfp@noMP@error\mfpverbtex}% \global\mfp@verbtexfalse\global\mfp@verbtex{}}% {\edef\mfp@tempa{\the\mfp@verbtex\the\mfp@toks}% \global\mfp@verbtex\@xp{\mfp@tempa}% \global\mfp@verbtextrue}}% \mfpicnumber{1}% \InputIfFileExists{mfppatch.tex}{}{}% \mfp@ifdefined\mfpdraftfont{}{\newdef\mfpdraftfont{\tt}}% \mfp@DBlog{Punctuation, etc., will revert to old catcodes now.}% \let\+\mfpsaveplus \mfp@restoreALL% \InputIfFileExists{mfpic.usr}{}{}% \endinput %% %% End of file `mfpic.tex'.