summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-06-22 23:32:10 +0000
committerKarl Berry <karl@freefriends.org>2009-06-22 23:32:10 +0000
commit9693f6ba57c38e4078c099b5c6f3e25fbb6b58aa (patch)
tree8eea8bc801eaafbef846f17698d01159647a72dc /Master
parentde252d25752922eade4f5921dc772887abba81dc (diff)
new latex package getfiledate (22jun09)
git-svn-id: svn://tug.org/texlive/trunk@13897 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/getfiledate/README12
-rw-r--r--Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.pdfbin0 -> 99013 bytes
-rw-r--r--Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.tex320
-rw-r--r--Master/texmf-dist/tex/latex/getfiledate/getfiledate.sty155
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/getfiledate.tlpsrc0
7 files changed, 489 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/getfiledate/README b/Master/texmf-dist/doc/latex/getfiledate/README
new file mode 100644
index 00000000000..bcc9d1ce310
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/getfiledate/README
@@ -0,0 +1,12 @@
+The 'getfiledate' package fetches from the system the date of last
+modification or opening of a resident file.
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license or
+any later version. The latest version of this license is in
+http://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.
+
+Ahmed Musa 2009
+
+End of README file.
diff --git a/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.pdf b/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.pdf
new file mode 100644
index 00000000000..37ef45cba53
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.tex b/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.tex
new file mode 100644
index 00000000000..19141cd4a87
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/getfiledate/getfiledate-guide.tex
@@ -0,0 +1,320 @@
+\documentclass[a4paper,11pt,final]{article}
+\usepackage[scaled=0.9]{helvet}
+\usepackage{getfiledate}
+\usepackage[left=3.5cm,right=3.5cm,top=3.5cm,bottom=3.5cm]{geometry}
+\usepackage{fancyvrb,shortvrb}
+\usepackage{array,longtable,colortbl}
+\usepackage{calc}
+\usepackage{multicol}
+\usepackage{parskip}
+\usepackage{xspace}
+\usepackage{fancyhdr}
+\usepackage{lastpage}
+\usepackage{hyperref}
+\usepackage{doipubmed}
+\definecolor{amagenta}{rgb}{0.50,0.00,0.50}
+\definecolor{adarkgreen}{rgb}{0.00,0.59,0.00}
+\definecolor{bmagenta}{rgb}{0.50,0.00,1.00}
+\hypersetup{colorlinks=true,linkcolor=red,pdfpagemode=UseThumbs,
+ implicit=true,breaklinks=true,citecolor=purple}
+\CustomVerbatimEnvironment{gfdverbatim}{Verbatim}{numbers=left,
+ numberblanklines=false,firstnumber=last,frame=single,
+ rulecolor=\color{orange},framerule=2pt,
+ framesep=2pt,fillcolor=\color{violet!55},formatcom=\color{bmagenta},
+ xrightmargin=0pc,commandchars=\|\(\),commentchar=\?}
+\newcommand*\tezt[1]{\textcolor{adarkgreen}{\texttt{#1}}}
+\newcommand*\temt[1]{\textcolor{teal}{\texttt{#1}}}
+\def\ie{i.e.\xspace}
+\newcounter{examplecnt}[section]
+\newcommand\example[1]{%
+ \refstepcounter{examplecnt}
+ \par\vspace*{.5\baselineskip}
+ \textcolor{purple}{\textbf{Example~\theexamplecnt}}
+ \par%
+}
+\date{\textcolor{purple}{June 10, 2009}\vadjust{\kern2ex\hrule}}
+\def\helv{\fontfamily{phv}\selectfont\color{amagenta}}
+\def\eg{e.g.\xspace}
+\def\ie{i.e.\xspace}
+\def\etc{etc.\xspace}
+\fancyhf{}
+\fancyhfoffset[R,L]{\marginparsep+\marginparwidth}
+\lhead{\helv The \texttt{\textcolor{blue}{getfiledate}} Package}
+\rhead{\helv Page~\thepage~of~\pageref*{LastPage}}
+\renewcommand\headrule{\color{blue}\hrule height1pt width\headwidth\relax
+ \vspace{2pt}\hrule height1pt width\headwidth\vspace{-2pt}}
+\renewcommand\footrule{\color{green}\hrule height1pt width\headwidth\relax
+ \vspace{2pt}\hrule height1pt width\headwidth\vspace{2pt}}
+\pagestyle{fancyplain}
+
+\begin{document}
+\MakeShortVerb{\+}
+\title{{\bfseries The \textcolor{blue}{\texttt{getfiledate}} Package}\\[1ex]
+Version 0.1}
+\author{Ahmed Musa\\[.5ex]University of Central Lancashire\\
+ Preston, UK\\[1ex]\url{a.musa@rocketmail.com}
+}
+\maketitle
+
+\columnseprule=0.5pt\premulticols=2cm
+\begin{multicols}{2}
+ \bgroup\small\tableofcontents\egroup
+\end{multicols}
+\bigskip
+
+\begin{center}
+\fboxsep3pt\fboxrule2.5pt
+\fcolorbox{red}{yellow}{\fcolorbox{bmagenta}{gray!15}{%
+\parbox{\hsize-4\fboxsep-4\fboxrule}{%
+\hfil\fcolorbox{cyan}{white}{\hspace{1cm}\textbf{Summary}\hspace{1cm}}\hfill\\[.5ex]
+The \tezt{getfiledate} package fetches from the system the date of last modification or opening of a resident file. It is based on an idea by Heiko Oberdiek \citeurl{oberdiek@uni-freiburg.de} that appeared in February 2009 on the discussion/newsgroup website \url{comp.text.tex}, namely, using the \tezt{\string\pdffilemoddate} command of pdf\TeX. My contribution has been to create a user-friendly interface for obtaining and presenting the needed filedate in several formats.
+}}}
+\end{center}
+
+\section{User interface}
+The package may be loaded without options as in
+\begin{gfdverbatim}
+\usepackage{getfiledate}
+\end{gfdverbatim}
+or with options as in
+\begin{gfdverbatim}
+\usepackage[option=value]{getfiledate}
+\end{gfdverbatim}
+The options include the filename for which you want to print the date of last modification. The options and their default values are described in section~\ref{PackageOptions}. It is advisable to first load the package by \tezt{\string\usepackage\{getfiledate\}} and then use the macro \tezt{\string\getfiledate} to dynamically determine and print the date of last modification of the filename. This macro sets the various options.
+
+\section{Package options\label{PackageOptions}}
+The package options are listed in Table~\ref{tab:Package-options} below.
+
+\begingroup
+\small
+\rowcolors{3}{yellow!20}{gray!25}
+\extrarowheight2pt
+\arrayrulecolor{purple}
+\begin{longtable}{m{3cm}m{3.5cm}m{\hsize-8cm}}
+\caption{Package options\label{tab:Package-options}}\\
+\rowcolor{green!55}
+\bfseries Option&\bfseries Default&\bfseries Meaning\\
+\endfirsthead
+\multicolumn{3}{|l|}{\emph{Continued from last page}}\\
+\bfseries Option&\bfseries Default&\bfseries Meaning\\
+\endhead
+\multicolumn{3}{|r|}{\emph{Continued on next page}}\\
+\endfoot
+\endlastfoot
++file+ & +getfiledate.sty+ & The file for which the date of last modification is required.\\
++prefix+ & The date of last modification of file & The prefix of filedate.\\
++width+ & +\hsize+ & The width of the parbox or boxedminipage containing the filedate.\\
++head+ & +0ex+ & The vertical separation between the paragraph before the filedate and the filedate itself. When this option is passed to package without value, its default becomes the +\baselineskip+.\\
++foot+ & +0ex+ & The vertical skip between the filedate's line and the paragraph after filedate. When this option is passed to package without value, its default becomes the +\baselineskip+.\\
++marker+ & +\blacktriangle-+ +right+ & The mark before the filedate, on the same line with the filedate.\\
++markercolor+ & +blue+ & The color of the marker.\\
++filenamecolor+ & +blue+ & The color of the filename.\\
++datecolor+ & +blue+ & The color of filedate.\\
++inlinespace+ & +1em+ & The horizontal separation between the marker and the filedate.\\
++separator+ & +\textbullet+ & The marker between the filedate and filetime.\\
++separatorcolor+ & +black+ & The color of the separator.\\
++framecolor+ & +black+ & The color of the boxrule for the boxedminipage.\\
++framesep+ & +3pt+ & The +\fboxsep+ for the boxedminipage.\\
++framerule+ & +0.4pt+ & The +\fboxrule+ for the boxedminipage.\\
++align+ & +justified+ & Alignment of the boxedminipage (possible values are \tezt{center}, \tezt{left}, \tezt{right} and \tezt{justified}).\\
+\end{longtable}
+\endgroup
+
+\section{Examples}
+\example{}
+
+The simplest example is to use the \tezt{\string\getfiledate} macro in the following way:
+\begin{gfdverbatim}
+\getfiledate{file={dir/filename.ext}}
+\end{gfdverbatim}
+for which the default values of the package options will be used. For the sample file \temt{test1.tex}, the outcome of this will be:
+
+\getfiledate{file={test1.tex}}
+
+\bigskip
+You can, however, use package options to customize the format of the result. The following examples illustrate the most important issues in using this package.
+
+\example{}
+%\section{Example}
+The example in this section was obtained with the following settings. There are values specified for \tezt{head} and \tezt{foot}.
+\begin{gfdverbatim}
+\getfiledate{file={test1.tex},head=.1\baselineskip,
+ foot=2\baselineskip,markercolor=magenta,filenamecolor=brown,
+ datecolor=orange,inlinespace=.5em,marker=$\blacktriangleright$,
+ separator
+}
+\end{gfdverbatim}
+
+The outcome of this is:
+\getfiledate{file={test1.tex},head=.1\baselineskip,
+ foot=2\baselineskip,
+ markercolor=magenta,filenamecolor=brown,datecolor=orange,
+ inlinespace=.5em,marker=$\blacktriangleright$,separator
+}
+
+If you don't need the \tezt{marker}, you can set \tezt{marker=\{\}} as follows
+\begin{gfdverbatim}
+\getfiledate{file={test1.tex},head=\baselineskip,
+ foot=\baselineskip,width=.6\hsize,filenamecolor=brown,
+ prefix=The date of final changes to file,
+ datecolor=orange,inlinespace=.5em,boxed=false,
+ separator=$\spadesuit$,separatorcolor=green,
+ |color(red)marker={}|color(bmagenta),align=center
+}
+\end{gfdverbatim}
+to get:
+\getfiledate{file={test1.tex},head=\baselineskip,
+ foot=\baselineskip,width=.6\hsize,
+ prefix=The date of final changes to file,
+ marker={},filenamecolor=brown,datecolor=orange,
+ inlinespace=.5em,align=center,boxed=false,
+ separator=$\spadesuit$,separatorcolor=green
+}
+If you simply remove \tezt{marker} from the key-value list, the \tezt{marker} will retain the last value you set for it rather than the default value (which is nil).
+
+The user should note:
+
+\begin{itemize}
+\item The inclusion of the \tezt{width} (\tezt{=0.6\string\hsize}) in the above example. The \tezt{width} will maintain this value until it is changed again, as in the following example.
+
+\item The change of \tezt{prefix} here. The default value of \tezt{prefix} is \tezt{The date of last modification of file}. The \tezt{prefix} will maintain this value until it is changed in the next call (see the next example).
+
+\item The use of the key-value \tezt{align=center} above. The key \tezt{align} can assume values of \tezt{center}, \tezt{left}, \tezt{right}, and \tezt{justified}. Any other value for \tezt{align} will be rejected by the package.
+\end{itemize}
+
+\example{}
+%\section{Example}
+The example in this section was obtained with the following settings:
+\begin{gfdverbatim}
+\colorlet{redgreen}{red!55!green!65}
+
+\getfiledate{file={test2.tex},head=0ex,foot=\baselineskip,
+ prefix,width=\hsize,markercolor=magenta,filenamecolor=red,
+ datecolor=violet,inlinespace=.5em,marker=$\triangleright$,
+ separator=$\clubsuit$,separatorcolor=redgreen
+}
+\end{gfdverbatim}
+
+The outcome is:
+\getfiledate{file={test2.tex},head=0ex,
+ foot=1ex,width=\hsize,prefix,
+ markercolor=magenta,filenamecolor=red,datecolor=violet,
+ inlinespace=.5em,marker=$\triangleright$,
+ separator=$\clubsuit$,separatorcolor=red!55!green!65
+}
+Here we simply passed the \tezt{prefix} without value so that its default value was used.
+
+\example{}
+%\section{Example}
+The example in this section was obtained with the following settings:
+\begin{gfdverbatim}
+\getfiledate{file={test3.tex},head=\baselineskip,
+ foot=2\baselineskip,markercolor=red!65,filenamecolor=blue,
+ datecolor=orange,inlinespace=.5em,marker={$\star$},
+ separator=$\Diamond$,separatorcolor=red
+}
+\end{gfdverbatim}
+
+The outcome is:
+\getfiledate{file={test3.tex},head=\baselineskip,
+ foot=\baselineskip,markercolor=red!65,filenamecolor=blue,
+ datecolor=orange,inlinespace=.5em,marker={$\star$},
+ separator=$\Diamond$,separatorcolor=red
+}
+
+\example{}
+The example in this section was obtained with the following settings:
+\begin{gfdverbatim}
+\getfiledate{file={test4.tex},head=\baselineskip,foot=2ex,
+ markercolor=cyan,filenamecolor=blue,datecolor=orange,
+ inlinespace=.5em,marker={$\blacktriangleright$},
+ markercolor=cyan,separator=$\heartsuit$,separatorcolor
+}|color(black) % Use default separatorcolor
+\end{gfdverbatim}
+
+The outcome is:
+\getfiledate{file={test4.tex},head=\baselineskip,foot=2ex,
+ markercolor=cyan,filenamecolor=blue,datecolor=orange,
+ inlinespace=.5em,marker={$\blacktriangleright$},
+ markercolor=cyan,separator=$\heartsuit$,separatorcolor
+}
+
+\example{}
+%\section{Example}
+The example in this section was obtained with the following settings:
+\begin{gfdverbatim}
+\getfiledate{file={test5.tex},head=1ex,foot=1ex,
+ markercolor=purple,filenamecolor=blue,
+ datecolor=orange,inlinespace=.5em,
+ marker={$\blacktriangleright$},separator={}
+}|color(black) % The separator is nil here.
+\end{gfdverbatim}
+
+The outcome of this is:
+\getfiledate{file={test5.tex},head=1ex,foot=1ex,
+ markercolor=purple,filenamecolor=blue,datecolor=orange,
+ inlinespace=.5em,marker={$\blacktriangleright$},
+ separator={}
+}
+
+\example{}
+%\section{Example}
+Instead of keeping \tezt{head} and \tezt{foot}, you may instead decide to frame your result, as follows:
+\begin{gfdverbatim}
+\getfiledate{file={test5.tex},head=.5\baselineskip,
+ foot=.5\baselineskip,width=12.5cm,framesep=5pt,framerule=.4pt,
+ align=center,markercolor=purple,filenamecolor=blue,
+ datecolor=orange,marker={$\blacktriangleright$},
+ separator=$\heartsuit$,boxed
+}|color(black) % marker has no effect here.
+\end{gfdverbatim}
+
+The outcome is:
+\getfiledate{file={test5.tex},head=.5\baselineskip,foot=.5\baselineskip,
+ width=12.5cm,framesep=3pt,framerule=.4pt,align=center,
+ markercolor=purple,filenamecolor=blue,datecolor=orange,
+ marker={$\blacktriangleright$},separator=$\heartsuit$,
+ boxed
+}
+
+The boolean option \tezt{boxed} has the default value of \tezt{true} when listed in the key-value list. If you set the key \tezt{boxed(=true)} in one call to the \tezt{\string\getfiledate} macro, and you don't want the filedate to be boxed subsequently, you have to turn it off (\ie, enter \tezt{boxed=false}) in the next call to \tezt{\string\getfiledate}. The choice \tezt{boxed(=true)} automatically turns off \tezt{marker} irrespective of whether or not you have submitted a value to this key in \tezt{\string\getfiledate} macro. In the above example, the reader will notice that the setting \tezt{marker=\string\blacktriangleright} has no effect on the outcome.
+
+For the boxed filedates, you can set the options \tezt{framesep} and \tezt{framerule} (equivalents of \LaTeX's native \temt{\string\fboxsep} and \temt{\string\fboxrule}) as follows:
+\begin{gfdverbatim}
+\getfiledate{file={test5.tex},head=\baselineskip,
+ foot=1ex,marker={$\blacktriangleright$},markercolor=purple,
+ filenamecolor=blue,width=.9\hsize,datecolor=orange,
+ inlinespace=.5em,align=left,boxed,separator=$\blacklozenge$,
+ |color(red)framesep=5pt,framerule=2pt|color(bmagenta)
+} |color(black) % marker has no effect here.
+\end{gfdverbatim}
+
+The outcome of this is:
+\getfiledate{file={test5.tex},head=\baselineskip,foot=1ex,
+ markercolor=purple,filenamecolor=blue,datecolor=orange,
+ inlinespace=.5em,marker={$\blacktriangleright$},width=.9\hsize,
+ align=left,boxed,framesep=5pt,framerule=2pt,separator=$\blacklozenge$
+}
+
+The default values of \tezt{framesep} and \tezt{framerule} are 3pt and 0.4pt (\LaTeX's native values for \temt{\string\fboxsep} and \temt{\string\fboxrule}). The user should note that the keys \tezt{framesep} and \tezt{framerule} should, of course, be submitted without backslashes (\eg, \tezt{framesep=5pt} and \tezt{framerule=2pt}).
+
+You can change the box color as in
+\begin{gfdverbatim}
+\getfiledate{file={test5.tex},head=\baselineskip,
+ foot=\baselineskip,markercolor=purple,filenamecolor=blue,
+ datecolor=orange,width=8cm,align=right,boxed,framesep=5pt,
+ framerule=2pt,separator=$\Diamond$,|color(red)framecolor=green|color(bmagenta)
+}
+\end{gfdverbatim}
+
+The outcome of this is:
+\getfiledate{file={test5.tex},head=\baselineskip,foot=\baselineskip,
+ markercolor=purple,filenamecolor=blue,datecolor=orange,width=8cm,
+ inlinespace=.5em,marker={$\blacktriangleright$},align=right,
+ boxed,framesep=5pt,framerule=2pt,separator=$\Diamond$,
+ framecolor=green
+}
+
+This box color will remain in force until it is changed again. The default value of \tezt{framecolor} is \tezt{black}.
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/getfiledate/getfiledate.sty b/Master/texmf-dist/tex/latex/getfiledate/getfiledate.sty
new file mode 100644
index 00000000000..6fa71ccf0d0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/getfiledate/getfiledate.sty
@@ -0,0 +1,155 @@
+\ProvidesPackage{getfiledate}
+ [2009/03/05 v1.0 Get date of last modification of existing file]
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{comment}
+\begin{comment}
+ This package fetches and formats the date of last modification of any existing file. It is based on an idea by Heiko Oberdiek (2009).
+
+ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or any later version. The latest version of this license is in http://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.
+\end{comment}
+\RequirePackage{xkeyval}
+\RequirePackage[table]{xcolor}
+\RequirePackage{amssymb}
+\RequirePackage{boxedminipage}
+\def\gfd@err#1#2{\PackageError{getfiledate}{#1}{#2}}
+\def\gfd@warn#1{\PackageWarningNoLine{getfiledate}{#1}}
+\def\gfd@head{0ex}
+\def\gfd@foot{0ex}
+\def\gfd@prefix{The date of last modification of file}
+\def\gfd@marker{$\blacktriangleright$}
+\def\gfd@markercolor{blue}
+\def\gfd@filenamecolor{blue}
+\def\gfd@datecolor{blue}
+\def\gfd@inlinespace{1em}
+\def\gfd@file{getfiledate.sty}
+\let\gfd@align@right\relax
+\let\gfd@align@left\relax
+\def\gfd@width{\hsize}
+\newdimen\gfd@width\gfd@width=\hsize
+\newdimen\gfd@width@tmp
+\def\gfd@framesep{3pt}
+\def\gfd@framerule{0.4pt}
+\def\gfd@framecolor{black}
+\def\gfd@separatorcolor{black}
+\let\gfd@separator\textbullet
+\let\T@C\textcolor
+\define@boolkey[gfd]{getfiledate}[gfd@]{boxed}[true]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{prefix}[%
+ The date of last modification of file]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{file}{}
+\define@key[gfd]{getfiledate}{width}[\hsize]{\gfd@width=#1}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{marker}[$\blacktriangleright$]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{markercolor}[blue]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{filenamecolor}[blue]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{datecolor}[blue]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{inlinespace}[1em]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{head}[\baselineskip]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{foot}[\baselineskip]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{framesep}[3pt]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{framerule}[0.4pt]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{separator}[\textbullet]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{framecolor}[black]{}
+\define@cmdkey[gfd]{getfiledate}[gfd@]{separatorcolor}[black]{}
+\define@choicekey*+[gfd]{getfiledate}{align}[\gfd@val\gfd@nr]%
+{center,right,left,justified}[justified]{%
+ \ifcase\gfd@nr\relax
+ \def\gfd@align@right{\hfil}
+ \def\gfd@align@left{\hfil}
+ \or
+ \def\gfd@align@right{\hfill}
+ \let\gfd@align@left\relax
+ \or
+ \let\gfd@align@right\relax
+ \def\gfd@align@left{\hfill}
+ \or
+ \let\gfd@align@right\relax
+ \let\gfd@align@left\relax
+ \fi
+}{%
+ \gfd@err{Inadmissible value '#1' for align}
+}
+\DeclareOptionX*{\gfd@warn{Unknown option '\CurrentOption' ignored}}
+\ExecuteOptionsX[gfd]<getfiledate>{}
+\ProcessOptionsX*[gfd]<getfiledate>\relax
+\long\def\gfd@fifo#1\else#2\fi{\fi#1}
+\ifx\ifcsname\@undefined\gfd@fifo
+ \def\ifdefined@gfd#1{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }
+\else
+ \def\ifdefined@gfd#1{%
+ \ifcsname#1\endcsname
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }
+\fi
+\def\ifempty@gfd#1{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname#1\endcsname\@empty
+ \expandafter\@firstoftwo%
+ \else
+ \expandafter\@secondoftwo%
+ \fi
+}
+\ifdefined@gfd{pdffilemoddate}{}{%
+ \gfd@err{Missing command \string\pdffilemoddate}{%
+ Use pdfTeX 1.30.0 or later version}
+ \expandafter\endinput
+}
+\long\def\getfiledate#1{%
+ \setkeys[gfd]{getfiledate}{#1}
+ \par\vspace{\gfd@head}%
+ \begingroup
+ \gfd@align@right
+ \ifgfd@boxed
+ \let\gfd@marker\@empty
+ \def\gfd@inlinespace{\z@}
+ \fboxsep=\gfd@framesep
+ \fboxrule=\gfd@framerule
+ \gfd@width@tmp=\gfd@width
+ \advance\gfd@width@tmp by 2\fboxsep
+ \advance\gfd@width@tmp by 2\fboxrule
+ \color{\gfd@framecolor}
+ \begin{boxedminipage}{\gfd@width@tmp}%
+ \normalcolor\gfd@tempa{\gfd@file}\relax
+ \end{boxedminipage}%
+ \else
+ \noindent\gfd@tempa{\gfd@file}%
+ \fi
+ \gfd@align@left
+ \endgroup
+ \par\vspace{\gfd@foot}%
+}
+\def\gfd@tempa#1{%
+ \IfFileExists{#1}{%
+ \expandafter\expandafter\expandafter
+ \gfd@tempb\expandafter\@gobbletwo\pdffilemoddate{#1}
+ D:00000000000000\@nil{#1}%
+ }{\gfd@err{File '#1' does not exist or wrong path}{%
+ Please enter correct filename or path}}
+}
+\newcommand\gfd@tempb[8]{\gfd@tempc{#1#2#3#4}{#5#6}{#7#8}}
+\newcommand\gfd@tempc[9]{\gfd@tempd{#1}{#2}{#3}{#4#5}{#6#7}{#8#9}}
+\def\gfd@tempd#1#2#3#4#5#6#7\@nil#8{%
+ \parbox{\gfd@width}{%
+ \@killglue\noindent
+ \ifempty@gfd{gfd@marker}{}{\gfd@marker@a}\relax
+ \gfd@prefix\space\T@C{\gfd@filenamecolor}{#8}\space
+ was\space\T@C{\gfd@datecolor}{#1-#2-#3}\space\T@C{\gfd@separatorcolor}{%
+ \gfd@separator}\space\T@C{\gfd@datecolor}{#4:#5:#6}.%
+ }
+ \@killglue
+}
+\def\gfd@marker@a{%
+ \T@C{\gfd@markercolor}{\gfd@marker}%
+ \hskip\gfd@inlinespace plus\z@ minus\z@\relax
+}
+
+\endinput
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 855a7890570..1a3ae6c3bcf 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -109,7 +109,7 @@ my @WorkingTLP = qw(
fp fpl fragmaster fragments frankenstein free-math-font-survey
frenchle fribrief frletter frontespizio fullblck fullpict functan
gaceta galois gastex gatech-thesis gb4e gcard gchords gcite gene-logic
- genmisc genmpage gentle geometry germbib
+ genmisc genmpage gentle geometry germbib getfiledate
gfsartemisia gfsbodoni gfscomplutum gfsdidot gfsneohellenic
gfsporson gfssolomos
ginpenc gloss glossaries gmdoc gmdoc-enhance gmeometric
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index bd62f4b648d..825f097b0f9 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -216,6 +216,7 @@ depend gauss
depend gcard
depend gcite
depend genmpage
+depend getfiledate
depend ginpenc
depend gloss
depend glossaries
diff --git a/Master/tlpkg/tlpsrc/getfiledate.tlpsrc b/Master/tlpkg/tlpsrc/getfiledate.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/getfiledate.tlpsrc