texlive[56735] Master/texmf-dist: snapshot (22oct20)

commits+karl at tug.org commits+karl at tug.org
Thu Oct 22 22:52:12 CEST 2020


Revision: 56735
          http://tug.org/svn/texlive?view=revision&revision=56735
Author:   karl
Date:     2020-10-22 22:52:12 +0200 (Thu, 22 Oct 2020)
Log Message:
-----------
snapshot (22oct20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/snapshot/README
    trunk/Master/texmf-dist/doc/latex/snapshot/snapshot.pdf
    trunk/Master/texmf-dist/source/latex/snapshot/snapshot.dtx
    trunk/Master/texmf-dist/source/latex/snapshot/snapshot.ins
    trunk/Master/texmf-dist/tex/latex/snapshot/snapshot.sty

Modified: trunk/Master/texmf-dist/doc/latex/snapshot/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/snapshot/README	2020-10-22 20:51:55 UTC (rev 56734)
+++ trunk/Master/texmf-dist/doc/latex/snapshot/README	2020-10-22 20:52:12 UTC (rev 56735)
@@ -1,17 +1,119 @@
-README for snapshot                                    2019/09/17
-https://www.ams.org/arc/resources/snapshot-about.html
-tech-support at ams.org
+README file for package snapshot 2.14 [2020/06/17]
 
-The snapshot package helps the owner of a LaTeX document
-obtain a list of the external dependencies of the document, in a
-form that can be embedded at the top of the document. To put it
-another way, it provides a snapshot of the current processing
-context of the document, insofar as it can be determined from
-inside LaTeX.
+Copyright 1999-2003, 2004, 2010, 2012, 2020 American Mathematical Society.
 
-Originally written by Michael J. Downes, the snapshot package
-is currently maintained by the American Mathematical Society.
-
 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.
+The latest version of this license is in
+  http://www.latex-project.org/lppl.txt
+and version 1.3c 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 Maintainer of this work is the American Mathematical
+Society.
+
+American Mathematical Society
+Technical Support
+Publications Technical Group
+201 Charles Street
+Providence, RI 02904
+USA
+tel: (401) 455-4080
+     (800) 321-4267 (USA and Canada only)
+fax: (401) 331-3842
+email: tech-support at ams.org
+
+========================================================================
+                               CONTENTS
+I.   OVERVIEW
+II.  REMARKS ON THIS RELEASE
+II.  CHANGE LOG
+
+========================================================================
+I. OVERVIEW
+
+Complete documentation of all package options is available in
+snapshot.pdf.
+
+Typical usage involves the following steps:
+
+1. Add a \RequirePackage statement at the top of the document:
+
+       \RequirePackage{snapshot}
+       \documentclass{article}
+
+       \usepackage{graphicx}
+
+       \begin{document}
+
+       hello, world
+
+       \end{document}
+
+   Note that snapshot should be the very first thing loaded, even
+   before the \documentclass.  Otherwise snapshot will not be able to
+   capture the information for the document class and any packages
+   loaded inside it.
+
+2. Run LaTeX on the document. This will produce a dependency list in a
+   file \jobname.dep.
+
+3. Insert the .dep file at the top of the document, before
+   \documentclass. The following example shows what you would
+   typically end up with for a document that used the article
+   documentclass and the graphicx package:
+
+       \RequirePackage{snapshot}
+
+       \RequireVersions{
+         *{application}{pdfTeX}  {0000/00/00 v1.40.21}
+         *{format} {LaTeX2e}     {2020-02-02 v2.e}
+         *{package}{snapshot}    {2020/06/17 v2.14}
+         *{class}  {article}     {2019/12/20 v1.4l}
+         *{file}   {size10.clo}  {2019/12/20 v1.4l}
+         *{package}{graphicx}    {2019/11/30 v1.2a}
+         *{package}{keyval}      {2014/10/28 v1.15}
+         *{package}{graphics}    {2019/11/30 v1.4a}
+         *{package}{trig}        {2016/01/03 v1.10}
+         *{file}   {graphics.cfg}{2016/06/04 v1.11}
+         *{file}   {dvips.def}   {2017/06/20 v3.1d}
+         *{file}   {l3backend-dvips.def}{2020-05-05 v3}
+       }
+
+       \documentclass{article}
+       [...]
+
+   Now each time you recompile the document, snapshot will compare the
+   list of files actually loaded against the list recorded in
+   \RequireVersions and warn you of any changes.
+
+========================================================================
+II. REMARKS ON THIS RELEASE
+
+Since the snapshot package was originally released, there has been a
+tremendous amount of evolution among TeX engines (what snapshot calls
+the "application").  In addition to the introduction of two major new
+engines, three other engines that were once distinct have effectively
+merged.  The algorithm for detecting the identify of the engine has
+been updated to reflect the state of the TeX world as reflected in TeX
+Live 2020.
+
+COMPATIBILITY NOTE: As a result of these improvements, the
+*{application} entry of your documents will almost certainly change.
+The snapshot package does not warn of changes in this entry, but if
+you have an external application that makes use of this information,
+you will probably need to update it.
+
+========================================================================
+III. CHANGE LOG
+
+2020-06-17 snapshot.dtx v2.14
+    -- Added code to detect the aleph, ptex, eptex, uptex, euptex,
+       luatex, and xetex engines in addition to etex, pdftex, and
+       pdfetex.  Also distinguish between the various engines which
+       incorporate the eTeX extensions.
+    -- Made snapshot more tolerant of macros in the optional argument
+       to \Provides... declarations.

Modified: trunk/Master/texmf-dist/doc/latex/snapshot/snapshot.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/snapshot/snapshot.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/snapshot/snapshot.dtx	2020-10-22 20:51:55 UTC (rev 56734)
+++ trunk/Master/texmf-dist/source/latex/snapshot/snapshot.dtx	2020-10-22 20:52:12 UTC (rev 56735)
@@ -1,6 +1,6 @@
 % \def\filename{snapshot.dtx}
-% \def\fileversion{2.13}
-% \def\filedate{2012/08/06}
+% \def\fileversion{2.14}
+% \def\filedate{2020/06/17}
 %
 % \iffalse meta-comment
 %
@@ -15,7 +15,7 @@
 % fax: (401) 331-3842
 % email: tech-support at ams.org
 %
-% Copyright 1999-2003, 2004, 2010, 2012 American Mathematical Society.
+% Copyright 1999-2003, 2004, 2010, 2012, 2020 American Mathematical Society.
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3c
@@ -35,7 +35,10 @@
 % \iffalse
 %<*driver>
 \NeedsTeXFormat{LaTeX2e}
-\documentclass[oneside]{amsdtx}
+\documentclass{amsdtx}
+
+\usepackage{hyperref}
+
 \providecommand{\qq}[1]{\textquotedblleft#1\textquotedblright}
 \providecommand{\mdash}{\textemdash\penalty\exhyphenpenalty}
 \providecommand{\lat}[1]{\protect\LaTeX{}}
@@ -44,12 +47,18 @@
 
 \CodelineIndex
 
-\begin{document}
 \title{The \pkg{snapshot} package}
-\author{American Mathematical Society\\Michael Downes}
+
+\author{American Mathematical Society}
+
 \date{Version \fileversion, \filedate}
+
+\begin{document}
+
 \DocInput{snapshot.dtx}
+
 \PrintIndex
+
 \end{document}
 %</driver>
 % \fi
@@ -57,6 +66,9 @@
 % \MakeShortVerb{\|}
 %
 % \maketitle
+%
+%    \tableofcontents
+%
 % \section{Introduction}
 %
 %    The \pkg{snapshot} package helps the owner of a \LaTeX{} document
@@ -122,7 +134,6 @@
 % \begin{verbatim}
 % \RequirePackage[log]{snapshot}
 % \end{verbatim}
-%
 %    Making the necessary arrangements to ensure that future \latex/
 %    runs of the document actually call in the specified versions is a
 %    separate problem. The \pkg{snapshot} package only provides a way to
@@ -333,7 +344,7 @@
 %    Standard declaration of package name and date.
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{snapshot}[2012/08/06 v2.13]
+\ProvidesPackage{snapshot}[2020/06/17 v2.14]
 %    \end{macrocode}
 %
 %    Calling the \pkg{snapshot} package in a document causes \latex/ to
@@ -367,11 +378,17 @@
 %    their documents.
 % \end{minipage}\end{center}
 %
+%    \begin{macro}{\@xp}
+%    \begin{macro}{\@nx}
 %    A couple of shorthand forms.
 %    \begin{macrocode}
 \let\@xp=\expandafter \let\@nx=\noexpand
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
+%    \begin{macro}{\str at cmp}
+%    \begin{macro}{\str at equal}
 %    A function to compare two strings and return FT or TT (for use with
 %    \cs{if}).
 %    \begin{macrocode}
@@ -382,6 +399,8 @@
   \str at cmp#1\relax\str at cmp#2{\relax\@gobbletwo}\@nil TT%
 }
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
 %  \begin{macro}{\RequireVersions}
 %
@@ -390,100 +409,234 @@
 %    \tex/ inputs path.
 %    \begin{macrocode}
 \newcommand{\RequireVersions}[2][]{}%
+
 \renewcommand{\RequireVersions}[1][]{%
-  \def\snap at check{\snap at compare@versions}%
-  \toks@{#1}\afterassignment\snap at storem
-  \let\@let at token=
+    \def\snap at check{\snap at compare@versions}%
+    \toks@{#1}%
+    \afterassignment\snap at storem
+    \let\@let at token=
 }
+
+\@onlypreamble\RequireVersions
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\snap at storem}
+%    \begin{macrocode}
 \def\snap at storem{%
-  \ifx\@let at token\bgroup
-  \else
-    \PackageError{snapshot}{Expected a `\@charlb' character here}\@ehc
-    \@xp\@gobblefour
-  \fi
-  \futurelet\@let at token\snap at branch
+    \ifx\@let at token\bgroup \else
+        \PackageError{snapshot}{Expected a `\@charlb' character here}\@ehc
+        \@xp\@gobblefour
+    \fi
+    \futurelet\@let at token\snap at branch
 }
-\@onlypreamble\RequireVersions
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at check}
 %    \begin{macrocode}
 \let\snap at check\@gobble
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at finish}
 %    \begin{macrocode}
 \def\snap at finish{\toks@\bgroup}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at branch}
 %    \begin{macrocode}
 \def\snap at branch{%
-  \ifx\@let at token\egroup
-    \@xp\snap at finish
-  \else\ifx\@let at token *%
-    \let\reserved at c\snap at store@version
-  \else\ifx\@let at token\@sptoken
-    \lowercase{\def\reserved at c} {\futurelet\@let at token\snap at branch}%
-  \else
-    \let\reserved at c\snap at store@error
-  \fi\fi\fi
-  \reserved at c
+    \ifx\@let at token\egroup
+        \@xp\snap at finish
+    \else\ifx\@let at token *%
+        \let\reserved at c\snap at store@version
+    \else\ifx\@let at token\@sptoken
+        \lowercase{\def\reserved at c} {\futurelet\@let at token\snap at branch}%
+    \else
+        \let\reserved at c\snap at store@error
+    \fi\fi\fi
+    \reserved at c
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at store@error}
 %    \begin{macrocode}
 \def\snap at store@error#1{%
-  \PackageError{snapshot}{Expected '*' here, not '#1'}\@ehc
+    \PackageError{snapshot}{Expected '*' here, not '#1'}\@ehc
 }
+
 \@onlypreamble\snap at store@error
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at store@version}
 %    \begin{macrocode}
 \def\snap at store@version #1#2#3#4{%
-  \@xp\snap at store@b\csname snapx@#2\endcsname{#2}{#3}{#4}%
+    \@xp\snap at store@b\csname snapx@#2\endcsname{#2}{#3}{#4}%
 }
+
 \@onlypreamble\snap at store@version
 %    \end{macrocode}
+%    \end{macro}
 %
-%    Detection of e-\LaTeX{}, pdf\LaTeX{}, pdfe\LaTeX{}, and Lambda
-%    [Omega]:
+%    \subsection{Determining the engine}
+%
+%    \begin{macro}{\snapshotApplication}
+
+%    Check for the engines that are active in \TeX Live 2020.  Note
+%    that in in modern versions of \TeX Live, there is no distinction
+%    between \fn{etex}, \fn{pdfetex}, and \fn{pdftex}.  I believe this
+%    code will distinguish between distinct legacy binaries, but I
+%    have not tested this thoroughly.  Similar remarks apply to the
+%    p\TeX\ family.
+%
 %    \begin{macrocode}
-\ifx\OmegaVersion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    {Omega}\space\space\space
-    {0000/00/00 v\OmegaVersion}%
-  }%
+\let\snapshotApplication\@empty
+
+\ifx\OmegaVersion\@@undefined \else
+    \edef\snapshotApplication{%
+        \ifx\AlephVersion\@@undefined
+            {Omega}\space\space\space
+            {0000/00/00 v\OmegaVersion}%
+        \else
+            {Aleph}\space\space\space
+%    \end{macrocode}
+%    \cs{AlephVersion} appears to be incorrectly set to 0.0, so
+%    include the Omega version as well.
+%    \begin{macrocode}
+            {0000/00/00 v\OmegaVersion-\AlephVersion}%
+        \fi        
+    }%
 \fi
-\ifx\eTeXversion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    {eTeX}\space\space\space\space
-    {0000/00/00 v\number\eTeXversion\eTeXrevision}%
-  }%
-\fi
-\ifx\pdftexversion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    \ifx\eTeXversion\@@undefined
-      {pdfTeX}\space\space
+
+\ifx\ptexversion\@@undefined\else
+    \edef\snapshotApplication{%
+        {pTeX}\space\space\space\space
+        {0000/00/00 v\number\ptexversion
+         \ifx\ptexminorversion\undefined \u \else.\number\ptexminorversion\fi
+         \ifx\ptexrevision\undefined \u \else\ptexrevision\fi}%
+    }%
+    \ifx\uptexversion\@@undefined
+        \ifx\epTeXversion\@@undefined\else
+            \edef\snapshotApplication{%
+                {epTeX}\space\space\space
+                {0000/00/00 v\number\epTeXversion}%
+            }%
+        \fi
     \else
-      {pdfeTeX}\space
+        \ifx\epTeXversion\@@undefined
+            \edef\snapshotApplication{%
+                {upTeX}\space\space\space
+                {0000/00/00 v\number\uptexversion
+                 \ifx\uptexrevision\undefined \u \else\uptexrevision\fi}%
+            }%
+        \else
+%    \end{macrocode}
+%    There is no separate \cs{euptexversion}, so use a combination of
+%    the underlying up\TeX\ and ep\TeX\ versions.
+%    \begin{macrocode}
+            \edef\snapshotApplication{%
+                {eupTeX}\space\space
+                {0000/00/00 v\number\uptexversion
+                 \ifx\uptexrevision\undefined \u \else\uptexrevision\fi
+                 --\number\epTeXversion}%
+            }%
+        \fi
     \fi
-      {0000/00/00 v0.\number\pdftexversion\pdftexrevision}%
-  }%
 \fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\XeTeXversion\@@undefined\else
+        \edef\snapshotApplication{%
+            {XeTeX}\space\space\space
+            {0000/00/00 v\number\XeTeXversion
+             \ifx\XeTeXrevision\undefined\else\XeTeXrevision\fi}%
+        }%
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\luatexversion\@@undefined\else
+        \begingroup
+            \@tempcnta\luatexversion
+            \divide\@tempcnta by 100
+            \edef\@tempa{\the\@tempcnta}%
+            \multiply\@tempcnta by 100
+            \@tempcntb\luatexversion
+            \advance\@tempcntb by -\@tempcnta
+            \edef\@tempa{\@tempa.\the\@tempcntb.\luatexrevision}%
+            \xdef\snapshotApplication{%
+                {luaTeX}\space\space
+                {0000/00/00 v\@tempa}%
+            }%
+        \endgroup
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\pdftexversion\@@undefined \else
+        \begingroup
+            \ifx\eTeXversion\@@undefined
+                \@tempswafalse
+            \else
+                \@tempswatrue
+            \fi
+            \@tempcnta\pdftexversion
+            \divide\@tempcnta by 100
+            \edef\@tempa{\the\@tempcnta}%
+            \multiply\@tempcnta by 100
+            \@tempcntb\pdftexversion
+            \advance\@tempcntb by -\@tempcnta
 %    \end{macrocode}
+%    e\TeX\ was folded into pdf\TeX\ as of version 1.40.
+%    \begin{macrocode}
+            \ifnum\@tempcntb > 39
+                \@tempswafalse
+            \fi
+            \edef\@tempa{\@tempa.\the\@tempcntb.\pdftexrevision}%
+            \xdef\snapshotApplication{%
+                \if at tempswa
+                    {pdfeTeX}\space
+                \else
+                    {pdfTeX}\space\space
+                \fi
+                {0000/00/00 v\@tempa}%
+            }%
+        \endgroup
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\eTeXversion\@@undefined \else
+        \edef\snapshotApplication{%
+            {eTeX}\space\space\space\space
+            {0000/00/00 v\number\eTeXversion
+            \ifx\eTeXrevision\undefined
+                \ifx\eTeXminorversion\undefined\else.\number\eTeXminorversion\fi
+            \else
+                \eTeXrevision
+            \fi
+            }%
+        }%
+    \fi
+\fi
+%    \end{macrocode}
 %    If none of the above information is available, the exact version
 %    number of \TeX{} is not accessible from inside \latex/. We then
 %    fall back to using a nominal date of 1990/03/25, which is when
 %    version 3.0 of \fn{tex.web} was released by Knuth.
 %    \begin{macrocode}
-\@ifundefined{snapshotApplication}{%
-  \edef\snapshotApplication{%
-    {TeX}\space\space\space\space\space
-    {1990/03/25 v3.x}%
-  }%
-}{}
+\ifx\snapshotApplication\@empty
+    \edef\snapshotApplication{%
+        {TeX}\space\space\space\space\space
+        {1990/03/25 v3.x}%
+    }%
+\fi
 %    \end{macrocode}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \def\@fmtextension{fmt}
@@ -499,41 +652,43 @@
 \expandafter\let\csname snapx at -------\endcsname\snapx at end
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at store@b}
 %    For a package named \fn{foo.sty}, this function defines
 %    \cs{rqv at foo.sty} to hold the date and version information.
 %    \begin{macrocode}
 \def\snap at store@b#1#2#3#4{%
-  \ifx#1\snapx at end
-    \@xp\snap at finish
-  \else
-    \ifx#1\relax \let#1\@empty\fi
-    \def\@tempa##1 ##2 ##3\@nil{##1 ##2}%
+    \ifx#1\snapx at end
+        \@xp\snap at finish
+    \else
+        \ifx#1\relax \let#1\@empty\fi
+        \def\@tempa##1 ##2 ##3\@nil{##1 ##2}%
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-    \ifx#1\snapx at application
-      \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
-    \else
-      \xdef\rqv at list{\rqv at list{#3#1}}%
-      \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
-      \snap at intest{#3}{#1}%
-      \ifx#1\snapx at format \snap at check{#3.fmt}%
+        \ifx#1\snapx at application
+            \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+        \else
+            \xdef\rqv at list{\rqv at list{#3#1}}%
+            \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+            \snap at intest{#3}{#1}%
+            \ifx#1\snapx at format \snap at check{#3.fmt}\else
 %    \end{macrocode}
 %    Test if current file is \fn{snapshot.sty}. Need to pre-expand the
 %    extension part to ensure the test is correct.
 %    \begin{macrocode}
-      \else
-        \edef\@tempa{\@nx\string at equal{snapshot.sty}{#3#1}}%
-        \if\@tempa \snap at selfcheck \fi
-      \fi
+                \edef\@tempa{\@nx\string at equal{snapshot.sty}{#3#1}}%
+                \if\@tempa \snap at selfcheck \fi
+            \fi
+        \fi
     \fi
-  \fi
-  \futurelet\@let at token\snap at branch
+    \futurelet\@let at token\snap at branch
 }
+
 \@onlypreamble\snap at store@b
 %    \end{macrocode}
-%  \end{macro}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at write}
 %    Default setup is geared to write the dependency list to a \fn{.dep}
 %    file. The option \opt{log} means write it to the \tex/ log instead.
 %    \begin{macrocode}
@@ -540,16 +695,19 @@
 \def\snap at write{\immediate\write\snap at out}
 \let\snap at out\sixt@@n % fallback, probably never used
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \subsection{Package options}
+%
 %    \begin{macrocode}
 \DeclareOption{dep}{%
-  \def\snap at write{\immediate\write\snap at out}%
+    \def\snap at write{\immediate\write\snap at out}%
 }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \DeclareOption{log}{%
-  \let\snap at write\typeout
+    \let\snap at write\typeout
 }
 %    \end{macrocode}
 %
@@ -577,32 +735,39 @@
 %    in the \fn{.dvi} file.
 %    \begin{macrocode}
 \DeclareOption{tfm}{%
-  \typeout{Option 'tfm' not implemented yet [1999/09/23]}%
+    \typeout{Option 'tfm' not implemented yet [1999/09/23]}%
 }
 %    \end{macrocode}
 %
-%    Warnings and errors.
+%    \subsubsection{Warnings and errors}
+%    \begin{macro}{\snap at mismatch@warning}
+%    \begin{macro}{\snap at mismatch}
 %    \begin{macrocode}
 \def\snap at mismatch@warning#1#2#3{\PackageWarningNoLine{#1}{#2}}
 \def\snap at mismatch{\snap at mismatch@warning}
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \DeclareOption{error}{%
-  \def\snap at mismatch{\PackageError}%
-  \def\snap at selfcheck{\snap at selfcheck@a}%
-  \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
+    \def\snap at mismatch{\PackageError}%
+    \def\snap at selfcheck{\snap at selfcheck@a}%
+    \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
 }
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \DeclareOption{warning}{%
-  \def\snap at mismatch{\snap at mismatch@warning}%
-  \def\snap at selfcheck{\snap at selfcheck@a}%
-  \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
+    \def\snap at mismatch{\snap at mismatch@warning}%
+    \def\snap at selfcheck{\snap at selfcheck@a}%
+    \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
 }
 %    \end{macrocode}
 %
+%
+%    \begin{macro}{\snap at select@all}
+%    \begin{macro}{\snap at select}
 %    Because the exact form of the version number is not mandated by
 %    \LaTeX{}, just take the first two ``words'' delimited by spaces.
 %    And take a little extra care to properly handle multiple spaces
@@ -611,7 +776,12 @@
 \def\snap at select@all#1#2 #3#4 #5\@nil{#1#2 #3#4}
 \let\snap at select\@empty
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at seldate}
+%    \begin{macro}{\snap at selversion}
+%    \begin{macro}{\snap at selmajor}
 %    If the naming conventions seem a little peculiar here, it's because
 %    I had to add some pieces later that I didn't think of initially,
 %    and I wanted to minimize the chances of compatibility problems for
@@ -621,21 +791,31 @@
 \def\snap at selversion#1#2 #3{\snap at select@version #3}%
 \def\snap at selmajor#1#2 #3{\snap at select@major #3}%
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \DeclareOption{date}{\let\snap at select=\snap at seldate}
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at select@version}
 %    \begin{macrocode}
 \def\snap at select@version#1{%
   \ifodd 0#11 \@xp\snap at sva\@xp#1\else\@xp\snap at select@version\fi
 }
 \def\snap at sva#1.#2 #3\@nil{#1.#2}
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\snap at select@major}
+%    \begin{macrocode}
 \def\snap at select@major#1{%
   \ifodd 0#11 \@xp\snap at svm\@xp#1\else\@xp\snap at select@major\fi
 }
 \def\snap at svm#1.#2\@nil{#1}
 %    \end{macrocode}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \DeclareOption{version}{\let\snap at select\snap at selversion}
@@ -647,30 +827,34 @@
 \DeclareOption{bbinfo}{\def\snap at bbinfo{00}}
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at splitter}
 %    Give this an inert definition, for the time being, until we are
 %    ready to do the split.
 %    \begin{macrocode}
 \let\snap at splitter=?
 \AtBeginDocument{%
-  \xdef\@filelist{\@filelist\snap at splitter}%
+    \xdef\@filelist{\@filelist\snap at splitter}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at selfcheck}
 %    \begin{macrocode}
 \let\snap at selfcheck\@empty
 \let\snap at selfcheck@a\@empty
 %    \end{macrocode}
+%    \end{macro}
 %
 %    The \opt{self-warning} option would normally be used in conjunction
 %    with the \opt{error} option.
 %    \begin{macrocode}
 \DeclareOption{self-warning}{%
-  \def\snap at selfcheck{%
-    \begingroup
-    \def\snap at mismatch{\snap at mismatch@warning}%
-    \snap at selfcheck@a
-    \endgroup
-  }
+    \def\snap at selfcheck{%
+        \begingroup
+            \def\snap at mismatch{\snap at mismatch@warning}%
+            \snap at selfcheck@a
+        \endgroup
+    }
 }
 %    \end{macrocode}
 %
@@ -679,16 +863,19 @@
 \ProcessOptions\relax
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at restore@extensions}
 %    We need the following patch to make up for the fact that
 %    \cs{@pkgextension} and \cs{@clsextension} are marked in the \latex/
 %    kernel as \qq{only preamble}.
 %    \begin{macrocode}
 \edef\snap at restore@extensions{%
-  \def\@nx\@pkgextension{\@pkgextension}%
-  \def\@nx\@clsextension{\@clsextension}%
+    \def\@nx\@pkgextension{\@pkgextension}%
+    \def\@nx\@clsextension{\@clsextension}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at pad}
 %    Pad filename strings out to 8+3 length so that the list will look
 %    pretty.
 %    \begin{macrocode}
@@ -696,7 +883,9 @@
 \def\snap at pad@a#1#2#3#4#5\@nil{\snap at pad@b#1#2#3#4\space\@nil}
 \def\snap at pad@b#1\space#2\@nil#3{\def#3{#2}}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at trim@version}
 %    First stage: discard leading spaces before the first and second
 %    nonspace strings in the argument. Take the first nonspace string as
 %    the date. Since we only do equal/not-equal testing on dates, it
@@ -716,6 +905,7 @@
 %    \begin{macrocode}
 \def\snap at trim@c#1#2 #3\@nil{#2}
 %    \end{macrocode}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \let\rqv at list=\@empty
@@ -726,13 +916,14 @@
 \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
-  }%
+    \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
 %    \end{macrocode}
 %    Ensure that files get recorded.
@@ -740,81 +931,100 @@
 \listfiles
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at doit}
 %    \begin{macrocode}
 \def\snap at doit#1{%
-  \begingroup
-  \ifx\delimiter#1\delimiter
-  \else
-    \filename at parse{#1}%
-    \let\@tempd\@empty
-    \ifx\filename at ext\relax
-      \def\@tempa{file}\def\@tempb{~~~}%
-    \else\ifx\filename at ext\@pkgextension
-      \def\@tempa{package}\let\@tempb\@empty
-    \else\ifx\filename at ext\@clsextension
-      \def\@tempa{class}\def\@tempb{~~}%
-    \else\ifx\filename at ext\@fmtextension
-      \def\@tempa{format}\def\@tempb{~}%
-    \else\ifx\filename at ext\@tfmextension
-      \def\@tempa{tfm}\def\@tempb{~~~~}%
-    \else
-      \def\@tempa{file}\edef\@tempd{.\filename at ext}%
-      \def\@tempb{~~~}%
-    \fi\fi\fi\fi\fi
-    \@xp\let\@xp\@tempe
-      \csname ver@\filename at base %
-        \ifx\filename at ext\relax\else.\filename at ext\fi\endcsname
-    \ifx\@tempe\@empty \let\@tempe\relax \fi
-    \edef\@tempe{%
-      \ifx\@tempe\relax 0000/00/00 v0.0%
-      \else
-        \@xp\@xp\@xp\snap at trim@version\@xp\@tempe\space v0.0 v0.0 \@nil
-      \fi
-    }%
-    \edef\@tempc{\filename at area\filename at base\@tempd}% full file name
-    \@xp\snap at pad\@tempc\space~~~~~~~~~~~~~~~~\@nil\@tempd
-    \let~\space
-    \snap at write{\space\space *{\@tempa}\@tempb{\@tempc}\@tempd{\@tempe}}%
-  \fi
-  \aftergroup\snap at doit
-  \endgroup
-}%
+    \begingroup
+        \ifx\delimiter#1\delimiter \else
+            \filename at parse{#1}%
+            \let\@tempd\@empty
+            \ifx\filename at ext\relax
+                \def\@tempa{file}\def\@tempb{~~~}%
+            \else\ifx\filename at ext\@pkgextension
+                \def\@tempa{package}\let\@tempb\@empty
+            \else\ifx\filename at ext\@clsextension
+                \def\@tempa{class}\def\@tempb{~~}%
+            \else\ifx\filename at ext\@fmtextension
+                \def\@tempa{format}\def\@tempb{~}%
+            \else\ifx\filename at ext\@tfmextension
+                \def\@tempa{tfm}\def\@tempb{~~~~}%
+            \else
+                \def\@tempa{file}%
+                \edef\@tempd{.\filename at ext}%
+                \def\@tempb{~~~}%
+            \fi\fi\fi\fi\fi
+            \@xp\let\@xp\@tempe
+            \csname ver@\filename at base %
+                \ifx\filename at ext\relax\else.\filename at ext\fi\endcsname
+            \ifx\@tempe\@empty \let\@tempe\relax \fi
+            \edef\@tempe{%
+                \ifx\@tempe\relax 0000/00/00 v0.0%
+                \else
+                    \@xp\@xp\@xp\snap at trim@version\@xp\@tempe\space v0.0 v0.0 \@nil
+                \fi
+            }%
+            \edef\@tempc{\filename at area\filename at base\@tempd}% full file name
+            \@xp\snap at pad\@tempc\space~~~~~~~~~~~~~~~~\@nil\@tempd
+            \let~\space
+            \snap at write{\space\space *{\@tempa}\@tempb{\@tempc}\@tempd{\@tempe}}%
+        \fi
+        \aftergroup\snap at doit
+    \endgroup
+}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at bracify}
 %    \begin{macrocode}
 \def\snap at bracify#1#2,{%
   \ifx\@empty#1\expandafter\@gobble\else {#1#2}\fi \snap at bracify
 }
+%    \end{macrocode}
+%    \end{macro}
+%
+%    \begin{macro}{\snap at splitter@a}
+%    \begin{macrocode}
 \def\snap at splitter@a{%
-  \iffalse{{\fi }}% close current file name, end definition
-  \xdef\specific at files{%
-    \iffalse}\fi
-    \specific at files
-    \expandafter\@gobble\string % discard one closing brace
+    \iffalse{{\fi }}% close current file name, end definition
+    \xdef\specific at files{%
+        \iffalse}\fi
+        \specific at files
+        \expandafter\@gobble\string % discard one closing brace
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at fdcheck}
 %    \begin{macrocode}
 \def\snap at fdcheck#1{%
-  \ifx\delimiter#1\@xp\@gobble
-  \else\snap at fda#1\@empty.fd\@empty ?\@nil
-  \fi
-  \snap at fdcheck
+    \ifx\delimiter#1%
+        \@xp\@gobble
+    \else
+        \snap at fda#1\@empty.fd\@empty ?\@nil
+    \fi
+    \snap at fdcheck
 }
+
 \def\snap at fda#1.fd\@empty#2#3\@nil{%
-  \if ?#2%
-    \xdef\specific at files{\specific at files {#1}}%
-  \else
-    \xdef\general at files{\general at files {#1.fd}}%
-  \fi
+    \if ?#2%
+        \xdef\specific at files{\specific at files {#1}}%
+    \else
+        \xdef\general at files{\general at files {#1.fd}}%
+    \fi
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\general at files}
+%    \begin{macro}{\specific at files}
 %    \begin{macrocode}
 \let\general at files\@empty
 \let\specific at files\@empty
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
+%    \begin{macro}{\SpecialInput}
 %    The \cn{SpecialInput} command is related to the \opt{packages-only}
 %    option. Apart from some ad hoc handling for \fn{.fd} files that get
 %    loaded on demand, all files that are input after
@@ -826,128 +1036,149 @@
 %    go in the specific-files list.
 %    \begin{macrocode}
 \newcommand{\SpecialInput}[1]{%
-  \xdef\specific at files{\specific at files{#1}}%
-  \@@input#1\relax
+    \xdef\specific at files{\specific at files{#1}}%
+    \@@input#1\relax
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\@dofilelist}
 %    Our definition of \cs{@dofilelist} does not retain much resemblance
 %    to the original in the \LaTeX{} kernel.
 %    \begin{macrocode}
 \def\@dofilelist{%
-  \snap at restore@extensions
-  \xdef\general at files{\@xp\snap at bracify \@filelist \@empty,\@empty,}%
-  \let\snap at splitter\snap at splitter@a
-  \xdef\general at files{\general at files}%
-  \let\@tempa\specific at files \global\let\specific at files\@empty
-  \@xp\snap at fdcheck\@tempa{\delimiter}%
-  \ifx\rqv at list\@empty
-  \else \rqv at compare@lists
-  \fi
-  \ifx\snap at write\typeout
-  \else
-    \newwrite\snap at out
-    \immediate\openout\snap at out=\jobname.dep \relax
-  \fi
-  \snap at write{\string\RequireVersions\@charlb}%
-  \snap at write{\space\space *{application}%
-    \snapshotApplication
-  }%
-  \@xp\snap at doit\general at files{\delimiter\aftergroup\@gobble\@gobble}%
-  \ifx\specific at files\@empty
-  \else
-    \snap at specific
-  \fi
-  \snap at write{\@charrb}%
-  \ifx\snap at write\typeout
-  \else \immediate\closeout\snap at out
-    \typeout{Dependency list written on \jobname.dep.}%
-  \fi
-}%
+    \snap at restore@extensions
+    \xdef\general at files{\@xp\snap at bracify \@filelist \@empty,\@empty,}%
+    \let\snap at splitter\snap at splitter@a
+    \xdef\general at files{\general at files}%
+    \let\@tempa\specific at files
+    \global\let\specific at files\@empty
+    \@xp\snap at fdcheck\@tempa{\delimiter}%
+    \ifx\rqv at list\@empty \else
+        \rqv at compare@lists
+    \fi
+    \ifx\snap at write\typeout \else
+        \newwrite\snap at out
+        \immediate\openout\snap at out=\jobname.dep \relax
+    \fi
+    \snap at write{\string\RequireVersions\@charlb}%
+    \snap at write{\space\space *{application}%
+        \snapshotApplication
+    }%
+    \@xp\snap at doit\general at files{\delimiter\aftergroup\@gobble\@gobble}%
+    \ifx\specific at files\@empty \else
+        \snap at specific
+    \fi
+    \snap at write{\@charrb}%
+    \ifx\snap at write\typeout \else
+        \immediate\closeout\snap at out
+        \typeout{Dependency list written on \jobname.dep.}%
+    \fi
+}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at specific}
 %    \begin{macrocode}
 \def\snap at specific{%
-  \snap at write{ \space *{-------}{Document-specific files:}{----}}%
-  \@xp\snap at doit\specific at files{\delimiter\aftergroup\@gobble\@gobble}%
+    \snap at write{ \space *{-------}{Document-specific files:}{----}}%
+    \@xp\snap at doit\specific at files{\delimiter\aftergroup\@gobble\@gobble}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\rqv at condense}
 %    The \cs{rqv at compare@lists} function checks to see if any files
 %    are found only in the RequireVersions list or only in the
 %    \cs{general at files} list.
 %    \begin{macrocode}
 \def\rqv at condense#1{%
-  \@xp\ifx\csname ver@#1\endcsname\N
-  \else
-    \edef\L{\L{#1}}%
-    \@xp\let\csname ver@#1\endcsname=\N
-  \fi
-  \rqv at condense
+    \@xp\ifx\csname ver@#1\endcsname\N \else
+        \edef\L{\L{#1}}%
+        \@xp\let\csname ver@#1\endcsname=\N
+    \fi
+    \rqv at condense
 }
+
 \def\rqv at condend{\endcsname ?\fi
-  \@xp\@xp\@xp\@gobbletwo\csname @xp\iftrue}
+    \@xp\@xp\@xp\@gobbletwo\csname @xp\iftrue}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\rqv at overloaded}
 %    \begin{macrocode}
 \def\rqv at overloaded#1{%
-  \snap at mismatch{snapshot}{^^J%
-    File #1 loaded though not in \noexpand\RequireVersions list%
-  }\@ehc
+    \snap at mismatch{snapshot}{^^J%
+        File #1 loaded though not in \noexpand\RequireVersions list%
+    }\@ehc
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\rqv at notloaded}
 %    \begin{macrocode}
 \def\rqv at notloaded#1{%
-  \snap at mismatch{snapshot}{^^J%
-    File #1 [\csname rqv@#1\endcsname] required but not loaded%
-  }\@ehc
+    \snap at mismatch{snapshot}{^^J%
+        File #1 [\csname rqv@#1\endcsname] required but not loaded%
+    }\@ehc
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\rqv at set}
+%    \begin{macro}{\rqv at test}
 %    \begin{macrocode}
 \def\rqv at set#1{\@xp\let\csname ver@#1\endcsname\N \rqv at set}
 \def\rqv at test#1{\csname ver@#1\endcsname{#1}\rqv at test}
 %    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
 %
+%    \begin{macro}{\rqv at compare@lists}
 %    \begin{macrocode}
 \def\rqv at compare@lists{%
-  \begingroup
+    \begingroup
 %    \end{macrocode}
 %    Clear up duplicate file names (just in case) to avoid redundant
 %    warning messages. This should seldom be necessary in practice.
 %    \begin{macrocode}
-  \def\N{1}\let\L\@empty
-  \@xp\rqv at condense\rqv at list\rqv at condend
-  \global\let\rqv at list=\L
-  \def\N{2}\let\L\@empty
-  \@xp\rqv at condense\general at files\rqv at condend
-  \global\let\general at files=\L
+        \def\N{1}%
+        \let\L\@empty
+        \@xp\rqv at condense\rqv at list\rqv at condend
+        \global\let\rqv at list=\L
+        \def\N{2}%
+        \let\L\@empty
+        \@xp\rqv at condense\general at files\rqv at condend
+        \global\let\general at files=\L
 %    \end{macrocode}
 %    Let's make a shorthand for the code that terminates our recursion.
 %    \begin{macrocode}
-  \def\T{\@firstoftwo{\endcsname\@empty\@gobbletwo}}%
+        \def\T{\@firstoftwo{\endcsname\@empty\@gobbletwo}}%
 %    \end{macrocode}
 %    Set all the loaded general files to an error function.
 %    \begin{macrocode}
-  \let\N\rqv at overloaded \@xp\rqv at set\general at files \T
+        \let\N\rqv at overloaded \@xp\rqv at set\general at files \T
 %    \end{macrocode}
 %    Set all the required files to an ignore function.
 %    \begin{macrocode}
-  \let\N\@gobble \@xp\rqv at set\rqv at list \T
+        \let\N\@gobble
+        \@xp\rqv at set\rqv at list \T
 %    \end{macrocode}
 %    Execute all the general files.
 %    \begin{macrocode}
-  \@xp\rqv at test\general at files{\endcsname\csname @gobbletwo}%
+        \@xp\rqv at test\general at files{\endcsname\csname @gobbletwo}%
 %    \end{macrocode}
 %    And now do essentially the same thing in the reverse direction.
 %    \begin{macrocode}
-  \let\N\rqv at notloaded \@xp\rqv at set\rqv at list \T
-  \let\N\@gobble \@xp\rqv at set\general at files \T
-  \@xp\rqv at test\rqv at list{\endcsname\csname @gobbletwo}%
-  \endgroup
+        \let\N\rqv at notloaded
+        \@xp\rqv at set\rqv at list \T
+        \let\N\@gobble
+        \@xp\rqv at set\general at files \T
+        \@xp\rqv at test\rqv at list{\endcsname\csname @gobbletwo}%
+    \endgroup
 }
 %    \end{macrocode}
+%    \end{macro}
 %
 %    Compensate for a bug in old versions of \fn{amsgen.sty}. This is a
 %    little tricky.
@@ -958,13 +1189,14 @@
 %    \begin{macrocode}
 %\@namedef{ver at amsgen.sty}{1996/10/29 v1.2b}
 \AtBeginDocument{%
-  \@ifundefined{ver at amsgen}{}{%
-    \@xp\let\csname ver at amsgen.sty\@xp\endcsname
-                    \csname ver at amsgen\endcsname
-  }%
+    \@ifundefined{ver at amsgen}{}{%
+        \@xp\let\csname ver at amsgen.sty\@xp\endcsname
+                        \csname ver at amsgen\endcsname
+    }%
 }
 %    \end{macrocode}
 %
+%    \begin{macro}{\ProvidesFile}
 %    Because \cs{ProvidesFile} is used in \fn{.fd} files which are
 %    normally read with special catcodes, there tend to
 %    be problems with whitespace characters being erroneously lost from
@@ -973,10 +1205,10 @@
 %    affected some older versions of \latex/.
 %    \begin{macrocode}
 \def\ProvidesFile#1{%
-  \def\snap at checker{\snap at check{#1}}%
-  \begingroup
-    \aftergroup\snap at checker
-    \catcode`\ 10
+    \def\snap at checker{\snap at check{#1}}%
+    \begingroup
+        \aftergroup\snap at checker
+        \catcode`\ 10
 %    \end{macrocode}
 %    Added guards from 2001/06/01 version of \latex/.  These are
 %    necessary because, for example, \pkg{inputenc} sets
@@ -984,17 +1216,19 @@
 %    reading input encoding files.  The guards prevent an ``invalid
 %    character'' error.
 %    \begin{macrocode}
-    \ifnum\endlinechar < 256
-        \ifnum \endlinechar>\m at ne
-            \catcode\endlinechar 10
+        \ifnum\endlinechar < 256
+            \ifnum \endlinechar>\m at ne
+                \catcode\endlinechar 10
+            \fi
         \fi
-    \fi
-    \@makeother\/%
-    \@makeother\&%
-    \kernel at ifnextchar[{\snap at providesfile{#1}}{\snap at providesfile{#1}[]}%
+        \@makeother\/%
+        \@makeother\&%
+        \kernel at ifnextchar[{\snap at providesfile{#1}}{\snap at providesfile{#1}[]}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at graphic@test}
 %    Normally the string found in the second arg of \cs{ProvidesFile}
 %    (for a nongraphics file) would begin with the usual date string.
 %    The \cs{includegraphics} command, however, begins the second arg
@@ -1005,18 +1239,29 @@
 %    \begin{macrocode}
 \def\snap at graphic@test#1#2#3\@nil{r\if G#1#2\else X\fi}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at providesfile}
 %    \begin{macrocode}
 \def\snap at providesfile#1[#2]{%
-  \wlog{File: #1 #2}%
-  \if\snap at graphic@test#2@@\@nil
-    \snap at record@graphic#1\relax #2 (type ??)\@nil
-  \else
-    \expandafter\xdef\csname ver@#1\endcsname{#2}%
-  \fi
-  \endgroup
+        \wlog{File: #1 #2}%
+%    \end{macrocode}
+%    Adopt a suggestion made by user egrep on the \TeX\ stack exchange
+%    (\url{https://tex.stackexchange.com/questions/508985}) but
+%    without the use of the \cs{expanded} extension.  This makes it
+%    more likely that \pkg{snapshot} can deal with macros inside the
+%    optional arguments of \cs{Provides...} commands.
+%    \begin{macrocode}
+        \edef\@tempa{#2}%
+        \if\@xp\snap at graphic@test\@tempa @@\@nil
+            \snap at record@graphic#1\relax #2 (type ??)\@nil
+        \else
+            \@xp\xdef\csname ver@#1\endcsname{#2}%
+        \fi
+    \endgroup
 }
 %    \end{macrocode}
+%    \end{macro}
 %
 %    This is what \cn{includegraphics} does to record graphic file
 %    information.
@@ -1028,46 +1273,57 @@
 %#2<-Graphic file (type eps)
 %\end{verbatim}
 %
+%    \begin{macro}{\snap at record@graphic}
 %    Check the graphics info.
 %    \begin{macrocode}
 \def\snap at record@graphic#1\relax #2(type #3)#4\@nil{%
-  \expandafter\xdef\csname ver@#1\endcsname{%
-    Graphic%
-    \if\snap at bbinfo :bb=\Gin at llx/\Gin at lly/\Gin at urx/\Gin at ury\fi
-    \space v0.0%
-  }%
+    \expandafter\xdef\csname ver@#1\endcsname{%
+        Graphic%
+        \if\snap at bbinfo :bb=\Gin at llx/\Gin at lly/\Gin at urx/\Gin at ury\fi
+        \space v0.0%
+    }%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\@pr at videpackage}
 %    \begin{macrocode}
 \def\@pr at 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 at check{\@currname.\@currext}%
+    \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 at check{\@currname.\@currext}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at selfcheck@a}
 %    \begin{macrocode}
 \def\snap at selfcheck@a{\snap at check{snapshot.sty}}
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\@nofmt}
 %    \begin{macrocode}
 \def\@nofmt#1.fmt.#2 {#1 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at mismatch@a}
 %    \begin{macrocode}
 \def\snap at mismatch@a#1#2#3{%
-  \snap at mismatch{snapshot}{^^J%
-    \space\space Required version #2 of \@nofmt#1.fmt. and^^J%
-    \space\space provided version #3 do not match%
-  }\@ehc
+    \snap at mismatch{snapshot}{^^J%
+        \space\space Required version #2 of \@nofmt#1.fmt. and^^J%
+        \space\space provided version #3 do not match%
+    }\@ehc
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at compare@versions}
 %    When comparing \cs{rqv at foo.sty} (information from a previous
 %    \latex/ run) with \cs{ver at foo.sty} (information from current run),
 %    we first call \cs{snap at trim@version} on the latter to clear away
@@ -1074,31 +1330,33 @@
 %    any idiosyncrasies in the contents.
 %    \begin{macrocode}
 \def\snap at compare@versions#1{%
-  \begingroup
-    \@ifundefined{rqv@#1}{}{%
-      \edef\0{\csname rqv@#1\endcsname}%
-      \edef\1{\csname ver@#1\endcsname}%
-      \edef\1{\@xp\snap at trim@version\1 v0.0 v0.0 \@nil}%
-      \edef\@tempa{\@xp\snap at select\0 v0.0 v0.0 \@nil}%
-      \edef\@tempb{\@xp\snap at select\1 v0.0 v0.0 \@nil}%
-      \ifx\@tempa\@tempb
-      \else
-        \edef\@tempd{\@nx\snap at mismatch@a{#1}{\@tempa}{\@tempb}}%
-        \@xp\@tempd
-      \fi
-    }%
-  \endgroup
+    \begingroup
+        \@ifundefined{rqv@#1}{}{%
+            \edef\0{\csname rqv@#1\endcsname}%
+            \edef\1{\csname ver@#1\endcsname}%
+            \edef\1{\@xp\snap at trim@version\1 v0.0 v0.0 \@nil}%
+            \edef\@tempa{\@xp\snap at select\0 v0.0 v0.0 \@nil}%
+            \edef\@tempb{\@xp\snap at select\1 v0.0 v0.0 \@nil}%
+            \ifx\@tempa\@tempb \else
+                \edef\@tempd{\@nx\snap at mismatch@a{#1}{\@tempa}{\@tempb}}%
+                \@xp\@tempd
+            \fi
+        }%
+    \endgroup
 %    \end{macrocode}
 %    When the \opt{test} option is in effect, jump out of the current
 %    file instead of continuing.
 %    \begin{macrocode}
-  \snap at test@abort
+    \snap at test@abort
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at test@abort}
 %    \begin{macrocode}
 \let\snap at test@abort=\@empty
 %    \end{macrocode}
+%    \end{macro}
 %
 % \section{Compatibility}
 %
@@ -1122,8 +1380,8 @@
 %
 %    \begin{macrocode}
 \ifx\snap at select\@empty
-  \let\snap at compare@versions\@gobble
-  \let\snap at check\@gobble
+    \let\snap at compare@versions\@gobble
+    \let\snap at check\@gobble
 \fi
 %    \end{macrocode}
 %
@@ -1155,13 +1413,13 @@
 %    \begin{macrocode}
 \def\restore at some@catcodes{}
 \def\save at some@catcodes{%
-  \edef\restore at some@catcodes{%
-    \catcode\number`\@=\number\catcode`\@
-    \catcode\number`\"=\number\catcode`\"
-    \catcode\number`\^=\number\catcode`\^
-    \catcode\number`\_=\number\catcode`\_
-    \relax
-  }%
+    \edef\restore at some@catcodes{%
+        \catcode\number`\@=\number\catcode`\@
+        \catcode\number`\"=\number\catcode`\"
+        \catcode\number`\^=\number\catcode`\^
+        \catcode\number`\_=\number\catcode`\_
+        \relax
+    }%
 }
 %    \end{macrocode}
 %
@@ -1187,12 +1445,15 @@
 %    executed and that the \cs{if at compatibility} switch got set
 %    accordingly.
 %
+%    \begin{macro}{\snap at intest}
 %    \begin{macrocode}
 \def\snap at intest#1#2{%
-  \message{^^J}%
-  \begingroup \edef\0{#1#2}\def\9{latex209.def}%
-  \ifx\0\9\global\@compatibilitytrue \fi
-  \ifx#2\snapx at format
+    \message{^^J}%
+    \begingroup
+        \edef\0{#1#2}%
+        \def\9{latex209.def}%
+        \ifx\0\9\global\@compatibilitytrue \fi
+        \ifx#2\snapx at format
 %    \end{macrocode}
 %    If arg1 + arg2 = ``LaTeX2e.fmt'', the calling function
 %    \cs{snap at storeb} will run \cs{snap at check} separately.
@@ -1199,52 +1460,63 @@
 %    This is a crude way of making things work in that case without
 %    much extra trouble.
 %    \begin{macrocode}
-    \def\snap at test@abort{\endgroup}%
-  \else
-    \edef\N{%
-      \noexpand\snap at intest@b{#1#2}%
-        {#1}{\@xp\@gobble#2\@empty}%
-        {\csname rqv@#1#2\endcsname}}%
-    \expandafter\endgroup\N
-  \fi
+            \def\snap at test@abort{\endgroup}%
+        \else
+            \edef\N{%
+                \noexpand\snap at intest@b{#1#2}%
+                    {#1}{\@xp\@gobble#2\@empty}%
+                    {\csname rqv@#1#2\endcsname}}%
+            \expandafter\endgroup\N
+        \fi
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at intest@b}
 %    \begin{macrocode}
 \def\snap at intest@b#1#2#3#4{%
-  \def\@currname{#2}\def\@currext{#3}%
-  \begingroup \lccode`\/=`\0\relax\lowercase{\endgroup
-  \ifnum\snap at seldate#4 00 0\@nil>\z@
-    }% matches \lowercase
-    \save at some@catcodes
-    \@@input #1 \relax
-    \restore at some@catcodes
-  \else
-    \snap at specialtest{#1}{#4}%
-  \fi
+    \def\@currname{#2}%
+    \def\@currext{#3}%
+    \begingroup
+        \lccode`\/=`\0\relax\lowercase{\endgroup
+            \ifnum\snap at seldate#4 00 0\@nil>\z@
+                }% matches \lowercase
+                \save at some@catcodes
+                \@@input #1 \relax
+                \restore at some@catcodes
+            \else
+                \snap at specialtest{#1}{#4}%
+            \fi
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\snap at specialtest}
 %    \begin{macrocode}
 \def\snap at specialtest#1#2{%
-  \fake at input{#1}%
+    \fake at input{#1}%
 }
 %    \end{macrocode}
+%    \end{macro}
 %
+%    \begin{macro}{\fake at input}
 %    \begin{macrocode}
 \def\fake at input#1{%
-  \begingroup
-  % Ensure that outer \foo or unmatched braces don't trip us up
-  \catcode`\\=12 \catcode`\{=12 \catcode`\}=12
-  \endinput
+    \begingroup
+        % Ensure that outer \foo or unmatched braces don't trip us up
+        \catcode`\\=12
+        \catcode`\{=12
+        \catcode`\}=12
+        \endinput
 %    \end{macrocode}
 %    Note that these definitions of \cs{G} and \cs{?} are local, and
 %    recall that one-letter cs names don't use up hash table entries.
 %    \begin{macrocode}
-  \def\G{\@car\endgroup}%
-  \expandafter\futurelet\expandafter\?\expandafter\G\@@input#1 \relax\@nil
+    \def\G{\@car\endgroup}%
+    \expandafter\futurelet\expandafter\?\expandafter\G\@@input#1 \relax\@nil
 }
 %    \end{macrocode}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \let\snap at test@abort=\endinput
@@ -1251,18 +1523,21 @@
 \let\snap at selfcheck=\@empty
 %    \end{macrocode}
 %
+%    \begin{macro}{\snap at finish}
 %    There's an extra close-brace left hanging around at the end, but I
 %    guess we don't care.
 %    \begin{macrocode}
 \def\snap at finish{%%
-  \endgroup \message{^^J}%
-  \def\X##1{##1,\X}%
-  \edef\@filelist{\@xp\X\rqv at list{\@gobbletwo}}%
-  \def\X##1,?{##1}\edef\@filelist{\@xp\X\@filelist ?}%
-  \@dofilelist
-  \@@end
-}%
+    \endgroup
+    \message{^^J}%
+    \def\X##1{##1,\X}%
+    \edef\@filelist{\@xp\X\rqv at list{\@gobbletwo}}%
+    \def\X##1,?{##1}\edef\@filelist{\@xp\X\@filelist ?}%
+    \@dofilelist
+    \@@end
+}
 %    \end{macrocode}
+%    \end{macro}
 %
 %    \begin{macrocode}
 \def\snap at mismatch#1#2#3{}
@@ -1273,25 +1548,24 @@
 %    \cs{ProvidesFile} at all.
 %    \begin{macrocode}
 \renewcommand{\RequireVersions}[2][]{%
-  \begingroup
-  \makeatletter
-  \def\snap at check{\snap at compare@versions}%%
-  \let\snapx at tfm=\snap at ignore
+    \begingroup
+        \makeatletter
+        \def\snap at check{\snap at compare@versions}%%
+        \let\snapx at tfm=\snap at ignore
 %    \end{macrocode}
 %    This seems to help, with english.ldf for example, to prevent an
 %    endless loop when attempting to load babel.def.
 %    \begin{macrocode}
-  \def\ProvidesLanguage##1{\ProvidesFile{##1.ldf}}%
-  \iffalse{\fi \futurelet\@let at token\snap at branch #2}%
-  \endgroup
+        \def\ProvidesLanguage##1{\ProvidesFile{##1.ldf}}%
+        \iffalse{\fi \futurelet\@let at token\snap at branch #2}%
+    \endgroup
 }
 %    \end{macrocode}
 %
+%    \section{Finale}
+%
 %    The usual \cs{endinput} to ensure that random garbage at the end of
 %    the file doesn't get copied by \fn{docstrip}.
 %    \begin{macrocode}
 \endinput
 %    \end{macrocode}
-%
-% \CheckSum{1209}
-% \Finale

Modified: trunk/Master/texmf-dist/source/latex/snapshot/snapshot.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/snapshot/snapshot.ins	2020-10-22 20:51:55 UTC (rev 56734)
+++ trunk/Master/texmf-dist/source/latex/snapshot/snapshot.ins	2020-10-22 20:52:12 UTC (rev 56735)
@@ -1,6 +1,6 @@
 %% filename: snapshot.ins
-%% version: 1.00
-%% date: 2010/08/13
+%% version: 1.01
+%% date: 2020/06/16
 %%
 %% American Mathematical Society
 %% Technical Support
@@ -13,7 +13,7 @@
 %% fax: (401) 331-3842
 %% email: tech-support at ams.org
 %% 
-%% Copyright 2010 American Mathematical Society.
+%% Copyright 2010, 2020 American Mathematical Society.
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3c
@@ -38,7 +38,7 @@
 
 \preamble
 
-Copyright 2001, 2004, 2006, 2007, 2010, 2012 American Mathematical Society.
+Copyright 1999-2003, 2004, 2010, 2012, 2020 American Mathematical Society.
 
 American Mathematical Society
 Technical Support

Modified: trunk/Master/texmf-dist/tex/latex/snapshot/snapshot.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/snapshot/snapshot.sty	2020-10-22 20:51:55 UTC (rev 56734)
+++ trunk/Master/texmf-dist/tex/latex/snapshot/snapshot.sty	2020-10-22 20:52:12 UTC (rev 56735)
@@ -6,7 +6,7 @@
 %%
 %% snapshot.dtx 
 %% 
-%% Copyright 2001, 2004, 2006, 2007, 2010, 2012 American Mathematical Society.
+%% Copyright 1999-2003, 2004, 2010, 2012, 2020 American Mathematical Society.
 %% 
 %% American Mathematical Society
 %% Technical Support
@@ -33,7 +33,7 @@
 %% Society.
 %% 
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{snapshot}[2012/08/06 v2.13]
+\ProvidesPackage{snapshot}[2020/06/17 v2.14]
 \let\@xp=\expandafter \let\@nx=\noexpand
 \def\str at cmp#1#2\str at cmp#3{%
   \if #1#3\else F\@car\fi \str at cmp#2\str at cmp
@@ -42,73 +42,171 @@
   \str at cmp#1\relax\str at cmp#2{\relax\@gobbletwo}\@nil TT%
 }
 \newcommand{\RequireVersions}[2][]{}%
+
 \renewcommand{\RequireVersions}[1][]{%
-  \def\snap at check{\snap at compare@versions}%
-  \toks@{#1}\afterassignment\snap at storem
-  \let\@let at token=
+    \def\snap at check{\snap at compare@versions}%
+    \toks@{#1}%
+    \afterassignment\snap at storem
+    \let\@let at token=
 }
+
+\@onlypreamble\RequireVersions
 \def\snap at storem{%
-  \ifx\@let at token\bgroup
-  \else
-    \PackageError{snapshot}{Expected a `\@charlb' character here}\@ehc
-    \@xp\@gobblefour
-  \fi
-  \futurelet\@let at token\snap at branch
+    \ifx\@let at token\bgroup \else
+        \PackageError{snapshot}{Expected a `\@charlb' character here}\@ehc
+        \@xp\@gobblefour
+    \fi
+    \futurelet\@let at token\snap at branch
 }
-\@onlypreamble\RequireVersions
 \let\snap at check\@gobble
 \def\snap at finish{\toks@\bgroup}
 \def\snap at branch{%
-  \ifx\@let at token\egroup
-    \@xp\snap at finish
-  \else\ifx\@let at token *%
-    \let\reserved at c\snap at store@version
-  \else\ifx\@let at token\@sptoken
-    \lowercase{\def\reserved at c} {\futurelet\@let at token\snap at branch}%
-  \else
-    \let\reserved at c\snap at store@error
-  \fi\fi\fi
-  \reserved at c
+    \ifx\@let at token\egroup
+        \@xp\snap at finish
+    \else\ifx\@let at token *%
+        \let\reserved at c\snap at store@version
+    \else\ifx\@let at token\@sptoken
+        \lowercase{\def\reserved at c} {\futurelet\@let at token\snap at branch}%
+    \else
+        \let\reserved at c\snap at store@error
+    \fi\fi\fi
+    \reserved at c
 }
 \def\snap at store@error#1{%
-  \PackageError{snapshot}{Expected '*' here, not '#1'}\@ehc
+    \PackageError{snapshot}{Expected '*' here, not '#1'}\@ehc
 }
+
 \@onlypreamble\snap at store@error
 \def\snap at store@version #1#2#3#4{%
-  \@xp\snap at store@b\csname snapx@#2\endcsname{#2}{#3}{#4}%
+    \@xp\snap at store@b\csname snapx@#2\endcsname{#2}{#3}{#4}%
 }
+
 \@onlypreamble\snap at store@version
-\ifx\OmegaVersion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    {Omega}\space\space\space
-    {0000/00/00 v\OmegaVersion}%
-  }%
+
+\let\snapshotApplication\@empty
+
+\ifx\OmegaVersion\@@undefined \else
+    \edef\snapshotApplication{%
+        \ifx\AlephVersion\@@undefined
+            {Omega}\space\space\space
+            {0000/00/00 v\OmegaVersion}%
+        \else
+            {Aleph}\space\space\space
+            {0000/00/00 v\OmegaVersion-\AlephVersion}%
+        \fi
+    }%
 \fi
-\ifx\eTeXversion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    {eTeX}\space\space\space\space
-    {0000/00/00 v\number\eTeXversion\eTeXrevision}%
-  }%
-\fi
-\ifx\pdftexversion\@@undefined
-\else
-  \edef\snapshotApplication{%
-    \ifx\eTeXversion\@@undefined
-      {pdfTeX}\space\space
+
+\ifx\ptexversion\@@undefined\else
+    \edef\snapshotApplication{%
+        {pTeX}\space\space\space\space
+        {0000/00/00 v\number\ptexversion
+         \ifx\ptexminorversion\undefined \u \else.\number\ptexminorversion\fi
+         \ifx\ptexrevision\undefined \u \else\ptexrevision\fi}%
+    }%
+    \ifx\uptexversion\@@undefined
+        \ifx\epTeXversion\@@undefined\else
+            \edef\snapshotApplication{%
+                {epTeX}\space\space\space
+                {0000/00/00 v\number\epTeXversion}%
+            }%
+        \fi
     \else
-      {pdfeTeX}\space
+        \ifx\epTeXversion\@@undefined
+            \edef\snapshotApplication{%
+                {upTeX}\space\space\space
+                {0000/00/00 v\number\uptexversion
+                 \ifx\uptexrevision\undefined \u \else\uptexrevision\fi}%
+            }%
+        \else
+            \edef\snapshotApplication{%
+                {eupTeX}\space\space
+                {0000/00/00 v\number\uptexversion
+                 \ifx\uptexrevision\undefined \u \else\uptexrevision\fi
+                 --\number\epTeXversion}%
+            }%
+        \fi
     \fi
-      {0000/00/00 v0.\number\pdftexversion\pdftexrevision}%
-  }%
 \fi
-\@ifundefined{snapshotApplication}{%
-  \edef\snapshotApplication{%
-    {TeX}\space\space\space\space\space
-    {1990/03/25 v3.x}%
-  }%
-}{}
+
+\ifx\snapshotApplication\@empty
+    \ifx\XeTeXversion\@@undefined\else
+        \edef\snapshotApplication{%
+            {XeTeX}\space\space\space
+            {0000/00/00 v\number\XeTeXversion
+             \ifx\XeTeXrevision\undefined\else\XeTeXrevision\fi}%
+        }%
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\luatexversion\@@undefined\else
+        \begingroup
+            \@tempcnta\luatexversion
+            \divide\@tempcnta by 100
+            \edef\@tempa{\the\@tempcnta}%
+            \multiply\@tempcnta by 100
+            \@tempcntb\luatexversion
+            \advance\@tempcntb by -\@tempcnta
+            \edef\@tempa{\@tempa.\the\@tempcntb.\luatexrevision}%
+            \xdef\snapshotApplication{%
+                {luaTeX}\space\space
+                {0000/00/00 v\@tempa}%
+            }%
+        \endgroup
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\pdftexversion\@@undefined \else
+        \begingroup
+            \ifx\eTeXversion\@@undefined
+                \@tempswafalse
+            \else
+                \@tempswatrue
+            \fi
+            \@tempcnta\pdftexversion
+            \divide\@tempcnta by 100
+            \edef\@tempa{\the\@tempcnta}%
+            \multiply\@tempcnta by 100
+            \@tempcntb\pdftexversion
+            \advance\@tempcntb by -\@tempcnta
+            \ifnum\@tempcntb > 39
+                \@tempswafalse
+            \fi
+            \edef\@tempa{\@tempa.\the\@tempcntb.\pdftexrevision}%
+            \xdef\snapshotApplication{%
+                \if at tempswa
+                    {pdfeTeX}\space
+                \else
+                    {pdfTeX}\space\space
+                \fi
+                {0000/00/00 v\@tempa}%
+            }%
+        \endgroup
+    \fi
+\fi
+
+\ifx\snapshotApplication\@empty
+    \ifx\eTeXversion\@@undefined \else
+        \edef\snapshotApplication{%
+            {eTeX}\space\space\space\space
+            {0000/00/00 v\number\eTeXversion
+            \ifx\eTeXrevision\undefined
+                \ifx\eTeXminorversion\undefined\else.\number\eTeXminorversion\fi
+            \else
+                \eTeXrevision
+            \fi
+            }%
+        }%
+    \fi
+\fi
+\ifx\snapshotApplication\@empty
+    \edef\snapshotApplication{%
+        {TeX}\space\space\space\space\space
+        {1990/03/25 v3.x}%
+    }%
+\fi
 \def\@fmtextension{fmt}
 \def\@tfmextension{tfm}
 \edef\snapx at package{.\@pkgextension}
@@ -121,51 +219,51 @@
 \let\snapx at end\@@end
 \expandafter\let\csname snapx at -------\endcsname\snapx at end
 \def\snap at store@b#1#2#3#4{%
-  \ifx#1\snapx at end
-    \@xp\snap at finish
-  \else
-    \ifx#1\relax \let#1\@empty\fi
-    \def\@tempa##1 ##2 ##3\@nil{##1 ##2}%
-    \ifx#1\snapx at application
-      \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+    \ifx#1\snapx at end
+        \@xp\snap at finish
     \else
-      \xdef\rqv at list{\rqv at list{#3#1}}%
-      \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
-      \snap at intest{#3}{#1}%
-      \ifx#1\snapx at format \snap at check{#3.fmt}%
-      \else
-        \edef\@tempa{\@nx\string at equal{snapshot.sty}{#3#1}}%
-        \if\@tempa \snap at selfcheck \fi
-      \fi
+        \ifx#1\relax \let#1\@empty\fi
+        \def\@tempa##1 ##2 ##3\@nil{##1 ##2}%
+        \ifx#1\snapx at application
+            \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+        \else
+            \xdef\rqv at list{\rqv at list{#3#1}}%
+            \@xp\xdef\csname rqv@#3#1\endcsname{\@tempa#4 v?.? ? \relax\@nil}%
+            \snap at intest{#3}{#1}%
+            \ifx#1\snapx at format \snap at check{#3.fmt}\else
+                \edef\@tempa{\@nx\string at equal{snapshot.sty}{#3#1}}%
+                \if\@tempa \snap at selfcheck \fi
+            \fi
+        \fi
     \fi
-  \fi
-  \futurelet\@let at token\snap at branch
+    \futurelet\@let at token\snap at branch
 }
+
 \@onlypreamble\snap at store@b
 \def\snap at write{\immediate\write\snap at out}
 \let\snap at out\sixt@@n % fallback, probably never used
 \DeclareOption{dep}{%
-  \def\snap at write{\immediate\write\snap at out}%
+    \def\snap at write{\immediate\write\snap at out}%
 }
 \DeclareOption{log}{%
-  \let\snap at write\typeout
+    \let\snap at write\typeout
 }
 \let\snap at intest=\@gobbletwo
 \DeclareOption{test}{\def\snap at intest{True}}
 \DeclareOption{tfm}{%
-  \typeout{Option 'tfm' not implemented yet [1999/09/23]}%
+    \typeout{Option 'tfm' not implemented yet [1999/09/23]}%
 }
 \def\snap at mismatch@warning#1#2#3{\PackageWarningNoLine{#1}{#2}}
 \def\snap at mismatch{\snap at mismatch@warning}
 \DeclareOption{error}{%
-  \def\snap at mismatch{\PackageError}%
-  \def\snap at selfcheck{\snap at selfcheck@a}%
-  \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
+    \def\snap at mismatch{\PackageError}%
+    \def\snap at selfcheck{\snap at selfcheck@a}%
+    \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
 }
 \DeclareOption{warning}{%
-  \def\snap at mismatch{\snap at mismatch@warning}%
-  \def\snap at selfcheck{\snap at selfcheck@a}%
-  \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
+    \def\snap at mismatch{\snap at mismatch@warning}%
+    \def\snap at selfcheck{\snap at selfcheck@a}%
+    \ifx\snap at select\@empty \let\snap at select\snap at select@all \fi
 }
 \def\snap at select@all#1#2 #3#4 #5\@nil{#1#2 #3#4}
 \let\snap at select\@empty
@@ -187,23 +285,23 @@
 \DeclareOption{bbinfo}{\def\snap at bbinfo{00}}
 \let\snap at splitter=?
 \AtBeginDocument{%
-  \xdef\@filelist{\@filelist\snap at splitter}%
+    \xdef\@filelist{\@filelist\snap at splitter}%
 }
 \let\snap at selfcheck\@empty
 \let\snap at selfcheck@a\@empty
 \DeclareOption{self-warning}{%
-  \def\snap at selfcheck{%
-    \begingroup
-    \def\snap at mismatch{\snap at mismatch@warning}%
-    \snap at selfcheck@a
-    \endgroup
-  }
+    \def\snap at selfcheck{%
+        \begingroup
+            \def\snap at mismatch{\snap at mismatch@warning}%
+            \snap at selfcheck@a
+        \endgroup
+    }
 }
 \ExecuteOptions{warning}
 \ProcessOptions\relax
 \edef\snap at restore@extensions{%
-  \def\@nx\@pkgextension{\@pkgextension}%
-  \def\@nx\@clsextension{\@clsextension}%
+    \def\@nx\@pkgextension{\@pkgextension}%
+    \def\@nx\@clsextension{\@clsextension}%
 }
 \def\snap at pad#1#2#3#4#5#6#7#8#9{\snap at pad@a{#1#2#3#4#5#6#7#8#9}}
 \def\snap at pad@a#1#2#3#4#5\@nil{\snap at pad@b#1#2#3#4\space\@nil}
@@ -215,230 +313,238 @@
 \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
-  }%
+    \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\snap at doit#1{%
-  \begingroup
-  \ifx\delimiter#1\delimiter
-  \else
-    \filename at parse{#1}%
-    \let\@tempd\@empty
-    \ifx\filename at ext\relax
-      \def\@tempa{file}\def\@tempb{~~~}%
-    \else\ifx\filename at ext\@pkgextension
-      \def\@tempa{package}\let\@tempb\@empty
-    \else\ifx\filename at ext\@clsextension
-      \def\@tempa{class}\def\@tempb{~~}%
-    \else\ifx\filename at ext\@fmtextension
-      \def\@tempa{format}\def\@tempb{~}%
-    \else\ifx\filename at ext\@tfmextension
-      \def\@tempa{tfm}\def\@tempb{~~~~}%
-    \else
-      \def\@tempa{file}\edef\@tempd{.\filename at ext}%
-      \def\@tempb{~~~}%
-    \fi\fi\fi\fi\fi
-    \@xp\let\@xp\@tempe
-      \csname ver@\filename at base %
-        \ifx\filename at ext\relax\else.\filename at ext\fi\endcsname
-    \ifx\@tempe\@empty \let\@tempe\relax \fi
-    \edef\@tempe{%
-      \ifx\@tempe\relax 0000/00/00 v0.0%
-      \else
-        \@xp\@xp\@xp\snap at trim@version\@xp\@tempe\space v0.0 v0.0 \@nil
-      \fi
-    }%
-    \edef\@tempc{\filename at area\filename at base\@tempd}% full file name
-    \@xp\snap at pad\@tempc\space~~~~~~~~~~~~~~~~\@nil\@tempd
-    \let~\space
-    \snap at write{\space\space *{\@tempa}\@tempb{\@tempc}\@tempd{\@tempe}}%
-  \fi
-  \aftergroup\snap at doit
-  \endgroup
-}%
+    \begingroup
+        \ifx\delimiter#1\delimiter \else
+            \filename at parse{#1}%
+            \let\@tempd\@empty
+            \ifx\filename at ext\relax
+                \def\@tempa{file}\def\@tempb{~~~}%
+            \else\ifx\filename at ext\@pkgextension
+                \def\@tempa{package}\let\@tempb\@empty
+            \else\ifx\filename at ext\@clsextension
+                \def\@tempa{class}\def\@tempb{~~}%
+            \else\ifx\filename at ext\@fmtextension
+                \def\@tempa{format}\def\@tempb{~}%
+            \else\ifx\filename at ext\@tfmextension
+                \def\@tempa{tfm}\def\@tempb{~~~~}%
+            \else
+                \def\@tempa{file}%
+                \edef\@tempd{.\filename at ext}%
+                \def\@tempb{~~~}%
+            \fi\fi\fi\fi\fi
+            \@xp\let\@xp\@tempe
+            \csname ver@\filename at base %
+                \ifx\filename at ext\relax\else.\filename at ext\fi\endcsname
+            \ifx\@tempe\@empty \let\@tempe\relax \fi
+            \edef\@tempe{%
+                \ifx\@tempe\relax 0000/00/00 v0.0%
+                \else
+                    \@xp\@xp\@xp\snap at trim@version\@xp\@tempe\space v0.0 v0.0 \@nil
+                \fi
+            }%
+            \edef\@tempc{\filename at area\filename at base\@tempd}% full file name
+            \@xp\snap at pad\@tempc\space~~~~~~~~~~~~~~~~\@nil\@tempd
+            \let~\space
+            \snap at write{\space\space *{\@tempa}\@tempb{\@tempc}\@tempd{\@tempe}}%
+        \fi
+        \aftergroup\snap at doit
+    \endgroup
+}
 \def\snap at bracify#1#2,{%
   \ifx\@empty#1\expandafter\@gobble\else {#1#2}\fi \snap at bracify
 }
 \def\snap at splitter@a{%
-  \iffalse{{\fi }}% close current file name, end definition
-  \xdef\specific at files{%
-    \iffalse}\fi
-    \specific at files
-    \expandafter\@gobble\string % discard one closing brace
+    \iffalse{{\fi }}% close current file name, end definition
+    \xdef\specific at files{%
+        \iffalse}\fi
+        \specific at files
+        \expandafter\@gobble\string % discard one closing brace
 }
 \def\snap at fdcheck#1{%
-  \ifx\delimiter#1\@xp\@gobble
-  \else\snap at fda#1\@empty.fd\@empty ?\@nil
-  \fi
-  \snap at fdcheck
+    \ifx\delimiter#1%
+        \@xp\@gobble
+    \else
+        \snap at fda#1\@empty.fd\@empty ?\@nil
+    \fi
+    \snap at fdcheck
 }
+
 \def\snap at fda#1.fd\@empty#2#3\@nil{%
-  \if ?#2%
-    \xdef\specific at files{\specific at files {#1}}%
-  \else
-    \xdef\general at files{\general at files {#1.fd}}%
-  \fi
+    \if ?#2%
+        \xdef\specific at files{\specific at files {#1}}%
+    \else
+        \xdef\general at files{\general at files {#1.fd}}%
+    \fi
 }
 \let\general at files\@empty
 \let\specific at files\@empty
 \newcommand{\SpecialInput}[1]{%
-  \xdef\specific at files{\specific at files{#1}}%
-  \@@input#1\relax
+    \xdef\specific at files{\specific at files{#1}}%
+    \@@input#1\relax
 }
 \def\@dofilelist{%
-  \snap at restore@extensions
-  \xdef\general at files{\@xp\snap at bracify \@filelist \@empty,\@empty,}%
-  \let\snap at splitter\snap at splitter@a
-  \xdef\general at files{\general at files}%
-  \let\@tempa\specific at files \global\let\specific at files\@empty
-  \@xp\snap at fdcheck\@tempa{\delimiter}%
-  \ifx\rqv at list\@empty
-  \else \rqv at compare@lists
-  \fi
-  \ifx\snap at write\typeout
-  \else
-    \newwrite\snap at out
-    \immediate\openout\snap at out=\jobname.dep \relax
-  \fi
-  \snap at write{\string\RequireVersions\@charlb}%
-  \snap at write{\space\space *{application}%
-    \snapshotApplication
-  }%
-  \@xp\snap at doit\general at files{\delimiter\aftergroup\@gobble\@gobble}%
-  \ifx\specific at files\@empty
-  \else
-    \snap at specific
-  \fi
-  \snap at write{\@charrb}%
-  \ifx\snap at write\typeout
-  \else \immediate\closeout\snap at out
-    \typeout{Dependency list written on \jobname.dep.}%
-  \fi
-}%
+    \snap at restore@extensions
+    \xdef\general at files{\@xp\snap at bracify \@filelist \@empty,\@empty,}%
+    \let\snap at splitter\snap at splitter@a
+    \xdef\general at files{\general at files}%
+    \let\@tempa\specific at files
+    \global\let\specific at files\@empty
+    \@xp\snap at fdcheck\@tempa{\delimiter}%
+    \ifx\rqv at list\@empty \else
+        \rqv at compare@lists
+    \fi
+    \ifx\snap at write\typeout \else
+        \newwrite\snap at out
+        \immediate\openout\snap at out=\jobname.dep \relax
+    \fi
+    \snap at write{\string\RequireVersions\@charlb}%
+    \snap at write{\space\space *{application}%
+        \snapshotApplication
+    }%
+    \@xp\snap at doit\general at files{\delimiter\aftergroup\@gobble\@gobble}%
+    \ifx\specific at files\@empty \else
+        \snap at specific
+    \fi
+    \snap at write{\@charrb}%
+    \ifx\snap at write\typeout \else
+        \immediate\closeout\snap at out
+        \typeout{Dependency list written on \jobname.dep.}%
+    \fi
+}
 \def\snap at specific{%
-  \snap at write{ \space *{-------}{Document-specific files:}{----}}%
-  \@xp\snap at doit\specific at files{\delimiter\aftergroup\@gobble\@gobble}%
+    \snap at write{ \space *{-------}{Document-specific files:}{----}}%
+    \@xp\snap at doit\specific at files{\delimiter\aftergroup\@gobble\@gobble}%
 }
 \def\rqv at condense#1{%
-  \@xp\ifx\csname ver@#1\endcsname\N
-  \else
-    \edef\L{\L{#1}}%
-    \@xp\let\csname ver@#1\endcsname=\N
-  \fi
-  \rqv at condense
+    \@xp\ifx\csname ver@#1\endcsname\N \else
+        \edef\L{\L{#1}}%
+        \@xp\let\csname ver@#1\endcsname=\N
+    \fi
+    \rqv at condense
 }
+
 \def\rqv at condend{\endcsname ?\fi
-  \@xp\@xp\@xp\@gobbletwo\csname @xp\iftrue}
+    \@xp\@xp\@xp\@gobbletwo\csname @xp\iftrue}
 \def\rqv at overloaded#1{%
-  \snap at mismatch{snapshot}{^^J%
-    File #1 loaded though not in \noexpand\RequireVersions list%
-  }\@ehc
+    \snap at mismatch{snapshot}{^^J%
+        File #1 loaded though not in \noexpand\RequireVersions list%
+    }\@ehc
 }
 \def\rqv at notloaded#1{%
-  \snap at mismatch{snapshot}{^^J%
-    File #1 [\csname rqv@#1\endcsname] required but not loaded%
-  }\@ehc
+    \snap at mismatch{snapshot}{^^J%
+        File #1 [\csname rqv@#1\endcsname] required but not loaded%
+    }\@ehc
 }
 \def\rqv at set#1{\@xp\let\csname ver@#1\endcsname\N \rqv at set}
 \def\rqv at test#1{\csname ver@#1\endcsname{#1}\rqv at test}
 \def\rqv at compare@lists{%
-  \begingroup
-  \def\N{1}\let\L\@empty
-  \@xp\rqv at condense\rqv at list\rqv at condend
-  \global\let\rqv at list=\L
-  \def\N{2}\let\L\@empty
-  \@xp\rqv at condense\general at files\rqv at condend
-  \global\let\general at files=\L
-  \def\T{\@firstoftwo{\endcsname\@empty\@gobbletwo}}%
-  \let\N\rqv at overloaded \@xp\rqv at set\general at files \T
-  \let\N\@gobble \@xp\rqv at set\rqv at list \T
-  \@xp\rqv at test\general at files{\endcsname\csname @gobbletwo}%
-  \let\N\rqv at notloaded \@xp\rqv at set\rqv at list \T
-  \let\N\@gobble \@xp\rqv at set\general at files \T
-  \@xp\rqv at test\rqv at list{\endcsname\csname @gobbletwo}%
-  \endgroup
+    \begingroup
+        \def\N{1}%
+        \let\L\@empty
+        \@xp\rqv at condense\rqv at list\rqv at condend
+        \global\let\rqv at list=\L
+        \def\N{2}%
+        \let\L\@empty
+        \@xp\rqv at condense\general at files\rqv at condend
+        \global\let\general at files=\L
+        \def\T{\@firstoftwo{\endcsname\@empty\@gobbletwo}}%
+        \let\N\rqv at overloaded \@xp\rqv at set\general at files \T
+        \let\N\@gobble
+        \@xp\rqv at set\rqv at list \T
+        \@xp\rqv at test\general at files{\endcsname\csname @gobbletwo}%
+        \let\N\rqv at notloaded
+        \@xp\rqv at set\rqv at list \T
+        \let\N\@gobble
+        \@xp\rqv at set\general at files \T
+        \@xp\rqv at test\rqv at list{\endcsname\csname @gobbletwo}%
+    \endgroup
 }
 \AtBeginDocument{%
-  \@ifundefined{ver at amsgen}{}{%
-    \@xp\let\csname ver at amsgen.sty\@xp\endcsname
-                    \csname ver at amsgen\endcsname
-  }%
+    \@ifundefined{ver at amsgen}{}{%
+        \@xp\let\csname ver at amsgen.sty\@xp\endcsname
+                        \csname ver at amsgen\endcsname
+    }%
 }
 \def\ProvidesFile#1{%
-  \def\snap at checker{\snap at check{#1}}%
-  \begingroup
-    \aftergroup\snap at checker
-    \catcode`\ 10
-    \ifnum\endlinechar < 256
-        \ifnum \endlinechar>\m at ne
-            \catcode\endlinechar 10
+    \def\snap at checker{\snap at check{#1}}%
+    \begingroup
+        \aftergroup\snap at checker
+        \catcode`\ 10
+        \ifnum\endlinechar < 256
+            \ifnum \endlinechar>\m at ne
+                \catcode\endlinechar 10
+            \fi
         \fi
-    \fi
-    \@makeother\/%
-    \@makeother\&%
-    \kernel at ifnextchar[{\snap at providesfile{#1}}{\snap at providesfile{#1}[]}%
+        \@makeother\/%
+        \@makeother\&%
+        \kernel at ifnextchar[{\snap at providesfile{#1}}{\snap at providesfile{#1}[]}%
 }
 \def\snap at graphic@test#1#2#3\@nil{r\if G#1#2\else X\fi}
 \def\snap at providesfile#1[#2]{%
-  \wlog{File: #1 #2}%
-  \if\snap at graphic@test#2@@\@nil
-    \snap at record@graphic#1\relax #2 (type ??)\@nil
-  \else
-    \expandafter\xdef\csname ver@#1\endcsname{#2}%
-  \fi
-  \endgroup
+        \wlog{File: #1 #2}%
+        \edef\@tempa{#2}%
+        \if\@xp\snap at graphic@test\@tempa @@\@nil
+            \snap at record@graphic#1\relax #2 (type ??)\@nil
+        \else
+            \@xp\xdef\csname ver@#1\endcsname{#2}%
+        \fi
+    \endgroup
 }
 \def\snap at record@graphic#1\relax #2(type #3)#4\@nil{%
-  \expandafter\xdef\csname ver@#1\endcsname{%
-    Graphic%
-    \if\snap at bbinfo :bb=\Gin at llx/\Gin at lly/\Gin at urx/\Gin at ury\fi
-    \space v0.0%
-  }%
+    \expandafter\xdef\csname ver@#1\endcsname{%
+        Graphic%
+        \if\snap at bbinfo :bb=\Gin at llx/\Gin at lly/\Gin at urx/\Gin at ury\fi
+        \space v0.0%
+    }%
 }
 \def\@pr at 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 at check{\@currname.\@currext}%
+    \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 at check{\@currname.\@currext}%
 }
 \def\snap at selfcheck@a{\snap at check{snapshot.sty}}
 \def\@nofmt#1.fmt.#2 {#1 }
 \def\snap at mismatch@a#1#2#3{%
-  \snap at mismatch{snapshot}{^^J%
-    \space\space Required version #2 of \@nofmt#1.fmt. and^^J%
-    \space\space provided version #3 do not match%
-  }\@ehc
+    \snap at 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 at compare@versions#1{%
-  \begingroup
-    \@ifundefined{rqv@#1}{}{%
-      \edef\0{\csname rqv@#1\endcsname}%
-      \edef\1{\csname ver@#1\endcsname}%
-      \edef\1{\@xp\snap at trim@version\1 v0.0 v0.0 \@nil}%
-      \edef\@tempa{\@xp\snap at select\0 v0.0 v0.0 \@nil}%
-      \edef\@tempb{\@xp\snap at select\1 v0.0 v0.0 \@nil}%
-      \ifx\@tempa\@tempb
-      \else
-        \edef\@tempd{\@nx\snap at mismatch@a{#1}{\@tempa}{\@tempb}}%
-        \@xp\@tempd
-      \fi
-    }%
-  \endgroup
-  \snap at test@abort
+    \begingroup
+        \@ifundefined{rqv@#1}{}{%
+            \edef\0{\csname rqv@#1\endcsname}%
+            \edef\1{\csname ver@#1\endcsname}%
+            \edef\1{\@xp\snap at trim@version\1 v0.0 v0.0 \@nil}%
+            \edef\@tempa{\@xp\snap at select\0 v0.0 v0.0 \@nil}%
+            \edef\@tempb{\@xp\snap at select\1 v0.0 v0.0 \@nil}%
+            \ifx\@tempa\@tempb \else
+                \edef\@tempd{\@nx\snap at mismatch@a{#1}{\@tempa}{\@tempb}}%
+                \@xp\@tempd
+            \fi
+        }%
+    \endgroup
+    \snap at test@abort
 }
 \let\snap at test@abort=\@empty
 \ifx\snap at select\@empty
-  \let\snap at compare@versions\@gobble
-  \let\snap at check\@gobble
+    \let\snap at compare@versions\@gobble
+    \let\snap at check\@gobble
 \fi
 \providecommand{\controldates}[1]{}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -445,70 +551,77 @@
 \ifx\snap at intest\@gobbletwo \endinput \fi
 \def\restore at some@catcodes{}
 \def\save at some@catcodes{%
-  \edef\restore at some@catcodes{%
-    \catcode\number`\@=\number\catcode`\@
-    \catcode\number`\"=\number\catcode`\"
-    \catcode\number`\^=\number\catcode`\^
-    \catcode\number`\_=\number\catcode`\_
-    \relax
-  }%
+    \edef\restore at some@catcodes{%
+        \catcode\number`\@=\number\catcode`\@
+        \catcode\number`\"=\number\catcode`\"
+        \catcode\number`\^=\number\catcode`\^
+        \catcode\number`\_=\number\catcode`\_
+        \relax
+    }%
 }
 \def\snap at intest#1#2{%
-  \message{^^J}%
-  \begingroup \edef\0{#1#2}\def\9{latex209.def}%
-  \ifx\0\9\global\@compatibilitytrue \fi
-  \ifx#2\snapx at format
-    \def\snap at test@abort{\endgroup}%
-  \else
-    \edef\N{%
-      \noexpand\snap at intest@b{#1#2}%
-        {#1}{\@xp\@gobble#2\@empty}%
-        {\csname rqv@#1#2\endcsname}}%
-    \expandafter\endgroup\N
-  \fi
+    \message{^^J}%
+    \begingroup
+        \edef\0{#1#2}%
+        \def\9{latex209.def}%
+        \ifx\0\9\global\@compatibilitytrue \fi
+        \ifx#2\snapx at format
+            \def\snap at test@abort{\endgroup}%
+        \else
+            \edef\N{%
+                \noexpand\snap at intest@b{#1#2}%
+                    {#1}{\@xp\@gobble#2\@empty}%
+                    {\csname rqv@#1#2\endcsname}}%
+            \expandafter\endgroup\N
+        \fi
 }
 \def\snap at intest@b#1#2#3#4{%
-  \def\@currname{#2}\def\@currext{#3}%
-  \begingroup \lccode`\/=`\0\relax\lowercase{\endgroup
-  \ifnum\snap at seldate#4 00 0\@nil>\z@
-    }% matches \lowercase
-    \save at some@catcodes
-    \@@input #1 \relax
-    \restore at some@catcodes
-  \else
-    \snap at specialtest{#1}{#4}%
-  \fi
+    \def\@currname{#2}%
+    \def\@currext{#3}%
+    \begingroup
+        \lccode`\/=`\0\relax\lowercase{\endgroup
+            \ifnum\snap at seldate#4 00 0\@nil>\z@
+                }% matches \lowercase
+                \save at some@catcodes
+                \@@input #1 \relax
+                \restore at some@catcodes
+            \else
+                \snap at specialtest{#1}{#4}%
+            \fi
 }
 \def\snap at specialtest#1#2{%
-  \fake at input{#1}%
+    \fake at input{#1}%
 }
 \def\fake at input#1{%
-  \begingroup
-  % Ensure that outer \foo or unmatched braces don't trip us up
-  \catcode`\\=12 \catcode`\{=12 \catcode`\}=12
-  \endinput
-  \def\G{\@car\endgroup}%
-  \expandafter\futurelet\expandafter\?\expandafter\G\@@input#1 \relax\@nil
+    \begingroup
+        % Ensure that outer \foo or unmatched braces don't trip us up
+        \catcode`\\=12
+        \catcode`\{=12
+        \catcode`\}=12
+        \endinput
+    \def\G{\@car\endgroup}%
+    \expandafter\futurelet\expandafter\?\expandafter\G\@@input#1 \relax\@nil
 }
 \let\snap at test@abort=\endinput
 \let\snap at selfcheck=\@empty
 \def\snap at finish{%%
-  \endgroup \message{^^J}%
-  \def\X##1{##1,\X}%
-  \edef\@filelist{\@xp\X\rqv at list{\@gobbletwo}}%
-  \def\X##1,?{##1}\edef\@filelist{\@xp\X\@filelist ?}%
-  \@dofilelist
-  \@@end
-}%
+    \endgroup
+    \message{^^J}%
+    \def\X##1{##1,\X}%
+    \edef\@filelist{\@xp\X\rqv at list{\@gobbletwo}}%
+    \def\X##1,?{##1}\edef\@filelist{\@xp\X\@filelist ?}%
+    \@dofilelist
+    \@@end
+}
 \def\snap at mismatch#1#2#3{}
 \renewcommand{\RequireVersions}[2][]{%
-  \begingroup
-  \makeatletter
-  \def\snap at check{\snap at compare@versions}%%
-  \let\snapx at tfm=\snap at ignore
-  \def\ProvidesLanguage##1{\ProvidesFile{##1.ldf}}%
-  \iffalse{\fi \futurelet\@let at token\snap at branch #2}%
-  \endgroup
+    \begingroup
+        \makeatletter
+        \def\snap at check{\snap at compare@versions}%%
+        \let\snapx at tfm=\snap at ignore
+        \def\ProvidesLanguage##1{\ProvidesFile{##1.ldf}}%
+        \iffalse{\fi \futurelet\@let at token\snap at branch #2}%
+    \endgroup
 }
 \endinput
 %%



More information about the tex-live-commits mailing list.