summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3sys.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3sys.dtx')
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx24
1 files changed, 15 insertions, 9 deletions
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 39b091d7df..cbffa7e7ec 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-11-12}
+% \date{Released 2021-11-22}
%
% \maketitle
%
@@ -709,20 +709,26 @@ do
% \begin{macro}{\@@_shell_shipout:e}
% Execute commands through shell escape at shipout.
%
-% For \LuaTeX, we use the same helper as above but delayed to using a late_lua whatsit.
+% For \LuaTeX, we use the same helper as above but delayed using a |late_lua| whatsit.
+% Creating a |late_lua| whatsit works a bit different if we are running under Con\TeX{}t.
% \begin{macrocode}
%<*lua>
- local whatsit_id = node.id'whatsit'
- local latelua_sub = node.subtype'late_lua'
- local node_new = node.direct.new
- local setfield = node.direct.setwhatsitfield or node.direct.setfield
+ local new_latelua = nodes and nodes.nuts and nodes.nuts.pool and nodes.nuts.pool.latelua or (function()
+ local whatsit_id = node.id'whatsit'
+ local latelua_sub = node.subtype'late_lua'
+ local node_new = node.direct.new
+ local setfield = node.direct.setwhatsitfield or node.direct.setfield
+ return function(f)
+ local n = node_new(whatsit_id, latelua_sub)
+ setfield(n, 'data', f)
+ return n
+ end
+ end)()
local node_write = node.direct.write
luacmd("@@_shell_shipout:e", function()
local cmd = scan_string()
- local n = node_new(whatsit_id, latelua_sub)
- setfield(n, 'data', function() shellescape(cmd) end)
- node_write(n)
+ node_write(new_latelua(function() shellescape(cmd) end))
end, "global", "protected")
end
%</lua>