summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/snapshot/snapshot.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/snapshot/snapshot.sty')
-rw-r--r--macros/latex/contrib/snapshot/snapshot.sty341
1 files changed, 341 insertions, 0 deletions
diff --git a/macros/latex/contrib/snapshot/snapshot.sty b/macros/latex/contrib/snapshot/snapshot.sty
new file mode 100644
index 0000000000..6646abaa2c
--- /dev/null
+++ b/macros/latex/contrib/snapshot/snapshot.sty
@@ -0,0 +1,341 @@
+%%
+%% This is file `snapshot.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% snapshot.dtx
+%%
+%%% ====================================================================
+%%% @LaTeX-doc-source-file{
+%%% filename = "snapshot.dtx",
+%%% version = "1.14",
+%%% date = "2002/03/05",
+%%% time = "15:29:00 EST",
+%%% checksum = "39090 807 3449 29761",
+%%% author = "American Mathematical Society",
+%%% copyright = "Copyright 2001 American Mathematical Society,
+%%% all rights reserved. Copying of this file is
+%%% authorized only if either:
+%%% (1) you make absolutely no changes to your copy,
+%%% including name; OR
+%%% (2) if you do make changes, you first rename it
+%%% to some other name.",
+%%% address = "American Mathematical Society,
+%%% Electronic Products and Services,
+%%% PO Box 6248,
+%%% Providence, RI 02940,
+%%% USA",
+%%% email = "tech-support@ams.org",
+%%% URL = "http://www.ams.org/",
+%%% supported = "yes",
+%%% keywords = "version, compatibility, dependencies, LaTeX",
+%%% abstract = "This package provides a way for a LaTeX
+%%% document to specify, for each external file
+%%% on which the document depends, which version
+%%% is required to guarantee output fidelity.",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{snapshot}[2002/03/05 v1.14]
+\let\@xp\expandafter \let\@nx\noexpand
+\newcommand{\RequireVersions}[2][]{%
+ \let\snap@check\snap@compare@versions
+ \let\snap@selfcheck\snap@selfcheck@a
+ \@ifnextchar *\snap@store@version\snap@store@error#2*{end}{}{}%
+}
+\@onlypreamble\RequireVersions
+\def\snap@store@error#1{%
+ \PackageError{snapshot}{Expected '*' here, not '#1'}\@ehc
+}
+\@onlypreamble\snap@store@error
+\def\snap@store@version #1#2#3#4{%
+ \@xp\snap@store@b\csname snapx@#2\endcsname{#2}{#3}{#4}%
+}
+\@onlypreamble\snap@store@version
+\def\@fmtextension{fmt}
+\def\@tfmextension{tfm}
+\edef\snapx@package{.\@pkgextension}
+\edef\snapx@class{.\@clsextension}
+\edef\snapx@format{.\@fmtextension}
+\edef\snapx@tfm{.\@tfmextension}
+\long\def\snapx@application{}
+\let\snap@file=\@empty
+\let\snapx@end\@@end
+\def\snap@store@b#1#2#3#4{%
+ \ifx#1\snapx@end
+ \@xp\@gobblefour
+ \else
+ \ifx#1\relax \let#1\@empty\fi
+ \def\@tempa##1 ##2 ##3\@nil{##1 ##2}%
+ \ifx#1\snapx@application
+ \else
+ \xdef\rqv@list{\rqv@list
+ \ifx\@empty\rqv@list\else,\fi
+ #3#1%
+ }%
+ \fi
+ \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+ \ifx#1\snapx@format \snap@check{#3.fmt}%
+ \else \snap@selfcheck{#3.sty}%
+ \fi
+ \fi
+ \@ifnextchar *\snap@store@version\snap@store@error
+}
+\@onlypreamble\snap@store@b
+\def\snap@write{\immediate\write\snap@out}
+\let\snap@out\sixt@@n % fallback, probably never used
+\DeclareOption{dep}{%
+ \def\snap@write{\immediate\write\snap@out}%
+}
+\DeclareOption{log}{%
+ \let\snap@write\typeout
+}
+\let\snap@fake@b\relax
+\DeclareOption{test}{%
+ \def\snap@fake@b{\endinput \futurelet\@let@token\snap@ignoline}%
+}
+\DeclareOption{tfm}{%
+ \typeout{Option 'tfm' not implemented yet [1999/09/23]}%
+}
+\def\snap@mismatch@warning#1#2#3{\PackageWarningNoLine{#1}{#2}}
+\def\snap@mismatch{\snap@mismatch@warning}
+\DeclareOption{error}{%
+ \def\snap@mismatch{\PackageError}%
+ \ifx\snap@select\@empty \let\snap@select\snap@select@all \fi
+}
+\DeclareOption{warning}{%
+ \def\snap@mismatch{\snap@mismatch@warning}%
+ \ifx\snap@select\@empty \let\snap@select\snap@select@all \fi
+}
+\def\snap@select@all#1#2 #3#4 #5\@nil{#1#2 #3#4}
+\let\snap@select\@empty
+\DeclareOption{date}{%
+ \def\snap@select#1#2 #3\@nil{#1#2}%
+}
+\def\snap@select@version#1{%
+ \ifodd 0#11 \@xp\snap@sva\@xp#1\else\@xp\snap@select@version\fi
+}
+\def\snap@sva#1.#2 #3\@nil{#1.#2}
+\def\snap@select@major#1{%
+ \ifodd 0#11 \@xp\snap@svm\@xp#1\else\@xp\snap@select@major\fi
+}
+\def\snap@svm#1.#2\@nil{#1}
+\DeclareOption{version}{%
+ \def\snap@select#1#2 #3{\snap@select@version #3}%
+}
+\DeclareOption{major-version}{%
+ \def\snap@select#1#2 #3{\snap@select@major #3}%
+}
+\ProcessOptions\par
+\edef\snap@restore@extensions{%
+ \def\@nx\@pkgextension{\@pkgextension}%
+ \def\@nx\@clsextension{\@clsextension}%
+}
+\def\snap@pad#1#2#3#4#5#6#7#8#9{\snap@pad@a{#1#2#3#4#5#6#7#8#9}}
+\def\snap@pad@a#1#2#3#4#5\@nil{\snap@pad@b#1#2#3#4\space\@nil}
+\def\snap@pad@b#1\space#2\@nil#3{\def#3{#2}}
+\def\snap@trim@version#1#2 #3{#1#2 \snap@trim@b #3}
+\def\snap@trim@b#1{\ifodd 0#11 v#1\@xp\snap@trim@c\fi \snap@trim@b}
+\def\snap@trim@c#1#2 #3\@nil{#2}
+\let\rqv@list=\@empty
+\edef\@tempc#1\fmtname{#1\fmtname}\@tempc
+\def\@tempa#1,\fmtname.fmt,#2#3\@nil{#2}
+\edef\@tempb{\@nx\@tempa,\@filelist,\fmtname.fmt,}
+\if ?\@tempb?\@nil
+ \edef\@filelist{\fmtname.fmt,\@filelist}%
+ \def\@tempc{LaTeX2e}%
+ \@xp\edef\csname ver@\fmtname.fmt\endcsname{%
+ \fmtversion\space
+ v\ifx\@tempc\fmtname 2.e\else ?.?\fi
+ }%
+\fi
+\listfiles
+\def\@dofilelist{%
+ \snap@restore@extensions
+ \ifx\rqv@list\@empty
+ \else \rqv@compare@lists
+ \fi
+ \ifx\snap@write\typeout
+ \else
+ \newwrite\snap@out
+ \immediate\openout\snap@out=\jobname.dep \relax
+ \fi
+ \snap@write{\string\RequireVersions\@charlb}%
+ \snap@write{\space\space *{application}{TeX}%
+ \space\space\space\space\space{1990/03/25 v3.x}}%
+ \@for\@currname:=\@filelist\do{%
+ \filename@parse\@currname
+ \ifx\filename@ext\relax
+ \def\@tempa{file}\def\@tempd{.tex}\def\filename@ext{tex}%
+ \def\@tempb{~~~}%
+ \else\ifx\filename@ext\@pkgextension
+ \def\@tempa{package}\let\@tempd\@empty
+ \def\@tempb{}%
+ \else\ifx\filename@ext\@clsextension
+ \def\@tempa{class}\let\@tempd\@empty
+ \def\@tempb{~~}%
+ \else\ifx\filename@ext\@fmtextension
+ \def\@tempa{format}\let\@tempd\@empty
+ \def\@tempb{~}%
+ \else\ifx\filename@ext\@tfmextension
+ \def\@tempa{tfm}\let\@tempd\@empty
+ \def\@tempb{~~~~}%
+ \else
+ \def\@tempa{file}\edef\@tempd{.\filename@ext}%
+ \def\@tempb{~~~}%
+ \fi\fi\fi\fi\fi
+ \@xp\let\@xp\@tempe
+ \csname ver@\filename@base.\filename@ext\endcsname
+ \ifx\@tempe\@empty \let\@tempe\relax \fi
+ \edef\@tempe{%
+ \ifx\@tempe\relax 0000/00/00 v0.0%
+ \else
+ \@xp\@xp\@xp\snap@trim@version\@xp\@tempe\space v0.0 v0.0 \@nil
+ \fi
+ }%
+ \edef\@tempc{\filename@area\filename@base\@tempd}% full file name
+ \@xp\snap@pad\@tempc\space~~~~~~~~~~~~~~~~\@nil\@tempd
+ \begingroup \let~\space
+ \snap@write{\space\space *{\@tempa}\@tempb{\@tempc}\@tempd{\@tempe}}%
+ \endgroup
+ }%
+ \snap@write{\@charrb}%
+ \ifx\snap@write\typeout
+ \else \immediate\closeout\snap@out
+ \typeout{Dependency list written on \jobname.dep.}%
+ \fi
+}%
+\def\rqv@condense#1,{%
+ \if ,#1,%
+ \else
+ \@xp\ifx\csname ver@#1\endcsname\N
+ \else
+ \edef\L{\L,#1}%
+ \@xp\let\csname ver@#1\endcsname=\N
+ \fi
+ \fi
+ \rqv@condense
+}
+\def\rqv@compare@lists{%
+ \begingroup
+ \def\N{1}\let\L=\@gobble
+ \@xp\rqv@condense \rqv@list,TeX,{,\relax\@xp\@gobbletwo\@xp},%
+ \ifx\L\@gobble\let\L\@empty\fi
+ \let\rqv@list=\L
+ \let\L=\@gobble
+ \@xp\rqv@condense \@filelist,{,\relax\@xp\@gobbletwo\@xp},%
+ \ifx\L\@gobble\let\L\@empty\fi
+ \@for\@currname:=\L\do{%
+ \snap@mismatch{snapshot}{^^J%
+ File \@currname\space loaded though not in
+ \noexpand\RequireVersions list%
+ }\@ehc
+ }%
+ \def\N{2}\let\L=\@gobble
+ \@xp\rqv@condense\@filelist,TeX,{,\relax\@xp\@gobbletwo\@xp},%
+ \let\L=\@gobble
+ \@xp\rqv@condense\rqv@list,{,\relax\@xp\@gobbletwo\@xp},%
+ \ifx\L\@gobble\let\L\@empty\fi
+ \@for\@currname:=\L\do{%
+ \snap@mismatch{snapshot}{^^J%
+ File \@currname\space [\csname rqv@\@currname\endcsname]
+ required but not loaded%
+ }\@ehc
+ }%
+ \endgroup
+}
+\begingroup \catcode\endlinechar=12\relax %
+\long\gdef\snap@ignoline#1
+{}\endgroup %
+\def\snap@fake@input#1#2#3#4{%
+ \ifx#1\snapx@end
+ \aftergroup\@@end \@xp\@gobblefour
+ \else
+ \ifx#1\snapx@format
+ \else
+ \message{^^J}%
+ \@xp\snap@fake@b\@@input #3#1\relax
+ \fi
+ \fi
+ \@ifnextchar *\snap@store@version\snap@store@error
+}
+\newcommand{\rqvTest}[2][]{%
+ \begingroup \catcode\endlinechar=12
+ \catcode`\%=12 \catcode`\{=12 \catcode`\}=12\relax
+ \let\snapx@application=\snapx@format \let\snapx@tfm=\snap@format
+ \@ifnextchar *\snap@store@version\snap@store@error#2*{end}{}{}%
+ \endgroup
+}
+\@ifundefined{snap@fake@b}{}{%
+ \let\snap@store@b\snap@fake@input
+ \let\RequireVersions\rqvTest
+}
+\AtBeginDocument{%
+ \@ifundefined{ver@amsgen}{}{%
+ \@xp\let\csname ver@amsgen.sty\@xp\endcsname
+ \csname ver@amsgen\endcsname
+ }%
+}
+\let\snap@compare@versions\@gobble \let\snap@check\@gobble
+\let\snap@selfcheck\@gobble \let\snap@selfcheck@a\@gobble
+\ifx\snap@select\@empty \endinput \fi
+\begingroup \catcode`\.=11\relax
+\gdef\snap@selfcheck@b#1\rqv@snapshot.sty#2#3\@nil{T#2}
+\gdef\snap@selfcheck@a#1{%
+ \if\@xp\snap@selfcheck@b\csname rqv@#1\endcsname T%
+ \rqv@snapshot.sty F\@nil
+ \snap@check{#1}%
+ \fi
+}
+\endgroup
+\def\@nofmt#1.fmt.#2 {#1 }
+\def\snap@mismatch@a#1#2#3{%
+ \snap@mismatch{snapshot}{^^J%
+ \space\space Required version #2 of \@nofmt#1.fmt. and^^J%
+ \space\space provided version #3 do not match%
+ }\@ehc
+}
+\def\snap@compare@versions#1{%
+ \begingroup
+ \@ifundefined{rqv@#1}{}{%
+ \edef\0{\csname rqv@#1\endcsname}%
+ \edef\1{\csname ver@#1\endcsname}%
+ \edef\1{\@xp\snap@trim@version\1 v0.0 v0.0 \@nil}%
+ \edef\@tempa{\@xp\snap@select\0 v0.0 v0.0 \@nil}%
+ \edef\@tempb{\@xp\snap@select\1 v0.0 v0.0 \@nil}%
+ \ifx\@tempa\@tempb
+ \else
+ \edef\@tempd{\@nx\snap@mismatch@a{#1}{\@tempa}{\@tempb}}%
+ \@xp\@tempd
+ \fi
+ }%
+ \endgroup
+}
+\def\ProvidesFile#1{%
+ \def\snap@checker{\snap@check{#1}}%
+ \begingroup
+ \aftergroup\snap@checker
+ \catcode`\ 10\catcode\endlinechar 10 %
+ \@makeother\/%
+ \@makeother\&%
+ \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}%
+}
+\def\@pr@videpackage[#1]{%
+ \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
+ \ifx\@currext\@clsextension
+ \typeout{Document Class: \@gtempa\space#1}%
+ \else
+ \wlog{Package: \@gtempa\space#1}%
+ \fi
+ \snap@check{\@currname.\@currext}%
+}
+\endinput
+%%
+%% End of file `snapshot.sty'.