<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% \CheckSum{0}
% \iffalse meta comment
% File: statistik.dtx 
% Copyright (C) 2003 Michael Niedermair
%
%   This program is free software; you can redistribute it and/or modify
%   it under the terms of the GNU General Public License as published by
%   the Free Software Foundation; either version 2 of the License, or
%   (at your option) any later version.
%
%   This program is distributed in the hope that it will be useful,
%   but WITHOUT ANY WARRANTY; without even the implied warranty of
%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%   GNU General Public License for more details.
%
%   You should have received a copy of the GNU General Public License
%   along with this program; if not, write to the Free Software
%   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
%
% \fi
%
% \iffalse
%&lt;*driver&gt;
\documentclass[a4paper]{ltxdoc}
   \usepackage[latin1]{inputenc}
   \usepackage[T1]{fontenc}
   \usepackage{ngerman}
   \usepackage{mathpazo}
   \usepackage[scaled=0.95]{helvet}
   \usepackage{courier}
   \usepackage{expdlist,booktabs}
   \newcommand{\bs}{$\backslash$}
   \GetFileInfo{statistik.dtx} 
   \title{Statistiken �ber Kapitel erstellen}
   \author{Michael Niedermair\thanks{Michael Niedermair  m.g.n@gmx.de}}
   \date{2003--04--05}
   \begin{document}
     \maketitle
     \DocInput{statistik.dtx}
   \end{document}
%&lt;/driver&gt;
% \fi
%
% \begin{abstract}
%   \noindent Mit dem Paket \emph{statistik} werden die Seiten pro Kapitel gez�hlt und 
%   auf verschiedene Weise in einer extra Datei ausgegeben.
% \end{abstract}
%
% \section{Paket einbinden}
%
% Das Paket wird �ber 
% \begin{verbatim}
%   \usepackage[&lt;optionen&gt;]{statistik}
% \end{verbatim}
% eingebunden.
%
%
%
%
%
% \section{Optionen}
%
% Dabei stehen folgende Optionen zur Verf�gung:
%
% \begin{description}[\compact\setlabelphantom{xmlencoding}]
% \item [textable] 
%       Hierbei wird eine eigenst�ndige \LaTeX--Datei erzeugt, die in einer 
%       Tabelle die entsprechenden Kapitel und deren Seitenzahlen enth�lt.
%
%       \begin{tabular}{@{}clc@{}}
%         Nummer &amp; Titel      &amp; Seiten \\ \midrule
%         1      &amp; �sterreich &amp; 4 \\
%         2      &amp; B          &amp; 2 \\
%         3      &amp; Kapitel C  &amp; 4 \\
%         4      &amp; Kapitel D  &amp; 1 \\
%       \end{tabular}\\
%
% \item [table]
%       Wie \emph{textable}, jedoch wird nur die reine Tabelle in die Datei geschrieben,
%       so dass diese �ber \verb|\input{&lt;datei&gt;}| eingebunden werden kann.
%
% \item [csv]
%       Die Daten werden in eine CSV-Datei (\textbf{C}omma \textbf{S}eparated \textbf{V}alue)
%       geschrieben, so dass diese mit einem Tabellenkalkulationsprogramm weiter
%       verarbeitet werden k�nnen.
%
%\begin{verbatim}
%1;�sterreich;4
%2;B;2
%3;Kapitel C;4
%4;Kapitel D;1
%\end{verbatim}
%
% \item [xml]
%        Die Daten werden in eine XML-Datei geschrieben. Dabei werden aber keine
%        Entit�ten, Sonderzeichen,  etc.\ ber�cksichtigt.
%
%\begin{verbatim}
%&lt;?xml version= "1.0" encoding="ISO-8859-1" ?&gt;
%&lt;dokument&gt;
% &lt;kapitel&gt;
%  &lt;nr&gt;1&lt;/nr&gt;&lt;titel&gt;�sterreich&lt;/titel&gt;&lt;seiten&gt;4&lt;/seiten&gt;
% &lt;/kapitel&gt;
% &lt;kapitel&gt;
%  &lt;nr&gt;2&lt;/nr&gt;&lt;titel&gt;B&lt;/titel&gt;&lt;seiten&gt;2&lt;/seiten&gt;
% &lt;/kapitel&gt;
% &lt;kapitel&gt;
%  &lt;nr&gt;3&lt;/nr&gt;&lt;titel&gt;Kapitel C&lt;/titel&gt;&lt;seiten&gt;4&lt;/seiten&gt;
% &lt;/kapitel&gt;
% &lt;kapitel&gt;
%  &lt;nr&gt;4&lt;/nr&gt;&lt;titel&gt;Kapitel D&lt;/titel&gt;&lt;seiten&gt;1&lt;/seiten&gt;
% &lt;/kapitel&gt;&lt;/dokument&gt;
%\end{verbatim}
%
% \item [encoding]
%       Legt das Encoding f�r die \LaTeX--Datei fest. Als Standard wird hier
%       \verb|latin1| verwendet.
%
% \item [xmlencoding]
%       Legt das Encoding f�r die XML--Datei fest. Als Standard wird hier
%       \verb|ISO-8859-1| verwendet.
%
% \end{description}
%
% \section{Beispiele}
%
% Folgende Beispieldateien sind vorhanden:
% \begin{description}[\compact\setlabelphantom{sta\_mytable.tex }]
% \item [sta\_textable.tex] Beispiel f�r die Option \verb|textable|.
% \item [sta\_tab.tex]      Beispiel f�r die Option \verb|table|.
% \item [sta\_csv.tex]      Beispiel f�r die Option \verb|csv|.
% \item [sta\_xml.tex]      Beispiel f�r die Option \verb|xml|.
% \item [sta\_mytable.tex]  Beispiel, welches den Output entsprechend anpasst.
% \end{description}
%
%
%
%
%
% \section{Anpassung der Ausgabe}
%
% Mit nachfolgenden Befehlen wird gesteuert, wie die Ausgabe erzeugt wird.
%
% \begin{description}[\compact\setlabelphantom{\bs stafilename}]
% \item [\bs stafilename]
%       Legt den Dateinamen f�r die erzeugte Ausgabedatei fest. Der Standard 
%       ist hier der aktuelle Jobname mit den Anhang '-info.tex':
%\begin{verbatim}
%\renewcommand{\stafilename}{\jobname-info.tex}
%\end{verbatim}
%
% \item [\bs staheader]
%       Legt fest, was als Header am Anfang in die Datei geschrieben wird.
%\begin{verbatim}
%\renewcommand{\staheader}{%
% \string\documentclass{article}^^J%
% \string\usepackage[\staenconding]\string{inputenc\string}^^J%
% \string\usepackage[ngerman]{babel}^^J%
% \string\begin{document}^^J%
% \string\begin{tabular}{|c|l|c|}\string\hline^^J%
% Nummer &amp; Titel &amp; Seiten \string\\\string\hline\string\hline%
%}
%\end{verbatim}
%
% \item [\bs statabline]
%       Legt fest, was nach jeder Tabellenzeile in die Datei geschrieben werden
%       soll, zum Beispiel \verb|\hline| etc.
%\begin{verbatim}
%\renewcommand{\statabline}{}
%\end{verbatim}
%
% \item [\bs stafoot]
%       Legt fest, was am Ende (nach der Tabelle) in die Datei geschrieben werden 
%       soll.
%\begin{verbatim}
%\renewcommand{\stafoot}{%
%  \string\hline^^J%
%  \string\end{tabular}^^J%
%  \string\end{document}^^J%
%}
%\end{verbatim}
%
% \item [\bs stabody]
%       Legt fest, was in jede Tabellezeile geschrieben werden soll. Der Befehl
%       erh�lt drei Parameter (Kapitelnummer, Kapiteltitel und Seitenzahl).
%\begin{verbatim}
%\renewcommand{\stabody}[3]{%
%  #1 &amp; #2 &amp; #3 \string\\\statabline%
%}
%\end{verbatim}
%
% \end{description}
%
% \section{Der Code}
%
%    \begin{macrocode}
%&lt;*package&gt;
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{statistik}
  [2003/04/05 v0.03 Statistiken �ber Kapitel erstellen (mgn)]
%    \end{macrocode}
% \subsection*{ben�tigte Pakete}
% Das Paket \emph{keyval} wird f�r die Parameter�bergabe ben�tigt.
%    \begin{macrocode}
\RequirePackage{keyval}
%    \end{macrocode}
% \subsection*{Befehle f�r die einzelnen Ausgaben} 
% Legt den Dateinamen f�r die Ausgabedatei fest.
%    \begin{macrocode}
\newcommand{\stafilename}{\jobname-info.tex}
%    \end{macrocode}
% Legt das Encoding f�r die \LaTeX--Datei fest.
%    \begin{macrocode}
\newcommand{\staenconding}{latin1}
%    \end{macrocode}
% Legt das Encoding f�r die XML--Datei fest.
%    \begin{macrocode}
\newcommand{\staxmlencoding}{ISO-8859-1}
%    \end{macrocode}
% Befehl, der den Datei--Header erzeugt.
%    \begin{macrocode}
\newcommand{\staheader}{}
%    \end{macrocode}
% Befehl, der den Datei--Foot erzeugt.
%    \begin{macrocode}
\newcommand{\stafoot}{}
%    \end{macrocode}
% Befehl, der die Zeilen f�r jedes Kapitel erzeugt.
%    \begin{macrocode}
\newcommand{\stabody}[3]{%
#1 #2 #3 ^^J%
}
%    \end{macrocode}
% Befehl, der das Zeilenende (nach \verb|\stabody|) erzeugt.
%    \begin{macrocode}
\newcommand{\statabline}{}
%    \end{macrocode}
% Befehl, der Befehle bei \verb|AtBeginDocument| hinzuf�gt.
%    \begin{macrocode}
\newcommand{\stabegincommand}{}
%    \end{macrocode}
% \subsection*{Optionen}
% \subsubsection*{encoding}
%    \begin{macrocode}
\define@key{Sta}{encoding}[latin1]{\renewcommand{\staenconding}{#1}}
%    \end{macrocode}
% \subsubsection*{xmlencoding}
%    \begin{macrocode}
\define@key{Sta}{xmlencoding}[ISO-8859-1]{%
  \renewcommand{\staxmlenconding}{#1}}
%    \end{macrocode}
% \subsubsection*{textable}
%    \begin{macrocode}
\define@key{Sta}{textable}[true]{%
  \renewcommand{\stafilename}{\jobname-info.tex}
  \renewcommand{\staheader}{%
    \string\documentclass{article}^^J%
    \string\usepackage[\staenconding]\string{inputenc\string}^^J%
    \string\usepackage[ngerman]{babel}^^J%
    \string\begin{document}^^J%
    \string\begin{tabular}{|c|l|c|}\string\hline^^J%
    Nummer &amp; Titel &amp; Seiten \string\\\string\hline\string\hline%
  }
  \renewcommand{\statabline}{}
  \renewcommand{\stafoot}{%
    \string\hline^^J%
    \string\end{tabular}^^J%
    \string\end{document}^^J%
  }
  \renewcommand{\stabody}[3]{%
    ##1 &amp; ##2\space &amp; ##3 \string\\\statabline%
  }
  \renewcommand{\stabegincommand}{%
    \AtBeginDocument{%
      \WrtStatistik{\staheader}%
      \AtEndDocument{%
        \clearpage\ShowPagesOfThisChapter{}%
        \WrtStatistik{\stafoot}%
      }%
    }
  }
}
%    \end{macrocode}
% \subsubsection*{table}
%    \begin{macrocode}
\define@key{Sta}{table}[true]{%
  \renewcommand{\stafilename}{\jobname-info.tex}
  \renewcommand{\staheader}{%
    \string\begin{tabular}{|c|l|c|}\string\hline^^J%
    Nummer &amp; Titel &amp; Seiten \string\\\string\hline\string\hline%
  }
  \renewcommand{\statabline}{}
  \renewcommand{\stafoot}{%
    \string\hline^^J%
    \string\end{tabular}^^J%
  }
  \renewcommand{\stabody}[3]{%
    ##1 &amp; ##2\space &amp; ##3 \string\\\statabline%
  }
  \renewcommand{\stabegincommand}{%
    \AtBeginDocument{%
      \WrtStatistik{\staheader}%
      \AtEndDocument{%
        \clearpage\ShowPagesOfThisChapter{}%
        \WrtStatistik{\stafoot}%
      }%
    }
  }
}
%    \end{macrocode}
% \subsubsection*{csv}
%    \begin{macrocode}
\define@key{Sta}{csv}[true]{%
  \renewcommand{\stafilename}{\jobname-info.csv}
  \renewcommand{\staheader}{}
  \renewcommand{\stafoot}{}
  \renewcommand{\stabody}[3]{##1;##2;##3}
  \renewcommand{\statabline}{}
  \renewcommand{\stabegincommand}{%
    \AtEndDocument{\clearpage\ShowPagesOfThisChapter{}}
  }
}
%    \end{macrocode}
% \subsubsection*{xml}
%    \begin{macrocode}
\define@key{Sta}{xml}[true]{%
  \renewcommand{\stafilename}{\jobname-info.xml}
  \renewcommand{\staheader}{%
    &lt;?xml version= "1.0" encoding="\staxmlencoding" ?&gt;^^J&lt;dokument&gt;}
  \renewcommand{\stafoot}{&lt;/dokument&gt;}
  \renewcommand{\stabody}[3]{%
    &lt;kapitel&gt;&lt;nr&gt;##1&lt;/nr&gt;&lt;titel&gt;##2&lt;/titel&gt;&lt;seiten&gt;##3&lt;/seiten&gt;&lt;/kapitel&gt;}
  \renewcommand{\statabline}{}
  \renewcommand{\stabegincommand}{%
    \AtBeginDocument{%
      \WrtStatistik{\staheader}%
      \AtEndDocument{\clearpage\ShowPagesOfThisChapter{}%
        \WrtStatistik{\stafoot}%
      }%
    }%
  }
}
%    \end{macrocode}
% \subsubsection*{Verarbeitung der Aufrufparameter}
%    \begin{macrocode}
\def\ProcessOptionsWithKV#1{%
  \let\@tempc\relax
  \let\Sta@tempa\@empty
  \@for\CurrentOption:=\@classoptionslist\do{%
    \@ifundefined{KV@#1@\CurrentOption}%
    {}%
    {\edef\Sta@tempa{\Sta@tempa,\CurrentOption,}}%
  }%
  \edef\Sta@tempa{%
    \noexpand\setkeys{#1}{%
      \Sta@tempa\@ptionlist{\@currname.\@currext}%
    }%
  }%
  \Sta@tempa
}
%
\ProcessOptionsWithKV{Sta}
\AtEndOfPackage{%
  \let\@unprocessedoptions\relax
}
%    \end{macrocode}
% \subsection*{Der Hauptteil}
%    \begin{macrocode}
\newwrite\Statistik
\immediate
\openout\Statistik=\stafilename
\stabegincommand
\newcommand*{\WrtStatistik}{\immediate\write\Statistik}
\newcounter{lastchapterfirstpage}\setcounter{lastchapterfirstpage}{-1}
\newcounter{lastchapterpages}
\newcommand*{\Orig@Chapter}{}
\let\Orig@Chapter=\chapter
\newcommand*\TitleOfLastChapter{}
\newcommand*\XTitleOfLastChapter{}
\newcommand*{\ShowPagesOfThisChapter}[2][\thechapter]{%
  \ifnum \value{lastchapterfirstpage}&gt;-1
  \setcounter{lastchapterpages}{\value{page}}%
  \addtocounter{lastchapterpages}{-\value{lastchapterfirstpage}}%
  \WrtStatistik{\stabody{#1}{\XTitleOfLastChapter}{\thelastchapterpages}}%
  \fi
  \renewcommand*{\TitleOfLastChapter}{#2}%
  \expandafter\edef\expandafter\XTitleOfLastChapter\expandafter{%
    \expandafter\strip@prefix\meaning\TitleOfLastChapter}%
}
%    \end{macrocode}
%    Dies ist der meaning-Trick (von Markus Kohm; Danke Dir), damit das auch mit Umlauten noch klappt.
%    ``Anf�nger m�gen beachten, dass man \verb|\expandafter| geschickt einstreuen kann
%    und keineswegs Dutzende \verb|\expandafter| hintereinander schreiben muss (was
%    ich oft gesehen habe, aber nur extrem selten n�tig war).''
%    \begin{macrocode}
\newcommand*{\St@schapter}[1]{%
  \ShowPagesOfThisChapter{#1}%
  \setcounter{lastchapterfirstpage}{\value{page}}%
  \Orig@Chapter*{#1}}
\newcommand*{\St@chapter}[2][]{%
  \ShowPagesOfThisChapter{#1}% oder #2 f�r den langen Titel
  \setcounter{lastchapterfirstpage}{\value{page}}%
  \Orig@Chapter[{#1}]{#2}}
\renewcommand*{\chapter}{%
  \if@twoside\cleardoublepage\else\clearpage\fi
  \secdef\St@chapter\St@schapter
}
%    \end{macrocode}
%    \begin{macrocode}
%&lt;/package&gt;
%    \end{macrocode}
%
% \Finale
%
% \iffalse
%&lt;*stacvs&gt;
\documentclass{book}

\usepackage[latin1]{inputenc}

\usepackage[csv]{statistik}

\begin{document}
\chapter{�sterreich}
\clearpage
\null\clearpage
\null\clearpage
\chapter{B}
\clearpage
\null\clearpage
\chapter{Kapitel C}
\clearpage
\null\clearpage
\null\clearpage
\null\clearpage
\chapter{Kapitel D}
\end{document}
%&lt;/stacvs&gt;
%
%&lt;*staxml&gt;
\documentclass{book}

\usepackage[latin1]{inputenc}

\usepackage[xml]{statistik}

\begin{document}
\chapter{�sterreich}
\clearpage
\null\clearpage
\null\clearpage
\chapter{B}
\clearpage
\null\clearpage
\chapter{Kapitel C}
\clearpage
\null\clearpage
\null\clearpage
\null\clearpage
\chapter{Kapitel D}
\end{document}
%&lt;/staxml&gt;
%
%&lt;*statextable&gt;
\documentclass{book}

\usepackage[latin1]{inputenc}

\usepackage[textable]{statistik}

\begin{document}
\chapter{�sterreich}
\clearpage
\null\clearpage
\null\clearpage
\chapter{B}
\clearpage
\null\clearpage
\chapter{Kapitel C}
\clearpage
\null\clearpage
\null\clearpage
\null\clearpage
\chapter{Kapitel D}
\end{document}
%&lt;/statextable&gt;
%
%&lt;*statab&gt;
\documentclass{book}

\usepackage[latin1]{inputenc}

\usepackage[table]{statistik}

\begin{document}
\chapter{�sterreich}
\clearpage
\null\clearpage
\null\clearpage
\chapter{B}
\clearpage
\null\clearpage
\chapter{Kapitel C}
\clearpage
\null\clearpage
\null\clearpage
\null\clearpage
\chapter{Kapitel D}
\end{document}
%&lt;/statab&gt;
%
%&lt;*stamytable&gt;
\documentclass{book}

\usepackage[latin1]{inputenc}

\usepackage[textable]{statistik}

\renewcommand{\staheader}{%
  \string\documentclass{article}^^J%
  \string\usepackage[\staenconding]\string{inputenc\string}^^J%
  \string\usepackage[ngerman]{babel}^^J%
  \string\usepackage{booktabs}^^J%
  \string\begin{document}^^J%
  \string\begin{tabular}{@{}clc@{}}\string\toprule^^J%
  Kapitel--Nummer &amp; Kapitel--Text &amp; Seitenanzahl \string\\\string\midrule%
}
\renewcommand{\stafoot}{%
  \string\bottomrule^^J%
  \string\end{tabular}^^J%
  \string\end{document}^^J%
}

\begin{document}
\chapter{�sterreich}
\clearpage
\null\clearpage
\null\clearpage
\chapter{B}
\clearpage
\null\clearpage
\chapter{Kapitel C}
\clearpage
\null\clearpage
\null\clearpage
\null\clearpage
\chapter{Kapitel D}
\end{document}
%&lt;/stamytable&gt;
% \fi
%
\endinput
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:


</pre></body></html>