%% %% This is file `auto-pst-pdf-lua.sty', a modified version of %% auto-pst-pdf from Will Robertson %% %% Copyright (C) 2023 Herbert Voss %% %% It 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.3c or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% \ProvidesPackage{auto-pst-pdf-lua}[2023/03/21 v0.03a using auto-pst-pdf for LuaLaTeX] \RequirePackage{ifpdf,xkeyval,ifplatform,ifluatex} \newif\if@app@off@ \newif\if@app@crop@ \newcounter{app@runs} \def\app@suffix{autopp} \edef\app@jobname{\jobname-\app@suffix} \edef\app@pics{\jobname-pics.pdf} \DeclareOptionX{off}[]{\@app@off@true} \define@choicekey{auto-pst-pdf-lua.sty}{crop}[\@tempa\@tempb]{on,off}{% \ifcase\@tempb\relax \@app@crop@true \or \@app@crop@false \fi} \DeclareOptionX{on}[]{\@app@off@false} \DeclareOptionX{ext}{\def\app@ext{#1}} \DeclareOptionX{latex}{% \def\app@latex@opts{% \ifwindows -disable-write18 \else -no-shell-escape \fi -jobname="\app@jobname" -interaction=batchmode #1}} \DeclareOptionX{dvips}{\def\app@dvips@opts{#1}} \DeclareOptionX{pspdf}{\def\app@pspdf@opts{#1}} \DeclareOptionX{pdfcrop}{\def\app@pdfcrop@opts{#1}} \DeclareOptionX{cleanup}{% \let\app@rm@files\@empty \@for\@ii:=#1\do{% \edef\app@rm@files{\app@rm@files,\app@jobname.\@ii}}} \DeclareOptionX{runs}{% \setcounter{app@runs}{#1}% support calc \ifnum\c@app@runs > \z@ \else \app@PackageWarning{The number of runs must be at least one.}% \c@app@runs\@ne \fi} \DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{auto-pst-pdf}} \ExecuteOptionsX{% ext=tex, crop=on, latex={}, dvips={-Ppdf}, pdfcrop={}, cleanup={log,aux,dvi,ps,pdf}, runs=1, } \ifluatex\else \PackageWarning{auto-pst-pdf-lua}% {^^J No LuaTeX running! ^^J Package auto-pst-pdf-lua falls back to auto-pst-pdf!}% \fi \ifwindows \ExecuteOptionsX{pspdf={}} \else \ExecuteOptionsX{pspdf={-dAutoRotatePages=/None}} \fi \ProcessOptionsX \def\app@exe{\immediate\write18} \def\app@nl{^^J\space\space\space\space} \newcommand\app@PackageError[2]{% \PackageError{auto-pst-pdf-lua}{\app@nl #1^^J}{#2}} \newcommand\app@PackageWarning[1]{% \PackageWarning{auto-pst-pdf-lua}{\app@nl #1^^JThis warning occured}} \newcommand\app@PackageInfo[1]{\PackageInfo{auto-pst-pdf-lua}{#1}} \newcommand\OnlyIfFileExists[2]{\IfFileExists{#1}{#2}{}} \newcommand\NotIfFileExists[2]{\IfFileExists{#1}{}{#2}} \def\app@convert#1#2#3{% \OnlyIfFileExists{#2}{% \app@exe{\csname app@cmd@#1\endcsname{#2}{#3}}% \NotIfFileExists{#3}{\app@PackageWarning{Creation of #3 failed.}}}} \def\app@compile{% \app@cleanup \app@remove@container \loop\ifnum\c@app@runs > \@ne \app@convert{extralatex}{\jobname.\app@ext}{\app@jobname.dvi}% \advance\c@app@runs\m@ne \repeat \app@convert{latex}{\jobname.\app@ext}{\app@jobname.dvi}% \app@convert{dvips}{\app@jobname.dvi}{\app@jobname.ps}% \if@app@crop@ \app@convert{pstopdf}{\app@jobname.ps}{\app@jobname.pdf}% \app@convert{pdfcrop}{\app@jobname.pdf}{\app@pics}% \else \app@convert{pstopdf}{\app@jobname.ps}{\app@pics}% \fi \IfFileExists{\app@pics} {\app@cleanup} {\app@PackageWarning{Could not create \app@pics. Auxiliary files not deleted.}}} \edef\app@rm{\ifwindows del \else rm -- \fi} \newcommand\app@try@rm[1]{% \@for\@tempa:=#1\do{% \OnlyIfFileExists{\@tempa}{\app@exe{\app@rm "\@tempa"}}}} \def\app@remove@container{\app@try@rm{\app@pics}} \def\app@cleanup{\app@try@rm{\app@rm@files}} \ifluatex \def\app@cmd@latex#1#2{dvilualatex \app@latex@opts\space "\unexpanded{\let\APPmakepictures\empty \input} #1"} \def\app@cmd@extralatex#1#2{dvilualatex \app@latex@opts\space "\unexpanded{\let\APPmakepictures\undefined \input} #1"} \else \def\app@cmd@latex#1#2{latex \app@latex@opts\space "\unexpanded{\let\APPmakepictures\empty\input} #1"} \def\app@cmd@extralatex#1#2{latex \app@latex@opts\space "\unexpanded{\let\APPmakepictures\undefined\input} #1"} \fi \def\app@cmd@dvips#1#2{dvips \app@dvips@opts\space -o "#2" "#1"} \def\app@cmd@pstopdf#1#2{ps2pdf \app@pspdf@opts\space "#1" "#2"} \def\app@cmd@pdfcrop#1#2{pdfcrop \app@pdfcrop@opts\space "#1" "#2"} \ifpdf \if@app@off@\else \ifshellescape \app@exe{echo " "} \app@exe{echo "-------------------------------------------------"} \app@exe{echo "auto-pst-pdf-lua: Auxiliary LaTeX compilation"} \app@exe{echo "-------------------------------------------------"} \app@compile \app@exe{echo "-------------------------------------------------"} \app@exe{echo "auto-pst-pdf-lua: End auxiliary LaTeX compilation"} \app@exe{echo "-------------------------------------------------"} \else \app@PackageError{% "shell escape" (or "write18") is not enabled:\app@nl auto-pst-pdf-lua will not work!} {You need to run LaTeX with the equivalent of "lualatex -shell-escape"\app@nl Or turn off auto-pst-pdf-lua.}% \fi \fi \if@app@crop@ \PassOptionsToPackage{notightpage}{pst-pdf} \fi \else \ifx\APPmakepictures\@undefined \PassOptionsToPackage{inactive}{pst-pdf} \else \if@app@crop@ \PassOptionsToPackage{notightpage}{pst-pdf} \fi \fi \fi \RequirePackage{pst-pdf} \let\app@ig\includegraphics \newcommand\matlabfig[2][]{% \begin{postscript} \renewcommand\resizebox[3]{##3}% \renewcommand\includegraphics[2][]{\app@ig[#1]{##2}}% \input{#2}% \end{postscript}} \newcommand\mathfig[2][]{% \begin{postscript} \input{#2-psfrag}% \includegraphics[#1]{#2-psfrag}% \end{postscript}} \newcommand\psfragfig[2][]{% \@ifnextchar[ {\app@psfragfig[#1]{#2}} {\app@psfragfig[#1]{#2}[]}} \def\app@psfragfig[#1]#2[#3]{% \begin{postscript} \InputIfFileExists{#2-psfrag}{}{}% #3 \includegraphics[#1]{#2}% \end{postscript}} \InputIfFileExists{\jobname-psfrag}{}{}