From 0d9de0fdcbe9d6f215c9341651d5b6033d7c673e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 6 Mar 2011 00:56:59 +0000 Subject: new latex/mpost package mpgraphics (5mar11) git-svn-id: svn://tug.org/texlive/trunk@21613 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/mpgraphics/mpgraphics.sty | 389 +++++++++++++++++++++ 1 file changed, 389 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/mpgraphics/mpgraphics.sty (limited to 'Master/texmf-dist/tex/latex/mpgraphics') diff --git a/Master/texmf-dist/tex/latex/mpgraphics/mpgraphics.sty b/Master/texmf-dist/tex/latex/mpgraphics/mpgraphics.sty new file mode 100644 index 00000000000..aeebefc742a --- /dev/null +++ b/Master/texmf-dist/tex/latex/mpgraphics/mpgraphics.sty @@ -0,0 +1,389 @@ +%% +%% This is file `mpgraphics.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% mpgraphics.dtx (with options: `mpgraphics.sty') +%% +%% ______________________________________ +%% Copyright © 2011 Vafa Khalighi +%% +%% License information appended. +%% +%% +\NeedsTeXFormat{LaTeX2e} +\newcommand{\mpgraphics@date}{2011/07/25} +\newcommand{\mpgraphics@version}{v0.1} +\newcommand{\mpgraphics@commit}{commit 3} +\ProvidesPackage{mpgraphics}[\mpgraphics@date\space \mpgraphics@version\space <\mpgraphics@commit> +inline and display metapost figures in LaTeX] +\newcommand{\mpg@graphicsextension}{\ifPDFTeX\ifpdf pdf\else eps\fi\else\ifXeTeX pdf\fi\fi} +\newcommand{\mpg@graphicsformatname}{\ifPDFTeX\ifpdf PDF\else EPS\fi\else\ifXeTeX PDF\fi\fi} +\newcommand{\mpg@formatname}{\ifPDFTeX\ifpdf pdflatex\else latex\fi\else\ifXeTeX xelatex\fi\fi} +\RequirePackage{graphicx,color,moreverb,xkeyval,ifplatform,iftex,ifpdf} +\newif\if@mpg@debug\@mpg@debugfalse +\expandafter\newif\csname if@mpg@no@\mpg@graphicsextension\endcsname +\newif\if@mpg@noprocess \@mpg@noprocessfalse +\newif\if@mpg@On +\DeclareOptionX{metapost}{% + \def\mpg@metapost@opts{% + -tex=latex + -jobname="\mpgfigname" + -interaction=batchmode + #1}} +\DeclareOptionX{epstopdf}{\def\mpg@epstopdf@opts{#1}} +\define@choicekey{mpgraphics.sty}{compilation}[\@tempa\@tempb]{on,off}{% + \ifcase\@tempb\relax + \@mpg@Ontrue + \or + \@mpg@Onfalse + \fi} +\define@choicekey{mpgraphics.sty}{debug}[\@tempa\@tempb]{on,off}{% + \ifcase\@tempb\relax + \@mpg@debugtrue + \or + \@mpg@debugfalse + \fi} +\newcounter{mpg@runs} +\DeclareOptionX{runs}{% + \setcounter{mpg@runs}{#1}% support calc + \ifnum\c@mpg@runs > \z@ + \else + \mpg@PackageWarning{The number of runs must be at least one.}% + \c@mpg@runs\@ne + \fi} +\newcommand{\mpgOff}{\@mpg@Onfalse} +\newcommand{\mpgOn}{\@mpg@Ontrue} +\ExecuteOptionsX{% + metapost={},% + epstopdf={},% + compilation=on,% + debug=off,% + runs=1% +} +\ProcessOptionsX +\def\mpg@exe{\immediate\write18} +\def\OnlyIfFileExists#1#2{\IfFileExists{#1}{#2}{}} +\def\NotIfFileExists#1#2{\IfFileExists{#1}{}{#2}} +\def\mpg@convert#1#2#3{% + \OnlyIfFileExists{#2}{% + \mpg@exe{\csname mpg@cmd@#1\endcsname{#2}{#3}}% + \NotIfFileExists{#3}{\mpg@Warning{Creation of #3 failed.}}}} +\def\mpg@cmd@metapost#1#2{mpost \mpg@metapost@opts\space + "\unexpanded{\input} #1"} +\def\mpg@cmd@extrametapost#1#2{mpost \mpg@metapost@opts\space + "\unexpanded{\input} #1"} +\def\mpg@cmd@epstopdf#1#2{epstopdf \mpg@epstopdf@opts\space -o "#2" "#1"} +\def\mpg@nl{^^J\space\space\space\space} +\newcommand\mpg@PackageError[2]{% + \PackageError{mpgraphics}{\mpg@nl #1^^J}{#2}} +\newcommand\mpg@Warning[2]{\if@mpg@debug\PackageWarning{#1}{#2}\fi} +\newcommand\mpg@PackageWarning[1]{% + \PackageWarning{mpgraphics}{\mpg@nl #1^^JThis warning occured}} +\newcommand\mpg@WarningNoLine[2]{\if@mpg@debug\PackageWarningNoLine{#1}{#2}\fi} +\ifshellescape + \PackageWarningNoLine{mpgraphics} + {****************************************\MessageBreak + Using \csname write\endcsname18 capability \MessageBreak + for producing \mpg@graphicsformatname-figures. \MessageBreak + ****************************************} +\else + \mpg@PackageError{% + "shell escape" (or "write18") is not enabled;\mpg@nl + mpgraphics will not work!} + {You need to run "\mpg@formatname\space -shell-escape"\mpg@nl + on your LaTeX document Or turn compilation off} +\fi +\newenvironment{mpdefs}{\MPDEFSverbatimwrite{mpdefs.mp}} + {\endMPDEFSverbatimwrite} +\newenvironment{ltxpreamble}{\verbatimwrite{ltxpreamble.ltx}} + {\endverbatimwrite} +\newcommand{\mpgfigname}{\jobname-fig\thempgfig} +\def\MPGverbatimwrite#1{% + \@bsphack + \immediate\openout \verbatim@out #1 + \BeforeMPGStream% + \let\do\@makeother\dospecials + \catcode`\^^M\active \catcode`\^^I=12 + \def\verbatim@processline{% + \immediate\write\verbatim@out + {\the\verbatim@line}}% + \verbatim@start} +\def\endMPGverbatimwrite{% + \immediate\write\verbatim@out{endfig;} + \immediate\write\verbatim@out{end;} + \immediate\closeout\verbatim@out + \@esphack} +\def\MPDEFSverbatimwrite#1{% + \@bsphack + \immediate\openout \verbatim@out #1 + \BeforeMPDEFSStream% + \let\do\@makeother\dospecials + \catcode`\^^M\active \catcode`\^^I=12 + \def\verbatim@processline{% + \immediate\write\verbatim@out + {\the\verbatim@line}}% + \verbatim@start} +\def\endMPDEFSverbatimwrite{% + \immediate\closeout\verbatim@out + \@esphack} +\def\BeforeMPGStream + {\message{Opening MPGStream=\mpgfigname.mp}% + \ifPDFTeX\ifpdf% + \immediate\write\verbatim@out{prologues:=3;}\else + \immediate\write\verbatim@out{prologues:=2;}\fi\else\ifXeTeX + \immediate\write\verbatim@out{prologues:=3;}\fi\fi + \immediate\write\verbatim@out{outputtemplate:= "\@percentchar j.eps";} + \immediate\write\verbatim@out{verbatimtex} + \immediate\write\verbatim@out{\string\documentclass{article}} + \IfFileExists{ltxpreamble.ltx}{\immediate\write\verbatim@out{\string\input{ltxpreamble.ltx}}}{} + \immediate\write\verbatim@out{\string\begin{document}} + \immediate\write\verbatim@out{etex;} + \IfFileExists{mpdefs.mp}{\immediate\write\verbatim@out{input mpdefs;}}{} + \immediate\write\verbatim@out{beginfig(\thempgfig);} + } +\def\BeforeMPDEFSStream + {\message{Opening MPGStream=mpdefs.mp}% + \immediate\write\verbatim@out{verbatimtex} + \immediate\write\verbatim@out{\string\documentclass{article}} + \IfFileExists{ltxpreamble.ltx}{\immediate\write\verbatim@out{\string\input{ltxpreamble.ltx}}}{} + \immediate\write\verbatim@out{\string\begin{document}} + \immediate\write\verbatim@out{etex;} + } +\newenvironment{mpdisplay}{\stepcounter{mpgfig}% + \xdef\MPGCutFile{\mpgfigname.mp} + \MPGverbatimwrite{\MPGCutFile}} + {\endMPGverbatimwrite% + \MPGgraphicsinclude% + \global\@mpg@noprocessfalse\noindent} +\newenvironment{mpinline}{\stepcounter{mpgfig}% + \xdef\MPGCutFile{\mpgfigname.mp} + \MPGverbatimwrite{\MPGCutFile}} + {\endMPGverbatimwrite% + \MPGinlinegraphicsinclude% + \global\@mpg@noprocessfalse\noindent} +\AtEndDocument{\endMPGhook% + \csname if@mpg@no@\mpg@graphicsextension\endcsname + \PackageWarningNoLine{mpgraphics} + {******************************************\MessageBreak + Some \mpg@graphicsformatname\space files of images were not found.\MessageBreak + ******************************************} + \fi +} +\gdef\endMPGhook{} +\newcommand{\mpgnoprocess}{\global\@mpg@noprocesstrue + \PackageWarning{mpgraphics} + {******************************************\MessageBreak + Figure Number: \mpgfigname\space is not processed \MessageBreak + ******************************************\MessageBreak} +} +\newcounter{mpgfig} +\newif\if@mpgGINwidth +\newif\if@mpgGINheight +\newif\if@mpgGINscale +\long\gdef\MPGgraphicsProcess{% + \@ifundefined{Fig\thempgfig} + {\mpg@WarningNoLine{mpgraphics} + {******************************************\MessageBreak + ************ Processing Fig: \thempgfig\space**********\MessageBreak + ******************************************} + } + {\mpgnoprocess} + \ifshellescape\if@mpg@noprocess\relax\else\if@mpg@On + \IfFileExists{\mpgfigname.mp}{% + \loop\ifnum\c@mpg@runs > \@ne + \mpg@convert{extrametapost}{\mpgfigname.mp}{\mpgfigname.eps}% + \advance\c@mpg@runs\m@ne + \repeat + \mpg@convert{metapost}{\mpgfigname.mp}{\mpgfigname.eps}% + \mpg@WarningNoLine{mpgraphics} + {******************************************\MessageBreak + \mpgfigname.mp converted to \mpgfigname.eps\MessageBreak + ******************************************} + }{} + \IfFileExists{\mpgfigname.eps}{% + \ifPDFTeX\ifpdf% + \mpg@convert{epstopdf}{\mpgfigname.eps}{\mpgfigname.pdf}% + \mpg@WarningNoLine{mpgraphics} + {******************************************\MessageBreak + \mpgfigname.eps converted to \mpgfigname.pdf\MessageBreak + ******************************************}\else\fi\else\ifXeTeX% + \mpg@convert{epstopdf}{\mpgfigname.eps}{\mpgfigname.pdf}% + \mpg@WarningNoLine{mpgraphics} + {******************************************\MessageBreak + \mpgfigname.eps converted to \mpgfigname.pdf\MessageBreak + ******************************************}\fi\fi +}{% + \mpg@PackageError{% + metapost encountered error(s) while compiling your\mpg@nl + metapost code and so it did not produce the figure!} + {Fix your metapost code, delete all metapost and\mpg@nl + LaTeX auxillary files and then run "\mpg@formatname\space -shell-escape"\mpg@nl + on your document again} +}\else\fi + \ifwindows% + \IfFileExists{ltxpreamble.ltx}{\immediate\write18{del ltxpreamble.ltx}}{}% + \IfFileExists{\mpgfigname.log}{\immediate\write18{del \mpgfigname.log}}{}% + \IfFileExists{\mpgfigname.mp}{\immediate\write18{del \mpgfigname.mp}}{}% + \ifPDFTeX\ifpdf% + \IfFileExists{\mpgfigname.eps}{\immediate\write18{del \mpgfigname.eps}}{}\else\fi\else\ifXeTeX% + \IfFileExists{\mpgfigname.eps}{\immediate\write18{del \mpgfigname.eps}}{}\fi\fi% + \IfFileExists{\mpgfigname.mpx}{\immediate\write18{del \mpgfigname.mpx}}{}% + \IfFileExists{texnum.mpx}{\immediate\write18{del texnum.mpx}}{}% + \IfFileExists{mpdefs.mp}{\immediate\write18{del mpdefs.mp}}{}% + \IfFileExists{makempx.log}{\immediate\write18{del makempx.log}}{}% + \IfFileExists{mpxerr.log}{\immediate\write18{del mpxerr.log}}{}% + \IfFileExists{mpxerr.tex}{\immediate\write18{del mpxerr.tex}}{}% + \else + \IfFileExists{ltxpreamble.ltx}{\immediate\write18{rm ltxpreamble.ltx}}{}% + \IfFileExists{\mpgfigname.log}{\immediate\write18{rm \mpgfigname.log}}{}% + \IfFileExists{\mpgfigname.mp}{\immediate\write18{rm \mpgfigname.mp}}{}% + \ifPDFTeX\ifpdf% + \IfFileExists{\mpgfigname.eps}{\immediate\write18{rm \mpgfigname.eps}}{}\else\fi\else\ifXeTeX% + \IfFileExists{\mpgfigname.eps}{\immediate\write18{rm \mpgfigname.eps}}{}\fi\fi% + \IfFileExists{\mpgfigname.mpx}{\immediate\write18{rm \mpgfigname.mpx}}{}% + \IfFileExists{texnum.mpx}{\immediate\write18{rm texnum.mpx}}{}% + \IfFileExists{mpdefs.mp}{\immediate\write18{rm mpdefs.mp}}{}% + \IfFileExists{makempx.log}{\immediate\write18{rm makempx.log}}{}% + \IfFileExists{mpxerr.log}{\immediate\write18{rm mpxerr.log}}{}% + \IfFileExists{mpxerr.tex}{\immediate\write18{rm mpxerr.tex}}{}% + \fi\fi + \fi +} +\long\gdef\MPGgraphicsinclude{\MPGgraphicsProcess% + \IfFileExists{\mpgfigname.\mpg@graphicsextension}% + {\begin{center} + \bgroup\fboxsep\@MPGboxsep\fboxrule\@MPGboxrule% + \color{\@MPGgraphiccolor}% + \fcolorbox{\@MPGgraphiclinecolor}{\@MPGgraphicbackground}% + {\if@mpgGINwidth% + \includegraphics[width=\@MPGgraphicwidth]{\mpgfigname.\mpg@graphicsextension}\else% + \if@mpgGINheight% + \includegraphics[height=\@MPGgraphicheight]{\mpgfigname.\mpg@graphicsextension}\else% + \if@mpgGINscale% + \includegraphics[scale=\@MPGgraphicscale]{\mpgfigname.\mpg@graphicsextension}\else% + \includegraphics{\mpgfigname.\mpg@graphicsextension}\fi\fi\fi% + }\egroup\end{center}% + \global\@mpgGINwidthfalse\let\@MPGgraphicwidth\relax + \global\@mpgGINheightfalse\let\@MPGgraphicheight\relax + \global\@mpgGINscalefalse\let\@MPGgraphicscale\relax + }{\csname @mpg@no@\mpg@graphicsextension true\endcsname} + \gdef\@MPGgraphiclinecolor{white} + \gdef\@MPGgraphicbackground{white} + \gdef\@MPGboxsep{0pt} + \gdef\@MPGboxrule{0pt} +} +\long\gdef\MPGinlinegraphicsinclude{% + \MPGgraphicsProcess% + \IfFileExists{\mpgfigname.\mpg@graphicsextension}% + {\bgroup\fboxrule0pt% + \normalcolor\fbox{\includegraphics{\mpgfigname.\mpg@graphicsextension}}% + \egroup}% + {\csname @mpg@no@\mpg@graphicsextension true\endcsname}% +} +\def\configure[#1][#2]{\setkeys{#1}{#2} + \mpg@Warning{mpgraphics}{Reconfigured #1 parameter(s)\MessageBreak + #2\MessageBreak}} +\define@key{mpggraphic}{width} {\gdef\@MPGgraphicwidth{#1}% + \global\@mpgGINwidthtrue} +\define@key{mpggraphic}{height} {\gdef\@MPGgraphicheight{#1}% + \global\@mpgGINheighttrue} +\define@key{mpggraphic}{scale} {\gdef\@MPGgraphicscale{#1}% + \global\@mpgGINscaletrue} +\define@key{mpggraphic}{color} {\gdef\@MPGgraphiccolor{#1}} +\define@key{mpggraphic}{linecolor} {\gdef\@MPGgraphiclinecolor{#1}} +\define@key{mpggraphic}{background}{\gdef\@MPGgraphicbackground{#1}} +\define@key{mpggraphic}{linewidth} {\gdef\@MPGboxrule{#1}} +\define@key{mpggraphic}{rulesep} {\gdef\@MPGboxsep{#1}} +\gdef\@MPGgraphiccolor{black} +\gdef\@MPGgraphiclinecolor{white} +\gdef\@MPGgraphicbackground{white} +\gdef\@MPGboxrule{0pt} +\gdef\@MPGboxsep{0pt} +\@ifundefined{c@arraylength}{\newcounter{arraylength}}{}% +\@ifundefined{c@ArrayIndex}{\newcounter{ArrayIndex}}{}% +\@ifundefined{c@zeroCtr}{\newcounter{zeroCtr}}{}% +\@ifundefined{c@recordCtr}{\newcounter{recordCtr}}{} +\setcounter{recordCtr}{1} +\@ifundefined{c@Ctr}{\newcounter{Ctr}}{} +\def\DeclareArray#1{\Array{#1}[0]{}}% +\def\Array#1[#2]#3{% + \expandafter\gdef\csname #1#2\endcsname{#3}% + \expandafter\gdef\csname #1\endcsname[##1]{\csname #1##1\endcsname}}% +\def\getArraylength#1{\setcounter{arraylength}{0}% + \loop\expandafter\ifx\csname #1\thearraylength\endcsname\relax% + \else\stepcounter{arraylength}\repeat}% +\def\addToArray#1#2{\setcounter{arraylength}{0}% + \loop\expandafter\ifx\csname #1\thearraylength\endcsname\relax% + \else\stepcounter{arraylength}\repeat% + \Array{#1}[\thearraylength]{#2}}% +\def\clearArray#1{\getArraylength{#1}% + \loop\ifnum\c@arraylength >0% + \global\expandafter\let\csname #1\thearraylength\endcsname\relax% + \addtocounter{arraylength}{-1}\repeat}% +\long\def\ArrayIterator#1#2{% + \setcounter{ArrayIndex}{1}\getArraylength{#1}% + \setcounter{zeroCtr}{\c@arraylength}% + \loop\ifnum\c@ArrayIndex<\c@zeroCtr{#2}% + \stepcounter{ArrayIndex}\repeat% +}% +\def\@nnil{\@nil} +\def\@empty{} +\def\@cvrstop#1\@@#2{} +\long\def\cvr@delimfor#1#2#3{\DeclareArray{#1}\clearArray{#1}% + \long\def\@icvrloop##1#2##2\@@##3{\def##3{##1}\ifx ##3\@nnil% + \expandafter\@cvrstop \else\addToArray{#1}{##1}% + \relax\expandafter\@icvrloop\fi##2\@@##3}% + \long\def\@cvrloop##1#2##2#2##3\@@##4{\addToArray{#1}{##1}% + \def##4{##1}\ifx ##4\@nnil \else% + \def##4{##2}\def\y@y{##2}\ifx\y@y\@nnil\else% + \addToArray{#1}{##2}\fi\ifx ##4\@nnil \else% + \@icvrloop ##3\@@##4\fi\fi}% + \expandafter\def\expandafter\@fortmp\expandafter{#3}% + \ifx\@fortmp\@empty \else% + \expandafter\@cvrloop#3#2\@nil#2\@nil\@@\@ee@\fi}% +\@ifundefined{c@f@irstCtr}{\newcounter{f@irstCtr}}{}% +\@ifundefined{c@s@econdCtr}{\newcounter{s@econdCtr}}{}% +\long\gdef\NoProcess[#1]{% + \long\def\@i@@noprocess##1,##2\@@##3{\def##3{##1}\ifx ##3\@nnil% + \expandafter\@cvrstop \else + \expandafter\hyphencheck##1-@-*[*] + \relax\expandafter\@i@@noprocess\fi##2\@@##3}% + \long\def\@@@noprocess##1,##2,##3\@@##4{ + \expandafter\hyphencheck##1-@-*[*] + \def##4{##1}\ifx ##4\@nnil \else% + \def##4{##2}\def\y@y{##2}\ifx\y@y\@nnil\else% + \expandafter\hyphencheck##2-@-*[*] + \fi\ifx ##4\@nnil \else% + \@i@@noprocess ##3\@@##4\fi\fi}% + \expandafter\def\expandafter\@fortmp\expandafter{#1}% + \ifx\@fortmp\@empty \else% + \expandafter\@@@noprocess#1,\@nil,\@nil\@@\@ee@\fi}% +\def\d@d#1[*]{} +\def\hyphencheck#1-#2-#3{\def\r@r{@}\def\s@s{*}\edef\c@c{#3} + \ifx\c@c\r@r + \setcounter{f@irstCtr}{#1} + \setcounter{s@econdCtr}{#2} + \stepcounter{s@econdCtr} + \loop\ifnum\thes@econdCtr > \thef@irstCtr% + \expandafter\edef\csname Fig\thef@irstCtr\endcsname{TRUE} + \stepcounter{f@irstCtr} + \repeat% + \else\ifx\c@c\s@s% + \expandafter\edef\csname Fig#1\endcsname{TRUE} + \fi\fi\d@d} +%% +%% Copyright © 2011 Vafa Khalighi +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “author-maintained” (as per LPPL maintenance status) +%% by Vafa Khalighi. +%% +%% +%% +%% +%% End of file `mpgraphics.sty'. -- cgit v1.2.3