%% %% This is file `gmp.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% gmp.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2011 by Enrico Gregorio %% %% ------------------------------------------------------- %% %% This work 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 %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions %% of LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Enrico Gregorio. %% %% This work consists of the files %% gmp.dtx %% gmp.ins %% and the derived file gmp.sty. %% \NeedsTeXFormat{LaTeX2e}[2008/04/05] \ProvidesPackage{gmp} [2011/03/10 v1.0 Integrate MetaPost with LaTeX (EG)] %%macro arguments: %%#1 = desired width %%#2 = desired height %%#3 = pen thickness (relative) %%#4 = line color %%#5 = dot color \@ifundefined{eTeXversion}{% \PackageError{gmp}{This package requires a e-TeX extensions} {The gmp package requires a modern TeX engine, please upgrade}% \endinput}{} \RequirePackage{xkeyval}[2005/01/30] \newif\ifgmp@latex % true if always using latex for mpx \newif\ifgmp@locallatex % true if using latex for mpx for a % single figure \newif\ifgmp@nogen % true if we are not generating the mps files \newif\ifgmp@nowrite % true if we are not writing the mp files \newif\ifgmp@warn % true if we are issuing the final message \DeclareOptionX{tex}{\def\gmp@mpxprogram{tex}% \gmp@latexfalse\gmp@locallatexfalse} \DeclareOptionX{latex}{\def\gmp@mpxprogram{latex}% \gmp@latextrue\gmp@locallatextrue} \DeclareOptionX{noshellescape}{\gmp@nogentrue} \DeclareOptionX{shellescape}{\gmp@nogenfalse} \DeclareOptionX{nowrite}{\gmp@nowritetrue} \DeclareOptionX{write}{\gmp@nowritefalse} \DeclareOptionX{envname}{\def\gmp@envname{#1}} \DeclareOptionX{extension}{\def\gmp@ext{#1}} \def\gmp@preoptions{} \DeclareOptionX{everymp}{\edef\gmp@preoptions{\gmp@preoptions^^J#1}} \DeclareOptionX{clean}{\def\gmp@clean{#1}} \DeclareOptionX{rmcommand}{\def\gmp@remove{#1}} \DeclareOptionX{postrmcommand}{\def\gmp@postremove{#1}} \def\gmp@jobname{\jobname} \ExecuteOptionsX{tex,noshellescape,write,clean=none} \ExecuteOptionsX{envname=mpost,extension=+mp, rmcommand=rm -f,postrmcommand={}} \ProcessOptionsX\relax \RequirePackage{graphicx} \RequirePackage{ifpdf} \RequirePackage{ifxetex} \RequirePackage{environ} \ifxetex \let\gmp@shellescape\shellescape \def\gmp@preoptions{prologues:=3;^^J} \else \ifdefined\pdfshellescape % (pdf)latex \let\gmp@shellescape\pdfshellescape \else % lualatex \chardef\gmp@shellescape=\z@ \gmp@nogentrue \fi \fi \def\gmp@msgdisallowed{\PackageWarningNoLine{gmp}{Compilation and writing of MetaPost files has been\MessageBreak disallowed by the `nowrite' option}\gdef\gmp@nemessage{}} \def\gmp@msgnonexistent{\PackageWarning{gmp}{Non existent MetaPost file requested}\ifgmp@warn\else\global\gmp@warntrue\fi} \def\gmp@msgrequestx{\PackageWarningNoLine{gmp}{The MetaPost file you requested does not exist,\MessageBreak perhaps by a compilation error}} \def\gmp@msgremember{\PackageWarningNoLine{gmp}{Remember to run `sh \gmp@jobname\gmp@ext.sh' and rerun (pdf)LaTeX}} \def\gmp@msgensure{% \PackageWarningNoLine{gmp}{Ensure that you have enabled the shell escape feature, or\MessageBreak you can be in trouble. The available MetaPost generated\MessageBreak files will be used anyway. Use option `nowrite' if they\MessageBreak are already in final form}% \let\gmp@message\@gobble \let\gmp@writexviii\@gobble \def\gmp@openout##1##2\@nil{}% \let\gmp@write\@gobbletwo \let\gmp@closeout\@gobble} \let\gmp@message\message \def\gmp@writexviii{\immediate\write18 } \def\gmp@openout#1#2\@nil{\immediate\openout#1#2} \def\gmp@write{\immediate\write} \def\gmp@closeout{\immediate\closeout} \def\gmp@setupmacros{% \ifgmp@nowrite \let\gmp@nemessage\gmp@msgdisallowed \else \ifgmp@nogen \let\gmp@nemessage\gmp@msgnonexistent \def\gmp@command{% mpost \ifx\gmp@mpmem\empty\else\space\gmp@mpmem\space\fi}% \newwrite\gmp@shellout \immediate\openout\gmp@shellout=\gmp@jobname\gmp@ext.sh% \immediate\write\gmp@shellout{\string##!/bin/sh}% \def\gmp@shellcommand##1{\immediate\write\gmp@shellout{##1}}% \AtEndDocument{\ifgmp@warn\gmp@msgremember\gmp@warnfalse\fi}% \else \let\gmp@nemessage\gmp@msgrequestx \ifnum\gmp@shellescape=\@ne \def\gmp@command{% mpost -interaction=nonstopmode % \ifx\gmp@mpmem\empty\else\space\gmp@mpmem\space\fi}% \def\gmp@shellcommand##1{% \gmp@message{^^J(gmp) Doing external command^^J(gmp) \string"}% \gmp@writexviii{echo ##1'\string"'}\gmp@writexviii{##1}% }% \else \gmp@msgensure\let\gmp@shellcommand\@gobble \fi \fi \fi } \gmp@setupmacros \def\gmpoptions#1{\setkeys{ggmp}{#1}\gmp@setupmacros} \@onlypreamble\gmpoptions \def\gmp@latexpreamble{%^^J% \gmp@percent\string&latex^^J% \string\documentclass[1\@ptsize pt]{article}^^J% \ifx\empty\gmp@packages\else\the\gmp@packages^^J\fi% \ifx\empty\gmp@commands\else\the\gmp@commands^^J\fi% \string\begin{document}^^J} \newcommand\usempxclass[2][]{% \def\gmp@latexpreamble{^^J% \gmp@percent\string&latex^^J% \string\documentclass[#1]{#2}^^J% \ifx\empty\gmp@packages\else\the\gmp@packages^^J\fi% \ifx\empty\gmp@commands\else\the\gmp@commands^^J\fi% \string\begin{document}^^J}} \newtoks\gmp@packages \newcommand\usempxpackage[2][]{% \gmp@packages=\expandafter{\the\gmp@packages^^J% \usepackage[#1]{#2}}} \newcommand\resetmpxpackages{\gmp@packages={}} \newtoks\gmp@commands \newcommand\mpxcommands[1]{% \gmp@commands=\expandafter{\the\gmp@commands^^J% #1}} \newcommand\resetmpxcommands{\gmp@commands={}} \def\mpdim#1{ begingroup \the\dimexpr#1\relax\space endgroup } \newwrite\gmp@out \newcounter{gmp@count} \AtEndDocument{% \refstepcounter{gmp@count}% \label{gmp@finallabel}% } \newenvironment{\gmp@envname}[1][] {\@bsphack \global\gmp@usefalse \refstepcounter{gmp@count}\label{gmp@label@\thegmp@count}% \bgroup \edef\gmp@number{\thegmp@count}% \gmp@grab{#1}} {\@esphack} \def\gmp@writeunex#1{\begingroup \edef\x{\endgroup\noexpand\begin{\gmp@envname}[\the\toks@]% \unexpanded{\unexpanded{#1}}\noexpand\end{\gmp@envname}}\x} \newenvironment{\gmp@envname*}[1][] {\toks@{#1}\Collect@Body\gmp@writeunex}{} \def\gmp@fourdigits#1{% \ifnum#1<10 0\fi \ifnum#1<100 0\fi \ifnum#1<1000 0\fi\number #1} \def\gmp@not@a@name@{@not@a@name@} \def\gmp@choosetex{\gmp@locallatexfalse} \def\gmp@chooselatex{\gmp@locallatextrue} \def\gmp@doiflatex#1{\ifgmp@latex#1\else\ifgmp@locallatex#1\fi\fi} \def\gmp@mpmem{} \newif\ifgmp@use \define@key{gmp}{name}[@not@a@name@]{% \def\gmp@thisname{#1}% \expandafter\xdef\csname gmp@fig#1\endcsname {\gmp@fourdigits{\gmp@number}}} \define@key{gmp}{use}[true]{\global\csname gmp@use#1\endcsname} \define@key{gmp}{mpmem}{\def\gmp@mpmem{-mem #1}} \define@key{gmp}{mpsettings}{\edef\gmp@preoptions{\gmp@preoptions^^J#1}} \define@key{gmp}{mpxcommands}{% \gmp@commands=\expandafter{\the\gmp@commands^^J#1}} \define@key{gmp}{mpxprogram}{% \def\gmp@mpxprogram{#1}% \csname gmp@choose#1\endcsname} \define@key{gmp}{runs}{\chardef\gmp@runs=#1\relax} \def\gmp@grab#1{% \setkeys{gmp}{name}% \setkeys{gmp}{runs=1}% \setkeys{gmp}{#1}% \ifx\gmp@thisname\gmp@not@a@name@ \global\gmp@usetrue \fi \gmp@setup\gmp@innermpost} \begingroup\@makeother\%\def\x{\endgroup\def\gmp@percent{%}}\x \def\gmp@activesc{\catcode`\;=\active \begingroup\lccode`\~=`\; \lowercase{\endgroup\edef~}{\string;^^J}} \def\gmp@otherchars{\do\!\do\=\do\:\do\"\do\?\do\'\do\`\do\|} \def\gmp@setup{% \let\do\@makeother\gmp@otherchars\newlinechar=`\^^J \gmp@activesc \def\par{^^J}% \ifgmp@nowrite\else \edef\@temp{\gmp@jobname\gmp@ext\gmp@fourdigits{\gmp@number}.mp}% \expandafter\gmp@openout\expandafter\gmp@out\@temp\@nil \gmp@write\gmp@out{% \gmp@percent\gmp@percent\space Do not edit, this file has been generated^^J% \gmp@percent\gmp@percent\space automatically by \jobname.tex via gmp.sty^^J^^J% \gmp@doiflatex{verbatimtex\gmp@latexpreamble etex;^^J}% \ifx\empty\gmp@preoptions\else\gmp@preoptions^^J\fi% outputtemplate:= "\gmp@percent j.mps";^^J% beginfig(\gmp@number);%^^J% }% \fi} \long\def\gmp@innermpost#1\end#2{% \ifgmp@nowrite\else \gmp@write\gmp@out{% #1^^Jendfig;^^Jend.% \gmp@doiflatex{^^Jverbatimtex^^J\string\end{document}^^Jetex}}% \gmp@closeout\gmp@out \count@=\gmp@runs \loop\ifnum\count@>\z@ \gmp@shellcommand{\gmp@command\space -tex=\gmp@mpxprogram\space\gmp@jobname\gmp@ext \gmp@fourdigits{\gmp@number}}% \advance\count@\m@ne \repeat \ifxetex \gmp@shellcommand{epstopdf --hires \gmp@jobname\gmp@ext \gmp@fourdigits{\gmp@number}.mps}% \fi \fi \egroup \end{#2}\ifgmp@use \gmp@usempost{\thegmp@count}\fi} \ifxetex \def\gmp@usempost#1{% \edef\gmp@thempsfile{\gmp@jobname\gmp@ext\gmp@fourdigits{#1}}% \IfFileExists{\gmp@thempsfile.pdf}% {\includegraphics{\gmp@thempsfile.pdf}}% {\gmp@nemessage\gmp@box}} \newcommand\usempost[2][]{% \IfFileExists{\gmp@jobname\gmp@ext\csname gmp@fig#2\endcsname.pdf}% {\includegraphics[#1] {\gmp@jobname\gmp@ext\csname gmp@fig#2\endcsname.pdf}}% {\gmp@nemessage\gmp@box}} \else \def\gmp@usempost#1{% \edef\gmp@thempsfile{\gmp@jobname\gmp@ext\gmp@fourdigits{#1}}% \IfFileExists{\gmp@thempsfile.mps}% {\includegraphics[hiresbb]{\gmp@thempsfile.mps}}% {\gmp@nemessage\gmp@box}} \newcommand\usempost[2][]{% \IfFileExists{\gmp@jobname\gmp@ext\csname gmp@fig#2\endcsname.mps}% {\includegraphics[hiresbb,#1] {\gmp@jobname\gmp@ext\csname gmp@fig#2\endcsname.mps}}% {\gmp@nemessage\gmp@box}} \fi \def\gmp@box{\fbox{\@ifundefined{color}{}{\color{red}}MP}} \AtEndDocument{% \@ifundefined{gmp@doclean@\gmp@clean} {\expandafter\gmp@badcleaning\expandafter{\gmp@clean}} {\@nameuse{gmp@doclean@\gmp@clean}}} \def\gmp@badcleaning#1{\PackageWarningNoLine{gmp}{% Wrong cleaning option `clean=#1'; `clean=none' used}} \def\gmp@doclean@none{} \def\gmp@doclean@aux{% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.log\space\gmp@postremove}% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mpx\space\gmp@postremove}% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mpo\space\gmp@postremove}% } \def\gmp@doclean@mp{% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.log\space\gmp@postremove}% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mpx\space\gmp@postremove}% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mpo\space\gmp@postremove}% \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mp\space\gmp@postremove}% \ifxetex \gmp@shellcommand{\gmp@remove\space \jobname\gmp@ext*.mps\space\gmp@postremove}% \fi} \long\def\verbatimtex#1etex{verbatimtex \unexpanded{#1} etex} \long\def\btex#1etex{btex \unexpanded{#1} etex} \endinput %% %% End of file `gmp.sty'.