summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/oberdiek/atveryend.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/oberdiek/atveryend.sty')
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/atveryend.sty166
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
%%