% This is a modification of mproof.tex (as found on CTAN in % /systems/knuth/local/lib). The name was changed to mpsproof.tex % to honor the license restrictions. % %%%% These are the comments of the original mproof.tex: %% To produce proof sheets from MetaPost output (includes date and time): %% tex mproof %%%% % % In contrast, mpsproof allows either pdftex or ordinary tex to be used: % % [pdf]tex mpsproof [\noheaders] % % Examples: pdftex mpsproof figur.1 figur.2 % tex mpsproof \noheaders figur.1 figur.2 figur.3 % % With \noheaders, the filenames, datestamp and page numbers are omitted. % Using mpsproof one can also produce encapsulated output: % % [pdf]tex mpsproof \encapsulate % % Examples: pdftex mpsproof \encapsulate figur.1 % tex mpsproof \encapsulate figur.3 % % "Encapsulated" means that the pdf output (or the .ps resulting from % dvips mpsproof.dvi), has the same "bounding box" as the MetaPost figure. % Actually, it produces a file whose *page size* is the same as that % bounding box. The shorthand \bbox can be used in place of % \encapsulate. % % If pdftex is used and \pdfoutput = 1, the result will be a pdf file, % otherwise the result is a dvi file containing dvips graphics \specials. % % Limitations: the production of pdf requires supp-pdf.tex and the % macros therein use up TeX's memory. The specific portion that is used % is the "save_size". A lot of short paths is no problem, but a single % long path might exceed the limits on your system. On most systems the % limit can be increased by editing texmf.cnf. % % Placed in the public domain by Daniel H. Luecking. % % Change HISTORY: % 2003/04/08 -- Original release % 2004/05/02 -- Allow "_" in filenames. % 2004/05/07 -- Added the \noheaders option. % 2005/10/07 -- Sanitize the filename (\meaning) % 2006/04/06 -- Encapsulation added % 2006/06/30 -- Better documentation (the above comments) % 2008/11/11 -- Make dvi output identical to mproof.tex % 2010/10/13 -- Added \bbox (short for \encapsulate) % % Test for pdf: \newif\ifpdf \pdffalse \ifx\pdfoutput\undefined \else\ifx\pdfoutput\relax \else\ifnum\pdfoutput<1 \else \pdftrue \fi\fi\fi % Graphic inclusion macros: \ifpdf \input supp-pdf \def\includemps#1{\convertMPtoPDF{#1}{1}{1}} \def\MPSpresets{\pdfoutput=1 \pdfcompresslevel=9 \chardef\makeMPintoPDFobject=1\relax} \def\encapspecial{\pdfpageheight=\ht0 \pdfpagewidth=\wd0} \else \input epsf \def\includemps#1{\epsfverbosetrue\epsfbox{#1}} \def\MPSpresets{} \def\encapspecial{\special{papersize=\the\wd0,\the\ht0}} \fi \let\EA\expandafter \def\EAEAEA{\EA\EA\EA} \def\processMPfile{% \MPSpresets \hsize=100in \vsize=\hsize \hoffset=-1in \voffset=\hoffset \topskip=0pt \setbox0=\vbox{\hbox{\EA\includemps\EA{\theMPfile}}}% \ifdim\wd0<1in \message{[warning: width<1in]}\fi \ifdim\ht0<1in \message{[warning: height<1in]}\fi \encapspecial \box0 \end} % To omit printing of files name, page numbers and date stamp: \newif\ifheaders\headerstrue \def\noheaders{\headersfalse} % produce output with same bounding box: \newif\ifencapsulate \def\encapsulate{\noheaders\encapsulatetrue} \let\bbox\encapsulate \def\maybeprint#1{\ifheaders#1\fi} \def\stripprefix#1>{} \font\textt=cmtex10 \textt \def\okbreak{\vfil\penalty2000\vfilneg} \def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} \newcount\m \newcount\n \n=\time \divide\n 60 \m=-\n \multiply\m 60 \advance\m \time \def\hours{\twodigits\n\twodigits\m} \def\twodigits#1{\ifnum #1<10 0\fi \number#1} \footline={\ifheaders\sevenrm\today\ at \hours\hss\tenrm\folio\hss\fi} % DHL - \convertMPtoPDF redefines \\, so we replace it with \?. \def\endit{\?} \def\munch#1 {\def\theMPfile{#1}% \ifx\theMPfile\endit \EA\endit \else % sanitize the filename: \edef\theMPfile{\EA\stripprefix\meaning\theMPfile}% \ifencapsulate \EAEAEA\processMPfile \else \leavevmode\maybeprint\theMPfile $$\EA\includemps\EA{\theMPfile}$$\par\okbreak% \fi \fi\munch} \def\?{\let\munch=\relax\def\?{}} % Encapsulation requires no indentation. \everypar{{\ifencapsulate\setbox0=\lastbox\fi}\everypar{}\relax\munchline} % We need the space before \? to ensure that it doesn't end up % in a filename. \obeylines\def\munchline#1 {\catcode`\^^M=5 \munch#1 \? \vfill\end}%