summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/filedate/filedate.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/filedate/filedate.sty')
-rw-r--r--Master/texmf-dist/tex/latex/filedate/filedate.sty105
1 files changed, 71 insertions, 34 deletions
diff --git a/Master/texmf-dist/tex/latex/filedate/filedate.sty b/Master/texmf-dist/tex/latex/filedate/filedate.sty
index 5f3e52a7716..0fd44cbc674 100644
--- a/Master/texmf-dist/tex/latex/filedate/filedate.sty
+++ b/Master/texmf-dist/tex/latex/filedate/filedate.sty
@@ -1,5 +1,5 @@
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{filedate}[2012/10/25 v0.3 check file dates (UL)]
+\ProvidesPackage{filedate}[2012/11/11 v0.4 check file dates (UL)]
%% Copyright (C) 2012 Uwe Lueck,
%% http://www.contact-ednotes.sty.de.vu
@@ -16,6 +16,7 @@
%%
%% http://www.contact-ednotes.sty.de.vu
%%
+%% \filbreak %% 2012/11/10
%% === The \ctanpkgref{readprov} Package ===
%% \label{sec:readprov}
% \RequirePackage{readprov}
@@ -28,7 +29,6 @@
%% only.
%% Please care for providing it on your own if you need that.
%%
-%% \pagebreak
%% === Accessing ``Info Date" ===
%% \label{sec:readinfo}
%% |\theinfodateof{<file>}| will expand to the first ``word" of the
@@ -36,8 +36,8 @@
\newcommand*{\theinfodateof}[1]{%
\@ifundefined{ver@#1}{unknown}{%
\expandafter\expandafter\expandafter
- \fd@firstword\csname ver@#1\endcsname\@gobble{} \@nil}}
-\def\fd@firstword#1 #2\@nil{#1}
+ \FD@firstword\csname ver@#1\endcsname\@gobble{} \@nil}}
+\def\FD@firstword#1 #2\@nil{#1}
%% This avoids the `\relax' that `\UseDateOf' from \ctanpkgref{readprov}
%% currently adds (which doesn't harm in printing but is bad for comparing).
%%
@@ -75,9 +75,9 @@
\string\pdffilemoddate\space unavailable.}
\else
\newcommand*{\thepdfmoddateof}[1]{%
- \expandafter \fd@pdftexdate \pdffilemoddate{#1}\@nil}
+ \expandafter \FD@pdftexdate \pdffilemoddate{#1}\@nil}
\expandafter \def \expandafter
- \fd@pdftexdate\string D:#1#2#3#4#5#6#7#8#9\@nil{%
+ \FD@pdftexdate\string D:#1#2#3#4#5#6#7#8#9\@nil{%
#1#2#3#4/#5#6/#7#8}
%% ---cf.~Will \ctanpkgauref{robertson}{Robertson}'s suggestion dating from 2010 on
%% \httpref{stackoverflow.com/questions/2118972/latex-command-for-last-modified}{%
@@ -106,12 +106,12 @@
\LoadInfoDateOf{#1}%
% \show\theinfodate
\ReadPDFmodDateOf{#1}%
- \edef\fd@therefdate{#2}%
-% \show\fd@therefdate
- \ifx\theinfodate\fd@therefdate
- \fd@datesequal{#1}%
+ \edef\FD@therefdate{#2}%
+% \show\FD@therefdate
+ \ifx\theinfodate\FD@therefdate
+ \FD@datesequal{#1}%
\else
- \fd@datesdiff{#1}%
+ \FD@datesdiff{#1}%
\fi}
%% |\ReadCheckDateOf{<file>}{<date>}| prepends |\ReadFileInfos{<file>}|
%% from the \ctanpkgref{readprov} package (cf. Section~\ref{sec:readprov}):
@@ -119,22 +119,22 @@
\ReadFileInfos{#1}\CheckDateOf{#1}}
%% TODO provide automatically.
%%
-%% \pagebreak
+%% \filbreak
%% === Reporting Styles ===
%% By default, there is no report about comparisons finding equality.
-\let\fd@datesequal\@gobble
+\let\FD@datesequal\@gobble
%% % We do not want to disturb `\listfiles' with \ctanpkgref{myfilist}.
%% %% <- rm. 2012/10/25
%% |\EqualityMessages| changes this to screen and log messages:
-\newcommand*{\EqualityMessages}{\let\fd@datesequal\fd@equalmess}
-\def\fd@equalmess#1{\message{ + #1 passed date check + }}
-\def\fd@errdatesdiff#1{%
+\newcommand*{\EqualityMessages}{\let\FD@datesequal\FD@equalmess}
+\def\FD@equalmess#1{\message{ + #1 passed date check + }}
+\def\FD@errdatesdiff#1{%
\PackageError{filedate}{%
- \fd@infodate{#1}\fd@refdate}{% %% \fd@refdate 2012/10/19
+ \FD@infodate{#1}\FD@refdate}{% %% \fd@refdate 2012/10/19
Fix that!}}
-%% |\fd@infodate{<file>}| might be used to change the current
+%% |\FD@infodate{<file>}| might be used to change the current
%% presentation of the ``info date:"
-\def\fd@infodate#1{%
+\def\FD@infodate#1{%
#1 has \string\Provides... date \theinfodate\space}
%% TODO here |\theinfodate| could be replaced by
%% |\theinfodateof{#1}|, there is no essential application of
@@ -142,29 +142,29 @@
%%
%% After |\DatesDiffErrors|, date differences are reportet ``drastically"
%% by `\PackageError':
-\newcommand*{\DatesDiffErrors}{\let\fd@datesdiff\fd@errdatesdiff}
+\newcommand*{\DatesDiffErrors}{\let\FD@datesdiff\FD@errdatesdiff}
%% This is the default:
\DatesDiffErrors
%% After |\DatesDiffNotices|, date differences are reported by
%% %% <- told -> reported 2012/10/19
%% `\typeout':
-\newcommand*{\DatesDiffNotices}{\let\fd@datesdiff\fd@notedatesdiff}
-\def\fd@notedatesdiff#1{\def\MessageBreak{^^J}% %% added 2012/10/24
- {\typeout{\fd@infodate{#1}%
- \fd@refdate}}} %% added 2012/10/19
-%% v0.7 adds |\DatesDiffWarnings| to get more salient reports of
+\newcommand*{\DatesDiffNotices}{\let\FD@datesdiff\FD@notedatesdiff}
+\def\FD@notedatesdiff#1{\def\MessageBreak{^^J}% %% added 2012/10/24
+ {\typeout{\FD@infodate{#1}%
+ \FD@refdate}}} %% added 2012/10/19
+%% v0.3 adds |\DatesDiffWarnings| to get more salient reports of
%% date differences by `\PackageWarningNoLine':
-\newcommand*{\DatesDiffWarnings}{\let\fd@datesdiff\fd@warndatesdiff}
-\def\fd@warndatesdiff#1{%
+\newcommand*{\DatesDiffWarnings}{\let\FD@datesdiff\FD@warndatesdiff}
+\def\FD@warndatesdiff#1{%
\PackageWarningNoLine{filedate}%
- {\fd@infodate{#1}\fd@refdate}}
+ {\FD@infodate{#1}\FD@refdate}}
%% After |\ModDates|, reference dates are called ``modification'' dates:
-\newcommand*{\ModDates}{\let\fd@refdate\fd@moddate}
-\def\fd@moddate{\MessageBreak vs. modification date \fd@therefdate}
+\newcommand*{\ModDates}{\let\FD@refdate\FD@moddate}
+\def\FD@moddate{\MessageBreak vs. modification date \FD@therefdate}
%% After |\SomeDates|, the type of reference dates is not specified.
%% This is more accurate when the info date is compared with |\rawtoday|.
-\newcommand*{\SomeDates}{\let\fd@refdate\fd@somedate}
-\def\fd@somedate{\MessageBreak vs. \fd@therefdate}
+\newcommand*{\SomeDates}{\let\FD@refdate\FD@somedate}
+\def\FD@somedate{\MessageBreak vs. \FD@therefdate}
%% That's the default:
\SomeDates
%%
@@ -212,15 +212,48 @@
%% know that the file was modified ``today".)
\newcommand*{\CheckDateOfToday}[1]{%
\begingroup
- \def\fd@refdate{%
+ \def\FD@refdate{%
\MessageBreak which is not today}%
\CheckDateOf{#1}{\rawtoday}%
\endgroup}
%%
+%% === Automatical Immediate Checking ===
+%% |\FileDateAutoChecks| modifies the \qtdcode{&\Provides...}
+%% commands internally so that they check their date with
+%% with the file's modification date according to
+%% |\pdffilemoddate|---this choice might be queried (TODO).
+%% The modification may be undone by |\NoFileDateAutoChecks|
+%% so that the \qtdcode{&\Provides...} commands get their
+%% original functionality (only) again. This will even work
+%% with \ctanpkgref{readprov} v0.4.
+%%
+%% Actually, \LaTeX's internal `\@pr@videpackage' and
+%% `\@profidesfile' are used as hooks. Their original meanings
+%% are stored so they can be regained by \qtd{&\NoFile...}:
+\let\FD@@provpkg\@pr@videpackage
+\def\FD@provpkg[#1]{%
+ \FD@@provpkg[#1]%
+ \CheckDateOfPDFmod{\@currname.\@currext}}
+\let\FD@@provfile\@providesfile
+\def\FD@provfile#1[#2]{%
+ \FD@@provfile{#1}[#2]%
+ \CheckDateOfPDFmod{#1}}
+%% |\FileDateAutoChecks*| in addition to `\FileDateAutoChecks'
+%% checks the main file's info date,
+%% assuming the main file is `\jobname.tex':
+\newcommand*{\FileDateAutoChecks}{%
+ \@ifstar{\CheckDateOfPDFmod{\jobname.tex}%
+ \FD@autochecks}%
+ {\FD@autochecks}}
+\newcommand*{\FD@autochecks}{%
+ \let\@pr@videpackage\FD@provpkg
+ \let\@providesfile\FD@provfile}
+\newcommand*{\NoFileDateAutoChecks}{%
+ \let\@pr@videpackage\FD@@provpkg
+ \let\@providesfile\FD@@provfile}
%%
%% TODO single check commands for comma-separated list of files,
%% (\ctanpkgref{dowith})
-%% automatic tests by `\ReadFileInfos' etc. (\ctanpkgref{fileinfo}).
%%
%% === Leaving the Package File ===
\endinput
@@ -238,3 +271,7 @@ v0.3 2012/10/24 \MessageBreak fix, \DatesDiffWarnings
rm. remark on \fd@datesequal,
mod. text on \DatesDiffWarnings,
-- -> --- before `a script might'
+v0.4 2012/11/10 \fd@ -> \FD@, doc. v0.7 -> v0.3, v0.21,
+ \filbreak; code for \...AutoChecks
+ 2012/11/11 doc. another \filbreak, documenenting
+ \...AutoChecks, \...AutoChecks*