diff options
author | Karl Berry <karl@freefriends.org> | 2019-12-06 23:16:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-12-06 23:16:27 +0000 |
commit | fa7eed4bf8f7627ecfe89595c8b3a073188da90b (patch) | |
tree | 19e2d52ac95d9e553bf091a2f20eb87f2dce1332 | |
parent | 5e53627de7235518856ec30f758a20ef9fadc5e4 (diff) |
rerunfilecheck split from oberdiek (7dec19)
git-svn-id: svn://tug.org/texlive/trunk@53045 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/rerunfilecheck/README.md | 11 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck-example.cfg | 3 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck.pdf | bin | 0 -> 315092 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/rerunfilecheck/rerunfilecheck.dtx | 921 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty | 359 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 3 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latex.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/rerunfilecheck.tlpsrc | 0 |
8 files changed, 1297 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/rerunfilecheck/README.md b/Master/texmf-dist/doc/latex/rerunfilecheck/README.md new file mode 100644 index 00000000000..325e343e025 --- /dev/null +++ b/Master/texmf-dist/doc/latex/rerunfilecheck/README.md @@ -0,0 +1,11 @@ +# rerunfilecheck + +rerunfilecheck for LaTeX + + + +The package provides additional rerun warnings if some +auxiliary files have changed. It is based on MD5 checksum, +provided by pdfTeX. + + diff --git a/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck-example.cfg b/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck-example.cfg new file mode 100644 index 00000000000..825d4434cbe --- /dev/null +++ b/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck-example.cfg @@ -0,0 +1,3 @@ +\ProvidesFile{rerunfilecheck.cfg}[2019/12/05 Default configuration]% +\RerunFileCheckSetup{aux} +%% \section{Installation} diff --git a/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck.pdf b/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck.pdf Binary files differnew file mode 100644 index 00000000000..1bbf8a13e63 --- /dev/null +++ b/Master/texmf-dist/doc/latex/rerunfilecheck/rerunfilecheck.pdf diff --git a/Master/texmf-dist/source/latex/rerunfilecheck/rerunfilecheck.dtx b/Master/texmf-dist/source/latex/rerunfilecheck/rerunfilecheck.dtx new file mode 100644 index 00000000000..1418675669f --- /dev/null +++ b/Master/texmf-dist/source/latex/rerunfilecheck/rerunfilecheck.dtx @@ -0,0 +1,921 @@ +% \iffalse meta-comment +% +% File: rerunfilecheck.dtx +% Version: 2019/12/05 v1.9 +% Info: Rerun checks for auxiliary files +% +% Copyright (C) +% 2009-2011 Heiko Oberdiek +% 2016-2019 Oberdiek Package Support Group +% https://github.com/ho-tex/rerunfilecheck/issues +% +% 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. This version of this license is in +% https://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3 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 Maintainers of this work are +% Heiko Oberdiek and the Oberdiek Package Support Group +% https://github.com/ho-tex/rerunfilecheck/issues +% +% This work consists of the main source file rerunfilecheck.dtx +% and the derived files +% rerunfilecheck.sty, rerunfilecheck.pdf, rerunfilecheck.ins, +% rerunfilecheck.drv, rerunfilecheck-example.cfg, +% rerunfilecheck-test1.tex. +% +% Distribution: +% CTAN:macros/latex/contrib/rerunfilecheck/rerunfilecheck.dtx +% CTAN:macros/latex/contrib/rerunfilecheck/rerunfilecheck.pdf +% +% Unpacking: +% (a) If rerunfilecheck.ins is present: +% tex rerunfilecheck.ins +% (b) Without rerunfilecheck.ins: +% tex rerunfilecheck.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{rerunfilecheck.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If rerunfilecheck.drv is present: +% latex rerunfilecheck.drv +% (b) Without rerunfilecheck.drv: +% latex rerunfilecheck.dtx; ... +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Programm calls to get the documentation (example): +% pdflatex rerunfilecheck.dtx +% makeindex -s gind.ist rerunfilecheck.idx +% pdflatex rerunfilecheck.dtx +% makeindex -s gind.ist rerunfilecheck.idx +% pdflatex rerunfilecheck.dtx +% +% Installation: +% TDS:tex/latex/rerunfilecheck/rerunfilecheck.sty +% TDS:doc/latex/rerunfilecheck/rerunfilecheck.pdf +% TDS:doc/latex/rerunfilecheck/rerunfilecheck-example.cfg +% TDS:source/latex/rerunfilecheck/rerunfilecheck.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +%</ignore> +%<*install> +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: rerunfilecheck +Version: 2019/12/05 v1.9 + +Copyright (C) + 2009-2011 Heiko Oberdiek + 2016-2019 Oberdiek Package Support Group + +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. This version of this license is in + https://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + https://www.latex-project.org/lppl.txt +and version 1.3 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 Maintainers of this work are +Heiko Oberdiek and the Oberdiek Package Support Group +https://github.com/ho-tex/rerunfilecheck/issues + + +This work consists of the main source file rerunfilecheck.dtx +and the derived files + rerunfilecheck.sty, rerunfilecheck.pdf, rerunfilecheck.ins, + rerunfilecheck.drv, rerunfilecheck-example.cfg, + rerunfilecheck-test1.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{rerunfilecheck.ins}{\from{rerunfilecheck.dtx}{install}}% + \file{rerunfilecheck.drv}{\from{rerunfilecheck.dtx}{driver}}% + \usedir{tex/latex/rerunfilecheck}% + \file{rerunfilecheck.sty}{\from{rerunfilecheck.dtx}{package}}% + \nopreamble + \nopostamble + \usedir{doc/latex/rerunfilecheck}% + \file{rerunfilecheck-example.cfg}{\from{rerunfilecheck.dtx}{cfg}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* rerunfilecheck.sty} +\Msg{*} +\Msg{* To produce the documentation run the file `rerunfilecheck.drv'} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +%<*driver> +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{rerunfilecheck.drv}% + [2019/12/05 v1.9 Rerun checks for auxiliary files (HO)]% +\documentclass{ltxdoc} +\usepackage{holtxdoc}[2011/11/22] +\begin{document} + \DocInput{rerunfilecheck.dtx}% +\end{document} +%</driver> +% \fi +% +% +% +% \GetFileInfo{rerunfilecheck.drv} +% +% \title{The \xpackage{rerunfilecheck} package} +% \date{2019/12/05 v1.9} +% \author{Heiko Oberdiek\thanks +% {Please report any issues at \url{https://github.com/ho-tex/rerunfilecheck/issues}}} +% +% \maketitle +% +% \begin{abstract} +% The package provides additional rerun warnings if some +% auxiliary files have changed. It is based on MD5 checksum, +% provided by \pdfTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section{Documentation} +% +% \LaTeX\ informs the user, when to run \LaTeX\ again, if the +% references have changed. It has the old references from the +% first reading of the \xext{aux} files already in memory, thus +% it compares them with the new version of the \xext{aux} file +% at the end of the document. However this rerun warnings are +% not given for the table of contents and other data stored +% in the \xext{aux} files or other auxiliary files. +% Usually many of these data as the table of contents is not keep +% in memory. If someone wants to detect changes, he has either +% to keep the data in memory. This does not scale well with huge +% documents. Or he copies the file before they are changed. Slow +% I/O operations cost time. +% +% Since version 1.30.0 \pdfTeX\ provides \cs{pdfmdfivesum} +% and \cs{pdffilesize}. +% These features are also available in \LuaTeX, provided by package +% \xpackage{pdftexcmds}. +% Thus this package \xpackage{rerunfilecheck} uses these features to +% detect file changes. This saves the packages from keeping +% the whole files in memory or in file copies. +% The drawback are different files with the same size and the +% same MD5 checksum (seldom, hopefully). +% +% \subsection{Options} +% +% All options are key value options of boolean type. +% No option or |true| turns an option on, |false| disables +% an option. +% \begin{description} +% \item[\xoption{mainaux}:] +% Check the main \xext{aux} file. +% \item[\xoption{partaux}:] +% Check the \xext{aux} files from \cs{include} files. +% \item[\xoption{starttoc}:] +% Add the rerun checks in \cs{@starttoc} that is called by +% \cs{tableofcontents}, \cs{listoffigures}, \dots +% \item[\xoption{index}, \xoption{glossary}:] +% \LaTeX's original \cs{makeindex} and \cs{makeglossary} are +% redefined to add the rerun checks. The options do not have +% an effect, if \cs{makeindex}/\cs{makeglossary} are already +% called or if a package or class had redefined or will +% redefine them. +% \item[\xoption{aux}:] +% This option turns all previous options on or off. +% ``aux'' means auxiliary file. +% \end{description} +% The default for the options is |false|, because +% some internals must be redefined to insert the +% rerun checks. +% The options can be set in \cs{usepackage} or +% the configuration file \xfile{rerunfilecheck.cfg}. +% Global options are ignored (since 1.4). +% +% \begin{declcs}{RerunFileCheckSetup} \M{key value list} +% \end{declcs} +% Options can also be set using \cs{RerunFileCheckSetup}. +% Currently all options are disabled after the package +% is loaded. Thus \cs{RerunFileCheckSetup} makes sense in +% the configuration file only. +% +% Example for the configuration file: +% \begin{macrocode} +%<*cfg> +\ProvidesFile{rerunfilecheck.cfg}[2019/12/05 Default configuration]% +\RerunFileCheckSetup{aux} +%</cfg> +% \end{macrocode} +% +% \subsection{Interface for class/package authors} +% +% \begin{declcs}{RerunFileCheck} \M{file} \M{file closing action} \M{rerun warning} +% \end{declcs} +% If you want to add a rerun check, call \cs{RerunFileCheck} right before +% an output file is opened for writing. The macro first remembers +% the current checksum of \meta{file}. +% The file is checked again right before the end of the job. +% Macro \cs{AtVeryEndDocument} of package \xpackage{atveryend} +% is used to place the check after the main aux file is closed +% in |\end{document}|. Before reading the file again, it must be +% closed. Provide the code for closing in argument \meta{file closing action}. +% Do not forget \cs{immediate} before \cs{openout}. Otherwise the +% closing action would be delayed to the next shipout that never happens +% (the last page is already shipped out). +% If the file has changed, \cs{RerunFileCheck} informs the user with +% a warning that the file has changed and says the magic word ``Rerun''. +% If the last argument \meta{rerun warning} is not empty, then +% the rerun sentence is replaced by it. Usually the phrase +% ``to get something right'' is added. +% As example the relevant part of the redefined \cs{makeindex} +% is shown, see package code: +%\begin{quote} +%\begin{verbatim} +%\newwrite\@indexfile +%\RerunFileCheck{\jobname.idx}{% +% \immediate\closeout\@indexfile +%}{% +% Rerun LaTeX/makeindex to get index right% +%}% +%\immediate\openout\@indexfile=\jobname.idx % +%\end{verbatim} +%\end{quote} +% +% \StopEventually{ +% } +% +% \section{Implementation} +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname ReFiCh@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\ReFiCh@AtEnd{% + \ReFiCh@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{59}{12}% ; +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\edef\ReFiCh@AtEnd{\ReFiCh@AtEnd\noexpand\endinput} +% \end{macrocode} +% +% Package identification. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{rerunfilecheck}% + [2019/12/05 v1.9 Rerun checks for auxiliary files (HO)] +% \end{macrocode} +% +% \subsection{Options} +% +% \begin{macrocode} +\RequirePackage{kvoptions}[2010/02/22] +\SetupKeyvalOptions{% + family=rerunfilecheck,% + prefix=ReFiCh@% +} +% \end{macrocode} +% \begin{macro}{\RerunFileCheckSetup} +% \begin{macrocode} +\newcommand*{\RerunFileCheckSetup}{% + \setkeys{rerunfilecheck}% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\DeclareBoolOption{mainaux} +\DeclareBoolOption{partaux} +\DeclareBoolOption{starttoc} +\DeclareBoolOption{index} +\DeclareBoolOption{glossary} +\define@key{rerunfilecheck}{aux}[true]{% + \RerunFileCheckSetup{% + mainaux={#1},% + partaux={#1},% + starttoc={#1},% + index={#1},% + glossary={#1}% + }% +} +% \end{macrocode} +% \begin{macrocode} +\InputIfFileExists{rerunfilecheck.cfg}{}{} +\ProcessLocalKeyvalOptions* +% \end{macrocode} +% +% \begin{macro}{\ReFiCh@DisableOption} +% \begin{macrocode} +\def\ReFiCh@DisableOption{% + \DisableKeyvalOption[% + action=warning,% + package=rerunfilecheck% + ]{rerunfilecheck}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Check for checksum feature} +% +% \begin{macrocode} +\RequirePackage{infwarerr}[2007/09/09] +\RequirePackage{pdftexcmds}[2009/04/10] +% \end{macrocode} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@filemdfivesum\endcsname\relax + \@PackageInfoNoLine{rerunfilecheck}{% + Feature \string\pdfmdfivesum\space is not available\MessageBreak + (e.g. pdfTeX or LuaTeX with package `pdftexcmds').\MessageBreak + Therefore file contents cannot be checked efficiently\MessageBreak + and the loading of the package is aborted% + }% + \newcommand*{\RerunFileCheck}[3]{}% + \renewcommand*{\RerunFileCheckSetup}[1]{}% + \expandafter\ReFiCh@AtEnd +\fi% +% \end{macrocode} +% +% \subsection{Standard \xext{aux} files} +% +% \begin{macrocode} +\ifReFiCh@partaux + \let\ReFiCh@org@include\@include + \def\@include#1 {% + \if@filesw + \RerunFileCheck{#1.aux}{}{}% + \fi + \ReFiCh@org@include{#1} % + }% +\fi +\ifReFiCh@mainaux + \AtBeginDocument{% + \ReFiCh@mainauxfalse + }% + \ifReFiCh@mainaux + \AtEndOfPackage{% + \RerunFileCheck{\jobname.aux}{}{}% + }% + \else + \if@filesw + \@PackageWarningNoLine{rerunfilecheck}{% + Main aux file check is disabled,\MessageBreak + because the file is already opened.\MessageBreak + Load the package before \string\begin{document}% + }% + \fi + \fi +\fi +\ifReFiCh@starttoc + \let\ReFiCh@org@starttoc\@starttoc + \def\@starttoc#1{% + \if@filesw + \RerunFileCheck{\jobname.#1}{% + \@ifundefined{tf@#1}{% + }{% + \immediate\closeout\csname tf@#1\endcsname + }% + }{}% + \fi + \ReFiCh@org@starttoc{#1}% + }% +\fi +\ifReFiCh@index + \ifx\makeindex\@empty + \@PackageWarningNoLine{rerunfilecheck}{% + Option `index' ignored,\MessageBreak + because \string\makeindex\space has already been called% + }% + \else + \def\ReFiCh@temp{% + \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx % + \def\index{% + \@bsphack + \begingroup + \@sanitize + \@wrindex + }% + \typeout{Writing index file \jobname.idx}% + \let\makeindex\@empty + }% + \ifx\ReFiCh@temp\makeindex + \def\makeindex{% + \newwrite\@indexfile + \RerunFileCheck{\jobname.idx}{% + \immediate\closeout\@indexfile + }{% + Rerun LaTeX/makeindex to get index right% + }% + \immediate\openout\@indexfile=\jobname.idx % + \def\index{% + \@bsphack + \begingroup + \@sanitize + \@wrindex + }% + \typeout{Writing index file \jobname.idx}% + \let\makeindex\@empty + }% + \else + \@PackageInfoNoLine{rerunfilecheck}{% + Option `index': unsupported version of \string\makeindex + }% + \fi + \fi +\fi +\ifReFiCh@glossary + \ifx\makeglossary\@empty + \@PackageWarningNoLine{rerunfilecheck}{% + Option `glossary' ignored,\MessageBreak + because \string\makeglossary\space has already been called% + }% + \else + \def\ReFiCh@temp{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo % + \def\glossary{% + \@bsphack + \begingroup + \@sanitize + \@wrglossary + }% + \typeout{Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + }% + \ifx\ReFiCh@temp\makeglossary + \def\ReFiCh@temp{% + \newwrite\@glossaryfile + \RerunFileCheck{\jobname.glo}{% + \immediate\closeout\@glossaryfile + }{% + Rerun LaTeX/makeindex to get glossary right% + }% + \immediate\openout\@glossaryfile=\jobname.glo % + \def\glossary{% + \@bsphack + \begingroup + \@sanitize + \@wrglossary + }% + \typeout{Writing glossary file \jobname.glo}% + \let\makeglossary\@empty + }% + \else + \@PackageInfoNoLine{rerunfilecheck}{% + Option `glossary': unsupported version of \string\makeglossary + }% + \fi + \fi +\fi +\ReFiCh@DisableOption{mainaux} +\ReFiCh@DisableOption{partaux} +\ReFiCh@DisableOption{starttoc} +\ReFiCh@DisableOption{index} +\ReFiCh@DisableOption{glossary} +\ReFiCh@DisableOption{aux} +% \end{macrocode} +% +% \subsection{Rerun check} +% +% \begin{macrocode} +\RequirePackage{atveryend}[2019/12/05] +\RequirePackage{uniquecounter}[2009/12/18] +% \end{macrocode} +% +% \begin{macro}{\ReFiCh@CheckSum} +% \begin{macrocode} +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@filesize\endcsname\relax + \def\ReFiCh@CheckSum{% + \pdf@filemdfivesum + }% +\else + \def\ReFiCh@CheckSum#1{% + \pdf@filemdfivesum{#1}% + \ReFiCh@Separator + \pdf@filesize{#1}% + }% +\fi +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReFiCh@NoFile} +% \begin{macrocode} +\def\ReFiCh@Separator{;} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReFiCh@NoFile} +% \begin{macrocode} +\def\ReFiCh@NoFile{<no file>} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\UniqueCounterNew{rerunfilecheck} +% \end{macrocode} +% +% \begin{macro}{\RerunFileCheck} +% \begin{macrocode} +\newcommand*{\RerunFileCheck}{% + \UniqueCounterCall{rerunfilecheck}\ReFiCh@RerunFileCheck +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReFiCh@RerunFileCheck} +% \begin{macrocode} +\def\ReFiCh@RerunFileCheck#1{% + \expandafter\ReFiCh@@RerunFileCheck\csname ReFiCh@#1\endcsname +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReFiCh@Check} +% \begin{macrocode} +\def\ReFiCh@Check#1#2#3{% +% \IfFileExists{#3}{% + #1\edef#2{\ReFiCh@CheckSum{#3}}% + \ifx#2\ReFiCh@Separator + #1\let#2\ReFiCh@NoFile + \fi +% }{% +% #1\let#2\ReFiCh@NoFile +% }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ReFiCh@@RerunFileCheck} +% \begin{macrocode} +\def\ReFiCh@@RerunFileCheck#1#2#3#4{% + \ReFiCh@Check\global#1{#2}% + \AtEndAfterFileList{% + \begingroup + #3% + \ReFiCh@Check{}\x{#2}% + \ifx#1\x + \@PackageInfoNoLine{rerunfilecheck}{% + File `#2' has not changed.\MessageBreak + Checksum: \x + }% + \else + \ifnum + \ReFiCh@IsAux#2\relax.aux\relax\@nil + \ifx#1\ReFiCh@NoFile 1\else 0\fi + \ifx\x\ReFiCh@AuxEmptyUnix 1% + \else + \ifx\x\ReFiCh@AuxEmptyDos 1\fi + \fi + =111 % + \@PackageInfoNoLine{rerunfilecheck}{% + File `#2' is empty .aux file.\MessageBreak + Before: #1\MessageBreak + After: \space\x + }% + \else + \@PackageWarningNoLine{rerunfilecheck}{% + File `#2' has changed.% + \ifx\\#4\\% + \space Rerun% + \else + \MessageBreak + #4% + \fi + }% + \@PackageInfoNoLine{rerunfilecheck}{% + Checksums for `#2':\MessageBreak + Before: #1\MessageBreak + After: \space\x + }% + \fi + \fi + \endgroup + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\def\ReFiCh@IsAux#1.aux\relax#2\@nil{% + \ifx\hbox#2\hbox + 0% + \else + 1% + \fi +} +% \end{macrocode} +% \begin{macrocode} +\def\ReFiCh@AuxEmptyUnix{A94A2480D3289E625EEA47CD1B285758;8}% +\@onelevel@sanitize\ReFiCh@AuxEmptyUnix +% \end{macrocode} +% \begin{macrocode} +\def\ReFiCh@AuxEmptyDos{A62A15ECE803E2EBE94952FCC9933BC0;9}% +\@onelevel@sanitize\ReFiCh@AuxEmptyDos +% \end{macrocode} +% +% \begin{macrocode} +\ReFiCh@AtEnd% +%</package> +% \end{macrocode} +%% \section{Installation} +% +% \subsection{Download} +% +% \paragraph{Package.} This package is available on +% CTAN\footnote{\CTANpkg{rerunfilecheck}}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/rerunfilecheck/rerunfilecheck.dtx}] The source file. +% \item[\CTAN{macros/latex/contrib/rerunfilecheck/rerunfilecheck.pdf}] Documentation. +% \end{description} +% +% +% \paragraph{Bundle.} All the packages of the bundle `rerunfilecheck' +% are also available in a TDS compliant ZIP archive. There +% the packages are already unpacked and the documentation files +% are generated. The files and directories obey the TDS standard. +% \begin{description} +% \item[\CTANinstall{install/macros/latex/contrib/rerunfilecheck.tds.zip}] +% \end{description} +% \emph{TDS} refers to the standard ``A Directory Structure +% for \TeX\ Files'' (\CTANpkg{tds}). Directories +% with \xfile{texmf} in their name are usually organized this way. +% +% \subsection{Bundle installation} +% +% \paragraph{Unpacking.} Unpack the \xfile{rerunfilecheck.tds.zip} in the +% TDS tree (also known as \xfile{texmf} tree) of your choice. +% Example (linux): +% \begin{quote} +% |unzip rerunfilecheck.tds.zip -d ~/texmf| +% \end{quote} +% +% \subsection{Package installation} +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex rerunfilecheck.dtx| +% \end{quote} +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% rerunfilecheck.sty & tex/latex/rerunfilecheck/rerunfilecheck.sty\\ +% rerunfilecheck.pdf & doc/latex/rerunfilecheck/rerunfilecheck.pdf\\ +% rerunfilecheck-example.cfg & doc/latex/rerunfilecheck/rerunfilecheck-example.cfg\\ +% rerunfilecheck.dtx & source/latex/rerunfilecheck/rerunfilecheck.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution +% (\TeX\,Live, \mikTeX, \dots) relies on file name databases, you must refresh +% these. For example, \TeX\,Live\ users run \verb|texhash| or +% \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{rerunfilecheck.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by the +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% An example follows how to generate the +% documentation with pdf\LaTeX: +% \begin{quote} +%\begin{verbatim} +%pdflatex rerunfilecheck.dtx +%makeindex -s gind.ist rerunfilecheck.idx +%pdflatex rerunfilecheck.dtx +%makeindex -s gind.ist rerunfilecheck.idx +%pdflatex rerunfilecheck.dtx +%\end{verbatim} +% \end{quote} +% +% \begin{History} +% \begin{Version}{2009/12/10 v1.0} +% \item +% The first version. +% \end{Version} +% \begin{Version}{2009/12/12 v1.1} +% \item +% Short info shortened. +% \end{Version} +% \begin{Version}{2009/12/18 v1.2} +% \item +% Required date for package \xpackage{uniquecounter} updated +% because of bug in this package. +% \end{Version} +% \begin{Version}{2010/01/25 v1.3} +% \item +% Moved from \texttt{TDS:*/generic/*} to \texttt{TDS:*/latex/*}. +% \end{Version} +% \begin{Version}{2010/02/22 v1.4} +% \item +% The options of this package are recognized only if they are +% package options. Global options are ignored. This avoids +% name clashes with class and other package options +% (for example, class option `index=totoc'). +% \end{Version} +% \begin{Version}{2010/03/15 v1.5} +% \item +% Call of \cs{pdffivesum} is wrapped in \cs{IfFileExists} to avoid +% calls of \textsf{mktextex} if this feature is enabled. +% However \cs{IfFileExists} has file name limitations. +% \end{Version} +% \begin{Version}{2010/03/16 v1.6} +% \item +% Reverted to version 1.4 and \cs{IfFileExists} wrapper of +% version 1.5 is removed. +% \end{Version} +% \begin{Version}{2011/04/15 v1.7} +% \item +% Using \cs{AtEndAfterFileList} of package \xpackage{atveryend} +% 2011/04/15 v1.6 instead of \cs{AtVeryEndDocument}. +% \end{Version} +% \begin{Version}{2016/05/16 v1.8} +% \item +% Documentation updates. +% \end{Version} +% \begin{Version}{2019/12/05 v1.9} +% \item +% Documentation updates. +% \end{Version} +% \end{History} +% +% \PrintIndex +% +% \Finale +\endinput diff --git a/Master/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty b/Master/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty new file mode 100644 index 00000000000..c2e16b2cc2e --- /dev/null +++ b/Master/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty @@ -0,0 +1,359 @@ +%% +%% This is file `rerunfilecheck.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% rerunfilecheck.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: rerunfilecheck +%% Version: 2019/12/05 v1.9 +%% +%% Copyright (C) +%% 2009-2011 Heiko Oberdiek +%% 2016-2019 Oberdiek Package Support Group +%% +%% 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. This version of this license is in +%% https://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% https://www.latex-project.org/lppl.txt +%% and version 1.3 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 Maintainers of this work are +%% Heiko Oberdiek and the Oberdiek Package Support Group +%% https://github.com/ho-tex/rerunfilecheck/issues +%% +%% +%% This work consists of the main source file rerunfilecheck.dtx +%% and the derived files +%% rerunfilecheck.sty, rerunfilecheck.pdf, rerunfilecheck.ins, +%% rerunfilecheck.drv, rerunfilecheck-example.cfg, +%% rerunfilecheck-test1.tex. +%% +\begingroup\catcode61\catcode48\catcode32=10\relax% + \catcode13=5 % ^^M + \endlinechar=13 % + \catcode123=1 % { + \catcode125=2 % } + \catcode64=11 % @ + \def\x{\endgroup + \expandafter\edef\csname ReFiCh@AtEnd\endcsname{% + \endlinechar=\the\endlinechar\relax + \catcode13=\the\catcode13\relax + \catcode32=\the\catcode32\relax + \catcode35=\the\catcode35\relax + \catcode61=\the\catcode61\relax + \catcode64=\the\catcode64\relax + \catcode123=\the\catcode123\relax + \catcode125=\the\catcode125\relax + }% + }% +\x\catcode61\catcode48\catcode32=10\relax% +\catcode13=5 % ^^M +\endlinechar=13 % +\catcode35=6 % # +\catcode64=11 % @ +\catcode123=1 % { +\catcode125=2 % } +\def\TMP@EnsureCode#1#2{% + \edef\ReFiCh@AtEnd{% + \ReFiCh@AtEnd + \catcode#1=\the\catcode#1\relax + }% + \catcode#1=#2\relax +} +\TMP@EnsureCode{39}{12}% ' +\TMP@EnsureCode{40}{12}% ( +\TMP@EnsureCode{41}{12}% ) +\TMP@EnsureCode{42}{12}% * +\TMP@EnsureCode{44}{12}% , +\TMP@EnsureCode{46}{12}% . +\TMP@EnsureCode{47}{12}% / +\TMP@EnsureCode{58}{12}% : +\TMP@EnsureCode{59}{12}% ; +\TMP@EnsureCode{60}{12}% < +\TMP@EnsureCode{62}{12}% > +\TMP@EnsureCode{91}{12}% [ +\TMP@EnsureCode{93}{12}% ] +\TMP@EnsureCode{96}{12}% ` +\edef\ReFiCh@AtEnd{\ReFiCh@AtEnd\noexpand\endinput} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{rerunfilecheck}% + [2019/12/05 v1.9 Rerun checks for auxiliary files (HO)] +\RequirePackage{kvoptions}[2010/02/22] +\SetupKeyvalOptions{% + family=rerunfilecheck,% + prefix=ReFiCh@% +} +\newcommand*{\RerunFileCheckSetup}{% + \setkeys{rerunfilecheck}% +} +\DeclareBoolOption{mainaux} +\DeclareBoolOption{partaux} +\DeclareBoolOption{starttoc} +\DeclareBoolOption{index} +\DeclareBoolOption{glossary} +\define@key{rerunfilecheck}{aux}[true]{% + \RerunFileCheckSetup{% + mainaux={#1},% + partaux={#1},% + starttoc={#1},% + index={#1},% + glossary={#1}% + }% +} +\InputIfFileExists{rerunfilecheck.cfg}{}{} +\ProcessLocalKeyvalOptions* +\def\ReFiCh@DisableOption{% + \DisableKeyvalOption[% + action=warning,% + package=rerunfilecheck% + ]{rerunfilecheck}% +} +\RequirePackage{infwarerr}[2007/09/09] +\RequirePackage{pdftexcmds}[2009/04/10] +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@filemdfivesum\endcsname\relax + \@PackageInfoNoLine{rerunfilecheck}{% + Feature \string\pdfmdfivesum\space is not available\MessageBreak + (e.g. pdfTeX or LuaTeX with package `pdftexcmds').\MessageBreak + Therefore file contents cannot be checked efficiently\MessageBreak + and the loading of the package is aborted% + }% + \newcommand*{\RerunFileCheck}[3]{}% + \renewcommand*{\RerunFileCheckSetup}[1]{}% + \expandafter\ReFiCh@AtEnd +\fi% +\ifReFiCh@partaux + \let\ReFiCh@org@include\@include + \def\@include#1 {% + \if@filesw + \RerunFileCheck{#1.aux}{}{}% + \fi + \ReFiCh@org@include{#1} % + }% +\fi +\ifReFiCh@mainaux + \AtBeginDocument{% + \ReFiCh@mainauxfalse + }% + \ifReFiCh@mainaux + \AtEndOfPackage{% + \RerunFileCheck{\jobname.aux}{}{}% + }% + \else + \if@filesw + \@PackageWarningNoLine{rerunfilecheck}{% + Main aux file check is disabled,\MessageBreak + because the file is already opened.\MessageBreak + Load the package before \string\begin{document}% + }% + \fi + \fi +\fi +\ifReFiCh@starttoc + \let\ReFiCh@org@starttoc\@starttoc + \def\@starttoc#1{% + \if@filesw + \RerunFileCheck{\jobname.#1}{% + \@ifundefined{tf@#1}{% + }{% + \immediate\closeout\csname tf@#1\endcsname + }% + }{}% + \fi + \ReFiCh@org@starttoc{#1}% + }% +\fi +\ifReFiCh@index + \ifx\makeindex\@empty + \@PackageWarningNoLine{rerunfilecheck}{% + Option `index' ignored,\MessageBreak + because \string\makeindex\space has already been called% + }% + \else + \def\ReFiCh@temp{% + \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx % + \def\index{% + \@bsphack + \begingroup + \@sanitize + \@wrindex + }% + \typeout{Writing index file \jobname.idx}% + \let\makeindex\@empty + }% + \ifx\ReFiCh@temp\makeindex + \def\makeindex{% + \newwrite\@indexfile + \RerunFileCheck{\jobname.idx}{% + \immediate\closeout\@indexfile + }{% + Rerun LaTeX/makeindex to get index right% + }% + \immediate\openout\@indexfile=\jobname.idx % + \def\index{% + \@bsphack + \begingroup + \@sanitize + \@wrindex + }% + \typeout{Writing index file \jobname.idx}% + \let\makeindex\@empty + }% + \else + \@PackageInfoNoLine{rerunfilecheck}{% + Option `index': unsupported version of \string\makeindex + }% + \fi + \fi +\fi +\ifReFiCh@glossary + \ifx\makeglossary\@empty + \@PackageWarningNoLine{rerunfilecheck}{% + Option `glossary' ignored,\MessageBreak + because \string\makeglossary\space has already been called% + }% + \else + \def\ReFiCh@temp{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo % + \def\glossary{% + \@bsphack + \begingroup + \@sanitize + \@wrglossary + }% + \typeout{Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + }% + \ifx\ReFiCh@temp\makeglossary + \def\ReFiCh@temp{% + \newwrite\@glossaryfile + \RerunFileCheck{\jobname.glo}{% + \immediate\closeout\@glossaryfile + }{% + Rerun LaTeX/makeindex to get glossary right% + }% + \immediate\openout\@glossaryfile=\jobname.glo % + \def\glossary{% + \@bsphack + \begingroup + \@sanitize + \@wrglossary + }% + \typeout{Writing glossary file \jobname.glo}% + \let\makeglossary\@empty + }% + \else + \@PackageInfoNoLine{rerunfilecheck}{% + Option `glossary': unsupported version of \string\makeglossary + }% + \fi + \fi +\fi +\ReFiCh@DisableOption{mainaux} +\ReFiCh@DisableOption{partaux} +\ReFiCh@DisableOption{starttoc} +\ReFiCh@DisableOption{index} +\ReFiCh@DisableOption{glossary} +\ReFiCh@DisableOption{aux} +\RequirePackage{atveryend}[2019/12/05] +\RequirePackage{uniquecounter}[2009/12/18] +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdf@filesize\endcsname\relax + \def\ReFiCh@CheckSum{% + \pdf@filemdfivesum + }% +\else + \def\ReFiCh@CheckSum#1{% + \pdf@filemdfivesum{#1}% + \ReFiCh@Separator + \pdf@filesize{#1}% + }% +\fi +\def\ReFiCh@Separator{;} +\def\ReFiCh@NoFile{<no file>} +\UniqueCounterNew{rerunfilecheck} +\newcommand*{\RerunFileCheck}{% + \UniqueCounterCall{rerunfilecheck}\ReFiCh@RerunFileCheck +} +\def\ReFiCh@RerunFileCheck#1{% + \expandafter\ReFiCh@@RerunFileCheck\csname ReFiCh@#1\endcsname +} +\def\ReFiCh@Check#1#2#3{% + #1\edef#2{\ReFiCh@CheckSum{#3}}% + \ifx#2\ReFiCh@Separator + #1\let#2\ReFiCh@NoFile + \fi +} +\def\ReFiCh@@RerunFileCheck#1#2#3#4{% + \ReFiCh@Check\global#1{#2}% + \AtEndAfterFileList{% + \begingroup + #3% + \ReFiCh@Check{}\x{#2}% + \ifx#1\x + \@PackageInfoNoLine{rerunfilecheck}{% + File `#2' has not changed.\MessageBreak + Checksum: \x + }% + \else + \ifnum + \ReFiCh@IsAux#2\relax.aux\relax\@nil + \ifx#1\ReFiCh@NoFile 1\else 0\fi + \ifx\x\ReFiCh@AuxEmptyUnix 1% + \else + \ifx\x\ReFiCh@AuxEmptyDos 1\fi + \fi + =111 % + \@PackageInfoNoLine{rerunfilecheck}{% + File `#2' is empty .aux file.\MessageBreak + Before: #1\MessageBreak + After: \space\x + }% + \else + \@PackageWarningNoLine{rerunfilecheck}{% + File `#2' has changed.% + \ifx\\#4\\% + \space Rerun% + \else + \MessageBreak + #4% + \fi + }% + \@PackageInfoNoLine{rerunfilecheck}{% + Checksums for `#2':\MessageBreak + Before: #1\MessageBreak + After: \space\x + }% + \fi + \fi + \endgroup + }% +} +\def\ReFiCh@IsAux#1.aux\relax#2\@nil{% + \ifx\hbox#2\hbox + 0% + \else + 1% + \fi +} +\def\ReFiCh@AuxEmptyUnix{A94A2480D3289E625EEA47CD1B285758;8}% +\@onelevel@sanitize\ReFiCh@AuxEmptyUnix +\def\ReFiCh@AuxEmptyDos{A62A15ECE803E2EBE94952FCC9933BC0;9}% +\@onelevel@sanitize\ReFiCh@AuxEmptyDos +\ReFiCh@AtEnd% +%% \section{Installation} +\endinput +%% +%% End of file `rerunfilecheck.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 782d41e0101..54d7b789e8d 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -601,7 +601,8 @@ my @TLP_working = qw( recipe recipebook recipecard recycle rectopma refcheck refenums reflectgraphics refman refstyle regcount regexpatch register regstats - reledmac relenc relsize reotex repeatindex repere repltext resphilosophica + reledmac relenc relsize reotex repeatindex repere repltext + rerunfilecheck resphilosophica resumecls resumemac returntogrid reverxii revquantum revtex rgltxdoc ribbonproofs rjlparshap rlepsf rmathbr rmpage roboto robustcommand robustindex diff --git a/Master/tlpkg/tlpsrc/collection-latex.tlpsrc b/Master/tlpkg/tlpsrc/collection-latex.tlpsrc index 669967f5002..50ca77356bb 100644 --- a/Master/tlpkg/tlpsrc/collection-latex.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latex.tlpsrc @@ -35,5 +35,6 @@ depend oberdiek depend pslatex depend psnfss depend pspicture +depend rerunfilecheck depend tools depend url diff --git a/Master/tlpkg/tlpsrc/rerunfilecheck.tlpsrc b/Master/tlpkg/tlpsrc/rerunfilecheck.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/rerunfilecheck.tlpsrc |