% \iffalse meta-comment
%
% Copyright (C) 2012 by Robin Schneider <ypid23@aol.de>
%
% 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 (at your option) 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.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Robin Schneider.
%
% This work consists of the files counttexruns.dtx and counttexruns.ins
% and the derived filebase counttexruns.sty.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{counttexruns.dtx}
%</driver>
%<package>%% See file 'counttexruns.dtx' for copyright and licence.
%<package>\NeedsTeXFormat{LaTeX2e}[1998/12/01]
%<package>\ProvidesPackage{counttexruns}
%<*package>
    [2012/08/31 v1.00a Count compilations of a document]
%</package>
%
%<*driver>
\documentclass[english]{ltxdoc}
\newcommand{\PackageURL}{https://github.com/ypid/latex-packages/tree/master/counttexruns}
\newcommand{\PackageCTANURL}{http://www.ctan.org/pkg/counttexruns}
\newcommand{\PackageAuthor}{Robin Schneider}
\newcommand{\PackageAuthorEmail}{ypid23@aol.de}
\newcommand{\PackageName}{\PrintPackage{count\TeX runs}}
\newcommand{\PrintPackage}[1]{\textsf{#1}}
\usepackage{counttexruns}
\usepackage{
  babel,
  csquotes,
  xcolor,
  url,
  hypdoc,
  ifthen,
}
\GetFileInfo{counttexruns.dtx}
\hypersetup{
  pdftitle={A manual for \PackageName},
  pdfauthor={\PackageAuthor{} <\PackageAuthorEmail>},
  pdfsubject={\fileinfo},
  baseurl={\PackageURL},
  pdfkeywords={This document corresponds to \PackageName~\fileversion,
    dated \filedate}
}

\title{The \PackageName{} package\thanks{This document
corresponds to \PackageName~\fileversion, dated \filedate.}}
\author{\PackageAuthor \\
  \texttt{\href{mailto:\PackageAuthorEmail?subject=LaTeX package counttexruns}%
    {\PackageAuthorEmail}%
  }%
}

\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{counttexruns.dtx}
  \PrintChanges
  \PrintIndex
\end{document}
%</driver>
% \fi
%
% \CheckSum{52}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \changes{1.00}{2012/08/27}{Initial version}
% \changes{1.00a}{2012/08/31}{Minor details fixed}
%
% \DoNotIndex{\RequirePackage, \DeclareOption, \ProcessOptions}
% \DoNotIndex{\PackageWarning, \MessageBreak}
% \DoNotIndex{\DeclareStringOption, \ProcessLocalKeyvalOptions}
% \DoNotIndex{\DeclareRobustCommand, \newcommand, \renewcommand}
% \DoNotIndex{\newenvironment}
% \DoNotIndex{\if, \else, \fi, \ifcase, \or, \ifthenelse, \AND, \value, \relax}
% \DoNotIndex{\%, \IfFileExists, \immediate, \arabic}
%% ^^A \% is ignored ...
% \DoNotIndex{\@currname, \newcounter, \setcounter}
% \DoNotIndex{\endinput}
%
% \maketitle
%
% \phantomsection
% \addcontentsline{toc}{section}{\abstractname}
% \begin{abstract}
% The \PackageName{} package counts how often a \LaTeX{} document is
% compiled.\\
% Location on CTAN: \url{\PackageCTANURL} \\
% Fork me on GitHub: \url{\PackageURL} \end{abstract}
%
% \tableofcontents
%
% \section{Introduction}
% From a statistical perspective you maybe want to know how often you compiled
% a document. This is exactly the task I wrote this package for. For a few
% years I used a bash script and -shell-escape to do this but I decided to
% write this small package to do the trick a little nicer.
%
% \section{Usage}
% Just load the package placing
% \begin{quote}
%   |\usepackage{counttexruns}|
% \end{quote}
% in the preamble of your \LaTeXe{} source file.
%
% The counter will be stored in a file with the same prefix as your document
% (|\jobname|) but with the file extension \enquote{.ctr}. You can change the
% default extension by setting it as package option like this:
% \begin{quote}
%   |\usepackage[extension=ctr]{counttexruns}|
% \end{quote}
%
% \DescribeMacro{\thecounttexruns}
% To print the count you can use the macro |\thecounttexruns|. You can also use
% and even change the \LaTeX{} counter \enquote{counttexruns}. This will not disturb
% \PackageName.
%
% By the way this documentation was \thecounttexruns{}
% time\ifthenelse{\equal{\value{counttexruns}}{1}}{}{s} compiled during
% development.
%
% You can use the package \PrintPackage{ifthen} for checking if a counter is
% one: \\ |time\ifthenelse{\equal{\value{counttexruns}}{1}}{}{s}|
%
%
% \StopEventually{}
%
% \section{Implementation}
% \iffalse
%<*package>
% \fi
% \begin{macro}{\thecounttexruns}
% First a new counter and file handle is declared.
% The |\newcounter| will also declare the macro |\thecounttexruns|.
%    \begin{macrocode}
\newcounter{counttexruns}
\newwrite\@counttexrunsfile
%    \end{macrocode}
% Then the package options are processed.
%    \begin{macrocode}
\RequirePackage{kvoptions}
\DeclareStringOption[ctr]{extension}
\ProcessLocalKeyvalOptions*
%    \end{macrocode}
% \end{macro}
% Here it is checked if the file already exists and if that is the case the
% number of compile events will be stored in the \LaTeX{} counter
% \enquote{counttexruns}.
%    \begin{macrocode}
\IfFileExists{\jobname.\counttexruns@extension}{
  \immediate\openin\@counttexrunsfile=\jobname.\counttexruns@extension
  \immediate\read\@counttexrunsfile to \@counttexruns
  \immediate\read\@counttexrunsfile to \@counttexruns
  \immediate\closein\@counttexrunsfile
  \setcounter{counttexruns}{\@counttexruns}
}{}
%    \end{macrocode}
% Here the counter \enquote{counttexruns} is increment by one.
%    \begin{macrocode}
\stepcounter{counttexruns}
%    \end{macrocode}
% At this point the new count is written back to the file.
%    \begin{macrocode}
\immediate\openout\@counttexrunsfile=\jobname.\counttexruns@extension
\catcode`\%=11\relax
\immediate\write\@counttexrunsfile{%% This file
  '\jobname.\counttexruns@extension' was generated by the package counttexruns}
\catcode`\%=14\relax
\immediate\write\@counttexrunsfile{\arabic{counttexruns}}
\immediate\closeout\@counttexrunsfile
%    \end{macrocode}
% Well, thats is~\dots
%    \begin{macrocode}
\endinput
%    \end{macrocode}
%
% \iffalse
%</package>
% \fi
%
% \Finale
\endinput
