diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/oberdiek/atveryend.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/oberdiek/atveryend.sty | 166 |
1 files changed, 139 insertions, 27 deletions
diff --git a/Master/texmf-dist/tex/generic/oberdiek/atveryend.sty b/Master/texmf-dist/tex/generic/oberdiek/atveryend.sty index c428ac5efe8..f0e108e24e3 100644 --- a/Master/texmf-dist/tex/generic/oberdiek/atveryend.sty +++ b/Master/texmf-dist/tex/generic/oberdiek/atveryend.sty @@ -87,7 +87,7 @@ \fi \expandafter\x\csname ver@atveryend.sty\endcsname \ProvidesPackage{atveryend}% - [2009/12/09 v1.2 Hooks at very end of document (HO)] + [2009/12/11 v1.3 Hooks at very end of document (HO)] \begingroup \catcode123 1 % { \catcode125 2 % } @@ -122,14 +122,30 @@ \TMP@EnsureCode{61}{12}% = \TMP@EnsureCode{62}{12}% > \TMP@EnsureCode{96}{12}% ` +\g@addto@macro{\AtVeryEnd@AtEnd}{\endinput}% +\let\AtVeryEnd@BeforeClearDocumentHook\@empty \let\AtVeryEnd@AfterLastShipoutHook\@empty \let\AtVeryEnd@AtVeryEndDocumentHook\@empty +\newcommand*{\BeforeClearDocument}{% + \g@addto@macro\AtVeryEnd@BeforeClearDocumentHook +} \newcommand*{\AfterLastShipout}{% \g@addto@macro\AtVeryEnd@AfterLastShipoutHook } \newcommand*{\AtVeryEndDocument}{% \g@addto@macro\AtVeryEnd@AtVeryEndDocumentHook } +\newcommand*{\Call@BeforeClearDocument}{% + \let\BeforeClearDocument\@firstofone + \ifx\AtVeryEnd@BeforeClearDocumentHook\@empty + \PackageInfo{atveryend}{Empty hook `BeforeClearDocument'}% + \else + \PackageInfo{atveryend}{Executing hook `BeforeClearDocument'}% + \AtVeryEnd@AfterLastShipoutHook + \fi + \global\let\AtVeryEnd@BeforeClearDocumentHook\@undefined + \global\let\Call@BeforeClearDocument\relax +} \newcommand*{\Call@AfterLastShipout}{% \let\AfterLastShipout\@firstofone \ifx\AtVeryEnd@AfterLastShipoutHook\@empty @@ -191,6 +207,7 @@ \let\AtEndDocument\@firstofone \@enddocumenthook \@checkend{document}% + \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup @@ -251,6 +268,7 @@ } \def\AtVeryEnd@enddocument@dinbrief{% \@checkend{document}% + \Call@BeforeClearDocument \newpage \Call@AfterLastShipout \begingroup @@ -290,6 +308,7 @@ \def\AtVeryEnd@enddocument@combine{% \@enddocumenthook \@checkend{document}% + \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup @@ -339,6 +358,7 @@ \global\let\@outputdblcol=\balancing@outputdblcol \fi \@checkend{document}% + \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup @@ -411,38 +431,32 @@ \AfterReadingMainAux{\Call@AtVeryEndDocument}% }% }{}% -\AtBeginDocument{% \@ifpackageloaded{etoolbox}{% \@ifundefined{AfterEndDocument}{}{% \AfterEndDocument{\Call@AtVeryEndDocument}% }% }{}% -} - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname clear@document\endcsname\relax - \def\AtVeryEnd@document{document}% - \def\AtVeryEnd@RedefCheckend{% - \expandafter\def\expandafter\@checkend - \expandafter##\expandafter1\expandafter{% - \@checkend{##1}% - \def\AtVeryEnd@temp{##1}% - \ifx\AtVeryEnd@temp\AtVeryEnd@document - \let\AtVeryEnd@OrgClearpage\clearpage - \def\clearpage{% - \let\clearpage\AtVeryEnd@OrgClearpage - \clearpage - \Call@AfterLastShipout - }% - \fi - }% - \aftergroup\AtVeryEnd@RedefCheckend - }% - \AtEndDocument{% - \AtVeryEnd@RedefCheckend + \def\AtVeryEnd@document{document}% + \def\AtVeryEnd@RedefCheckEnd{% + \expandafter\def\expandafter\@checkend + \expandafter##\expandafter1\expandafter{% + \@checkend{##1}% + \def\AtVeryEnd@temp{##1}% + \ifx\AtVeryEnd@temp\AtVeryEnd@document + \let\AtVeryEnd@OrgClearpage\clearpage + \def\clearpage{% + \let\clearpage\AtVeryEnd@OrgClearpage + \Call@BeforeClearDocument + \clearpage + \Call@AfterLastShipout + }% + \fi }% - \else - \g@addto@macro\clear@document{\Call@AfterLastShipout}% - \fi + \aftergroup\AtVeryEnd@RedefCheckEnd + }% + \AtEndDocument{% + \AtVeryEnd@RedefCheckEnd + }% } \AtEndDocument{% \@ifundefined{@dofilelist}{% @@ -457,6 +471,104 @@ \endgroup }% } +\def\AtVeryEnd@temp{% + \AtBeginDocument{% + \let\@startlabels\startlabels + \let\@mlabel\mlabel + \if@filesw + \immediate\write\@mainaux{\string\@startlabels}% + \fi + }% + \AtEndDocument{% + \if@filesw + \immediate\write\@mainaux{\string\clearpage}% + \fi + }% +} +\ifx\makelabels\AtVeryEnd@temp +\else + \expandafter\AtVeryEnd@AtEnd +\fi +\let\AtVeryEnd@PatchLetter=N% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname endletter\endcsname\relax +\else + \long\def\AtVeryEnd@TestEndLetter#1\@auxout#2#3\AtVeryEnd@Nil{% + \def\AtVeryEnd@temp{#2}% + \ifx\AtVeryEnd@temp\@empty + \else + \@onelevel@sanitize\AtVeryEnd@temp + \edef\AtVeryEnd@StringMlabel{% + \string\string + \string\@mlabel + \expandafter\@gobble\string\{% + }% + \def\AtVeryEnd@CatchFirst##1##2##3##4##5##6##7##8{% + ##1##2##3##4##5##6##7##8\AtVeryEnd@CatchSecond + }% + \def\AtVeryEnd@CatchSecond##1##2##3##4##5##6##7##8##9\@nil{% + ##1##2##3##4##5##6##7##8% + }% + \edef\AtVeryEnd@temp{% + \expandafter\AtVeryEnd@CatchFirst\AtVeryEnd@temp + {}{}{}{}{}{}{}{}% + {}{}{}{}{}{}{}{}% + \@nil + }% + \ifx\AtVeryEnd@temp\AtVeryEnd@StringMlabel + \expandafter\def\expandafter\endletter\expandafter{% + \endletter + \begingroup + \let\\=\relax + \let\protect\@unexpandable@protect + \let\@mlabel=\relax + \edef\x{\endgroup + \noexpand\AtEndDocument{% + \@gobble#2% + }% + }% + \x + }% + \let\AtVeryEnd@PatchLetter=Y% + \fi + \fi + }% + \expandafter\AtVeryEnd@TestEndLetter\endletter + \@auxout{}\AtVeryEnd@Nil +\fi +\ifx\AtVeryEnd@PatchLetter Y% + \begingroup + \let\on@line\@empty + \PackageInfo{atveryend}{% + \@backslashchar makelabels detected. % + Moving labels\MessageBreak + from `.aux' file to \@backslashchar AtEndDocument% + }% + \endgroup + \def\makelabels{% + \AtBeginDocument{% + \let\@startlabels\startlabels + \let\@mlabel\mlabel + }% + }% + \AtEndDocument{% + \@ifundefined{@startlabels}{% + }{% + \clearpage + \@startlabels + }% + }% + \AfterLastShipout{% + \let\@startlabels\relax + \let\@mlabel\@gobbletwo + }% +\else + \PackageWarningNoLine{atveryend}{% + \@backslashchar makelabels detected, but labels cannot\MessageBreak + be moved to \@backslashchar AtEndDocument, because\MessageBreak + \@backslashchar endletter is not in expected form% + }% +\fi \AtVeryEnd@AtEnd \endinput %% |