%% %% This is file `shellesc.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% shellesc.dtx (with options: `package') %% %% This is a generated file. %% %% The source is maintained by the LaTeX Project team and bug %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% %% %% Copyright (C) 1993-2024 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. %% -------------------------------------------------------------------------- %% %% 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 %% https://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. %% %% This file may only be distributed together with a copy of the LaTeX %% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' %% without such generated files. %% %% The list of all files belonging to the LaTeX `Tools Bundle' is %% given in the file `manifest.txt'. %% %% Source File: shellesc.dtx %% Copyright (C) 2015-2024 %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% %% This file may be distributed under the terms of the LPPL. %% See README for details. \ifx\ProvidesPackage\undefined \def\next#1#2[#3]{\wlog{#2 #3}} \ifx\PackageInfo\undefined\def\PackageInfo#1#2{\wlog{#1: #2}}\fi \ifx\PackageWarning\undefined\def\PackageWarning#1#2{\wlog{#1: #2}}\fi \expandafter\next\fi \ProvidesPackage{shellesc} [2023/07/08 v1.0d unified shell escape interface for LaTeX] \chardef\shellesc@quotecat\catcode`\" \chardef\shellesc@underscorecat\catcode`\_ \@makeother\" \@makeother\_ \chardef\ShellEscapeStatus \ifx\pdfshellescape\@undefined \ifx\shellescape\@undefined \ifx\directlua\@undefined \z@ \else \directlua{% tex.sprint((status.shell_escape or os.execute()) .. " ")} \fi \else \shellescape \fi \else \pdfshellescape \fi \ifcase\ShellEscapeStatus \PackageWarning{shellesc}{Shell escape disabled} \or \PackageInfo {shellesc}{Unrestricted shell escape enabled} \else \PackageInfo {shellesc}{Restricted shell escape enabled} \fi \ifx\lastsavedimageresourcepages\@undefined \protected\def\ShellEscape{\immediate\write18 } \else \protected\def\ShellEscape{\directlua\ShellEscape@Lua} \fi \ifx\lastsavedimageresourcepages\@undefined \protected\def\DelayedShellEscape{\relax\write18 } \else \protected\def\DelayedShellEscape{\latelua\ShellEscape@Lua} \fi \ifx\directlua\@undefined\else \protected\def\ShellEscape@Lua#1{{% local status, msg = os.execute("\luaescapestring{#1}")% if status == nil then texio.write_nl("log",% "runsystem(" .. "\luaescapestring{#1}"% .. ")...(" .. msg .. ").\string\n") elseif status == 0 then texio.write_nl("log",% "runsystem(" .. "\luaescapestring{#1}"% .. ")...executed.\string\n") else texio.write_nl("log",% "runsystem(" .. "\luaescapestring{#1}"% .. ")...failed. " .. (msg or "") .. "\string\n") end }} \fi \ifx\lastsavedimageresourcepages\@undefined \catcode`\"\shellesc@quotecat \catcode`\_\shellesc@underscorecat \expandafter\endinput \fi \directlua{% shellesc = shellesc or {} local function write_or_execute() local s = token.scan_int() if (s==18) then tex.sprint(\the\numexpr\catcodetable@atletter\relax, "\string\\ShellEscape ") else tex.sprint(\the\numexpr\catcodetable@atletter\relax, "\string\\shellesc@write " .. s) end end shellesc.write_or_execute=write_or_execute } \let\shellesc@write\write \protected\def\write{\directlua{shellesc.write_or_execute()}} \catcode`\"\shellesc@quotecat \catcode`\_\shellesc@underscorecat \endinput %% %% End of file `shellesc.sty'.