% \iffalse meta-comment % % Copyright (C) 2009 Scott Pakin % ------------------------------------------------------- % % 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} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{filecontents} %<*package> [2009/03/17 v1.2 Create an external file from within a LaTeX document] % % %<*driver> \documentclass{ltxdoc} \usepackage[ngerman]{babel} \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{filecontents-DE.dtx} \end{document} % % \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} % % \end{macrocode} % % \Finale %