%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% % 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. % % % % (c) Ahmed Musa 2009 % %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% \ProvidesPackage{getfiledate} [2009/03/05 v1.0 Get date of last modification of existing file] \NeedsTeXFormat{LaTeX2e} \RequirePackage{etoolbox} \RequirePackage{ltxnew} \RequirePackage{xkeyval} \@ifpackageloaded{xcolor}{}{\RequirePackage[table]{xcolor}} \RequirePackage{amssymb} \RequirePackage{boxedminipage} \new\long\def\gfd@err#1#2{\PackageError{getfiledate}{#1}{#2}} \new\long\def\gfd@warn#1{\PackageWarningNoLine{getfiledate}{#1}} \new\def\gfd@head{0ex} \new\def\gfd@foot{0ex} \new\def\gfd@prefix{The date of last modification of file} \new\def\gfd@postfix{was} \new\def\gfd@marker{$\blacktriangleright$} \new\def\gfd@markercolor{blue} \new\def\gfd@filenamecolor{blue} \new\def\gfd@datecolor{blue} \new\def\gfd@inlinespace{1em} \new\def\gfd@file{getfiledate.sty} \new\let\gfd@align@right\relax \new\let\gfd@align@left\relax \new\dimen\gfd@width\gfd@width=\hsize \new\dimen\gfd@width@tmp\gfd@width@tmp=\z@ \new\def\gfd@framesep{3pt} \new\def\gfd@framerule{0.4pt} \new\def\gfd@framecolor{black} \new\def\gfd@separatorcolor{black} \new\let\gfd@separator\textbullet \new\let\T@C\textcolor \providecommand\space{ } \define@boolkeys[gfd]{getfiledate}[gfd@]{% boxed,putprefix,notime}[true]{} \define@cmdkey[gfd]{getfiledate}[gfd@]{prefix}[% The date of last modification of file]{} \define@cmdkey[gfd]{getfiledate}[gfd@]{postfix}[was]{} \define@cmdkey[gfd]{getfiledate}[gfd@]{file}{} \define@key[gfd]{getfiledate}{width}[\hsize]{\gfd@width=#1\relax} \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]{} \ProcessOptionsX*[gfd]\relax \ifcsdef{pdffilemoddate}{}{% \gfd@err{Missing command \string\pdffilemoddate}{% Use pdfTeX 1.30.0 or later version} \expandafter\endinput } \newcommand\getfiledate[2][]{% \setkeys[gfd]{getfiledate}{#1}% \setkeys[gfd]{getfiledate}{file={#2}}% \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=\dimexpr\gfd@width+2\fboxsep+2\fboxrule\relax \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 and 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@prefix@a#1{% \ifcsempty{gfd@marker}{}{\gfd@marker@a}\relax \gfd@prefix\space\T@C{\gfd@filenamecolor}{#1}\space\gfd@postfix\space% } \def\gfd@tempd#1#2#3#4#5#6#7\@nil#8{% \parbox{\gfd@width}{% \@killglue\noindent% \ifbool{gfd@putprefix}{\gfd@prefix@a{#8}}{}\ignorespaces \T@C{\gfd@datecolor}{#1-#2-#3}% \ifbool{gfd@notime}{}{% \space\T@C{\gfd@separatorcolor}{\gfd@separator}\space% \T@C{\gfd@datecolor}{#4:#5:#6}\ignorespaces }.% } \@killglue% } \def\gfd@marker@a{% \T@C{\gfd@markercolor}{\gfd@marker}% \leavevmode\hskip\gfd@inlinespace plus\z@ minus\z@\relax } \endinput