From 81b713bd1dd6d3d94dcbf3180073ef45a46d2e9f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:07:16 +0000 Subject: snapshot git-svn-id: svn://tug.org/texlive/trunk@1332 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/snapshot/snapshot.sty | 341 ++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/snapshot/snapshot.sty (limited to 'Master/texmf-dist/tex/latex/snapshot') diff --git a/Master/texmf-dist/tex/latex/snapshot/snapshot.sty b/Master/texmf-dist/tex/latex/snapshot/snapshot.sty new file mode 100644 index 00000000000..6646abaa2c7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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'. -- cgit v1.2.3