summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/silence/silence.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/silence/silence.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/silence/silence.sty')
-rw-r--r--macros/latex/contrib/silence/silence.sty674
1 files changed, 674 insertions, 0 deletions
diff --git a/macros/latex/contrib/silence/silence.sty b/macros/latex/contrib/silence/silence.sty
new file mode 100644
index 0000000000..af6e71c8a6
--- /dev/null
+++ b/macros/latex/contrib/silence/silence.sty
@@ -0,0 +1,674 @@
+%%
+%% This is file `silence.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% silence-doc.dtx (with options: `package')
+%%
+%% ******************************************************************************
+%% ******************************************************************************
+%% ** **
+%% ** silence v1.5b by Michael Pock **
+%% ** See the documentation for a comment on the implementation. **
+%% ** **
+%% ** This set of macros is published under the LaTeX Project Public License. **
+%% ** **
+%% ** Comments, suggestions and bugs: **
+%% ** **
+%% ** mhp77 <at> gmx <dot> at **
+%% ** **
+%% ** Enjoy! **
+%% ** **
+%% ******************************************************************************
+%% ******************************************************************************
+%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{silence}[2012/07/02 v1.5b Selective filtering of warnings and error messages]
+\makeatletter
+
+\newcount\sl@Save
+\newif\ifsl@Debrief
+\newif\ifsl@ShowWarnings
+\newif\ifsl@ShowErrors
+\newif\ifsl@Immediate
+\newif\ifsl@SafeMode
+
+\DeclareOption{debrief}{\sl@Debrieftrue}
+\DeclareOption{immediate}{\sl@Immediatetrue}
+\DeclareOption{safe}{\sl@SafeModetrue}
+\DeclareOption{save}{\sl@Save1
+ \newwrite\sl@Write
+ \immediate\openout\sl@Write=\jobname.sil}
+\DeclareOption{saveall}{\sl@Save2
+ \newwrite\sl@Write
+ \immediate\openout\sl@Write=\jobname.sil}
+\DeclareOption{showwarnings}{\sl@ShowWarningstrue}
+\DeclareOption{showerrors}{\sl@ShowErrorstrue}
+\ProcessOptions\relax
+
+\newcount\sl@StateNumber
+\newcount\sl@MessageCount
+\newcount\sl@Casualties
+
+\newtoks\sl@Filter
+\newtoks\sl@Message
+\newtoks\sl@UnexpandedMessage
+\newtoks\sl@Mess@ge
+
+\newif\ifsl@Check
+\newif\ifsl@Belong
+\newif\ifsl@KillMessage
+\newif\ifsl@SafeTest
+
+\def\sl@end{sl@end}
+\def\sl@latex{latex}
+\def\sl@Terminator{\sl@Terminator}
+\gdef\sl@active{active}
+\gdef\sl@safe{safe}
+\gdef\sl@PackageName{NoPackage}
+\def\SafeMode{\global\sl@SafeModetrue}
+\def\BoldMode{\global\sl@SafeModefalse}
+\def\sl@Gobble#1sl@end,{}
+
+\newcount\sl@WarningCount
+\newcount\sl@WarningNumber
+\newcount\sl@WarningCasualties
+
+\newtoks\sl@TempBOW
+\newtoks\sl@BankOfWarnings
+
+\newif\ifsl@WarningsOff
+\newif\ifsl@NoLine
+
+\expandafter\gdef\csname sl@family:WarningState\endcsname{active}
+\def\sl@WarningNames{}
+\def\sl@UnwantedWarnings{}
+\def\sl@ProtectedWarnings{}
+
+\def\WarningsOn{%
+ \@ifnextchar[%
+ {\ifsl@WarningsOff
+ \def\sl@next{\sl@Add\sl@ProtectedWarnings}%
+ \else
+ \def\sl@next{\sl@Remove\sl@UnwantedWarnings}%
+ \fi\sl@next}%
+ {\global\sl@WarningsOfffalse
+ \gdef\sl@ProtectedWarnings{}%
+ \gdef\sl@UnwantedWarnings{}}}
+
+\def\WarningsOff{%
+ \@ifstar
+ {\global\sl@WarningsOfftrue
+ \gdef\sl@UnwantedWarnings{}%
+ \gdef\sl@ProtectedWarnings{}}%
+ {\@ifnextchar[{%
+ \ifsl@WarningsOff
+ \def\sl@next{\sl@Remove\sl@ProtectedWarnings}%
+ \else
+ \def\sl@next{\sl@Add\sl@UnwantedWarnings}%
+ \fi\sl@next}%
+ {\global\sl@WarningsOfftrue
+ \gdef\sl@UnwantedWarnings{}%
+ \gdef\sl@ProtectedWarnings{latex,}}}}
+
+\def\sl@Add#1[#2]{%
+ \xdef#1{#1#2,}}
+
+\def\sl@Remove#1[#2]{%
+ \def\sl@Items{#2}%
+ \def\sl@TempNewList{}%
+ \expandafter\sl@@Remove#1sl@end,%
+ \let#1\sl@TempNewList}
+
+\def\sl@@Remove#1,{%
+ \def\sl@Tempa{#1}%
+ \ifx\sl@Tempa\sl@end
+ \let\sl@next\relax
+ \else
+ \sl@Checkfalse
+ \expandafter\sl@ListCheck\sl@Items,sl@end,%
+ \ifsl@Check
+ \else
+ \xdef\sl@TempNewList{\sl@TempNewList#1,}%
+ \fi
+ \let\sl@next\sl@@Remove
+ \fi\sl@next}%
+
+\def\sl@ListCheck#1,{%
+ \def\sl@Tempb{#1}%
+ \ifx\sl@Tempb\sl@end
+ \let\sl@next\relax
+ \else
+ \ifx\sl@Tempa\sl@Tempb
+ \sl@Checktrue
+ \let\sl@next\sl@Gobble
+ \else
+ \let\sl@next\sl@ListCheck
+ \fi
+ \fi\sl@next}
+
+\def\WarningFilter{%
+ \global\advance\sl@WarningNumber1
+ \@ifstar
+ {\expandafter\gdef\csname\the\sl@WarningNumber:WarningMode\endcsname{safe}%
+ \sl@WarningFilter}%
+ {\sl@WarningFilter}}
+
+\def\sl@WarningFilter{%
+ \@ifnextchar[%
+ {\sl@@WarningFilter}%
+ {\sl@@WarningFilter[sl@family]}}
+
+\def\sl@@WarningFilter[#1]#2{%
+ \expandafter\ifx\csname #2@WarningFilter\endcsname\relax
+ \expandafter\xdef\csname #2@WarningFilter\endcsname{\the\sl@WarningNumber:sl@#1}%
+ \else
+ \expandafter\xdef\csname #2@WarningFilter\endcsname{%
+ \csname #2@WarningFilter\endcsname,\the\sl@WarningNumber:sl@#1}%
+ \fi
+ \expandafter\ifx\csname #1:WarningState\endcsname\relax
+ \sl@Add\sl@WarningNames[#1]%
+ \fi
+ \expandafter\ifx\csname #1:WarningState\endcsname\sl@active
+ \else
+ \ifsl@Immediate
+ \expandafter\gdef\csname #1:WarningState\endcsname{active}%
+ \else
+ \expandafter\gdef\csname #1:WarningState\endcsname{inactive}%
+ \fi
+ \fi
+ \begingroup
+ \expandafter\ifx\csname\the\sl@WarningNumber:WarningMode\endcsname\sl@safe
+ \makeatletter
+ \else
+ \catcode`\\12
+ \fi
+ \sl@AddToBankOfWarnings}
+
+\long\def\sl@AddToBankOfWarnings#1{%
+ \sl@TempBOW{#1}%
+ \edef\sl@act{%
+ \global\noexpand\sl@BankOfWarnings{%
+ \the\sl@BankOfWarnings
+ (:sl@\the\sl@WarningNumber:)\the\sl@TempBOW(:sl@\the\sl@WarningNumber:)}}%
+ \sl@act
+ \endgroup}
+
+\def\ActivateWarningFilters{%
+ \sl@StateNumber0\relax
+ \@ifnextchar[%
+ {\sl@ChangeState}%
+ {\sl@ChangeState[\sl@WarningNames]}}
+
+\def\DeactivateWarningFilters{%
+ \sl@StateNumber1\relax
+ \@ifnextchar[%
+ {\sl@ChangeState}%
+ {\sl@ChangeState[\sl@WarningNames]}}
+
+\def\sl@ChangeState[#1]{%
+ \expandafter\sl@@ChangeState#1,sl@end,}
+
+\def\sl@@ChangeState#1,{%
+ \def\sl@Tempa{#1}%
+ \ifx\sl@Tempa\sl@end
+ \let\sl@next\relax
+ \else
+ \ifcase\sl@StateNumber
+ \expandafter\gdef\csname #1:WarningState\endcsname{active}%
+ \or
+ \expandafter\gdef\csname #1:WarningState\endcsname{inactive}%
+ \or
+ \expandafter\gdef\csname #1:ErrorState\endcsname{active}%
+ \or
+ \expandafter\gdef\csname #1:ErrorState\endcsname{inactive}%
+ \fi
+ \let\sl@next\sl@@ChangeState
+ \fi\sl@next}
+
+\def\ActivateFilters{%
+ \@ifnextchar[%
+ {\sl@StateNumber0
+ \sl@RetrieveArgument}%
+ {\sl@StateNumber0
+ \sl@ChangeState[\sl@WarningNames]%
+ \sl@StateNumber2
+ \sl@ChangeState[\sl@ErrorNames]}}
+
+\def\DeactivateFilters{%
+ \@ifnextchar[%
+ {\sl@StateNumber1
+ \sl@RetrieveArgument}%
+ {\sl@StateNumber1
+ \sl@ChangeState[\sl@WarningNames]%
+ \sl@StateNumber3
+ \sl@ChangeState[\sl@ErrorNames]}}
+
+\def\sl@RetrieveArgument[#1]{%
+ \def\sl@Argument{#1}%
+ \ifcase\sl@StateNumber
+ \sl@ChangeState[\sl@Argument]%
+ \sl@StateNumber2\relax
+ \sl@ChangeState[\sl@Argument]%
+ \or
+ \sl@ChangeState[\sl@Argument]%
+ \sl@StateNumber3\relax
+ \sl@ChangeState[\sl@Argument]%
+ \fi}
+
+\def\sl@GetNumber#1:sl@#2,{%
+ \ifnum#1>0
+ \expandafter
+ \ifx\csname #2:\ifcase\sl@StateNumber Warning\or Error\fi State\endcsname\sl@active
+ \sl@GetMessage{#1}%
+ \else
+ \let\sl@next\sl@GetNumber
+ \fi
+ \else
+ \let\sl@next\relax
+ \fi\sl@next}
+
+\def\sl@GetMessage#1{%
+ \def\sl@@GetMessage##1(:sl@#1:)##2(:sl@#1:)##3(:sl@end:){\sl@Filter={##2\sl@Terminator}}%
+ \ifcase\sl@StateNumber
+ \edef\sl@act{\noexpand\sl@@GetMessage\the\sl@BankOfWarnings(:sl@end:)}%
+ \or
+ \edef\sl@act{\noexpand\sl@@GetMessage\the\sl@BankOfErrors(:sl@end:)}%
+ \fi
+ \sl@act
+ \ifsl@SafeMode
+ \sl@SafeTesttrue
+ \edef\sl@act{\noexpand\sl@Mess@ge{\the\sl@UnexpandedMessage\noexpand\sl@Terminator}}%
+ \else
+ \expandafter
+ \ifx\csname #1:\ifcase\sl@StateNumber Warning\or Error\fi Mode\endcsname\sl@safe%
+ \sl@SafeTesttrue
+ \edef\sl@act{\noexpand\sl@Mess@ge{\the\sl@UnexpandedMessage\noexpand\sl@Terminator}}%
+ \else
+ \sl@SafeTestfalse
+ \edef\sl@act{\noexpand\sl@Mess@ge{\the\sl@Message\noexpand\sl@Terminator}}%
+ \fi
+ \fi
+ \sl@act
+ \sl@TestStrings}
+
+\def\sl@TestStrings{%
+ \edef\sl@act{%
+ \noexpand\sl@Slice\the\sl@Filter(:sl@mid:)\noexpand\sl@Filter\noexpand\sl@FilterToken
+ \noexpand\sl@Slice\the\sl@Mess@ge(:sl@mid:)\noexpand\sl@Mess@ge\noexpand\sl@MessageToken}%
+ \sl@act
+ \ifx\sl@FilterToken\sl@Terminator
+ \sl@KillMessagetrue
+ \let\sl@@next\relax
+ \let\sl@next\sl@Gobble
+ \else
+ \ifx\sl@MessageToken\sl@Terminator
+ \let\sl@@next\relax
+ \let\sl@next\sl@GetNumber
+ \else
+ \ifsl@SafeTest
+ \ifx\sl@FilterToken\sl@MessageToken
+ \let\sl@@next\sl@TestStrings
+ \else
+ \let\sl@@next\relax
+ \let\sl@next\sl@GetNumber
+ \fi
+ \else
+ \if\sl@FilterToken\sl@MessageToken
+ \let\sl@@next\sl@TestStrings
+ \else
+ \let\sl@@next\relax
+ \let\sl@next\sl@GetNumber
+ \fi
+ \fi
+ \fi
+ \fi\sl@@next}
+
+\def\sl@Slice#1#2(:sl@mid:)#3#4{\def#4{#1}#3={#2}}
+
+\def\sl@Belong#1,{%
+ \def\sl@Tempa{#1}%
+ \ifx\sl@Tempa\sl@end
+ \let\sl@next\relax
+ \else
+ \ifx\sl@Tempa\sl@PackageName
+ \sl@Belongtrue
+ \let\sl@next\sl@Gobble
+ \else
+ \let\sl@next\sl@Belong
+ \fi
+ \fi\sl@next}
+
+\def\sl@RemoveGobble#1\@gobble\sl@Terminator#2\sl@Terminator{%
+ \def\sl@Tempb{#2}%
+ \ifx\sl@Tempb\@empty
+ \else
+ \def\sl@Tempa{#1}%
+ \expandafter\@gobble
+ \fi
+ }
+
+\def\sl@RemoveGobbletwo#1\@gobbletwo\sl@Terminator#2\sl@Terminator{%
+ \def\sl@Tempb{#2}%
+ \ifx\sl@Tempb\@empty
+ \else
+ \def\sl@Tempa{#1}%
+ \expandafter\@gobble
+ \fi
+ }
+
+\def\sl@StoreMessage#1{%
+ \ifsl@SafeMode
+ \sl@UnexpandedMessage{#1}%
+ \else
+ \sl@UnexpandedMessage{#1}%
+ \begingroup
+ \let\protect\string
+ \let\noexpand\string
+ \def\sl@Tempa{#1}%
+ \sl@RemoveGobble#1\sl@Terminator\@gobble\sl@Terminator\sl@Terminator
+ \sl@RemoveGobbletwo#1\sl@Terminator\@gobbletwo\sl@Terminator\sl@Terminator
+ \edef\sl@Tempa{\sl@Tempa}%
+ \global\expandafter\sl@Message\expandafter{\sl@Tempa}%
+ \endgroup
+ \fi}
+
+\ifsl@ShowWarnings
+\else
+\expandafter\let\expandafter\sl@GenericWarning\csname GenericWarning \endcsname
+\let\sl@PackageWarning\PackageWarning
+\let\sl@ClassWarning\ClassWarning
+\let\sl@latex@warning\@latex@warning
+\let\sl@font@warning\@font@warning
+
+\def\PackageWarning#1#2{%
+ \def\sl@PackageName{#1}%
+ \ifsl@NoLine
+ \sl@NoLinefalse
+ \else
+ \sl@StoreMessage{#2}%
+ \fi
+ \sl@PackageWarning{#1}{#2}}
+
+\def\PackageWarningNoLine#1#2{%
+ \sl@StoreMessage{#2}%
+ \sl@NoLinetrue
+ \PackageWarning{#1}{#2\@gobble}}
+
+\def\ClassWarning#1#2{%
+ \def\sl@PackageName{#1}%
+ \ifsl@NoLine
+ \sl@NoLinefalse
+ \else
+ \sl@StoreMessage{#2}%
+ \fi
+ \sl@ClassWarning{#1}{#2}}
+
+\def\ClassWarningNoLine#1#2{%
+ \sl@StoreMessage{#2}%
+ \sl@NoLinetrue
+ \ClassWarning{#1}{#2\@gobble}}
+
+\def\@latex@warning#1{%
+ \def\sl@PackageName{latex}%
+ \ifsl@NoLine
+ \sl@NoLinefalse
+ \else
+ \sl@StoreMessage{#1}%
+ \fi
+ \sl@latex@warning{#1}}
+
+\def\@latex@warning@no@line#1{%
+ \sl@StoreMessage{#1}%
+ \sl@NoLinetrue
+ \@latex@warning{#1\@gobble}}
+
+\def\@font@warning#1{%
+ \def\sl@PackageName{latexfont}%
+ \sl@StoreMessage{#1}%
+ \sl@font@warning{#1}}
+
+\DeclareRobustCommand{\GenericWarning}[2]{%
+ \global\advance\sl@WarningCount1
+ \sl@KillMessagefalse
+ \sl@Belongfalse
+ \ifsl@WarningsOff
+ \expandafter\sl@Belong\sl@ProtectedWarnings sl@end,%
+ \ifsl@Belong
+ \else
+ \sl@KillMessagetrue
+ \fi
+ \else
+ \expandafter\sl@Belong\sl@UnwantedWarnings sl@end,%
+ \ifsl@Belong
+ \sl@KillMessagetrue
+ \fi
+ \fi
+ \ifsl@KillMessage
+ \else
+ \expandafter\ifx\csname\sl@PackageName @WarningFilter\endcsname\relax
+ \else
+ \sl@StateNumber0
+ \expandafter\expandafter\expandafter
+ \sl@GetNumber\csname\sl@PackageName @WarningFilter\endcsname,0:sl@sl@end,%
+ \fi
+ \fi
+ \ifsl@KillMessage
+ \global\advance\sl@WarningCasualties1
+ \else
+ \sl@GenericWarning{#1}{#2}%
+ \fi
+ \ifcase\sl@Save
+ \or
+ \ifsl@KillMessage
+ \begingroup
+ \let\@unused\sl@Write
+ \sl@GenericWarning{#1}{#2}%
+ \endgroup
+ \fi
+ \or
+ \begingroup
+ \let\@unused\sl@Write
+ \sl@GenericWarning{#1}{#2}%
+ \endgroup
+ \fi
+ \gdef\sl@PackageName{NoPackage}}%
+\fi
+
+\newcount\sl@ErrorCount
+\newcount\sl@ErrorNumber
+\newcount\sl@ErrorCasualties
+
+\newtoks\sl@TempBOE
+\newtoks\sl@BankOfErrors
+
+\newif\ifsl@ErrorsOff
+
+\expandafter\gdef\csname sl@family:ErrorState\endcsname{active}
+\expandafter\gdef\csname sl@end:ErrorState\endcsname{active}
+\def\sl@ErrorNames{}
+\def\sl@UnwantedErrors{}
+\def\sl@ProtectedErrors{}
+
+\def\ErrorsOn{%
+ \@ifnextchar[%
+ {\ifsl@ErrorsOff
+ \def\sl@next{\sl@Add\sl@ProtectedErrors}%
+ \else
+ \def\sl@next{\sl@Remove\sl@UnwantedErrors}%
+ \fi\sl@next}%
+ {\global\sl@ErrorsOfffalse
+ \gdef\sl@ProtectedErrors{}%
+ \gdef\sl@UnwantedErrors{}}}
+
+\def\ErrorsOff{%
+ \@ifstar
+ {\global\sl@ErrorsOfftrue
+ \gdef\sl@UnwantedErrors{}%
+ \gdef\sl@ProtectedErrors{}}%
+ {\@ifnextchar[{%
+ \ifsl@ErrorsOff
+ \def\sl@next{\sl@Remove\sl@ProtectedErrors}%
+ \else
+ \def\sl@next{\sl@Add\sl@UnwantedErrors}%
+ \fi\sl@next}%
+ {\global\sl@ErrorsOfftrue
+ \gdef\sl@UnwantedErrors{}%
+ \gdef\sl@ProtectedErrors{latex,}}}}
+
+\def\ErrorFilter{%
+ \global\advance\sl@ErrorNumber1
+ \@ifstar
+ {\expandafter\gdef\csname\the\sl@ErrorNumber:ErrorMode\endcsname{safe}\sl@ErrorFilter}%
+ {\sl@ErrorFilter}}
+
+\def\sl@ErrorFilter{%
+ \@ifnextchar[%
+ {\sl@@ErrorFilter}%
+ {\sl@@ErrorFilter[sl@family]}}
+
+\def\sl@@ErrorFilter[#1]#2{%
+ \expandafter\ifx\csname #2@ErrorFilter\endcsname\relax
+ \expandafter\xdef\csname #2@ErrorFilter\endcsname{\the\sl@ErrorNumber:sl@#1}%
+ \else
+ \expandafter\xdef\csname #2@ErrorFilter\endcsname{%
+ \csname #2@ErrorFilter\endcsname,\the\sl@ErrorNumber:sl@#1}%
+ \fi
+ \expandafter\ifx\csname #1:ErrorState\endcsname\relax
+ \sl@Add\sl@ErrorNames[#1]%
+ \fi
+ \expandafter\ifx\csname #1:ErrorState\endcsname\sl@active
+ \else
+ \ifsl@Immediate
+ \expandafter\gdef\csname #1:ErrorState\endcsname{active}%
+ \else
+ \expandafter\gdef\csname #1:ErrorState\endcsname{inactive}%
+ \fi
+ \fi
+ \begingroup
+ \expandafter\ifx\csname\the\sl@ErrorNumber:ErrorMode\endcsname\sl@safe
+ \makeatletter
+ \else
+ \catcode`\\12
+ \fi
+ \sl@AddToBankOfErrors}
+
+\long\def\sl@AddToBankOfErrors#1{%
+ \sl@TempBOE{#1}%
+ \edef\sl@act{%
+ \global\noexpand\sl@BankOfErrors{%
+ \the\sl@BankOfErrors
+ (:sl@\the\sl@ErrorNumber:)\the\sl@TempBOE(:sl@\the\sl@ErrorNumber:)}}%
+ \sl@act
+ \endgroup}
+
+\def\ActivateErrorFilters{%
+ \sl@StateNumber2
+ \@ifnextchar[%
+ {\sl@ChangeState}%
+ {\sl@ChangeState[\sl@ErrorNames]}}
+
+\def\DeactivateErrorFilters{%
+ \sl@StateNumber3
+ \@ifnextchar[%
+ {\sl@ChangeState}%
+ {\sl@ChangeState[\sl@ErrorNames]}}
+
+\ifsl@ShowErrors
+\else
+\expandafter\let\expandafter\sl@GenericError\csname GenericError \endcsname
+\let\sl@PackageError\PackageError
+\let\sl@ClassError\ClassError
+\let\sl@latex@error\@latex@error
+
+\def\PackageError#1#2#3{%
+ \def\sl@PackageName{#1}%
+ \sl@StoreMessage{#2}%
+ \sl@PackageError{#1}{#2}{#3}}
+
+\def\ClassError#1#2#3{%
+ \def\sl@PackageName{#1}%
+ \sl@StoreMessage{#2}%
+ \sl@ClassError{#1}{#2}{#3}}
+
+\def\@latex@error#1#2{%
+ \def\sl@PackageName{latex}%
+ \sl@StoreMessage{#1}%
+ \sl@latex@error{#1}{#2}}
+
+\DeclareRobustCommand{\GenericError}[4]{%
+ \global\advance\sl@ErrorCount1
+ \sl@KillMessagefalse
+ \sl@Belongfalse
+ \ifsl@ErrorsOff
+ \expandafter\sl@Belong\sl@ProtectedErrors,sl@end,%
+ \ifsl@Belong
+ \else
+ \sl@KillMessagetrue
+ \fi
+ \else
+ \expandafter\sl@Belong\sl@UnwantedErrors,sl@end,%
+ \ifsl@Belong
+ \sl@KillMessagetrue
+ \fi
+ \fi
+ \ifsl@KillMessage
+ \else
+ \expandafter\ifx\csname\sl@PackageName @ErrorFilter\endcsname\relax
+ \else
+ \sl@StateNumber1
+ \expandafter\expandafter\expandafter
+ \sl@GetNumber\csname\sl@PackageName @ErrorFilter\endcsname,0:sl@sl@end,%
+ \fi
+ \fi
+ \ifsl@KillMessage
+ \global\advance\sl@ErrorCasualties1
+ \else
+ \sl@GenericError{#1}{#2}{#3}{#4}%
+ \fi
+ \ifcase\sl@Save
+ \or
+ \ifsl@KillMessage
+ \begingroup
+ \let\@unused\sl@Write
+ \sl@GenericError{#1}{#2}{#3}{#4}%
+ \endgroup
+ \fi
+ \or
+ \begingroup
+ \let\@unused\sl@Write
+ \sl@GenericError{#1}{#2}{#3}{#4}%
+ \endgroup
+ \fi
+ \gdef\sl@PackageName{NoPackage}}%
+ \fi
+\AtBeginDocument{%
+ \AtEndDocument{%
+ \ifsl@Debrief
+ \clearpage
+ \sl@MessageCount\sl@WarningCount
+ \advance\sl@MessageCount\sl@ErrorCount
+ \sl@Casualties\sl@WarningCasualties
+ \advance\sl@Casualties\sl@ErrorCasualties
+ \ifnum\sl@MessageCount>0
+ \ifnum\sl@Casualties>0
+ \advance\sl@WarningCount-1
+ \PackageWarningNoLine{silence}{%
+ There were \the\sl@WarningCount\space warning(s)
+ and \the\sl@ErrorCount\space error(s).\MessageBreak
+ \ifnum\sl@Casualties=\sl@MessageCount
+ None survived. This is a violent world%
+ \else
+ I've killed \the\sl@WarningCasualties\space warning(s)
+ and \the\sl@ErrorCasualties\space error(s)%
+ \fi}%
+ \fi
+ \fi
+ \fi}}
+
+\makeatother
+\endinput
+%%
+%% End of file `silence.sty'.