%% %% This is file `atveryend.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% atveryend.dtx (with options: `package') %% %% This is a generated file. %% %% Project: atveryend %% Version: 2016/05/16 v1.9 %% %% Copyright (C) 2009-2011 by %% Heiko Oberdiek %% %% This work 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. This version of this license is in %% https://www.latex-project.org/lppl/lppl-1-3c.txt %% and the latest version of this license is in %% https://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainers of this work are %% Heiko Oberdiek and the Oberdiek Package Support Group %% https://github.com/ho-tex/oberdiek/issues %% %% %% This work consists of the main source file atveryend.dtx %% and the derived files %% atveryend.sty, atveryend.pdf, atveryend.ins, atveryend.drv, %% atveryend-test1.tex. %% \begingroup\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode123=1 % { \catcode125=2 % } \catcode64=11 % @ \def\x{\endgroup \expandafter\edef\csname AtVeryEnd@AtEnd\endcsname{% \endlinechar=\the\endlinechar\relax \catcode13=\the\catcode13\relax \catcode32=\the\catcode32\relax \catcode35=\the\catcode35\relax \catcode61=\the\catcode61\relax \catcode64=\the\catcode64\relax \catcode123=\the\catcode123\relax \catcode125=\the\catcode125\relax }% }% \x\catcode61\catcode48\catcode32=10\relax% \catcode13=5 % ^^M \endlinechar=13 % \catcode35=6 % # \catcode64=11 % @ \catcode123=1 % { \catcode125=2 % } \def\TMP@EnsureCode#1#2{% \edef\AtVeryEnd@AtEnd{% \AtVeryEnd@AtEnd \catcode#1=\the\catcode#1\relax }% \catcode#1=#2\relax } \TMP@EnsureCode{9}{10}% (tab) \TMP@EnsureCode{39}{12}% ' \TMP@EnsureCode{40}{12}% ( \TMP@EnsureCode{41}{12}% ) \TMP@EnsureCode{42}{12}% * \TMP@EnsureCode{45}{12}% - \TMP@EnsureCode{46}{12}% . \TMP@EnsureCode{47}{12}% / \TMP@EnsureCode{62}{12}% > \TMP@EnsureCode{91}{12}% [ \TMP@EnsureCode{93}{12}% ] \TMP@EnsureCode{96}{12}% ` \edef\AtVeryEnd@AtEnd{\AtVeryEnd@AtEnd\noexpand\endinput} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{atveryend}% [2016/05/16 v1.9 Hooks at the very end of document (HO)] \def\AtVeryEnd@ifundefined#1{% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname #1\endcsname\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \let\AtVeryEnd@BeforeClearDocumentHook\@empty \let\AtVeryEnd@AfterLastShipoutHook\@empty \let\AtVeryEnd@AtVeryEndDocumentHook\@empty \let\AtVeryEnd@AtEndAfterFileListHook\@empty \let\AtVeryEnd@AtVeryVeryEndHook\@empty \newcommand*{\BeforeClearDocument}{% \g@addto@macro\AtVeryEnd@BeforeClearDocumentHook } \newcommand*{\AfterLastShipout}{% \g@addto@macro\AtVeryEnd@AfterLastShipoutHook } \newcommand*{\AtVeryEndDocument}{% \g@addto@macro\AtVeryEnd@AtVeryEndDocumentHook } \newcommand*{\AtEndAfterFileList}{% \g@addto@macro\AtVeryEnd@AtEndAfterFileListHook } \newcommand*{\AtVeryVeryEnd}{% \g@addto@macro\AtVeryEnd@AtVeryVeryEndHook } \newcommand*{\Call@BeforeClearDocument}{% \let\BeforeClearDocument\@firstofone \ifx\AtVeryEnd@BeforeClearDocumentHook\@empty \PackageInfo{atveryend}{Empty hook `BeforeClearDocument'}% \else \PackageInfo{atveryend}{Executing hook `BeforeClearDocument'}% \AtVeryEnd@BeforeClearDocumentHook \fi \global\let\AtVeryEnd@BeforeClearDocumentHook\@undefined \global\let\Call@BeforeClearDocument\relax } \newcommand*{\Call@AfterLastShipout}{% \let\AfterLastShipout\@firstofone \ifx\AtVeryEnd@AfterLastShipoutHook\@empty \PackageInfo{atveryend}{Empty hook `AfterLastShipout'}% \else \PackageInfo{atveryend}{Executing hook `AfterLastShipout'}% \AtVeryEnd@AfterLastShipoutHook \fi \global\let\AtVeryEnd@AfterLastShipoutHook\@undefined \global\let\Call@AfterLastShipout\relax } \newcommand*{\Call@AtVeryEndDocument}{% \let\AtVeryEndDocument\@firstofone \ifx\AtVeryEnd@AtVeryEndDocumentHook\@empty \PackageInfo{atveryend}{Empty hook `AtVeryEndDocument'}% \else \PackageInfo{atveryend}{Executing hook `AtVeryEndDocument'}% \AtVeryEnd@AtVeryEndDocumentHook \fi \global\let\AtVeryEnd@AtVeryEndDocumentHook\@undefined \global\let\Call@AtVeryEndDocument\relax } \newcommand*{\Call@AtEndAfterFileList}{% \Call@AtVeryEndDocument \let\AtEndAfterFileList\@firstofone \ifx\AtVeryEnd@AtEndAfterFileListHook\@empty \PackageInfo{atveryend}{Empty hook `AtEndAfterFileList'}% \else \PackageInfo{atveryend}{Executing hook `AtEndAfterFileList'}% \AtVeryEnd@AtEndAfterFileListHook \fi \global\let\AtVeryEnd@AtEndAfterFileListHook\@undefined \global\let\Call@AtEndAfterFileList\relax } \newcommand*{\Call@AtVeryVeryEnd}{% \Call@AtEndAfterFileList \let\AtVeryVeryEnd\@firstofone \ifx\AtVeryEnd@AtVeryVeryEndHook\@empty \PackageInfo{atveryend}{Empty hook `AtVeryVeryEnd'}% \else \PackageInfo{atveryend}{Executing hook `AtVeryVeryEnd'}% \AtVeryEnd@AtVeryVeryEndHook \fi \global\let\AtVeryEnd@AtVeryVeryEndHook\@undefined \global\let\Call@AtVeryVeryEnd\relax } \def\AtVeryEnd@test@standard{% \let\AtEndDocument\@firstofone \@enddocumenthook \@checkend{document}% \clearpage \begingroup \if@filesw \immediate\closeout\@mainaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \input\jobname.aux % \fi \@dofilelist \ifdim \font@submax >\fontsubfuzz\relax \@font@warning{Size substitutions with differences\MessageBreak up to \font@submax\space have occurred.\@gobbletwo}% \fi \@defaultsubs \@refundefined \if@filesw \ifx \@multiplelabels \relax \if@tempswa \@latex@warning@no@line{Label(s) may have changed. % Rerun to get cross-references right}% \fi \else \@multiplelabels \fi \fi \endgroup \deadcycles\z@ \@@end } \def\AtVeryEnd@enddocument@standard{% \let\AtEndDocument\@firstofone \@enddocumenthook \@checkend{document}% \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup \if@filesw \immediate\closeout\@mainaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \input\jobname.aux % \fi \Call@AtVeryEndDocument \@dofilelist \Call@AtEndAfterFileList \ifdim \font@submax >\fontsubfuzz\relax \@font@warning{Size substitutions with differences\MessageBreak up to \font@submax\space have occurred.\@gobbletwo}% \fi \@defaultsubs \@refundefined \if@filesw \ifx \@multiplelabels \relax \if@tempswa \@latex@warning@no@line{Label(s) may have changed. % Rerun to get cross-references right}% \fi \else \@multiplelabels \fi \fi \endgroup \deadcycles\z@ \Call@AtVeryVeryEnd \@@end } \expandafter\def\csname AtVeryEnd@test@standard20110627\endcsname{% \let\AtEndDocument\@firstofone \@enddocumenthook \@checkend{document}% \clearpage \begingroup \if@filesw \immediate\closeout\@mainaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \@@input\jobname.aux % \fi \@dofilelist \ifdim \font@submax >\fontsubfuzz\relax \@font@warning{Size substitutions with differences\MessageBreak up to \font@submax\space have occurred.\@gobbletwo}% \fi \@defaultsubs \@refundefined \if@filesw \ifx \@multiplelabels \relax \if@tempswa \@latex@warning@no@line{Label(s) may have changed. % Rerun to get cross-references right}% \fi \else \@multiplelabels \fi \fi \endgroup \deadcycles\z@ \@@end } \expandafter\def\csname AtVeryEnd@enddocument@standard20110627\endcsname{% \let\AtEndDocument\@firstofone \@enddocumenthook \@checkend{document}% \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup \if@filesw \immediate\closeout\@mainaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \@@input\jobname.aux % \fi \Call@AtVeryEndDocument \@dofilelist \Call@AtEndAfterFileList \ifdim \font@submax >\fontsubfuzz\relax \@font@warning{Size substitutions with differences\MessageBreak up to \font@submax\space have occurred.\@gobbletwo}% \fi \@defaultsubs \@refundefined \if@filesw \ifx \@multiplelabels \relax \if@tempswa \@latex@warning@no@line{Label(s) may have changed. % Rerun to get cross-references right}% \fi \else \@multiplelabels \fi \fi \endgroup \deadcycles\z@ \Call@AtVeryVeryEnd \@@end } \expandafter\def\expandafter\AtVeryEnd@test@booklet\expandafter{% \expandafter\twoupclearpage \AtVeryEnd@test@standard } \expandafter\def\expandafter\AtVeryEnd@enddocument@booklet\expandafter{% \expandafter\twoclearpage \AtVeryEnd@enddocument@standard } \def\AtVeryEnd@test@dinbrief{% \@checkend{document} % \newpage \begingroup \if@filesw \ifnum\c@labelgen>0 % \immediate\closeout\@mainlbl \makeatletter \input \jobname@lbl\relax \clearpage \fi \immediate\closeout\@mainaux \fi \endgroup \deadcycles\z@ \@@end } \def\AtVeryEnd@enddocument@dinbrief{% \@checkend{document}% \Call@BeforeClearDocument \newpage \Call@AfterLastShipout \begingroup \if@filesw \ifnum\c@labelgen>\z@ \immediate\closeout\@mainlbl \makeatletter \input \jobname@lbl\relax \clearpage \fi \immediate\closeout\@mainaux \fi \Call@AtVeryEndDocument \csname @dofilelist\endcsname \Call@AtEndAfterFileList \endgroup \deadcycles\z@ \Call@AtVeryVeryEnd \@@end } \def\AtVeryEnd@test@combine{% \@enddocumenthook \@checkend{document}% \clearpage \begingroup \if@filesw \immediate\closeout\@mainaux \immediate\closeout\@partaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \input\c@lmainauxfile %% change here \fi \c@lenddoca %% a replacement \@refundefined \endgroup \deadcycles\z@ \@@end } \def\AtVeryEnd@enddocument@combine{% \@enddocumenthook \@checkend{document}% \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup \if@filesw \immediate\closeout\@mainaux \immediate\closeout\@partaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse \makeatletter \input\c@lmainauxfile %% change here \fi \Call@AtVeryEndDocument \c@lenddoca %% a replacement \@refundefined \endgroup \deadcycles\z@ \Call@AtVeryVeryEnd \@@end } \long\def\AtVeryEnd@test@c@lenddoca{% \@dofilelist \ifdim\font@submax>\fontsubfuzz\relax \@font@warning{% Size substitutions with differences\MessageBreak up to \font@submax\space have occured.\@gobbletwo }% \fi \@defaultsubs \if@filesw \ifx\@multiplelabels\relax \if@tempswa \@latex@warning@no@line{% Label(s) may have changed. % Rerun to get cross-references right% }% \fi \else \@multiplelabels \fi \fi } \ifx\AtVeryEnd@c@lenddoca\c@lenddoca \def\c@lenddoca{% \@dofilelist \Call@AtEndAfterFileList \ifdim\font@submax>\fontsubfuzz\relax \@font@warning{% Size substitutions with differences\MessageBreak up to \font@submax\space have occured.\@gobbletwo }% \fi \@defaultsubs \if@filesw \ifx\@multiplelabels\relax \if@tempswa \@latex@warning@no@line{% Label(s) may have changed. % Rerun to get cross-references right% }% \fi \else \@multiplelabels \fi \fi }% \fi \def\AtVeryEnd@test@jpsj{% \if@lastpagebalancing \global\let\@outputdblcol=\balancing@outputdblcol \fi \@checkend{document}% \clearpage \begingroup \if@filesw \immediate\closeout\@mainaux \def\global\@namedef##1##2{}% \def\newlabel{\@testdef r}% \def\bibcite{\@testdef b}% \@tempswafalse \makeatletter \input \jobname.aux % \if@tempswa \@warning{% Label(s) may have changed. % Rerun to get cross-references right% }% \fi \fi \endgroup \deadcycles\z@ \@@end } \def\AtVeryEnd@enddocument@jpsj{% \if@lastpagebalancing \global\let\@outputdblcol=\balancing@outputdblcol \fi \@checkend{document}% \Call@BeforeClearDocument \clearpage \Call@AfterLastShipout \begingroup \if@filesw \immediate\closeout\@mainaux \def\global\@namedef##1##2{}% \def\newlabel{\@testdef r}% \def\bibcite{\@testdef b}% \@tempswafalse \makeatletter \input \jobname.aux % \if@tempswa \@warning{% Label(s) may have changed. % Rerun to get cross-references right% }% \fi \fi \Call@AtVeryEndDocument \csname @dofilelist\endcsname \Call@AtEndAfterFileList \endgroup \deadcycles\z@ \Call@AtVeryVeryEnd \@@end } \def\AtVeryEnd@Test#1#2{% \expandafter\ifx\csname AtVeryEnd@test@#2\endcsname#1% \expandafter\let\expandafter#1% \csname AtVeryEnd@enddocument@#2\endcsname \begingroup \let\on@line\@empty \PackageInfo{atveryend}{% \string#1 detected (#2)% }% \endgroup \expandafter\AtVeryEnd@SkipToNil \fi } \def\AtVeryEnd@SkipToNil#1\@nil{} \def\AtVeryEnd@RedefEndDocument#1{% \ifx#1\@undefined \else \AtVeryEnd@Test#1{standard20110627}% \AtVeryEnd@Test#1{standard}% \AtVeryEnd@Test#1{booklet}% \AtVeryEnd@Test#1{dinbrief}% \AtVeryEnd@Test#1{combine}% \AtVeryEnd@Test#1{jpsj}% \AtVeryEnd@SkipToNil \@nil \fi } \AtVeryEnd@RedefEndDocument\enddocument \AtVeryEnd@RedefEndDocument\AP@enddocument % afterpage.sty \AtVeryEnd@RedefEndDocument\hyper@back@cite@enddocument % htx-bc.sty \AtVeryEnd@RedefEndDocument\hyper@enddocument % hyper.sty \AtVeryEnd@RedefEndDocument\hyper@fn@enddocument % hyper.sty \AtVeryEnd@RedefEndDocument\cweb@save@enddocument % cweb.cls \AtVeryEnd@RedefEndDocument\prev@enddocument % flushend.sty \AtVeryEnd@RedefEndDocument\endorigdocument % gaceta.cls \AtVeryEnd@RedefEndDocument\keependdoc % aguplus.sty \AtVeryEnd@RedefEndDocument\EMenddocument % t-angles.sty \AtVeryEnd@RedefEndDocument\docmute@enddocument % docmute.sty \AtVeryEnd@RedefEndDocument\a@enddocument % alatex.sty \AtVeryEnd@RedefEndDocument\enddocumentasusual % frenchle.sty \AtVeryEnd@RedefEndDocument\old@enddocument % uwthesis.cls \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 }% \aftergroup\AtVeryEnd@RedefCheckEnd }% \AtBeginDocument{% \AtEndDocument{% \AtVeryEnd@RedefCheckEnd }% } \AtEndDocument{% \@ifundefined{@dofilelist}{% \gdef\@dofilelist{% \Call@AtVeryEndDocument \Call@AtEndAfterFileList }% }{% \begingroup \toks@\expandafter{\@dofilelist}% \xdef\@dofilelist{% \noexpand\Call@AtVeryEndDocument \the\toks@ \noexpand\Call@AtEndAfterFileList }% \endgroup }% } \AtBeginDocument{% \@ifpackageloaded{scrlfile}{% \AtVeryEnd@ifundefined{BeforeClosingMainAux}{}{% \BeforeClosingMainAux{\Call@AfterLastShipout}% }% \AtVeryEnd@ifundefined{AfterReadingMainAux}{}{% \AfterReadingMainAux{\Call@AtVeryEndDocument}% }% }{}% \@ifpackageloaded{etoolbox}{% \AtVeryEnd@ifundefined{AfterEndDocument}{}{% \AfterEndDocument{\Call@AtVeryEndDocument}% }% }{}% } \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{% \AtVeryEnd@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 %% %% End of file `atveryend.sty'.