diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/asyfig/asyfig.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/asyfig/asyfig.sty | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/asyfig/asyfig.sty b/Master/texmf-dist/tex/latex/asyfig/asyfig.sty new file mode 100644 index 00000000000..30b15b6d796 --- /dev/null +++ b/Master/texmf-dist/tex/latex/asyfig/asyfig.sty @@ -0,0 +1,141 @@ +%% LaTeX2e file `asyfig.sty' +%% generated by the `filecontents' environment +%% from source `asyfig' on 2009/06/24. +%% +\ProvidesPackage{asyfig}[2009/06/23 v0.1a + Commands for using asymptote figures] + +% This package is the main user interface for inserting external |asy| figures +% into the document. + +\RequirePackage{% + asyalign,color,ifmtarg,ifpdf,ifplatform,import, + graphicx,pdftexcmds,suffix,xkeyval} + +% Better conditionals than |\newif| provides: +\def\@True{11} +\def\@False{01} +\def\asy@If#1{\if#1\relax\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} + +\let\asy@always\@False +\let\asy@never\@False +\let\asy@process\@False + +% Package options: +\define@choicekey*{asyfig.sty}{process}[\@tempa\@tempb]{all,none,auto}{% + \ifcase\@tempb\relax + \let\asy@always\@True + \or + \let\asy@never\@True + \or + \fi +} +\ExecuteOptions{process=auto} + +\ProcessOptionsX + +% \subsection{Auxiliary macros} + +\def\asy@splitpath#1/#2/{% +% Recursive macro that is used like\\ +% \qquad |\asy@splitpath abc/def/ghi.asy/\@nil/|\\ +% It defines |\asy@filename| $\to$ |ghi.asy| and |\asy@path| $\to$ |abc/def/| + \ifx\@nil#2\relax +% If input is \<anything>|/\@nil/| then we've reached the end: + \def\asy@filename{#1}% + \else +% Otherwise we're in the middle of the slash-separated list; +% build up |\asy@path|, and iterate: + \edef\asy@path{\asy@path#1/}% + \def\@tempa{\asy@splitpath#2/}% + \expandafter\@tempa + \fi +} + +\newcommand\asypath[1]{\def\asy@pathprefix{#1}} +\asypath{} + +\def\asy@asyfile{\asy@pathprefix\asy@path\asy@filename.asy} +\def\asy@texfile{\asy@pathprefix\asy@path\asy@filename\string_.tex} + +\def\asy@cmdsep{\ifwindows \string& \else; \fi} + +% \subsection{The main macro} + +\newcommand\asyfig[1]{% + \let\asy@path\@empty + \asy@splitpath #1/\@nil/% + \IfFileExists{\asy@asyfile}{% + \asy@If\asy@process{}{% + \asy@If\asy@always{% + \let\asy@process\@True + }{% + \IfFileExists{\asy@texfile}{% + \asy@If\asy@never{}{% + % compare file dates to see if we want to reprocess: + \ifnum\pdf@strcmp{\pdf@filemoddate{\asy@texfile}} + {\pdf@filemoddate{\asy@asyfile}} < \z@ + \let\asy@process\@True + \fi + }% + }{% if the .tex file doesn't exist, either + % give an error or process the .asy file: + \asy@If\asy@never{% + \PackageError{asyfig}{% + ^^J\space\space\space\space + "\asy@pathprefix\asy@path\asy@filename.asy" requires processing% + }{% + The generated file that is required to insert the asy graphic, + ^^J\space\space\space\space + "\asy@pathprefix\asy@path\asy@filename\string_.tex"^^J% + does not exist. + Please process the asy figure manually or de-activate the^^J% + [process=none] package option. + }% + }{% + \let\asy@process\@True + } + }% + }}% + \asy@If\asy@process{% + \edef\@tempa{\asy@pathprefix\asy@path}% + \pdf@system{% + echo "^^J====== ASY PROCESS =====^^J" + \asy@cmdsep + \ifx\@tempa\@empty\else + cd \@tempa + \asy@cmdsep + \fi + \ifpdf pdf\fi latex + -shell-escape + -interaction=batchmode + -jobname=\asy@filename-comp + \unexpanded{% + "\RequirePackage{asyprocess}\ProcessAsy + \documentclass{article} + \begin{document}\ShowAsy + \end{document}" + }% + \asy@cmdsep + echo "^^J==== ASY END PROCESS ===^^J" + }% + }{}% + \import{\asy@pathprefix\asy@path}{\asy@filename\string_.tex}% + }{% + \PackageWarning{asyfig}{% + ^^J\space\space + "\asy@pathprefix\asy@path\asy@filename.asy" not found.^^J% + This warning occurred% + }% + }% + \let\asy@process\@False +} + +% The starred version of \cmd\asyfig\ processes the graphic always: +\WithSuffix\newcommand\asyfig*[1]{% + \begingroup + \let\asy@process\@True + \csname\NoSuffixName\asyfig\endcsname{#1}% + \endgroup +} + |