summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3names.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx45
1 files changed, 43 insertions, 2 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 751b4dea1b2..cc937640a20 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2017/09/18}
+% \date{Released 2017/11/14}
%
% \maketitle
%
@@ -1130,7 +1130,48 @@
\tex_let:D \tex_italiccorrection:D \@@@@italiccorr
\tex_let:D \tex_underline:D \@@@@underline
% \end{macrocode}
-% Some tidying up is needed for \tn[index=tracingfonts]{(pdf)tracingfonts}. Newer \LuaTeX{} has
+% The \tn{shipout} primitive is particularly tricky as a number of packages
+% want to hook in here. First, we see if a sufficiently-new kernel has saved
+% a copy: if it has, just use that. Otherwise, we need to check each of the
+% possible packages/classes that might move it: here, we are looking for those
+% which do \emph{not} delay action to the \tn{AtBeginDocument} hook. (We
+% cannot use \tn{primitive} a (u)\pTeX{} doesn't offer it and as that doesn't
+% allow us to make a direct copy of the primitive \emph{itself}.) As we know
+% that \LaTeXe{} is in use, we use it's \tn{@tfor} loop here.
+% \begin{macrocode}
+ \etex_ifdefined:D \@@@@shipout
+ \tex_let:D \tex_shipout:D \@@@@shipout
+ \tex_fi:D
+ \tex_begingroup:D
+ \tex_edef:D \l_tmpa_tl { \tex_string:D \shipout }
+ \tex_edef:D \l_tmpb_tl { \tex_meaning:D \shipout }
+ \tex_ifx:D \l_tmpa_tl \l_tmpb_tl
+ \tex_else:D
+ \tex_expandafter:D \@tfor \tex_expandafter:D \@tempa \tex_string:D :=
+ \CROP@shipout
+ \dup@shipout
+ \GPTorg@shipout
+ \LL@shipout
+ \mem@oldshipout
+ \opem@shipout
+ \pgfpages@originalshipout
+ \pr@shipout
+ \Shipout
+ \verso@orig@shipout
+ \do
+ {
+ \tex_edef:D \l_tmpb_tl
+ { \tex_expandafter:D \tex_meaning:D \@tempa }
+ \tex_ifx:D \l_tmpa_tl \l_tmpb_tl
+ \tex_global:D \tex_expandafter:D \tex_let:D
+ \tex_expandafter:D \tex_shipout:D \@tempa
+ \tex_fi:D
+ }
+ \tex_fi:D
+ \tex_endgroup:D
+% \end{macrocode}
+% Some tidying up is needed for \tn[index=tracingfonts]{(pdf)tracingfonts}.
+% Newer \LuaTeX{} has
% this simply as \tn{tracingfonts}, but that is overwritten by
% the \LaTeXe{} kernel. So any spurious definition has to be removed, then
% the real version saved either from the \pdfTeX{} name or from \LuaTeX{}.