You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.0 KiB
132 lines
4.0 KiB
%%
|
|
%% 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-2020
|
|
%% The LaTeX3 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-2020
|
|
%%
|
|
%% The LaTeX3 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}
|
|
[2019/11/08 v1.0c 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'.
|
|
|