% \iffalse meta-comment
%
% Copyright (C) 2009 Scott Pakin <scott+fc@pakin.org>
% -------------------------------------------------------
%
% This package may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% 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.3c or later is part of all distributions of LaTeX
% version 2008/05/04 or later.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{filecontents-DE.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{filecontents}
%<*package>
    [2009/03/17 v1.2 Create an external file from within a LaTeX document]
%</package>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage[ngerman]{babel}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
\DocInput{filecontents-DE.dtx}
\end{document}
%</driver>
% \fi
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \CheckSum{173}
%
% \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         \~}
%
% \GetFileInfo{filecontents-DE.dtx}
%
% \title{Das \textsf{filecontents} Paket\thanks{Dateiversion
%         \fileversion, "uberarbeitet
%         \filedate.}}
% \author{Scott Pakin\\scott+fc@pakin.org\\\\
%		{\small "Ubersetzung ins Deutsche:} \\ {\small Ronny Berndt} \\
{\small ronny.berndt@uni-jena.de}}
% \maketitle
%
% \changes{v1.0}{2001/07/31}{Initial version}
% \changes{v1.1a}{2006/03/11}{%
%   Clarified/corrected the \texttt{\string\string\string\documentclass}
%   restriction as per Robin Fairbairns's suggestion}
%
% ^^A The following were copied verbatim from source2e.tex.
% \DoNotIndex{\def,\long,\edef,\xdef,\gdef,\let,\global}
% \DoNotIndex{\if,\ifnum,\ifdim,\ifcat,\ifmmode,\ifvmode,\ifhmode,%
%             \iftrue,\iffalse,\ifvoid,\ifx,\ifeof,\ifcase,\else,\or,\fi}
% \DoNotIndex{\box,\copy,\setbox,\unvbox,\unhbox,\hbox,%
%             \vbox,\vtop,\vcenter}
% \DoNotIndex{\@empty,\immediate,\write}
% \DoNotIndex{\egroup,\bgroup,\expandafter,\begingroup,\endgroup}
% \DoNotIndex{\divide,\advance,\multiply,\count,\dimen}
% \DoNotIndex{\relax,\space,\string}
% \DoNotIndex{\csname,\endcsname,\@spaces,\openin,\openout,%
%             \closein,\closeout}
% \DoNotIndex{\catcode,\endinput}
% \DoNotIndex{\jobname,\message,\read,\the,\m@ne,\noexpand}
% \DoNotIndex{\hsize,\vsize,\hskip,\vskip,\kern,\hfil,\hfill,\hss}
% \DoNotIndex{\m@ne,\z@,\z@skip,\@ne,\tw@,\p@}
% \DoNotIndex{\dp,\wd,\ht,\vss,\unskip}
%
% ^^A  The following are specific to filecontents.dtx.
% \DoNotIndex{\@currenvir,\@gobble,\@gobblefour,\@ifundefined,\@makeother}
% \DoNotIndex{\@undefined,\active,\chardef,\day,\do,\dospecials,\E,\end,\I}
% \DoNotIndex{\if@tempswa,\L,\LaTeX,\loop,\MessageBreak,\month}
% \DoNotIndex{\newenvironment,\number,\repeat,\reserved@b,\reserved@c}
% \DoNotIndex{\two@digits,\year,\*,\}
%
% ^^A  Define some commands to help delineate my changes.
% \newcommand{\startfcchanges}{
%   \centerline{
%     \makebox[0pt]{
%       \raisebox{-2\baselineskip}[0pt][0pt]{
%       \makebox[0pt][l]{\rule{1pt}{2\baselineskip}}}
%       \rule{1em}{1pt}
%       \rule{\linewidth}{1pt}
%       \rule{1em}{1pt}
%       \raisebox{-2\baselineskip}[0pt][0pt]{
%       \makebox[0pt][r]{\rule{1pt}{2\baselineskip}}}
%     }
%   }
%  \noindent
% }
% \newcommand{\stopfcchanges}{
%   \centerline{
%     \makebox[0pt]{
%       \raisebox{0pt}[0pt][0pt]{
%       \makebox[0pt][l]{\rule{1pt}{2\baselineskip}}}
%       \rule{1em}{1pt}
%       \rule{\linewidth}{1pt}
%       \rule{1em}{1pt}
%       \raisebox{0pt}[0pt][0pt]{
%       \makebox[0pt][r]{\rule{1pt}{2\baselineskip}}}
%     }
%   }
% }
%
%
% \section{Einleitung}
%
% \DescribeEnv{filecontents}
% Es existiert eine weniger bekannte Umgebung namens |filecontents|, welche in
% \LaTeXe{} integriert ist. Eine Beschreibung von |filecontents|, welche aus |ltclass.dtx|
% stammt, lautet folgenderma"sen:   
%
% \begin{quotation}
%   Die |filecontents| Umgebung ist f"ur die Weitergabe von Inhalten aus Paketen,
%   Optionen oder anderen Dateien bestimmt. Hierdurch werden die Inhalte aus mehreren
%   Dateien in eine Einzelne eingef"ugt. Der Befehl ben"otigt ein Argument (den Dateinamen),
%   wodurch eine
%   neue Datei erzeugt wird. Wenn diese schon existiert (im aktuellen
%   Verzeichnis, falls das Betriebssystem eine Notation f"ur das `aktuelles Verzeichnis' oder
%   `Standard Verzeichnis' bereit stellt) passiert nichts (au"ser dass eine Information 
%   ausgegeben wird) und der
%   Inhalt des Bereiches der Umgebung wird "ubersprungen. Andernfalls wird der Inhalt
%   w"ortlich in die Datei geschrieben, dessen Namen man als erstes Argument
%   angegeben hat. Zus"atzlich werden noch Kommentare in diese Datei geschrieben
%   um den Benutzer zu zeigen, wie diese erzeugt wurde.
%
%   Die Umgebung ist nur vor |\documentclass| erlaubt, um sicherzustellen, dass 
%   alle Pakete oder Optionen, welche f"ur diesen speziellen Durchlauf gebraucht werden,
%   vorhanden sind. Die \texttt{begin}- bzw. \texttt{end}-Marke sollten jeweils f"ur sich 
%   auf einer einzelnen Zeile
%   stehen. Es besteht die M"oglichkeit die Sternform des Befehls zu verwenden,
%   welche keinerlei Kommentare in die Datei mit einf"ugt.
% \end{quotation}
%
% \noindent
% (Der Hinweis, dass |filecontents| nur vor |\documentclass| verwendet werden kann, ist
% schlichtweg falsch. |filecontents| kann "uberall in der Pr"aambel verwendet werden.)
%
% \bigskip
%
% Das \textsf{filecontents}-Paket bietet eine verbesserte Version der 
% |filecontents|- und |filecontents*|-Umgebung, welche die zwei oben genannten
% Einschr"ankungen ("Uberschreiben von vorhandene Dateien und das |filecontents|
% vor der Deklaration von |\documentclass| verwendet werden muss) aufhebt.
% (In Wirklichkeit ist es n"amlich |\begin{document}|).
% \textsf{filecontents} bietet damit einen bequemeren Weg, um externe Dateien in
% ein \LaTeX\ Dokument zu schreiben, als es der \LaTeXe-Kernel bietet.
%
%
% \paragraph{Verwendung}


% |filecontents| funktioniert "ahnlich wie |verbatim|, au"ser dass es zwingend einen Dateinamen
% als Argument fordert:
%
% \begin{verbatim}
%     \begin{filecontents}{myfile.tex}
%     This text gets written to \texttt{myfile.tex}.
%     \end{filecontents}
% \end{verbatim}
%
% \noindent
% Der vorangegangene Quelltext wird eine Datei names |myfile.tex| erzeugen
% und mit folgendem "ahnlichen Inhalt f"ullen:
%
% \begin{verbatim}
%     %% LaTeX2e file `myfile.tex'
%     %% generated by the `filecontents' environment
%     %% from source `mydocument' on 2001/07/31.
%     %%
%     This text gets written to \texttt{myfile.tex}.
% \end{verbatim}
%
% \noindent
% |myfile.tex| kann daraufhin durch |\include| oder |\input| zur"uck in das 
% Dokument eingef"ugt werden. Hat man stattdesssen |filecontents*| benutzt,
% wird in die Datei nur die Zeile ``\texttt{This text gets written to} \verb"\texttt{myfile.tex}."'' geschrieben.
% |filecontents*| ist demzufolge sinnvoll zum Schreiben von nicht-\LaTeX\ Dateien, wie zum
% Beispiel  eingebetteden |PostScript|-Dateien.
%
% Wenn Sie das Paket \textsf{ltxtable} benutzen, werden Sie \textsf{filecontents}
% besonders n"utzlich finden. \textsf{ltxtable} ist eine grobe Ansammlung von
% \textsf{longtable}, welche "uber Seitengrenzen hinaus gehen und \textsf{tabularx}, 
% wodurch sich Tabellen auf eine bestimmte Breite weiten lassen. 
% \textsf{ltxtable}'s Schnittstelle ist ein bisschen unhandlich. Diese fordert, 
% dass sich die |longtable| Umgebung in einer separaten Datei befindet.
% Mit dem \textsf{filecontents}-Paket k"onnen Sie diese Datei direkt vor dem Aufruf 
% von |\LTXtable| erzeugen -- 
% eine weit bequemere Alternative, als die Tabelle manuell in einer separaten Datei zu 
% platzieren. 
%
%
% \StopEventually{^^A
%   \PrintChanges
%   \PrintIndex
% }
%
% \section{Implementierung}
%
% Die meisten Benutzer k"onnen an diesem Punkt mit dem Lesen aufh"oren. 
% Der Implementierungsteil enth"alt den kommentierten Quelltext f"ur das
% \textsf{filecontents}- % Paket, welches nur f"ur Personen von Interesse ist, welche 
% eine ausf"uhrliche und genaue Erkl"arung, 
% wie \textsf{filecontents} funktioniert, ben"otigen.
%
% Ehre, wem Ehre geb"uhrt. Ich habe praktisch keinen Quelltext von 
% \textsf{filecontents} selbst geschrieben.  Dieser kommt fast ausschlie"slich von dem
% \LaTeXe-Quellcode, insbesondere aus der Datei |ltclass.dtx|,
% welcher Frank Mittelbach, Chris Rowley, Alan Jeffrey,
% und David Carlisle zugeschrieben werden.  Ich habe diesen durch ein paar kleine 
% "Anderungen (unten durch 
% Quelltextbl"ocke und Kommentare angezeigt) angepasst, um die
% |filecontents|- Umgebung bequemer zu benutzen.
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
% \begin{macro}{\filec@ntents}
% Sofern nicht anders angegeben, wurde der Quelltext (einschlie"slich der Kommentare) des 
% |\filec@ntents| Makro w"ortlich aus |ltclass.dtx| "ubernommen.
%    \begin{macrocode}
\begingroup%
\catcode`\*=11 %
\catcode`\^^M\active%
\catcode`\^^L\active\let^^L\relax%
\catcode`\^^I\active%
%    \end{macrocode}
%
%    \begin{macrocode}
\gdef\filec@ntents#1{%
  \openin\@inputcheck#1 %
%    \end{macrocode}
%
% \startfcchanges
% Im urspr"unglichen Quelltext wurde eine existierende Datei nicht "uberschrieben.
% In der neuen Version dient die Existenzpr"ufung der Datei ausschlie"slich zur Entscheidung,
% ob ``\texttt{Writing file `\textrm{\meta{filename}}'}'' oder ``\texttt{Overwriting file 
% `\textrm{\meta{filename}}'}''
% ausgegeben wird. Die Ablaufsteuerung dient dazu, immer den |\ifeof| Zweig (Datei existiert 
% nicht; "offne diese)
% und nie den |\else| Zweig (Datei existiert; mache nichts) auszuf"uhren.
% \changes{v1.2}{2009/03/17}{Added percent signs after the
%   \texttt{\char`\\else} and \texttt{\char`\\fi}
%   lines as per Heiko Oberdiek's suggestion for getting \textsf{filecontents}
%   to work with the \textsf{guitar} package}
%    \begin{macrocode}
  \ifeof\@inputcheck%
    \@latex@warning@no@line%
        {Writing file `\@currdir#1'}%
  \else %
    \@latex@warning@no@line%
        {Overwriting file `\@currdir#1'}%
  \fi %
%    \end{macrocode}
%    \begin{macrocode}
  \chardef\reserved@c15 %
  \ch@ck7\reserved@c\write%
  \immediate\openout\reserved@c#1\relax%
%    \end{macrocode}
% \stopfcchanges
%
%    \begin{macrocode}
  \if@tempswa%
    \immediate\write\reserved@c{%
      \@percentchar\@percentchar\space%
          \expandafter\@gobble\string\LaTeX2e file `#1'^^J%
      \@percentchar\@percentchar\space  generated by the %
        `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
      \@percentchar\@percentchar\space from source `\jobname' on %
         \number\year/\two@digits\month/\two@digits\day.^^J%
      \@percentchar\@percentchar}%
  \fi%
  \let\do\@makeother\dospecials%
%    \end{macrocode}
% \startfcchanges
% Das \textsf{inputenc}-Paket hat unter Umst"anden einige der oberen~128
% Zeichencodes als ``aktiv'' gekennzeichnet (category code~13), welches
% \textsf{filecontents} verwirrt. Deshalb markieren wir jeden der oberen~128
% Zeichencodes als ``Buchstabe'' (category code~11), um sie korrekt in eine
% Datei schreiben zu k"onnen.
% \changes{v1.1}{2004/08/16}{Made it possible for \textsf{filecontents}
%   to write \mbox{Latin-1} characters as per Harry Schmidt's feature
%   request and Frank Mittelbach's suggestion of how to implement it.}
% \changes{v1.2}{2009/03/17}{Added percent signs after each line in
%   the loop as per Heiko Oberdiek's suggestion for getting
%   \textsf{filecontents} to work with the \textsf{guitar} package}
%    \begin{macrocode}
  \count0=128\relax %
  \loop %
    \catcode\count0=11\relax %
    \advance\count0 by 1\relax %
    \ifnum\count0<256 %
  \repeat %
%    \end{macrocode}
% \stopfcchanges
%
%    \begin{macrocode}
  \edef\E{\@backslashchar end\string{\@currenvir\string}}%
  \edef\reserved@b{%
    \def\noexpand\reserved@b%
         ####1\E####2\E####3\relax}%
  \reserved@b{%
    \ifx\relax##3\relax%
%    \end{macrocode}
% Es gab kein |\end{filecontents}|
%    \begin{macrocode}
      \immediate\write\reserved@c{##1}%
    \else%
%    \end{macrocode}
% Es existierte ein |\end{filecontents}|, stoppe diesmal.
%    \begin{macrocode}
      \edef^^M{\noexpand\end{\@currenvir}}%
      \ifx\relax##1\relax%
      \else%
%    \end{macrocode}
% Text vor dem |\end|, schreibe diesen mit einer Warnung.
%    \begin{macrocode}
          \@latex@warning{Writing text `##1' before %
             \string\end{\@currenvir}\MessageBreak as last line of #1}%
        \immediate\write\reserved@c{##1}%
      \fi%
      \ifx\relax##2\relax%
      \else%
%    \end{macrocode}
% Text nach dem |\end|, ignoriere diesen mit einer Warnung.
%    \begin{macrocode}
         \@latex@warning{%
           Ignoring text `##2' after \string\end{\@currenvir}}%
      \fi%
    \fi%
    ^^M}%
%    \end{macrocode}
%
%    \begin{macrocode}
  \catcode`\^^L\active%
  \let\L\@undefined%
  \def^^L{\@ifundefined L^^J^^J^^J}%
  \catcode`\^^I\active%
  \let\I\@undefined%
  \def^^I{\@ifundefined I\space\space}%
  \catcode`\^^M\active%
  \edef^^M##1^^M{%
    \noexpand\reserved@b##1\E\E\relax}}%
\endgroup%
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\fc@no@preamblecmds}
% \LaTeXe\ deklariert |\filecontents|, |\filecontents*| und alle
% zugeh"origen Hilfs\-makros
% als |\@onlypreamble|, was dazu f"uhrt, dass diese nach einem |\begin{document}|
% unwirksam werden. Der nachfolgende Code aktiviert die Wiederverwendung dieser
% Befehle "uberall im Dokument. Dieser wurde aus dem Paket \textsf{pkgindoc} 
% (generiert durch |ltclass.dtx|) entnommen und ver"andert. Dabei wurden nur die Befehle 
% angepasst,
% die durch \textsf{filecontents} gebraucht werden, um diese wieder zu aktivieren.
% Andere Klassen- und Paketoptionen, sowie verarbeitende Befehle, blieben unber"uhrt.   
%    \begin{macrocode}
\def\fc@no@preamblecmds#1\do\filecontents#2\do\filec@ntents#3\relax{%
  \gdef\@preamblecmds{#1#3}}
\expandafter\fc@no@preamblecmds\@preamblecmds\relax
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
% \Finale
%
