[latex3-commits] [l3svn] 03/03: Ensure \tex_shipout:D really is \shipout

Bruno Le Floch blflatex at gmail.com
Wed Oct 25 19:35:55 CEST 2017


I have a different list of shipout synonyms:

    \xyrealshipout@
    \org at shipout
    \PDFSYNCship at ut@ld
    \CROP at shipout
    \@soORI
    \tex_shipout:D
    \zwpl at Hship
    \o at shipout@TP
    \LL at shipout
    \Shipout
    \GXTorg at shipout
    \AtBegShi at OrgShipout
    \AtBeginShipoutOriginalShipout
    \minidocument at orig@shipout
    \shipout


It's not clear to me how to best make all the related packages
interoperate to be honest.

On 10/25/2017 04:59 PM, noreply at latex-project.org wrote:
> This is an automated email from the git hooks/post-receive script.
> 
> joseph pushed a commit to branch master
> in repository l3svn.
> 
> commit 27b162c13e98abd051c440e4c87b3b20fa83b18b
> Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
> Date:   Wed Oct 25 15:56:18 2017 +0100
> 
>     Ensure \tex_shipout:D really is \shipout
>     
>     Several packages move \shipout 'around'. We can probably live with that
>     to some extend, but really the \tex_...:D names should be exactly the
>     primitives. Here, we do out best to collect the real \shipout in the
>     cases where it can be moved in the preamble.
> ---
>  l3kernel/l3names.dtx |   39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
> 
> diff --git a/l3kernel/l3names.dtx b/l3kernel/l3names.dtx
> index e29c705..26e4dbb 100644
> --- a/l3kernel/l3names.dtx
> +++ b/l3kernel/l3names.dtx
> @@ -1130,6 +1130,45 @@
>    \tex_let:D \tex_italiccorrection:D     \@@@@italiccorr
>    \tex_let:D \tex_underline:D            \@@@@underline
>  %    \end{macrocode}
> +% 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 at shipout
> +        \dup at shipout
> +        \GPTorg at shipout
> +        \LL at shipout
> +        \mem at oldshipout
> +        \opem at shipout
> +        \pgfpages at originalshipout
> +        \pr at shipout
> +        \verso at 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
> 



More information about the latex3-commits mailing list