%%
%% This is file `changes.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% changes.dtx  (with options: `changes')
%% 
%% changes.dtx
%% Copyright 2007 Ekkart Kleinod (ekkart@ekkart.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 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 Ekkart Kleinod.
%% 
%% This work consists of the files
%%  changes.drv
%%  changes.dtx
%%  changes.ins
%%  README
%% and the derived files
%%  changes.sty
%%  changes.pdf
%%  changes.example1.tex
%%  changes.example2.tex
%%  changes.example3.tex
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{changes}
[2007/08/27 v0.5.1 changes-Paket]
\typeout{*** changes-Paket 2007/08/27 v0.5.1 ***}
\RequirePackage{xkeyval}
\RequirePackage{ifthen}
\newboolean{Changes@optiondraft}
\setboolean{Changes@optiondraft}{true}
\DeclareOptionX{draft}{
 \typeout{Changes-Option 'draft'}
}
\DeclareOptionX{final}{
 \setboolean{Changes@optiondraft}{false}
 \typeout{Changes-Option 'final'}
}
\ProcessOptionsX
\RequirePackage{xcolor}
\RequirePackage{pdfcolmk}
\RequirePackage{ulem}
\ifthenelse{\isundefined{\addto}}
 {
  \def\listchangesname{\"Anderungen}
  \def\changesaddname{Eingef\"ugt}
  \def\changesdeletename{Gel\"oscht}
  \def\changesreplacename{Ersetzt}
  \def\changesauthorname{Autor}
  \def\changesanonymousname{Anonym}
  \def\changesnoloc{\"Anderungsliste erst nach dem n\"achsten Durchlauf verf\"ugbar.}
 }{
  \addto\captionsngerman{\def\listchangesname{\"Anderungen}}
  \addto\captionsgerman{\def\listchangesname{\"Anderungen}}
  \addto\captionsenglish{\def\listchangesname{Changes}}

  \addto\captionsngerman{\def\changesaddname{Eingef\"ugt}}
  \addto\captionsgerman{\def\changesaddname{Eingef\"ugt}}
  \addto\captionsenglish{\def\changesaddname{Added}}

  \addto\captionsngerman{\def\changesdeletename{Gel\"oscht}}
  \addto\captionsgerman{\def\changesdeletename{Gel\"oscht}}
  \addto\captionsenglish{\def\changesdeletename{Deleted}}

  \addto\captionsngerman{\def\changesreplacename{Ersetzt}}
  \addto\captionsgerman{\def\changesreplacename{Ersetzt}}
  \addto\captionsenglish{\def\changesreplacename{Replaced}}

  \addto\captionsngerman{\def\changesauthorname{Autor}}
  \addto\captionsgerman{\def\changesauthorname{Autor}}
  \addto\captionsenglish{\def\changesauthorname{Author}}

  \addto\captionsngerman{\def\changesanonymousname{Anonym}}
  \addto\captionsgerman{\def\changesanonymousname{Anonym}}
  \addto\captionsenglish{\def\changesanonymousname{anonymous}}

  \addto\captionsngerman{\def\changesnoloc{\"Anderungsliste erst nach dem n\"achsten \LaTeX-Lauf verf\"ugbar.}}
  \addto\captionsgerman{\def\changesnoloc{\"Anderungsliste erst nach dem n\"achsten Durchlauf verf\"ugbar.}}
  \addto\captionsenglish{\def\changesnoloc{List of changes is available after the next \LaTeX\ run.}}
 }
\newcommand{\Changes@extension}{loc}
\newcommand{\setlocextension}[1]{
 \renewcommand{\Changes@extension}{#1}
}
\newcounter{Changes@AuthorCount}
\setcounter{Changes@AuthorCount}{0}
\newcounter{Changes@iAuthor}
\newcommand{\definechangesauthor}[3][\@empty]{
 \stepcounter{Changes@AuthorCount}
 \@namedef{Changes@Author\theChanges@AuthorCount}{#2}
 \@namedef{Changes@AuthorName#2}{#1}
 \@namedef{Changes@AuthorColor#2}{#3}
 \newcounter{Changes@AddCount#2}
 \newcounter{Changes@DeleteCount#2}
 \newcounter{Changes@ReplaceCount#2}
 \colorlet{Changes@Color#2}{#3}
}
\definechangesauthor{\@empty}{blue}
\newboolean{Changes@AuthorPositionLeft}
\setboolean{Changes@AuthorPositionLeft}{false}
\newcommand{\Changes@AuthorMark}[1]{%
 \textsuperscript{#1}%
}
\newcommand{\setauthormarkup}[2][left]{%
 \ifthenelse{\equal{#1}{left}}
  {\setboolean{Changes@AuthorPositionLeft}{true}}
  {\setboolean{Changes@AuthorPositionLeft}{false}}
 \renewcommand{\Changes@AuthorMark}[1]{#2}
}
\newcommand{\Changes@Remark}[2]{%
 \footnote{\textcolor{Changes@Color#1}{#2}}%
}
\newcommand{\setremarkmarkup}[1]{%
 \renewcommand{\Changes@Remark}[2]{#1}%
}
\newcommand{\Changes@temp}{\@empty}
\newcommand{\added}[1][\@empty]{%
 \renewcommand{\Changes@temp}{#1}%
 \Changes@added%
}
\newcommand{\Changes@added}[2][\@empty]{%
 \ifthenelse{\boolean{Changes@optiondraft}}%
  {%
   \textcolor{Changes@Color\Changes@temp}{%
    \ifthenelse{\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    #2%
    \ifthenelse{\not\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    \ifthenelse{\equal{\@empty}{#1}}%
     {}{\Changes@Remark{\Changes@temp}{#1}}%
   }%
   \stepcounter{Changes@AddCount\Changes@temp}%
  }{#2}%
}
\newcommand{\deleted}[1][\@empty]{%
 \renewcommand{\Changes@temp}{#1}%
 \Changes@deleted%
}
\newcommand{\Changes@deleted}[2][\@empty]{%
 \ifthenelse{\boolean{Changes@optiondraft}}%
  {%
   \textcolor{Changes@Color\Changes@temp}{%
    \ifthenelse{\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    \sout{#2}%
    \ifthenelse{\not\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    \ifthenelse{\equal{\@empty}{#1}}%
     {}{\Changes@Remark{\Changes@temp}{#1}}%
   }%
   \stepcounter{Changes@DeleteCount\Changes@temp}%
  }{\@bsphack \expandafter \@esphack}%
}
\newcommand{\replaced}[1][\@empty]{%
 \renewcommand{\Changes@temp}{#1}%
 \Changes@replaced%
}
\newcommand{\Changes@replaced}[3][\@empty]{%
 \ifthenelse{\boolean{Changes@optiondraft}}%
  {%
   \textcolor{Changes@Color\Changes@temp}{%
    \ifthenelse{\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    #2%
    \sout{#3}%
    \ifthenelse{\not\boolean{Changes@AuthorPositionLeft}}%
     {\ifthenelse{\equal{\@empty}{\Changes@temp}}%
      {}{\Changes@AuthorMark{\Changes@temp}}%
     }{}%
    \ifthenelse{\equal{\@empty}{#1}}%
     {}{\Changes@Remark{\Changes@temp}{#1}}%
   }%
   \stepcounter{Changes@ReplaceCount\Changes@temp}%
  }{#2}%
}
\def\changes@chopline#1;#2;#3;#4;#5;#6 \\{
 \def\Changes@InID{#1}
 \def\Changes@InColor{#2}
 \def\Changes@InName{#3}
 \def\Changes@InAdded{#4}
 \def\Changes@InDeleted{#5}
 \def\Changes@InReplaced{#6}
}
\newcommand{\listofchanges}{%
 \ifthenelse{\boolean{Changes@optiondraft}}
  {
   \section*{\listchangesname}
   \IfFileExists{\jobname.\Changes@extension}
    {
     \newboolean{Changes@MoreLines}
     \setboolean{Changes@MoreLines}{true}
     \newread\Changes@InFile
     \openin\Changes@InFile = \jobname.\Changes@extension
      \whiledo{\boolean{Changes@MoreLines}}{
      \read\Changes@InFile to \Changes@Line
       \ifeof\Changes@InFile
        \setboolean{Changes@MoreLines}{false}
       \else
        \expandafter\changes@chopline\Changes@Line\\
        \begin{tabbing}
         mm\=mmmmmm\=\kill
         \ifthenelse{\equal{\Changes@InID}{}}
          {\textcolor{\Changes@InColor}{\changesauthorname: \changesanonymousname}\\}
          {\textcolor{\Changes@InColor}{\changesauthorname: \Changes@InID}
           \ifthenelse{\equal{\Changes@InName}{}}{}
           { \textcolor{\Changes@InColor}{(\Changes@InName)}}
           \\
          }
         \>\changesaddname:\>\Changes@InAdded\\
         \>\changesdeletename:\>\Changes@InDeleted\\
         \>\changesreplacename:\>\Changes@InReplaced\\
        \end{tabbing}
       \fi
      }
     \closein\Changes@InFile
    }{
     \emph{\changesnoloc}
    }
  }{}
}
\AtEndDocument{
 \newwrite\Changes@OutFile
 \immediate\openout\Changes@OutFile = \jobname.\Changes@extension
 \setcounter{Changes@iAuthor}{0}
 \whiledo{\value{Changes@iAuthor} < \value{Changes@AuthorCount}}{
  \stepcounter{Changes@iAuthor}
  \def\Changes@ID{\@nameuse{Changes@Author\theChanges@iAuthor}}
  \immediate\write\Changes@OutFile{\Changes@ID;%
   \@nameuse{Changes@AuthorColor\Changes@ID};%
   \@nameuse{Changes@AuthorName\Changes@ID};%
   \the\value{Changes@AddCount\Changes@ID};%
   \the\value{Changes@DeleteCount\Changes@ID};%
   \the\value{Changes@ReplaceCount\Changes@ID}}
 }
 \closeout\Changes@OutFile
}
%% Copyright 2007 Ekkart Kleinod
%%
%% End of file `changes.sty'.
