summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/dateiliste
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/dateiliste
Initial commit
Diffstat (limited to 'macros/latex/contrib/dateiliste')
-rw-r--r--macros/latex/contrib/dateiliste/README255
-rw-r--r--macros/latex/contrib/dateiliste/README-de26
-rw-r--r--macros/latex/contrib/dateiliste/README-en113
-rw-r--r--macros/latex/contrib/dateiliste/README-eo115
-rw-r--r--macros/latex/contrib/dateiliste/dateiliste.dtx1915
-rw-r--r--macros/latex/contrib/dateiliste/dateiliste.ins79
-rw-r--r--macros/latex/contrib/dateiliste/dateiliste.pdfbin0 -> 262917 bytes
7 files changed, 2503 insertions, 0 deletions
diff --git a/macros/latex/contrib/dateiliste/README b/macros/latex/contrib/dateiliste/README
new file mode 100644
index 0000000000..3b075fea01
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/README
@@ -0,0 +1,255 @@
+This README is for version:
+ 2012/10/13 v0.6 %
+----------------
+([de] unten - [eo] sube)
+----------------
+[en]
+LaTeX-package 'dateiliste' - include list of used files
+(like \listfiles) in the document, and related features.
+
+Author: Paul Ebermann <Paul-Ebermann@gmx.de>
+License: LPPL 1.3b or later, author-maintained
+ (see http://www.latex-project.org/lppl/).
+
+All Documentation (other than this file) is in german.
+
+The typesetting of the documentation needs 'pauldoc' (from the
+same author).
+Additionally you'll need the packages 'ltxtable', 'tabularx',
+'longtable' and 'rcsinfo'.
+
+The package comes as .dtx + .ins.
+Run "latex dateiliste.ins" to create the style file and the
+README-files (and maybe put them to texmf/tex/latex/paul/, if
+your docstrip is configured accordingly), (after that and
+maybe updating your TeX hash) run "latex dateiliste.dtx"
+(some times) to create the documentation.
+
+ Usage
+-------
+The package has three main features, which can
+be used independently, but together are specially
+useful.
+
+(1) automatic version infos:
+
+ If you use a version control system like RCS, CVS, Subversion
+ for your LaTeX source files, you may use the Id tag to generate
+ the date and version number for the version string in \listfiles.
+ Use
+
+ \ProvideFileInfos{$<>Id$}{short description}
+
+ (without '<>' [0]) in your file, and do a 'cvs commit' (or
+ 'svn commit'). In the svn case, use the package-option 'svn'
+ (or 'subversion') to indicate the parsing format to the
+ package, and tell Subversion to expand Id:
+ svn propset svn:keywords Id <filename>
+
+(2) include main file:
+
+ Normally the "main" file (given on the command
+ line to LaTeX) does not appear in the list given
+ by \listfiles. This is changed by the package for
+ the case that the file has the name \jobname.tex.
+
+ (More precisely, the package adds \jobname.tex
+ iff this file exists and it not can be determinded[1]
+ to be already in the file list [2].)
+
+ This is enabled by default and may be disabled
+ using the package option 'noaddmain'.
+ The macro
+ \mainFileToList
+ may also be invoked manually to add the main file.
+
+(3) include file list also in the (dvi) result
+
+ You can use the command
+
+ \printFileList[<section command>]
+
+ to include a pretty-printed version of the
+ file list as a section (by default \section*,
+ any sectioning command may be given as an
+ optional argument).
+
+ You also have to use \listfiles in the
+ document preamble (otherwise you'll only get
+ an error message).
+
+ The table only appears from the second LaTeX-run,
+ from the third one is complete, and may need some
+ more runs to align correctly.
+
+ The title, preamble and table headers may be localized
+ with babel - translations for 'english', 'german',
+ 'ngerman' and 'esperanto' are included.
+ If you need something else or don't use babel, you have
+ to redefine the following macros:
+
+ \fileListName - title ("List of Files")
+ \fileListPreamble - preamble (typeset before the table)
+ \fileNameName - table header "file name"
+ \dateName - table header "date"
+ \verName - table header "version"
+ \descriptionName - table header "description"
+
+-----
+[0] The <> are inserted here to avoid Subversion
+ expanding this line. If someone has an idea how
+ to have this in plain format in the README (maybe
+ with some complicated magic in the .dtx and/or .ins),
+ please contact me.
+[1] this determination can be configured with
+ the package options
+ nocat12 - does only work with eTeX, else
+ may give double entry
+ cat12 - works also without eTeX, but may
+ have some side effects to other macro
+ packages, since it converts \@filelist
+ to cat 12.
+ The default setting works like cat12 on non-eTeX
+ and like nocat12 on eTeX.
+
+[2] this may occur when you invoke
+ LaTeX with "\input{mainfile.tex}".
+----------------
+[de]
+LaTeX-Paket 'dateiliste' - Liste der verwendeten Dateien im Dokument
+und verwandte Funktionen.
+
+Autor: Paul Ebermann (Paul-Ebermann@gmx.de).
+Lizenz: LPPL 1.3b oder später, mit Maintenance-Status
+ "author-maintained". Siehe http://www.latex-project.org/lppl/.
+
+Geschrieben für den eigenen Gebrauch
+(-> http://www.math.hu-berlin.de/~ebermann/alg-script/),
+aber vielleicht ist es auch für andere von Nutzen.
+
+Zum Setzen der Dokumentation wird das Paket 'pauldoc'
+(vom selben Autor) benötigt.
+
+Das Paket kommt als .dtx + .ins.
+Mit "latex dateiliste.ins" wird die .sty-Datei erstellt (und
+eventuell gleich nach texmf/tex/latex/paul/ installiert,
+wenn docstrip entsprechend eingerichtet ist), mit
+latex dateiliste.dtx kann (danach und eventuell nach einer
+Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu
+erstellt werden.
+
+Zur Verwendung siehe dateiliste.pdf.
+----------------
+[eo]
+LaTeX-pakaĵo 'dateiliste' - Variaĵo de \DeclareRobustCommand,
+kiu antaŭe elprovas, ĉu la nomo jam ekzistas.
+
+Aŭtoro: Paŭlo Ebermann (Paul-Ebermann@gmx.de).
+Licenzo: LPPL 1.3, 'author-maintained'
+ (-> http://www.latex-project.org/lppl/).
+
+Kreitaj por propra uzo, sed eble iom de ĝi ankaŭ
+uzeblas por aliaj.
+
+La dokumentaro (escepte tiu ĉi dosiero) estas nur en la germana
+lingvo.
+
+La pakaĵo bezonas la pakaĵojn 'ltxtable', 'longtable',
+'tabularx' kaj 'rcsinfo'.
+Por krei la dokumentadon vi krome bezonas 'pauldoc' (de la sama aŭtoro).
+
+La pakaĵo venas en .dtx + .ins.
+Voku "latex dateiliste.ins" por krei la .sty-dosieron (kaj
+eble meti ĝin al texmf/tex/latex/paul/, se via docstrip estis
+konfigurita laŭe), voku "latex dateiliste.dtx" por rekrei
+la dokumentaron.
+
+ Uzado
+-------
+
+La pakaĵo konsistas el tri ĉefaj bonaĵoj, kiujn
+oni povas uzi sendepende, sed kune ili estas speciale
+utile.
+
+(1) Aŭtomataj versio-informoj.
+
+ Se vi uzas versio-kontrolan sistemon kiel Subversion aŭ
+ CVS/RCS, vi povas uzi tion por aŭtomate generi la daton
+ kaj versi-numeron por la listo kreita de \listfiles
+ (kaj la listo de (3).)
+ Uzu
+
+ \ProvideFileInfos{$<>Id$}{mallonga priskribo}
+
+ en via dosiero, forprenu la '<>', kaj faru 'svn commit' aŭ
+ 'cvs commit'. (CVS aŭ SVN tiam enmetos informojn, kiun
+ \ProvideFileInfos uzos.)
+ En la Subversion-kazo necesas antaŭe informi Subversion
+ pri tio, ke vi volas anstataŭi 'Id' per alia afero:
+ svn propset svn:keywords Id <dosiernomo>
+ Ankaŭ necesas uzi la pakaĵ-opcion 'svn' aŭ 'subversion',
+ kiel tie:
+ \usepackage[svn]{dateiliste}
+
+(2) Aldono de ĉefa dosiero
+
+ Kutime la ĉefa dosiero (kiun vi donis en la
+ latex-voko) ne aperas en la listo kreita de
+ \listfiles. Tion la pakaĵo ŝanĝas, se tiu
+ dosiero havas la nomfinaĵon .tex
+
+ (Pli precize, la pakaĵo aldonas '\jobname.tex',
+ se tiu dosiero ekzistas, kaj se ne eblas eltrovi[1],
+ ke la dosiero estas jam en la listo[2].)
+
+ Tiu aldonado estas kutime ŝaltita, sed eblas
+ malŝalti ĝin per la pakaĵ-opcio 'noaddmain'.
+ Tiam ankaŭ eblas voki
+ \mainFileToList
+ por fari tion.
+
+(3) Enmetu la dosierliston en la rezulton
+
+ Vi povas uzi la komandon
+
+ \printFileList[<section command>]
+
+ por enmeti bele formatitan version de la
+ dosierlisto kiel sekcio (kutime '\section*',
+ sed vi povas uzi iun ajn sekci-komandon kiel
+ opcia argumento) en la dokumenton.
+
+ Vi krome devas uzi \listfiles en la komenca
+ parto de la dokumento (antaŭ \begin{document}),
+ alikaze vi nur ricevos erarmesaĝon.
+
+ La tabelo nur aperos ekde la dua LaTeX-voko, kaj
+ eble bezonos kelkajn pliajn por aspekti ĝuste.
+
+ Eblas traduki la titolon de la sekcio, la antaŭtekston
+ kaj la tabelkapoj helpe de la babel-pakaĵo - tradukojn
+ por 'english', 'german', 'ngerman' kaj 'esperanto' la
+ pakaĵo jam enhavas.
+ Se vi bezonas aliajn lingvojn aŭ ne uzas 'babel',
+ redifinu la sekvajn makroojn:
+
+ \fileListName - titolo ("Listo de dosieroj")
+ \fileListPreamble - antaŭteksto (printita inter titolo
+ kaj tabelo)
+ \fileNameName - tabelkapo "dosiernomo"
+ \dateName - tabelkapo "dato"
+ \verName - tabelkapo "versio"
+ \descriptionName - tabelkapo "priskribo"
+
+-----
+[1] Tiun determinadon vi povas konfiguri per la
+ pakaĵ-opcioj:
+ nocat12 - nur funkcias se vi uzas eTeX, alikaze
+ eble la cxef-dosiero aperos dufoje.
+ cat12 - funkcias kun aŭ sen eTeX, konvertante
+ la enhavon de \@filelist al kategorio 12.
+ Se vi neniun de tiuj opcioj donas, ĝi laboras
+ kiel 'nocat12' en eTeX kaj kiel 'cat12' en ne-eTeX.
+
+[2] Tio povas okazi ekzemple, se vi invokas
+ LaTeX kun "\input{mainfile.tex}".
diff --git a/macros/latex/contrib/dateiliste/README-de b/macros/latex/contrib/dateiliste/README-de
new file mode 100644
index 0000000000..7cf4a40273
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/README-de
@@ -0,0 +1,26 @@
+Dieses README ist für Version:
+ 2012/10/13 v0.6 %
+----------------
+LaTeX-Paket 'dateiliste' - Liste der verwendeten Dateien im Dokument
+und verwandte Funktionen.
+
+Autor: Paul Ebermann (Paul-Ebermann@gmx.de).
+Lizenz: LPPL 1.3b oder später, mit Maintenance-Status
+ "author-maintained". Siehe http://www.latex-project.org/lppl/.
+
+Geschrieben für den eigenen Gebrauch
+(-> http://www.math.hu-berlin.de/~ebermann/alg-script/),
+aber vielleicht ist es auch für andere von Nutzen.
+
+Zum Setzen der Dokumentation wird das Paket 'pauldoc'
+(vom selben Autor) benötigt.
+
+Das Paket kommt als .dtx + .ins.
+Mit "latex dateiliste.ins" wird die .sty-Datei erstellt (und
+eventuell gleich nach texmf/tex/latex/paul/ installiert,
+wenn docstrip entsprechend eingerichtet ist), mit
+latex dateiliste.dtx kann (danach und eventuell nach einer
+Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu
+erstellt werden.
+
+Zur Verwendung siehe dateiliste.pdf.
diff --git a/macros/latex/contrib/dateiliste/README-en b/macros/latex/contrib/dateiliste/README-en
new file mode 100644
index 0000000000..fec817c92b
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/README-en
@@ -0,0 +1,113 @@
+This README is for version:
+ 2012/10/13 v0.6 %
+----------------
+LaTeX-package 'dateiliste' - include list of used files
+(like \listfiles) in the document, and related features.
+
+Author: Paul Ebermann <Paul-Ebermann@gmx.de>
+License: LPPL 1.3b or later, author-maintained
+ (see http://www.latex-project.org/lppl/).
+
+All Documentation (other than this file) is in german.
+
+The typesetting of the documentation needs 'pauldoc' (from the
+same author).
+Additionally you'll need the packages 'ltxtable', 'tabularx',
+'longtable' and 'rcsinfo'.
+
+The package comes as .dtx + .ins.
+Run "latex dateiliste.ins" to create the style file and the
+README-files (and maybe put them to texmf/tex/latex/paul/, if
+your docstrip is configured accordingly), (after that and
+maybe updating your TeX hash) run "latex dateiliste.dtx"
+(some times) to create the documentation.
+
+ Usage
+-------
+The package has three main features, which can
+be used independently, but together are specially
+useful.
+
+(1) automatic version infos:
+
+ If you use a version control system like RCS, CVS, Subversion
+ for your LaTeX source files, you may use the Id tag to generate
+ the date and version number for the version string in \listfiles.
+ Use
+
+ \ProvideFileInfos{$<>Id$}{short description}
+
+ (without '<>' [0]) in your file, and do a 'cvs commit' (or
+ 'svn commit'). In the svn case, use the package-option 'svn'
+ (or 'subversion') to indicate the parsing format to the
+ package, and tell Subversion to expand Id:
+ svn propset svn:keywords Id <filename>
+
+(2) include main file:
+
+ Normally the "main" file (given on the command
+ line to LaTeX) does not appear in the list given
+ by \listfiles. This is changed by the package for
+ the case that the file has the name \jobname.tex.
+
+ (More precisely, the package adds \jobname.tex
+ iff this file exists and it not can be determinded[1]
+ to be already in the file list [2].)
+
+ This is enabled by default and may be disabled
+ using the package option 'noaddmain'.
+ The macro
+ \mainFileToList
+ may also be invoked manually to add the main file.
+
+(3) include file list also in the (dvi) result
+
+ You can use the command
+
+ \printFileList[<section command>]
+
+ to include a pretty-printed version of the
+ file list as a section (by default \section*,
+ any sectioning command may be given as an
+ optional argument).
+
+ You also have to use \listfiles in the
+ document preamble (otherwise you'll only get
+ an error message).
+
+ The table only appears from the second LaTeX-run,
+ from the third one is complete, and may need some
+ more runs to align correctly.
+
+ The title, preamble and table headers may be localized
+ with babel - translations for 'english', 'german',
+ 'ngerman' and 'esperanto' are included.
+ If you need something else or don't use babel, you have
+ to redefine the following macros:
+
+ \fileListName - title ("List of Files")
+ \fileListPreamble - preamble (typeset before the table)
+ \fileNameName - table header "file name"
+ \dateName - table header "date"
+ \verName - table header "version"
+ \descriptionName - table header "description"
+
+-----
+[0] The <> are inserted here to avoid Subversion
+ expanding this line. If someone has an idea how
+ to have this in plain format in the README (maybe
+ with some complicated magic in the .dtx and/or .ins),
+ please contact me.
+[1] this determination can be configured with
+ the package options
+ nocat12 - does only work with eTeX, else
+ may give double entry
+ cat12 - works also without eTeX, but may
+ have some side effects to other macro
+ packages, since it converts \@filelist
+ to cat 12.
+ The default setting works like cat12 on non-eTeX
+ and like nocat12 on eTeX.
+
+[2] this may occur when you invoke
+ LaTeX with "\input{mainfile.tex}".
diff --git a/macros/latex/contrib/dateiliste/README-eo b/macros/latex/contrib/dateiliste/README-eo
new file mode 100644
index 0000000000..9f2dd54ec1
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/README-eo
@@ -0,0 +1,115 @@
+Tiu README (legumin) estas por versio:
+ 2012/10/13 v0.6 %
+----------------
+LaTeX-pakaĵo 'dateiliste' - Variaĵo de \DeclareRobustCommand,
+kiu antaŭe elprovas, ĉu la nomo jam ekzistas.
+
+Aŭtoro: Paŭlo Ebermann (Paul-Ebermann@gmx.de).
+Licenzo: LPPL 1.3, 'author-maintained'
+ (-> http://www.latex-project.org/lppl/).
+
+Kreitaj por propra uzo, sed eble iom de ĝi ankaŭ
+uzeblas por aliaj.
+
+La dokumentaro (escepte tiu ĉi dosiero) estas nur en la germana
+lingvo.
+
+La pakaĵo bezonas la pakaĵojn 'ltxtable', 'longtable',
+'tabularx' kaj 'rcsinfo'.
+Por krei la dokumentadon vi krome bezonas 'pauldoc' (de la sama aŭtoro).
+
+La pakaĵo venas en .dtx + .ins.
+Voku "latex dateiliste.ins" por krei la .sty-dosieron (kaj
+eble meti ĝin al texmf/tex/latex/paul/, se via docstrip estis
+konfigurita laŭe), voku "latex dateiliste.dtx" por rekrei
+la dokumentaron.
+
+ Uzado
+-------
+
+La pakaĵo konsistas el tri ĉefaj bonaĵoj, kiujn
+oni povas uzi sendepende, sed kune ili estas speciale
+utile.
+
+(1) Aŭtomataj versio-informoj.
+
+ Se vi uzas versio-kontrolan sistemon kiel Subversion aŭ
+ CVS/RCS, vi povas uzi tion por aŭtomate generi la daton
+ kaj versi-numeron por la listo kreita de \listfiles
+ (kaj la listo de (3).)
+ Uzu
+
+ \ProvideFileInfos{$<>Id$}{mallonga priskribo}
+
+ en via dosiero, forprenu la '<>', kaj faru 'svn commit' aŭ
+ 'cvs commit'. (CVS aŭ SVN tiam enmetos informojn, kiun
+ \ProvideFileInfos uzos.)
+ En la Subversion-kazo necesas antaŭe informi Subversion
+ pri tio, ke vi volas anstataŭi 'Id' per alia afero:
+ svn propset svn:keywords Id <dosiernomo>
+ Ankaŭ necesas uzi la pakaĵ-opcion 'svn' aŭ 'subversion',
+ kiel tie:
+ \usepackage[svn]{dateiliste}
+
+(2) Aldono de ĉefa dosiero
+
+ Kutime la ĉefa dosiero (kiun vi donis en la
+ latex-voko) ne aperas en la listo kreita de
+ \listfiles. Tion la pakaĵo ŝanĝas, se tiu
+ dosiero havas la nomfinaĵon .tex
+
+ (Pli precize, la pakaĵo aldonas '\jobname.tex',
+ se tiu dosiero ekzistas, kaj se ne eblas eltrovi[1],
+ ke la dosiero estas jam en la listo[2].)
+
+ Tiu aldonado estas kutime ŝaltita, sed eblas
+ malŝalti ĝin per la pakaĵ-opcio 'noaddmain'.
+ Tiam ankaŭ eblas voki
+ \mainFileToList
+ por fari tion.
+
+(3) Enmetu la dosierliston en la rezulton
+
+ Vi povas uzi la komandon
+
+ \printFileList[<section command>]
+
+ por enmeti bele formatitan version de la
+ dosierlisto kiel sekcio (kutime '\section*',
+ sed vi povas uzi iun ajn sekci-komandon kiel
+ opcia argumento) en la dokumenton.
+
+ Vi krome devas uzi \listfiles en la komenca
+ parto de la dokumento (antaŭ \begin{document}),
+ alikaze vi nur ricevos erarmesaĝon.
+
+ La tabelo nur aperos ekde la dua LaTeX-voko, kaj
+ eble bezonos kelkajn pliajn por aspekti ĝuste.
+
+ Eblas traduki la titolon de la sekcio, la antaŭtekston
+ kaj la tabelkapoj helpe de la babel-pakaĵo - tradukojn
+ por 'english', 'german', 'ngerman' kaj 'esperanto' la
+ pakaĵo jam enhavas.
+ Se vi bezonas aliajn lingvojn aŭ ne uzas 'babel',
+ redifinu la sekvajn makroojn:
+
+ \fileListName - titolo ("Listo de dosieroj")
+ \fileListPreamble - antaŭteksto (printita inter titolo
+ kaj tabelo)
+ \fileNameName - tabelkapo "dosiernomo"
+ \dateName - tabelkapo "dato"
+ \verName - tabelkapo "versio"
+ \descriptionName - tabelkapo "priskribo"
+
+-----
+[1] Tiun determinadon vi povas konfiguri per la
+ pakaĵ-opcioj:
+ nocat12 - nur funkcias se vi uzas eTeX, alikaze
+ eble la cxef-dosiero aperos dufoje.
+ cat12 - funkcias kun aŭ sen eTeX, konvertante
+ la enhavon de \@filelist al kategorio 12.
+ Se vi neniun de tiuj opcioj donas, ĝi laboras
+ kiel 'nocat12' en eTeX kaj kiel 'cat12' en ne-eTeX.
+
+[2] Tio povas okazi ekzemple, se vi invokas
+ LaTeX kun "\input{mainfile.tex}".
diff --git a/macros/latex/contrib/dateiliste/dateiliste.dtx b/macros/latex/contrib/dateiliste/dateiliste.dtx
new file mode 100644
index 0000000000..c42a1b064a
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/dateiliste.dtx
@@ -0,0 +1,1915 @@
+% \iffalse meta-comment -*- coding: utf-8 -*-
+%<*package|driver>
+%% (C) 2006, 2009, 2012 Paul Ebermann (Hauptautor)
+%% (C) 2006 Rolf Niepraschk (einiges an Code gespendet)
+%%
+%% Package dateiliste - Zur Ausgabe der Liste der Dateien im Dokument.
+%%
+%% Die Datei dateiliste.dtx sowie die dazugehörige
+%% dateiliste.ins sowie die damit generierte
+%% dateiliste.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% später (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'maintained'.
+%%
+%% Das heißt in etwa, die Dateien dürfen frei vertrieben werden,
+%% bei Änderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ändern.
+%</package|driver>
+% \fi
+%
+% \ProvideFileInfos{$Id$}
+% {Dokumentation fuer dateiliste.sty }
+%
+% \iffalse
+%<*driver>
+\documentclass[draft%
+ ]%
+ {ltxdoc}
+%\PassOptionsToPackage{utf8}{inputenc}
+\usepackage[utf8]{pauldoc}[2009/11/03]
+
+% dox liefert uns die Möglichkeit, Package-Optionen als
+% solche zu dokumentieren.
+\usepackage{dox}[2009/09/28]
+\doxitem{Option}{option}{Optionen}
+
+\usepackage[showpages, svn]{dateiliste}
+\usepackage{enumerate}
+\begin{filecontents}{test_datei}
+% Dies ist nur ein Test.
+\ProvidesFile{test_datei.tex}[2006/09/19 v0.0 Eine \csname @secondoftwo\expandafter\endcsname\string\%-$-Beis^p_iel-3-&-Datei ##$
+mit \string{Test\string} und noch einer Gruppe. ]
+\end{filecontents}
+\errorcontextlines=20
+\listfiles
+%\input{test_datei}
+%\inputencoding{utf8}
+\begin{document}
+ \input{test_datei.tex}
+ \DocInput{dateiliste.dtx}
+\errorcontextlines=20
+\tracingmacros=2
+\tracingcommands=2
+\end{document}
+%</driver>
+%
+%<readme|en>This README is for version:
+%<eo>Tiu README (legumin) estas por versio:
+%<de>Dieses README ist für Version:
+%<package>\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+%<package>\ProvidesPackage{dateiliste}[%
+%
+%
+%<package|readme|en|de|eo> 2012/10/13 v0.6 %
+%
+%
+%<package> Ausgabe der Dateiliste (PE)]
+%<readme|en|de|eo>----------------
+%
+% Hier noch der Inhalt der Readme-Datei.
+%<*readme>
+([de] unten - [eo] sube)
+----------------
+[en]
+%</readme>
+%<*en|readme>
+LaTeX-package 'dateiliste' - include list of used files
+(like \listfiles) in the document, and related features.
+
+Author: Paul Ebermann <Paul-Ebermann@gmx.de>
+License: LPPL 1.3b or later, author-maintained
+ (see http://www.latex-project.org/lppl/).
+
+All Documentation (other than this file) is in german.
+
+The typesetting of the documentation needs 'pauldoc' (from the
+same author).
+Additionally you'll need the packages 'ltxtable', 'tabularx',
+'longtable' and 'rcsinfo'.
+
+The package comes as .dtx + .ins.
+Run "latex dateiliste.ins" to create the style file and the
+README-files (and maybe put them to texmf/tex/latex/paul/, if
+your docstrip is configured accordingly), (after that and
+maybe updating your TeX hash) run "latex dateiliste.dtx"
+(some times) to create the documentation.
+
+ Usage
+-------
+The package has three main features, which can
+be used independently, but together are specially
+useful.
+
+(1) automatic version infos:
+
+ If you use a version control system like RCS, CVS, Subversion
+ for your LaTeX source files, you may use the Id tag to generate
+ the date and version number for the version string in \listfiles.
+ Use
+
+ \ProvideFileInfos{$<>Id$}{short description}
+
+ (without '<>' [0]) in your file, and do a 'cvs commit' (or
+ 'svn commit'). In the svn case, use the package-option 'svn'
+ (or 'subversion') to indicate the parsing format to the
+ package, and tell Subversion to expand Id:
+ svn propset svn:keywords Id <filename>
+
+(2) include main file:
+
+ Normally the "main" file (given on the command
+ line to LaTeX) does not appear in the list given
+ by \listfiles. This is changed by the package for
+ the case that the file has the name \jobname.tex.
+
+ (More precisely, the package adds \jobname.tex
+ iff this file exists and it not can be determinded[1]
+ to be already in the file list [2].)
+
+ This is enabled by default and may be disabled
+ using the package option 'noaddmain'.
+ The macro
+ \mainFileToList
+ may also be invoked manually to add the main file.
+
+(3) include file list also in the (dvi) result
+
+ You can use the command
+
+ \printFileList[<section command>]
+
+ to include a pretty-printed version of the
+ file list as a section (by default \section*,
+ any sectioning command may be given as an
+ optional argument).
+
+ You also have to use \listfiles in the
+ document preamble (otherwise you'll only get
+ an error message).
+
+ The table only appears from the second LaTeX-run,
+ from the third one is complete, and may need some
+ more runs to align correctly.
+
+ The title, preamble and table headers may be localized
+ with babel - translations for 'english', 'german',
+ 'ngerman' and 'esperanto' are included.
+ If you need something else or don't use babel, you have
+ to redefine the following macros:
+
+ \fileListName - title ("List of Files")
+ \fileListPreamble - preamble (typeset before the table)
+ \fileNameName - table header "file name"
+ \dateName - table header "date"
+ \verName - table header "version"
+ \descriptionName - table header "description"
+
+-----
+[0] The <> are inserted here to avoid Subversion
+ expanding this line. If someone has an idea how
+ to have this in plain format in the README (maybe
+ with some complicated magic in the .dtx and/or .ins),
+ please contact me.
+[1] this determination can be configured with
+ the package options
+ nocat12 - does only work with eTeX, else
+ may give double entry
+ cat12 - works also without eTeX, but may
+ have some side effects to other macro
+ packages, since it converts \@filelist
+ to cat 12.
+ The default setting works like cat12 on non-eTeX
+ and like nocat12 on eTeX.
+
+[2] this may occur when you invoke
+ LaTeX with "\input{mainfile.tex}".
+%</en|readme>
+%<*readme>
+----------------
+[de]
+%</readme>
+%<*de|readme>
+LaTeX-Paket 'dateiliste' - Liste der verwendeten Dateien im Dokument
+und verwandte Funktionen.
+
+Autor: Paul Ebermann (Paul-Ebermann@gmx.de).
+Lizenz: LPPL 1.3b oder später, mit Maintenance-Status
+ "author-maintained". Siehe http://www.latex-project.org/lppl/.
+
+Geschrieben für den eigenen Gebrauch
+(-> http://www.math.hu-berlin.de/~ebermann/alg-script/),
+aber vielleicht ist es auch für andere von Nutzen.
+
+Zum Setzen der Dokumentation wird das Paket 'pauldoc'
+(vom selben Autor) benötigt.
+
+Das Paket kommt als .dtx + .ins.
+Mit "latex dateiliste.ins" wird die .sty-Datei erstellt (und
+eventuell gleich nach texmf/tex/latex/paul/ installiert,
+wenn docstrip entsprechend eingerichtet ist), mit
+latex dateiliste.dtx kann (danach und eventuell nach einer
+Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu
+erstellt werden.
+
+Zur Verwendung siehe dateiliste.pdf.
+%</de|readme>
+%<*readme>
+----------------
+[eo]
+%</readme>
+%<*eo|readme>
+LaTeX-pakaĵo 'dateiliste' - Variaĵo de \DeclareRobustCommand,
+kiu antaŭe elprovas, ĉu la nomo jam ekzistas.
+
+Aŭtoro: Paŭlo Ebermann (Paul-Ebermann@gmx.de).
+Licenzo: LPPL 1.3, 'author-maintained'
+ (-> http://www.latex-project.org/lppl/).
+
+Kreitaj por propra uzo, sed eble iom de ĝi ankaŭ
+uzeblas por aliaj.
+
+La dokumentaro (escepte tiu ĉi dosiero) estas nur en la germana
+lingvo.
+
+La pakaĵo bezonas la pakaĵojn 'ltxtable', 'longtable',
+'tabularx' kaj 'rcsinfo'.
+Por krei la dokumentadon vi krome bezonas 'pauldoc' (de la sama aŭtoro).
+
+La pakaĵo venas en .dtx + .ins.
+Voku "latex dateiliste.ins" por krei la .sty-dosieron (kaj
+eble meti ĝin al texmf/tex/latex/paul/, se via docstrip estis
+konfigurita laŭe), voku "latex dateiliste.dtx" por rekrei
+la dokumentaron.
+
+ Uzado
+-------
+
+La pakaĵo konsistas el tri ĉefaj bonaĵoj, kiujn
+oni povas uzi sendepende, sed kune ili estas speciale
+utile.
+
+
+(1) Aŭtomataj versio-informoj.
+
+ Se vi uzas versio-kontrolan sistemon kiel Subversion aŭ
+ CVS/RCS, vi povas uzi tion por aŭtomate generi la daton
+ kaj versi-numeron por la listo kreita de \listfiles
+ (kaj la listo de (3).)
+ Uzu
+
+ \ProvideFileInfos{$<>Id$}{mallonga priskribo}
+
+ en via dosiero, forprenu la '<>', kaj faru 'svn commit' aŭ
+ 'cvs commit'. (CVS aŭ SVN tiam enmetos informojn, kiun
+ \ProvideFileInfos uzos.)
+ En la Subversion-kazo necesas antaŭe informi Subversion
+ pri tio, ke vi volas anstataŭi 'Id' per alia afero:
+ svn propset svn:keywords Id <dosiernomo>
+ Ankaŭ necesas uzi la pakaĵ-opcion 'svn' aŭ 'subversion',
+ kiel tie:
+ \usepackage[svn]{dateiliste}
+
+
+(2) Aldono de ĉefa dosiero
+
+ Kutime la ĉefa dosiero (kiun vi donis en la
+ latex-voko) ne aperas en la listo kreita de
+ \listfiles. Tion la pakaĵo ŝanĝas, se tiu
+ dosiero havas la nomfinaĵon .tex
+
+ (Pli precize, la pakaĵo aldonas '\jobname.tex',
+ se tiu dosiero ekzistas, kaj se ne eblas eltrovi[1],
+ ke la dosiero estas jam en la listo[2].)
+
+ Tiu aldonado estas kutime ŝaltita, sed eblas
+ malŝalti ĝin per la pakaĵ-opcio 'noaddmain'.
+ Tiam ankaŭ eblas voki
+ \mainFileToList
+ por fari tion.
+
+(3) Enmetu la dosierliston en la rezulton
+
+ Vi povas uzi la komandon
+
+ \printFileList[<section command>]
+
+ por enmeti bele formatitan version de la
+ dosierlisto kiel sekcio (kutime '\section*',
+ sed vi povas uzi iun ajn sekci-komandon kiel
+ opcia argumento) en la dokumenton.
+
+ Vi krome devas uzi \listfiles en la komenca
+ parto de la dokumento (antaŭ \begin{document}),
+ alikaze vi nur ricevos erarmesaĝon.
+
+ La tabelo nur aperos ekde la dua LaTeX-voko, kaj
+ eble bezonos kelkajn pliajn por aspekti ĝuste.
+
+ Eblas traduki la titolon de la sekcio, la antaŭtekston
+ kaj la tabelkapoj helpe de la babel-pakaĵo - tradukojn
+ por 'english', 'german', 'ngerman' kaj 'esperanto' la
+ pakaĵo jam enhavas.
+ Se vi bezonas aliajn lingvojn aŭ ne uzas 'babel',
+ redifinu la sekvajn makroojn:
+
+ \fileListName - titolo ("Listo de dosieroj")
+ \fileListPreamble - antaŭteksto (printita inter titolo
+ kaj tabelo)
+ \fileNameName - tabelkapo "dosiernomo"
+ \dateName - tabelkapo "dato"
+ \verName - tabelkapo "versio"
+ \descriptionName - tabelkapo "priskribo"
+
+-----
+[1] Tiun determinadon vi povas konfiguri per la
+ pakaĵ-opcioj:
+ nocat12 - nur funkcias se vi uzas eTeX, alikaze
+ eble la cxef-dosiero aperos dufoje.
+ cat12 - funkcias kun aŭ sen eTeX, konvertante
+ la enhavon de \@filelist al kategorio 12.
+ Se vi neniun de tiuj opcioj donas, ĝi laboras
+ kiel 'nocat12' en eTeX kaj kiel 'cat12' en ne-eTeX.
+
+[2] Tio povas okazi ekzemple, se vi invokas
+ LaTeX kun "\input{mainfile.tex}".
+%</eo|readme>
+%
+% \fi
+% \CheckSum{0}
+%
+% \changes{v0.0}{2006/03/23}{Erste Fassung}
+% \changes{v0.1a}{2006/04/05}{Kleine Änderungen der Dokumentation.}
+% \changes{v0.2}{2006/04/19}{README-Dateien werden jetzt auch aus
+% der .dtx-Datei generiert.}
+% \changes{v0.5}{2009/11/01}{Umstellung der Dokumentation auf Unicode.}
+%
+% \GetFileInfo{dateiliste.sty}
+%
+%
+% \title{Das \pack{dateiliste}-Package -- Liste der verwendeten Dateien im Dokument\thanks{%
+% Dieses Dokument gehört zu \pack{dateiliste}~\fileversion,
+% vom~\filedate.}}
+% \author{Paul Ebermann\thanks{E-Mail: \texttt{Paul-Ebermann@gmx.de}}
+% \thanks{Rolf Niepraschk (\texttt{Rolf.Niepraschk@ptb.de})
+% hat das Package \pack{printfilelist}
+% geschrieben und mir geschickt, dessen Code bildete
+% die Basis
+% für \cs{printFileList}. Für den jetztigen Code
+% (insbesondere dessen Fehler) bin ich (Paul) aber
+% selbst verantwortlich.}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% Dieses Paket implementiert einige Befehle, um den
+% Überblick über Versionen und Änderungsdaten von \LaTeX-Quelltexten
+% zu behalten: Automatische Versionsinfos aus dem Versionskontrollsystem
+% (CVS/RCS oder Subversion), Hauptdatei in der Dateiliste,
+% Inklusion der Dateiliste als Tabelle im Dokument.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%
+% \section{Benutzerdokumentation der Befehle}
+%
+% Die drei Teile \emph{automatische Versionsinfos} (mittels
+% '\ProvideFileInfos'), \emph{Hauptdatei in der Dateiliste}
+% (mittels '\mainFileToList' bzw. der 'addmain'-Package-Option)
+% und \emph{Dateilisten-Ausgabe} (mittels 'printFileList')
+% sind unabhängig voneinander nutzbar, aber die ersten beiden
+% Features werden durch das letzte erst richtig nützlich,
+% und damit das letzte eine vernünftige Ausgabe hat, sind
+% die ersten beiden hilfreich.
+% Daher also alles in einem Package.
+%
+% \subsection{README in Englisch, Deutsch und Esperanto}
+%
+% Eine README-Datei mit einer Kurzübersicht des Paketes auf
+% Englisch, Deutsch und Esperanto (sowie einzel-Dateien für
+% diese Sprachen) kann ebenfalls mit \pack{docstrip}
+% aus der dtx-Datei generiert werden, die beiliegende Datei
+% 'dateiliste.ins' tut dies neben der Generierung der
+% '.sty'-Datei.
+%
+% \subsection{Automatische Versionsinfos}
+%
+%
+% \noindent\DescribeMacro{\ProvideFileInfos}\marg{id-string}\marg{kurzbeschreibung}
+%
+% Ändert die Informationen für die Datei, in der es aufgerufen
+% wurde (bzw. fügt neue hinzu).
+%
+% \meta{kurzbeschreibung} sollte eine kurze Beschreibung der Funktion/des
+% Inhaltes der Datei sein, optimalerweise nur ASCII-Zeichen.
+%
+% \meta{id-string} sollte ein String sein, der (im RCS-Modus) wie
+% \begin{quote}
+% '$''Id: dateiliste.dtx,v 4.1 2009/10/31 19:58:13 epaul Exp $'
+% \end{quote}
+% oder (im Subversion-Modus) wie
+% \begin{quote}
+% '$Id$'
+% \end{quote}
+% aussieht. Diesen lässt man am besten von seinem Versionskontrollsystem
+% produzieren -- dieses Paket unterstützt die Syntax von
+% RCS und CVS (RCS-Modus) sowie die Syntax von Subversion (svn).
+%
+% Der Modus kann durch Paket-Optionen ausgewählt werden:
+% \begin{itemize}
+% \item \DescribeOption{rcs}\DescribeOption{cvs}
+% Die Option 'rcs' oder 'cvs' wählt den RCS-Modus aus, in dem
+% das Datum mit '/' getrennt wird, der Dateiname von ',v' gefolgt
+% wird, am Ende ein Status gezeigt wird (meist 'Exp'), und die
+% Versionsnommer eine mit '.' getrennte Zahlenfolge ist. (Es kann
+% außerdem noch der Nutzername desjenigen enthalten sein, der eine
+% Sperre auf diese Datei hält.)
+% \item \DescribeOption{subversion}\DescribeOption{svn}
+% Die Option 'svn' oder 'subversion' wählt den Subversion-Modus
+% aus, in dem der Dateiname ohne Zusatz auftaucht, Datum und Uhrzeit
+% im ISO-8601-Format mit Zeitzonenanzeiger 'Z' dargestellt werden,
+% und die Versionsnummer nur eine Zahl ist.
+% \end{itemize}
+%
+% Aus Kompatibilitätsgründen zu früheren Versionen
+% dieses Paketes (vor 0.5) ist der Default-Modus (d.h. wenn keine
+% dieser Optionen angegeben wurde) 'rcs'.
+%
+% Wir schreiben also etwas wie
+%\begin{quote}
+% '\ProvideFileInfos{$''Id$}{Algebraische Geometrie I}'
+%\end{quote}
+% in unsere Datei (üblicherweise ziemlich am Anfang) und rufen dann
+% 'cvs commit' bzw. 'svn commit' auf -- dadurch werden von CVS bzw.
+% Subversion die passenden Informationen in unsere Arbeitskopie
+% eingefüllt. (Bei Subversion muss vorher
+% die Keyword-Ersetzung eingeschaltet werden, etwa mit
+% \begin{quote}
+% 'svn propset svn:keywords Id '\meta{dateiname},
+% \end{quote}
+% bei CVS muss man nur darauf achten, sie nicht abzuschalten.)
+% Analoges geschieht auch beim Checkout.
+%
+% Das Makro sorgt dann dafür, dass in der durch '\listfiles' sowie
+% auch der durch '\printFileList' (siehe Abschnitt
+% \ref{describe:printfilelist})
+% erzeugten Liste die richtigen Daten (d.h. das Commit-Datum und die
+% RCS/CVS/SVN-Versionsnummer) stehen.
+%
+% Dies ist besonders nützlich, wenn man ein Dokument hat, welches
+% sich aus mehreren Quelltextdateien zusammensetzt, welche üblicherweise
+% dann auch nicht immer gleichzeitig bearbeitet werden.
+%
+% \subsection{Hauptdatei in der Dateiliste}
+%
+% \DescribeMacro{\mainFileToList}
+% Fügt die Haupt-Datei (\meta{jobname}'.tex') am Anfang der Dateiliste
+% ein, falls sie existiert. Zuvor wird versucht, ein etwaiges Vorkommen
+% dieses Namens in der Liste aus dieser zu entfernen.
+% (Ein solches Vorkommen kann nur dann sein, wenn die Haupt-Datei mit
+% '\input{...}' geladen wurde, anstatt einfach so den Namen auf der
+% Kommandozeile anzugeben, oder wenn die Hauptdatei sich selbst noch
+% einmal einliest, wie in diesem Dokument.)
+%
+% \DescribeOption{cat12}
+% Die interne Funktionsweise (und damit etwaige Nebenwirkungen)
+% hängt davon ab, ob eine der
+% Package-Optionen 'cat12' oder 'nocat12' \DescribeOption{nocat12}
+% gegeben wurde:
+% \begin{itemize}
+% \item Mit Option 'cat12' wird die interne Liste der geladenen Dateien
+% in Kategorie-12-Zeichen (d.h. other) umgewandelt, um den eventuell
+% dort schon vorhandenen Namen der Hauptdatei zu löschen. Dies kann
+% Nebenwirkungen auf andere Pakete haben, wenn diese ebenfalls diese
+% Liste verarbeiten und dabei auf die Kategorien der Zeichen
+% angewiesen sind.
+% \item Mit Option 'nocat12' funktioniert es bei Verwendung von \eTeX\
+% auch ohne die eben geschilderte Umwandlung, bei \TeX\ ist das nicht
+% möglich und es wird einfach so der Dateiname eingefügt -- mit dem
+% Effekt, dass er eventuell doppelt auftaucht.
+% \item Ohne diese Optionen wird bei Verwendung von \eTeX\ die
+% nebenwirkungsfreie Variante, ohne \eTeX\ die Kategorie-12-Variante
+% gewählt.
+% \end{itemize}
+% Details dazu sind im Implementationsteil nachzulesen.
+%
+% Dieses Makro wird automatisch am Ende des
+% Dokumentes ausgeführt, falls nicht die Package-Option 'noaddmain'
+% \DescribeOption{noaddmain} gesetzt wurde.
+% Mit 'addmain' \DescribeOption{addmain} kann das Vorgabe-Verhalten
+% erzwungen werden.
+%
+% \subsection{Dateilisten-Ausgabe}\label{describe:printfilelist}
+% \noindent\DescribeMacro{\printFileList}\oarg{gliederung}
+%
+% Fügt an der aktuellen Stelle eine Liste der im aktuellen Dokument
+% verwendeten Dateien (ohne die Haupt-Datei) ein.
+% \meta{gliederung} ist ein Gliederungsbefehl (wie '\section',
+% '\chapter' etc., Vorgabewert ist '\section*' (für einen
+% unnummerierten Abschnitt).
+%
+% Damit eine Liste ausgegeben wird, muss in der Präambel des Dokumentes
+% ein '\listfiles' auftauchen. (Andernfalls gibt '\printFileList' nur
+% eine Warnung auf der Konsole aus und tut sonst nichts.)
+%
+% Die Liste selbst ist erst ab dem zweiten \LaTeX-Lauf im Dokument zu
+% sehen (und enthält ab dem dritten Lauf dann auch die Dateilisten-Datei).
+%
+% \DescribeOption{showpages}\DescribeOption{noshowpages}
+% Die Liste wird als 4- oder 5-spaltige Tabelle gesetzt: Falls die
+% Option 'showpages' übergeben wurde, ist auch die Seitennummer, die
+% zum Ladezeitpunkt der Datei aktuell war, enthalten ($0$ für alle
+% Dateien, die in der Präambel geladen wurden), mit 'noshowpages'
+% fehlt diese Spalte. ('showpages' ist der Vorgabewert.)
+%
+%
+% Falls das Paket \pack{babel} vor oder nach diesem Paket geladen wird,
+% sind die Spaltenüberschriften, die Gliederung sowie die Präambel auch
+% übersetzbar -- zur Zeit werden von diesem Paket die Sprachoptionen
+% 'english', 'german', 'ngerman' und 'esperanto' unterstützt. Wer weitere
+% Übersetzungen beisteuern will, melde sich bei mir.
+%
+% Ansonsten \DescribeMacro{\fileListName}\DescribeMacro{\fileListPreamble}
+% \DescribeMacro{\fileNameName}\DescribeMacro{\dateName}
+% \DescribeMacro{\verName}\DescribeMacro{\descriptionName} kann
+% durch Neudefinition der Befehle
+% '\fileListName' (Überschrift), '\fileListPreamble' (einleitender Text,
+% normalerweise mit Fußnote),
+% sowie '\fileNameName', '\dateName', '\verName' und '\descriptionName'
+% (Tabellenkopf) der Inhalt der statischen Texte verändert werden.
+% (Auch das wirkt sich erst im folgenden \LaTeX-Lauf aus.)
+%
+% Im folgenden mal ein Beispiel aus diesem Dokument, erzeugt mit:
+%\begin{verbatim}
+% \printFileList[\subsubsection]
+%\end{verbatim}
+%
+% \printFileList[\subsubsection]
+%
+% \subsection{Abhängigkeiten}
+%
+% Für die Funktion des Paketes sind die Pakete \pack{rcsinfo}
+% (Jürgen Vollmer) im RCS-Modus bzw. \pack{svninfo} (Achim D. Bruckner)
+% im Subversion-Modus und \pack{ltxtable} -- damit auch \pack{tabularx},
+% \pack{longtable} (alle drei von David Carlisle) und \pack{array}
+% (Frank Mittelbach) -- notwendig. \pack{babel}
+% (Johannes Braams) wird, falls ebenfalls geladen, auch genutzt.
+%
+% Falls das Paket \pack{pauldoc} (von mir) ebenfalls geladen wird,
+% werden einige spezielle Anpassungen getroffen.
+%
+% Für das Setzen der Doku ist außerdem \pack{pauldoc} (von mir) und
+% \pack{dox} (von Didier Verna) notwendig.
+%
+% Für die korrekte Erkennung, dass der Name der Hauptdatei schon in
+% der Liste der geladenen Dateien auftaucht, ist der primitive
+% \eTeX-Befehl '\scantokens' notwendig -- falls kein \eTeX\ verwendet
+% wird, kann eine nicht-Erkennung (und damit am Ende das
+% doppelte Auftauchen der Haupt-Datei) vorkommen. Details dazu bei
+% der Diskussion der Optionen 'cat12' und 'nocat12', sowie im
+% Implementations-Teil.
+%
+% \subsection{Wunschliste}
+%
+% Ein paar Ideen, die ich gerne mal umsetzen möchte, aber noch nicht dazu
+% gekommen bin:
+%
+% \begin{itemize}
+% \item eine Option, um die Datumsdarstellung in der Dateiliste auf
+% das ISO-Format (YYYY-MM-DD) umzustellen.
+% \item eine Option, um das 'v' in den Versionsnummern wegzulassen.
+% \item eine Möglichkeit, doppelt geladene Dateien in der Liste nicht
+% doppelt aufzuführen. (Das kann etwa passieren, wenn man mitten im
+% Dokument die Eingabe-Kodierung wechselt.)
+% \item eine Möglichkeit, die Liste zu filtern, und z.B. nur '.tex'-Dateien
+% aufzunehmen. Das könnte z.B. nützlich sein, wenn man nur die
+% "`Inhalts-Dateien"' eines zusammengesetzen Dokumentes aufführen will,
+% nicht aber alle verwendeten Package-Dateien.
+% \item Falls eine Versionsnummer fehlt, sollte das erkannt werden, und
+% die Spalte leergelassen werden, anstatt den Beschreibungs-Text in die
+% Versionsspalte zu setzen.
+% \end{itemize}
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \makeatother
+% \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 \~}
+% \makeatletter
+%
+% \DoNotIndex{\',\@currname,\^,\begin,\end,\begingroup,\endgroup,
+% \csname,\endcsname,\day,\def,\DeclareOption,\do,
+% \edef,\else,\endinput,\expandafter,\fi,\footnote,
+% \IfFileExists,\ifx,\immediate,\LaTeX,\let,\makeatletter,
+% \makeatother,\month,\newcommand,\newif,\newwrite,
+% \protect,\relax,\renewcommand,\space,\string,\textbf,
+% \the,\two@digits,\u,\write,\xdef,\year}
+%
+% ^^A damit Seitennummern und Zeilennummern im
+% ^^A Index nicht durcheinanderkommen.
+%
+% \setcounter{CodelineNo}{99}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Optionen}
+% \changes{v0.1}{2006/04/02}{Optionen \texttt{addmain} und \texttt{noaddmain} hinzugefügt.}
+% \begin{option}{addmain}
+% \begin{option}{noaddmain}
+% \begin{macro}{\if@dateiliste@addMain}
+% Wir merken uns die ausgewählte Option in einem '\if'.
+% \begin{macrocode}
+\newif\if@dateiliste@addMain
+\DeclareOption{addmain} {%
+ \@dateiliste@addMaintrue
+}
+\DeclareOption{noaddmain} {%
+ \@dateiliste@addMainfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \begin{option}{cat12}
+% \begin{option}{nocat12}
+% \begin{macro}{\if@dateiliste@catxii}
+% \begin{macro}{\if@dateiliste@nocatxii}
+% \changes{v0.2}{2006/04/19}{Optionen 'cat12' und 'nocat12' hinzugefügt.}
+% Das gleiche gilt für 'cat12'/'nocat12' -- allerdings haben wir hier
+% zwei '\if's, da es auch noch die Möglichkeit gibt, keine der beiden
+% Optionen auszuwählen.
+% \begin{macrocode}
+\newif\if@dateiliste@catxii \@dateiliste@catxiifalse
+\newif\if@dateiliste@nocatxii \@dateiliste@nocatxiifalse
+\DeclareOption{cat12} {%
+ \@dateiliste@catxiitrue
+}
+\DeclareOption{nocat12} {%
+ \@dateiliste@nocatxiitrue
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \begin{option}{showpages}
+% \begin{option}{noshowpages}
+% \begin{macro}{\if@dateiliste@showpages}
+% Eine weiteres Optionspaar betrifft die Anzeige der Seitennummern
+% in der Dateiliste.
+% \begin{macrocode}
+\newif\if@dateiliste@showpages \@dateiliste@showpagesfalse
+\DeclareOption{showpages} {%
+ \@dateiliste@showpagestrue
+}
+\DeclareOption{noshowpages} {%
+ \@dateiliste@showpagesfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+%
+% \changes{v0.5}{2009/10/31}{Optionen für Subversion-Unterstützung}
+% \begin{option}{svn}
+% \begin{option}{subversion}
+% \begin{option}{rcs}
+% \begin{option}{cvs}
+% \begin{macro}{\if@dateiliste@subversion}
+% Das vierte Optionspaar: 'svn' (mit Alias 'subversion') für
+% Subversion-'Id's, 'rcs' (mit Alias 'cvs') für CVS/RCS-'Id's.
+% Diese unterscheiden sich vor allem im Format der Datumsangaben.
+% (Hier merken wir uns nur die Optionen, die Arbeit geschieht in
+% Abschnitt \ref{versionsnummern}.
+% \begin{macrocode}
+\newif\if@dateiliste@subversion \@dateiliste@subversionfalse
+\DeclareOption{svn} {%
+ \@dateiliste@subversiontrue
+}
+\DeclareOption{subversion} {%
+ \@dateiliste@subversiontrue
+}
+\DeclareOption{cvs} {%
+ \@dateiliste@subversionfalse
+}
+\DeclareOption{rcs} {%
+ \@dateiliste@subversionfalse
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{option}
+% \end{option}
+% \end{option}
+% Die Standard-Optionen sind 'addmain', 'showpages' und 'rcs'.
+% \begin{macrocode}
+\ExecuteOptions{addmain}
+\ExecuteOptions{showpages}
+\ExecuteOptions{rcs}
+\ProcessOptions
+% \end{macrocode}
+%
+% \subsection{Seitenzahlen in die Dateiliste}
+% \label{showpages}
+% \begin{macro}{\@addtofilelist}
+% Falls nicht die Option 'noshowpages' angegeben wurde,
+% merken wir uns die Seitennummern aller eingebundenen
+% Dateien. Dazu definieren wir '\@addtofilelist' neu, um
+% neben dem Hinzufügen des Namens zur Dateiliste auch die
+% jeweilige Seitennummer in einem eigenen Makro zu merken.
+% \begin{macrocode}
+ \if@dateiliste@showpages
+ \CheckCommand*{\@addtofilelist}[1]{\xdef\@filelist{\@filelist,#1}}
+ \renewcommand*{\@addtofilelist}[1]{%
+ \expandafter\xdef%
+ \csname dateiliste@page@#1\endcsname%
+ {\thepage}%
+ \xdef\@filelist{\@filelist,#1}%
+ }
+ \fi
+% \end{macrocode}
+% \changes{v0.5}{2009/11/03}{Seitenzahlen für Präambel-Dateien jetzt 0}
+% Damit die Seitennummern für in der Präambel geladene Pakete etc.
+% alle 0 sind, setzen wir die Seitenzahl jetzt auf 0, und bei Beginn
+% des Dokumentes wieder auf 1.
+% \begin{macrocode}
+\setcounter{page}{0}
+\AtBeginDocument{\stepcounter{page}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Aktuelle Versionsnummern in der Dateiliste}
+% \label{versionsnummern}
+% Wir wollen in der durch '\ProvideFileInfo'
+% provozierten Ausgabe automatisch sinnvolle Infos haben, mit
+% Daten, die von unserem Versionskontrollsystem eingefüllt
+% werden. Zur Zeit unterstützen wir das Format von CVS und RCS
+% (schon seit Version 0.0) und das Format von Subversion (seit
+% Version 0.5).
+%
+% \subsubsection{Subversion-Modus}
+% Die Fallunterscheidung funktioniert mit diesem '\if@...', welches
+% durch Paket-Optionen initialisiert wurde.
+% \begin{macrocode}
+\if@dateiliste@subversion
+% \end{macrocode}
+%
+% Im Subversion-Modus laden wir \pack{svninfo}.
+%
+% Wir verwenden die Parameter 'nofancy', weil sonst die Fußzeile
+% umgestellt wird, und 'notoday', weil sonst das aktuelle Datum
+% umgestellt wird. 'final' verhindert, dass die Fußzeile geändert
+% wird (wir brauchen die Infos ja nur für unsere Dateiliste).
+% \changes{v0.5}{2009/10/31}{\pack{svninfo} statt \pack{rcsinfo}, falls
+% wir im Subversion-Modus sind.}
+% \begin{macrocode}
+\RequirePackage[nofancy, notoday, final]{svninfo}[2006/05/11]
+% \end{macrocode}
+%
+% \begin{macro}{\ProvideFileInfos}\noindent\marg{id-string}\marg{kurzbeschreibung}
+%
+% \changes{v0.5}{2009/11/01}{Neuimplementation für Subversion.}
+%
+% \begin{macrocode}
+\newcommand*{\ProvideFileInfos}[2] {%
+% \end{macrocode}
+% Zunächst lassen wir '\svnInfo' den \meta{id-string} analysieren.
+% Dies definiert (unter anderem) die Makros '\svnInfoFile' (der
+% Dateiname), '\svnInfoDay', '\svnInfoMonth' und '\svnInfoYear' (Datum)
+% und '\svnInfoRevision' (die Revisionsnummer, in der die Datei das
+% letzte mal geändert wurde).
+%
+% Das Leerzeichen nach dem '#1' ist notwendig, damit '\svnInfo'
+% erkennt, wo der \meta{id-string} aufhört -- in der Definition steht
+% da nämlich ein Leerzeichen am Ende der Parameterliste.
+% \begin{macrocode}
+ \svnInfo #1 %
+% \end{macrocode}
+%
+% Dann rufen wir '\ProvidesFile' aus dem \LaTeX-Kernel auf.
+% \begin{macrocode}
+ \ProvidesFile%
+% \end{macrocode}
+% Als erster Parameter wird der Dateiname übergeben, der von '\svnInfo'
+% ermittelt wurde.
+% \begin{macrocode}
+ {\svnInfoFile}%
+% \end{macrocode}
+% Dann das, wofür wir das ganze eigentlich machen: Das Datum (im
+% Format YYYY/MM/DD, weil das von den \LaTeX-Paketen auch
+% so gemacht wird), ein Leerzeichen, dann die Versionsnummer
+% (mit einem 'v' davor). Schließlich hängen wir noch
+% \meta{kurzbeschreibung} an.
+% \begin{macrocode}
+ [\svnInfoYear/\svnInfoMonth/\svnInfoDay\space
+ v\svnInfoRevision\space #2]%
+% \end{macrocode}
+% '\ProvidesFile' definiert damit jetzt ein Makro ('\ver@'\meta{dateiname})
+% mit diesem Text als Inhalt, welches später von '\@dofilelist' (und
+% unserem '\@writefilelist') verwendet wird.
+%
+% Außer dem Versionsstring wollen wir uns (falls dies per Package-Option
+% eingeschaltet wurde) noch die Seitennummer
+% merken, bei der die Datei anfing -- das macht '\addtofilelist',
+% welches in Abschnitt \ref{showpages} definiert wurde, und von
+% '\ProvidesFile' aufgerufen wird.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{RCS-Modus}
+%
+% \begin{macrocode}
+\else% \if@dateiliste@subversion
+% \end{macrocode}
+%
+% Im RCS-Modus laden wir das Paket \pack{rcsinfo}.
+%
+% Wir verwenden die Parameter 'nofancy', weil sonst die Fußzeile
+% umgestellt wird, und 'notoday', weil sonst das aktuelle Datum
+% umgestellt wird.
+% \changes{v0.1}{2006/03/30}{\pack{rcsinfo} nun mit \texttt{notoday}-Parameter.}
+% \begin{macrocode}
+\RequirePackage[nofancy, notoday]{rcsinfo}
+% \end{macrocode}
+%
+% \begin{macro}{\ProvideFileInfos}\noindent\marg{id-string}\marg{kurzbeschreibung}
+%
+%
+% \begin{macrocode}
+\newcommand*{\ProvideFileInfos}[2] {%
+% \end{macrocode}
+% Zunächst lassen wir '\rcsInfo' den \meta{id-string} analysieren. Dies definiert
+% (unter anderem) die Makros '\rcsInfoFile' (der Dateiname), '\rcsInfoDate'
+% (Datum, im 'YYYY/MM/DD'-Format) und '\rcsInfoRevision' (die Versionsnummer).
+%
+% Das Leerzeichen nach dem '#1' ist notwendig, damit '\rcsInfo' erkennt, wo
+% der \meta{id-string} aufhört - in der Definition steht da nämlich ein Leerzeichen
+% am Ende der Parameterliste.
+% \begin{macrocode}
+ \rcsInfo #1 %
+% \end{macrocode}
+% Dann rufen wir '\ProvidesFile' aus dem \LaTeX-Kernel auf.
+% \begin{macrocode}
+ \ProvidesFile%
+% \end{macrocode}
+% Als erster Parameter wird der Dateiname übergeben, der von '\rcsInfo' ermittelt wurde.
+% Mittels '\expandafter\@firstofone' entfernen wir dabei noch das von '\rcsInfo' (zumindest
+% in meiner Version) eingebaute Leerzeichen am Anfang
+% (welches ja einen anderen Namen ergibt und damit verhindern würde, dass die Information der
+% richtigen Datei zugeschrieben wird).
+% \begin{macrocode}
+ {\expandafter\@firstofone\rcsInfoFile}%
+% \end{macrocode}
+% Dann das, wofür wir das ganze eigentlich machen: Das Datum, ein
+% Leerzeichen, dann die Versionsnummer (mit einem 'v' davor). Schließlich
+% hängen wir noch \meta{kurzbeschreibung} an.
+% \begin{macrocode}
+ [\rcsInfoDate\space v\rcsInfoRevision\space #2]%
+% \end{macrocode}
+% '\ProvidesFile' definiert jetzt ein Makro ('\ver@'\meta{dateiname}) mit
+% diesem Text als Inhalt, welches später von '\@dofilelist' (und
+% unserem '\@writefilelist') verwendet wird.
+% Außer dem Versionsstring wollen wir uns (falls dies per Package-Option
+% eingeschaltet wurde) noch die Seitennummer
+% merken, bei der die Datei anfing.
+% \begin{macrocode}
+}
+\fi% \if@dateiliste@subversion
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Dateiliste}
+%
+% \changes{v0.1}{2006/03/31}{\pack{ltxtable} verwendet.}
+% Da die Liste ziemlich lang (länger als eine Seite) werden kann, verwende
+% ich \pack{longtable} statt der eingebauten (oder der von \pack{array} verbesserten)
+% 'tabular'-Umgebung. Und damit
+% ich in der letzten Spalte nicht die Breite fest einstellen muss, sondern
+% einfach die restliche Breite (abhängig von Seitenbreite und der Breite der
+% anderen Spalten, welche ja abhängig vom Inhalt ist) nehmen kann, lade
+% ich \pack{ltxtable}, welches \pack{longtable} mit \pack{tabularx} kreuzt
+% (und beide Pakete auch lädt).
+%
+% \begin{macrocode}
+\RequirePackage{ltxtable}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\dateiliste@preInclude}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\dateiliste@postInclude}
+% \changes{v0.1}{2006/03/31}{Neu}
+% Diese beiden Macros werden vor bzw. nach dem
+% Laden (und setzen) der Dateiliste aufgerufen.
+% Sie sorgen dafür, dass \verb+'+ innerhalb der Liste
+% nicht mehr in den Verbatim-Mode schaltet, wie das
+% von \pack{pauldoc} eingestellt wird.
+% Deswegen werden sie auch nur dann so definiert, wenn
+% \pack{pauldoc} geladen wurde. (Und weil '\@ifpackageloaded'
+% nur in der Präambel erlaubt ist, müssen wir die beiden
+% Befehle schon zu Beginn des Dokumentes definieren, anstatt
+% einfach die Abfrage dann zu machen, wenn es gebraucht
+% wird.)
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{pauldoc}{%
+ \newcommand*{\dateiliste@preInclude}{\DeleteShortVerb{\'}}%
+ \newcommand*{\dateiliste@postInclude}{\MakeShortVerb{\'}}%
+ }{%
+ \newcommand*{\dateiliste@preInclude}{\relax}%
+ \newcommand*{\dateiliste@postInclude}{\relax}%
+ }%
+}%
+% \end{macrocode}
+% Die beiden Makros kann man sich auch selbst umdefinieren,
+% falls andere Pakete Inkompatibilitäten ergeben.
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Ausgabe der Liste}
+%
+% \begin{macro}{\printFileList}\noindent\oarg{gliederung}
+% \changes{v0.1}{2006/04/02}{Fast komplett neue Implementation,
+% entsprechend auch anderes Ergebnis.}
+%
+% Der Vorgabewert für \meta{gliederung} ist '\section*',
+% also ein unnummerierter Abschnitt.
+% \begin{macrocode}
+\newcommand*{\printFileList}[1][\section*] {% \printFileList
+% \end{macrocode}
+% Zunächst überprüfen wir, ob '\listfiles' in der Präambel gegeben
+% wurde. Dies zeigt sich darin, dass das Kommando '\dofilelist'
+% definiert ist. Andernfalls gibt es eine Warnung, und wir machen
+% nichts.
+% \begin{macrocode}
+ \@ifundefined{@dofilelist}
+ {%
+ \PackageWarning{dateiliste}
+ {
+ \protect\printFileList\space works only if
+ \protect\listfiles\space is given in the preamble.
+ }
+ }%
+ {% else (\@ifundefined{@dofilelist})
+% \end{macrocode}
+% Andernfalls beginnen wir einen neuen Abschnitt (oder ein Kapitel oder was auch immer mit
+% \meta{gliederung} festgelegt wurde), mit Namen '\fileListName' und einem Label,
+% falls man mal von wo anders darauf verweisen möchte.
+% Danach kommt etwas beschreibender Text in '\fileListPreamble'.
+% \begin{macrocode}
+ #1{\fileListName}\label{sec:filelist}%
+ \fileListPreamble
+% \end{macrocode}
+% In der Datei \meta{jobname}'.filelist' befindet sich nach dem ersten
+% \LaTeX-Lauf der Inhalt der Tabelle (siehe unten). Wir überprüfen zunächst,
+% ob die Datei schon existiert.
+% \begin{macrocode}
+ \IfFileExists{\jobname.filelist}{%
+% \end{macrocode}
+% \begin{macro}{\dateiliste@addtofilelist}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\@addtofilelist}
+% \changes{v0.1}{2006/03/31}{neu: Umdefinition.}
+% Falls ja, dann definieren wir zunächst '\@addtofilelist' um,
+% da '\LTXtable' die Datei \meta{jobname}'.filelist' mehrfach einliest, wir
+% aber nur einen Eintrag in der Dateiliste haben wollen.
+% Wir verwenden nicht einfach '\@gobble', um in dem Fall, dass
+% durch das Setzen der Datei weitere Dateien (Schriften etc.)
+% geladen werden, diese doch aufzunehmen. (Wir vergleichen also
+% den Dateinamen mit dem unserer Dateinamens-Datei, und rufen
+% im Fall der Nichtübereinstimmung das Original-'\@addtofilelist' auf.)
+% \begin{macrocode}
+ \let \dateiliste@addtofilelist = \@addtofilelist
+ \def\@addtofilelist####1{%
+ \edef\dateiliste@tempa{####1}%
+ \edef\dateiliste@tempb{\jobname.filelist}\relax%
+ \ifx\dateiliste@tempa\dateiliste@tempb
+ \relax
+ \else
+ \dateiliste@addtofilelist{####1}
+ \fi
+ }%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% '\dateiliste@preInclude' schaltet \verb+'+ als verbatim-Char ab (und
+% das Makro '\dateiliste@postInclude' schaltet es nachher wieder an),
+% falls \pack{pauldoc} geladen wurde (ansonsten tun sie nichts, falls
+% nicht von jemand anders neudefiniert). Die
+% Datei selbst wird mittels '\LTXtable' geladen.
+% \begin{macrocode}
+ \dateiliste@preInclude
+ \LTXtable{\linewidth}{\jobname.filelist}%
+ \dateiliste@postInclude
+% \end{macrocode}
+% Danach stellen wir '\@addtofilelist' wieder her und
+% fügen unsere Dateilisten-Datei auch hinzu.
+% \begin{macrocode}
+ \let \@addtofilelist = \dateiliste@addtofilelist
+ \@addtofilelist{\jobname.filelist}%
+ }
+% \end{macrocode}
+% Falls \meta{jobname}'.filelist' nicht vorhanden war, geben
+% wir einen Hinweistext aus, dass man \LaTeX\ noch einmal
+% laufen lassen soll.
+% \begin{macrocode}
+ {%
+ \AtEndDocument{\PackageWarning{dateiliste}{
+ Run LaTeX again to include the File list.
+ }}%
+ }%
+% \end{macrocode}
+%
+%
+% \subsubsection{Erstellen der Liste}
+%
+% Jetzt noch ein paar Befehle, um die Listen-Datei zu generieren \ldots
+% (Wir sind immer noch innerhalb von '\printFileList', das alles passiert
+% also nur, wenn dieser Befehl aufgerufen wird.)
+%
+% Am Ende des Dokumentes -- d.h., wenn die Dateiliste vollständig gesammelt
+% wurde -- schreiben wir sie -- mit den passenden Formatierungsanweisungen --
+% in eine Datei.
+% (Das ganze in einer Gruppe, damit nichts kaputtgeht, und temporäre Makros
+% nachher wieder freigegeben werden.)
+% \begin{macrocode}
+ \AtEndDocument{%
+ \begingroup
+ \@writefilelist
+ \endgroup
+ }%
+% \end{macrocode}
+% \begin{macro}{\@writefilelist}
+% Eine Variante von '\@dofilelist', die den Inhalt -- als Tabellenzeilen -- in
+% die Datei \meta{jobname}'.filelist' schreibt.
+% \begin{macrocode}
+ \newcommand*{\@writefilelist}{% \@writefilelist
+ \newwrite\dateiliste@file
+ \immediate\openout\dateiliste@file = \jobname.filelist
+% \end{macrocode}
+% Zunächst schreiben wir eine '\ProvidesFile'-Anweisung mit dem aktuellen Datum
+% in die '.filelist'-Datei. (Das hat den Effekt, dass diese Datei selbst auch
+% in der Liste erscheint.)
+% \begin{macrocode}
+ \edef\dateiliste@today{%
+ \the\year/\two@digits{\the\month}/\two@digits{\the\day}}%
+ \immediate\write\dateiliste@file{%
+ \string\ProvidesFile{\jobname.filelist}%
+ [\dateiliste@today\space --- automatically %
+ generated filelist]%
+ }%
+% \end{macrocode}
+% Die eigentliche Liste wird in einer 'longtable' gesetzt.
+% Diese soll drei linksbündig gesetzte Spalten ('l') und dann
+% eine mit einem Absatz ('X' -- mittels \pack{ltxtable} aus \pack{tabularx}
+% importiert), welche den restlichen Platz ausfüllt, enthalten.
+% Damit die letzte Spalte linksbündig (statt Blocksatz) wird, verwenden
+% wir '>{\raggedright\arraybackslash}' als Modifikator.\footnote{wie im \LaTeX-Begleiter,
+% zweite Auflage, Beispiel 5-3-2 vorgeschlagen.}
+% \changes{v0.3}{2006/05/10}{jetzt auch die letzte Spalte linksbündig -- das sieht
+% besser aus.}
+% \begin{macrocode}
+ \if@dateiliste@showpages
+ \def\@tempa{lrll}
+ \else
+ \def\@tempa{lll}
+ \fi
+ \immediate\write\dateiliste@file{%
+ \string\LTleft=0pt%
+ \string\LTright=0pt%
+ \string\begin{longtable}{\@tempa>{%
+ \string\raggedright\string\arraybackslash}X}%
+% \end{macrocode}
+% Die Überschrift -- aus übersetzbaren Textteilen, siehe unten, bestehend --
+% wiederholt sich auf jeder Seite (deswegen '\endhead' anstatt '\\').
+% \begin{macrocode}
+ \string\textbf{\fileNameName} \expandafter&%
+ \if@dateiliste@showpages
+ \string\textbf{\pageName} &
+ \fi
+ \string\textbf{\dateName} &
+ \string\textbf{\verName} &
+ \string\textbf{\descriptionName}
+ \string\endhead%
+ }%
+% \end{macrocode}
+% Jetzt kommt die Schleife mit den einzelnen Dateien.
+% Das ist zum Großteil abgekupfert von '\@dofilelist' aus
+% dem \LaTeX-Kernel ('ltfiles.dtx'), welches die Liste zum
+% Terminal ausgibt.
+% \begin{macrocode}
+ \@for\@currname:=\@filelist\do{% \@for
+% \end{macrocode}
+% Zunächst bestimmen wir den genauen Dateinamen -- d.h. wir hängen,
+% falls nötig, ein '.tex' an. Außerdem finden wir den zugehörigen
+% Versions-String heraus.
+% \begin{macrocode}
+ \filename@parse\@currname%
+ \edef\dateiliste@filename{%
+ \filename@base.%
+ \ifx\filename@ext\relax tex\else\filename@ext\fi}%
+ \expandafter\let\expandafter\dateiliste@fileversion%
+ \csname ver@\dateiliste@filename\endcsname%
+% \end{macrocode}
+% Das Makro '\dateiliste@page@'\meta{name} enthält die Seitennummer
+% der Datei \meta{name}. Falls es nicht definiert ist, wurde sie
+% vor dem \pack{dateiliste}-Package geladen, also vor der ersten Seite.
+% \changes{v0.5}{2009/11/03}{undefinierte Seitenzahlen auf 0 statt 1}
+% Wir merken uns das Ergebnis in '\dateiliste@filepage'.
+% \begin{macrocode}
+ \if@dateiliste@showpages
+ \@ifundefined{dateiliste@page@\@currname}
+ {%
+ \def\dateiliste@filepage{0}%
+ }{%
+ \expandafter\let\expandafter\dateiliste@filepage%
+ \csname dateiliste@page@\@currname\endcsname%
+ }%
+ \fi
+% \end{macrocode}
+% Jetzt schreiben wir, durch '&' getrennt, die einzelnen Felder raus.
+% De facto merken wir uns zuerst alles mittels '\edef' in der Variable
+% '\dateiliste@zeile'.
+%
+% Zunächst der Dateiname (dabei durch den Filter '\dateiliste@escapeii'
+% geschickt, um z.B. '_' unschädlich zu machen), \ldots
+% \changes{v0.5}{2009/11/03}{Dateinamen werden jetzt für die Liste escaped.}
+% \begin{macrocode}
+ \edef\dateiliste@zeile{%
+ \expandafter\dateiliste@escapeii\expandafter{%
+ \dateiliste@filename
+ }
+ \space& %
+% \end{macrocode}
+% \ldots\ dann die Seitennummer (falls wir diese überhaupt anzeigen wollen)
+% \begin{macrocode}
+ \if@dateiliste@showpages
+ \dateiliste@filepage
+ \space& %
+ \fi
+% \end{macrocode}
+% \ldots\ dann entweder ein "`---"' (falls kein Versions-String gegeben
+% wurde), \dots
+% \begin{macrocode}
+ \ifx\dateiliste@fileversion\relax
+ ---
+ \else
+% \end{macrocode}
+% \ldots\ oder der Versionsstring selbst, an den ersten beiden Leerzeichen
+% durch '&' getrennt. Dafür verfüttern wir das expandierte
+% '\dateiliste@fileversion' (also den Versionsstring)
+% an '\dateiliste@parse@ver'. (Für den Fall, dass da nicht genug
+% Leerzeichen drin sind, sind am Ende noch ein paar '{}' mit Leerzeichen
+% dazwischen -- die werden ja später nicht ausgegeben.)
+% \begin{macrocode}
+ \expandafter\dateiliste@parse@ver
+ \dateiliste@fileversion{} {} {} \dateiliste@parse@ver
+ \fi
+% \end{macrocode}
+% Und jetzt noch ein '\\', um die Tabellenzeile zu beenden.
+% \begin{macrocode}
+ \string\\}% \edef
+% \end{macrocode}
+% Jetzt haben wir alles in '\dateiliste@zeile' gesammelt, und können
+% es gebündelt ausgeben:
+% \begin{macrocode}
+ \immediate\write\dateiliste@file{%
+ \dateiliste@zeile
+ }%
+ }% \@for
+% \end{macrocode}
+% Nach der Schleife beenden wir die Tabelle und schließen
+% dann die Datei wieder.
+% \begin{macrocode}
+ \immediate\write\dateiliste@file{\string\end{longtable}}
+ \immediate\closeout\dateiliste@file
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dateiliste@parse@ver}\meta{datum}\textvisiblespace\meta{version}\textvisiblespace\meta{rest}'\dateiliste@parse@ver'
+%
+% \changes{v0.1}{2006/03/31}{Neu}
+% Dieses Makro nimmt zwei durch Leerzeichen getrennte Parameter, und
+% gibt sie, mit zusätzlichen '&', wieder zurück. Das letzte Stück
+% wird noch gefiltert, damit '\bla' kein Problem bildet.
+%
+% TODO: Gelegentlich fehlt die Versionsnummer. Damit dann nicht der Anfang
+% des folgenden Textes (wie 'hyperref' bei hyperref.cfg oder 'package'
+% bei pst-node.sty) erscheint, sollte noch eine Abfrage hinein, ob '##2'
+% mit 'v' oder einer Ziffer beginnt. Andernfalls sollte alles in der
+% dritten Spalte angezeigt werden. (Leider noch nicht
+% implementiert.)
+% \changes{v0.5}{2009/11/03}{Escapen des Beschreibungs-Textes.}
+%
+% \begin{macrocode}
+ \def\dateiliste@parse@ver##1 ##2 ##3\dateiliste@parse@ver{%
+ ##1 & ##2 &
+ % \dateiliste@general@escape{##3}{\@backslashchar}%
+ % {\string\textbackslash{}}%
+ \dateiliste@escapeii{##3}%
+ \relax
+ }%
+% \end{macrocode}
+% \end{macro}
+% Damit ist der else-Teil und auch das ganze Makro '\printFileList' zu Ende.
+% \begin{macrocode}
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Escapen gefährlicher Makros und Zeichen}
+% \label{escape}
+%
+% Ein Problem, welches mir durch Otto Schindler und Jens Goldhammer
+% (unabhängig voneinander) mitgeteilt wurde: Enthält der Dateiname
+% oder die Kurzbeschreibung nicht direkt von LaTeX verarbeitbare Zeichen
+% (im Dateinamen sind z.B. '_', in der Kurzbeschreibung z.B.
+% Makronamen üblich), gibt es Probleme. (Offensichtlich muss man
+% bei Makronamen sich etwas anstrengen, um sie da rein zu bekommen, aber
+% es geht.)
+%
+% Wir müssen also diese Zeichen vor dem Rausschreiben ersetzen.
+%
+% Ein (nicht fertiggestellter) Ansatz ist in Abschnitt \ref{alt-ersetzung}
+% zu finden. Hier ein anderer Ansatz, der prinzipiell zu funktionieren
+% scheint.
+%
+%
+% \begin{macro}{\dateiliste@escapeii}\marg{text}
+%
+% Geht \meta{text} tokenweise durch und maskiert alles, was gefährlich
+% werden könnte.
+%
+% Zunächst übergeben wir die ganze Zeichenkette an das nächste Makro,
+% mit einigen im echten Text wohl nicht vorkommenden Begrenzern.
+% \begin{macrocode}
+\newcommand*{\dateiliste@escapeii}[1]{%
+ \dateiliste@escape@@ii#1\@nil. \@@nil\@@
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% Da ein mit '#1#2' definiertes Makro (um einzelne Token abzutrennen)
+% Leerzeichen zwischen Makro-Parametern einfach verschluckt,
+% müssen wir zunächst eine Wort-Trennung vornehmen -- dafür dieses Makro.
+% \begin{macro}{\dateiliste@escape@@ii}
+% \meta{wort}\textvisiblespace\meta{rest}'\@@'
+%
+% Wir geben das erste \meta{wort} an das nächste Makro
+% ('\dateiliste@escape@ii') weiter und arbeiten dann rekursiv
+% auf \meta{rest}.
+%
+% '#2' ist das erste Token von \meta{rest} -- ist
+% das '\@@nil', so haben wir das letzte Wort erreicht, denn das
+% Leerzeichen ist jenes, das von '\dateiliste@escapeii' hinter '\@nil.'
+% eingefügt wurde. Das ist dann also unsere Abbruchbedingung, wir müssen
+% nur noch \meta{wort} abarbeiten.
+%
+% Ansonsten geben wir nach dem ersten Wort ein Leerzeichen aus
+% (ein solches hatten wir ja zwischen \meta{wort} und \meta{rest}), und
+% rufen uns selbst mit \meta{rest} auf.
+%
+% \begin{macrocode}
+\def\dateiliste@escape@@ii#1 #2#3\@@{%
+ \ifx\@@nil#2
+ % nur ein Wort, und das '\@nil' ist schon in '#1' drin.
+ \afterfi{%
+ \dateiliste@escape@ii#1\@@%
+ }%
+ \else
+ %Rekursion
+ \afterfi{%
+ \dateiliste@escape@ii#1\@nil\@@%
+ \space%
+ \dateiliste@escape@@ii#2#3\@@%
+ }%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dateiliste@escapeii}\meta{token}\meta{rest}'\@@'
+%
+% Maskiert \meta{token} (per Übergabe an '\dateiliste@escapetoken'),
+% und arbeitet danach rekursiv mit \meta{rest}.
+%
+% Irgendwo in \meta{rest} taucht ein '\@nil' auf -- wenn wir bei dem
+% angekommen sind, sind wir fertig.
+%
+% Das '\@empty' ist notwendig, falls ein leerer Parameter (also '{}')
+% als '#1' übergeben wurde, da ansonsten '\@nil' mit '\else' verglichen
+% wird (und der '\else'-Teil also nicht ausgeführt wird). So wird in
+% diesem Fall '\@nil' mit '\@empty' verglichen (falsch), und der
+% else-Teil tritt ein.
+%
+% \begin{macrocode}
+\def\dateiliste@escape@ii#1#2\@@{%
+ \ifx#1\@nil
+ \@empty
+ \else
+ \afterfi{%
+ \dateiliste@escapetoken{#1}%
+ \dateiliste@escape@ii#2\@@
+ }%
+ \fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dateiliste@escapetoken}\marg{token}
+%
+% Dieses Makro maskiert ein einzelnes Token für
+% die Ausgabe in eine Datei und nachheriges
+% Wiedereinlesen in die Tabelle.
+%
+% \begin{macrocode}
+\newcommand*{\dateiliste@escapetoken}[1] {%
+% \end{macrocode}
+% Zunächst der Test, ob \meta{token} zufälligerweise die leere
+% Zeichenkette ist. Falls ja, vergleicht das '\ifx' nicht
+% etwa '#1' mit '\@empty', sondern '\@empty' mit '\@empty',
+% und wir machen gar nichts (weil gleich danach das '\else' kommt).
+% \begin{macrocode}
+ \ifx#1\@empty\@empty
+ \else
+% \end{macrocode}
+% Ansonsten versuchen wir herauszufinden, ob \meta{token} eine
+% Kontrollsequenz o.ä. ist -- dann verwendet '\ifcat' die Kategorie
+% 16 (das ist keine der normalen Kategorien), wie auch bei '\relax'.
+%
+% In diesem Fall geben wir '\string' und eine String-Darstellung der
+% Kontrollsequenz aus, wodurch diese nach dem Einlesen angezeigt
+% (und nicht interpretiert) wird.
+% \begin{macrocode}
+ \ifcat\noexpand\relax
+ \noexpand#1%
+ \string\string\string#1%
+ \else
+% \end{macrocode}
+% Ansonsten haben wir es mit einem einzelnen Zeichen zu tun.
+%
+% Wir überprüfen, welchen '\catcode' das Zeichen hätte, wenn
+% es jetzt eingelesen würde. Hoffentlich ist das der gleiche,
+% der auch beim Einlesen der Dateiliste eingestellt ist, und zumindest
+% für 0-9 und 14 auch die normalen Zeichen. Wenn nicht, dann hat jemand
+% schon gewaltig die Catcodes verbogen, und ist selbst schuld.
+%
+% (Es ist leider nicht wirklich möglich, die Fallunterscheidung
+% direkt danach zu machen, welchen Catcode das Zeichen nun hat, außer
+% durch Vergleiche mit anderen Zeichen -- und das setzt wieder vorraus,
+% dass diese Zeichen noch ihre Original-Codes haben.)
+%
+% \begin{macrocode}
+ \ifcase \catcode\expandafter`#1 %
+ \string\textbackslash\space% (kann nur mit Tricks vorkommen) - \
+ \or\string\{% dito - {
+ \or\string\}% dito - }
+ \or\string\$% math shift (3) - $
+ \or\string\&% alignment tab (4) - &
+ \or(Kategorie 5)% end of line
+ \or\string\#% parameter (6) - sollte nicht vorkommen
+ \or\string\^{ }% superscript (7)
+ \or\string\_% subscript (8)
+ \or(Kategorie 9 - ignored)% (9) - sollte nicht vorkommen
+ \or#1% space (10)
+ \or#1% letter (11)
+ \or#1% other (12)
+ \or\string\string\string#1% active -- sollte auch normalerweise
+ % nicht vorkommen.
+ \or\%% comment (14) (dafür muss man auch etwas tricksen)
+ \or(Kategorie 15 - invalid)% (15 - sollte nicht vorkommen)
+ \else(andere Kategorie)% (und da es eigentlich nur
+ % Kategorien 0-15 gibt, auch das nicht.)
+ \fi% (\ifcase)
+ \fi% (\ifcat)
+ \fi% (\ifx)
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Hier noch ein Hilfs-Makro, geklaut\footnote{Ich habe absichtlich nur
+% dieses Makro hier kopiert, anstatt das \pack{gmutils}-Paket einzubinden,
+% denn \pack{gmutils} führt auch noch einige Redefinitionen in ganz
+% anderen Bereichen durch, die ich nicht brauche bzw. haben will.}
+% aus \pack{gmutils}\footnote{von Grzegorz Murzynowski, auf CTAN unter
+% '/macros/contrib/gmutils'.}:
+% \begin{macro}\afterfi\marg{cmd}
+%
+% Führt \meta{cmd} nach dem nächsten '\fi' aus -- alles dazwischen
+% wird übersprungen.
+% Damit kann man zu tiefe '\if'-Verschachtelungen im Falle einer
+% Rekursion vermeiden.
+%
+% Achtung: es geht hier wirklich um das lexikalisch nächste '\fi',
+% auch wenn das eigentlich zu einem dazwischen kommenden '\if' gehört.
+% In unserem Fall kommen solche pathologischen Fälle nicht vor -- falls
+% doch, verwende man analog definierte '\afteriffifi' etc. -- ich verweise
+% auf die Dokumentation von \pack{gmutils}.
+%
+% \begin{macrocode}
+\long\def\afterfi#1#2\fi{%
+ \fi#1%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@nil}
+% \begin{macro}{\@nil}
+% \begin{macro}{\@@}
+% Damit die '\ifx'-Vergleiche bei den Escape-Funktionen funktionieren, müssen
+% diese drei Makros unterschiedlich definiert sein. Der exakte Wert ist nicht
+% wichtig, da sie ja nie wirklich expandiert werden (sollten).
+% \begin{macrocode}
+\newcommand*\@@nil{\@@nil}%
+\newcommand*\@nil{\@nil}%
+\newcommand*\@@{\@@}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Alternatives Escapen}
+% \label{alt-ersetzung}
+% \begin{macrocode}
+%<*escape-original>
+% \end{macrocode}
+%
+% \begin{macro}{\dateiliste@general@escape}\marg{text}\marg{suche}\marg{ersetze}
+% Dieses Makro könnte (wenn es denn funktionieren würde) von
+% '\@writefilelist' innerhalb eines '\edef' oder '\write' aufgerufen
+% werden, um gefährliche Zeichen zu escapen, so dass sie nach dem Einlesen
+% im Dokument anzeigbar sind. Da es innerhalb des '\edef' sitzt, muss
+% es expandierbar sein, darf also kein '\def' etc. enthalten.
+% (Aha, da ist das Problem.)
+%
+% Zwei Ansätze:
+% \begin{enumerate}
+% \item Wir versuchen, unser '\dateiliste@general@escape' expandierbar
+% zu machen.
+% \item Wir bauen die API um, so dass es nicht zu seinem Ergebnis expandiert,
+% sondern dieses in einem (expandierbaren) Makro ablegt. Entsprechend muss
+% es dann \emph{vor} dem '\write' aufgerufen werden, und das Ergebnis-Makro
+% wird dann an das '\write' verfüttert.
+% \end{enumerate}
+% Der erste Ansatz wurde etwas abgewandelt als '\dateiliste@escapeii'
+% in Abschnitt \ref{escape} umgesetzt, und ist auch der, welcher jetzt
+% verwendet wird.
+%
+% Hier der erste Versuch, implementiert als einfache Ersetzungsfunktion.
+% Durch den '%<*escape-original>'-Abschnitt wird er nicht in die Package-Datei
+% aufgenommen. (Es wäre zusätzlich dazu auch noch eine entsprechende Änderung
+% in '\dateiliste@parse@ver' sowie in '\@writefilelist' notwendig.)
+%
+%
+% \begin{macrocode}
+\newcommand*{\dateiliste@general@escape}[3]{
+ \relax
+ \begingroup
+ \def\dateiliste@suche{#2}% -- dumme Fehlermeldung:
+ % ! Undefined control sequence. -- warum?
+ \def\dateiliste@ersetzung{#3}%
+ \dateiliste@general@escape@#1\@nil\@@%
+ \endgroup
+}%
+\def\dateiliste@gobbletoAt#1\@@{}%
+\def\dateiliste@general@escape@#1#2\@@{%
+ \ifx#1\@nil
+ \expandafter\dateiliste@gobbletoAt
+ \else
+ \dateiliste@general@escape@token{#1}%
+ \expandafter\dateiliste@general@escape@
+ \fi
+ #2\@@%
+}%
+\newcommand*{\dateiliste@general@escape@token}[1]{%
+% \if#3\space
+% \space%
+% \else
+ \if \datailiste@suche#1%
+ \dateiliste@ersetzung%
+ \else
+ #1%
+ \fi
+% \fi
+}%
+%</escape-original>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Anpassbare Texte und Übersetzungen}
+% \begin{macro}{\fileListPreamble}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\fileListName}
+% \begin{macro}{\fileNameName}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\dateName}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\verName}
+% \changes{v0.1}{2006/03/31}{Neu}
+% \begin{macro}{\descriptionName}
+% \changes{v0.1}{2006/03/31}{Neu}
+% Einige Namen für übersetzbare Texte -- standardmäßig auf Englisch.
+% \begin{macrocode}
+\newcommand*\fileListPreamble{
+ Here is the list of all files used during the run of \LaTeX{}
+ which produced this document. \footnote{More precisely, it is
+ the list of files used one \LaTeX-run before the one which
+ produced this document, but after some runs the list should
+ stabilize.}
+}
+\newcommand*\fileListName{List of Files}
+\newcommand*\fileNameName{file name}
+\newcommand*\pageName{page}
+\newcommand*\dateName{release date}
+\newcommand*\verName{version}
+\newcommand*\descriptionName{description}
+% \end{macrocode}
+% \begin{macro}{\dateiliste@babel}
+% \changes{v0.6}{2012/10/13}{Zeilenenden in den \cs{addto}\cs{extras...} auskommentiert, die zu
+% überflüssigen Leerzeichen in Headings führten. Siehe \texttt{http://tex.} \texttt{stackexchange.com/q/75533}.}
+% Hier noch gleich ein paar Übersetzungen.
+% Wir definieren hier ein einmal-Makro, welches
+% für mehrere Sprachen\footnote{Genauer: genau für die Sprachen, welche ich soweit
+% beherrsche, dass ich diese Texte übersetzen konnte.} zum jeweiligen Initialisierungsmakro
+% Neudefinitionen dieser fünf Befehle hinzufügt.
+% \begin{macrocode}
+\newcommand*{\dateiliste@babel}{
+% \end{macrocode}
+% Zunächst Englisch - das sollte das gleiche wie die Standard-Einstellungen sein.
+% \begin{macrocode}
+ \addto{\extrasenglish}{%
+ \renewcommand*\fileListPreamble{%
+ Here is the list of all files used during the run of \LaTeX{}
+ which produced this document.\footnote{More precisely, it is
+ the list of files used one \LaTeX-run before the one which
+ produced this document, but after some runs the list
+ should stabilize.}%
+ }%
+ \renewcommand*\fileListName{List of Files}%
+ \renewcommand*\fileNameName{file name}%
+ \renewcommand*\pageName{page}%
+ \renewcommand*\dateName{release date}%
+ \renewcommand*\verName{ver.}%
+ \renewcommand*\descriptionName{description}%
+ }%
+% \end{macrocode}
+% Deutsch mit neuer Rechtschreibung.
+% \changes{v0.4}{2009/10/26}{Kodierung der deutschen Umlaute
+% in der \cs{fileListPreamble} per \cs{"}, damit das
+% Paket auch mit utf8-kodierten Dateien funktioniert.
+% Dank an Michael Niedermair für den Bugreport.}
+% \begin{macrocode}
+ \addto{\extrasgerman}{%
+ \renewcommand*\fileListPreamble{%
+ Hier die Liste aller Dateien, die w\"ahrend des \LaTeX-Laufes,
+ welcher dieses Dokument erzeugte, verwendet wurden.
+ \footnote{genauer: Es ist die Liste aller Dokumente, die
+ einen \LaTeX-Lauf fr\"uher verwendet wurden. Aber nach
+ einigen L\"aufen sollte sich die Liste stabilisieren.}%
+ }%
+ \renewcommand*\fileListName{Liste der Dateinamen}%
+ \renewcommand*\fileNameName{Dateiname}%
+ \renewcommand*\pageName{\llap{Se}ite}%
+ \renewcommand*\dateName{Datum}%
+ \renewcommand*\verName{Ver.}%
+ \renewcommand*\descriptionName{Beschreibung}%
+ }%
+% \end{macrocode}
+% Deutsch mit alter Rechtschreibung: ist das gleiche (hier tauchen
+% keine Fälle mit Änderungen auf.)
+% \begin{macrocode}
+ \addto{\extrasngerman}{%
+ \renewcommand*\fileListPreamble{%
+ Hier die Liste aller Dateien, die w\"ahrend des \LaTeX-Laufes,
+ welcher dieses Dokument erzeugte, verwendet wurden.
+ \footnote{genauer: Es ist die Liste aller Dokumente, die
+ einen \LaTeX-Lauf fr\"uher verwendet wurden. Aber nach
+ einigen L\"aufen sollte sich die Liste stabilisieren.}%
+ }%
+ \renewcommand*\fileListName{Liste der Dateinamen}%
+ \renewcommand*\fileNameName{Dateiname}%
+ \renewcommand*\pageName{Seite}%
+ \renewcommand*\dateName{Datum}%
+ \renewcommand*\verName{Ver.}%
+ \renewcommand*\descriptionName{Beschreibung}%
+ }%
+% \end{macrocode}
+% Für die Verwender der Internationalen Sprache (siehe 'www.esperanto.de'):
+% \begin{macrocode}
+ \addto{\extrasesperanto}{%
+ \renewcommand*\fileListPreamble{%
+ Jen listo de \^ciuj dosieroj, kiuj estis uzitaj dum
+ la \LaTeX-rulo, kiu produktis tiun \^ci dokumenton.
+ \footnote{Pli precize: estas la listo de dosieroj uzitaj
+ unu rulon anta\u{u} tiu, kiu produktis tiun \^ci
+ dokumenton. Sed kutime post kelkaj ruloj la listo
+ devus stabili\^gi.}%
+ }%
+ \renewcommand*\fileListName{Listo de dosieroj}%
+ \renewcommand*\fileNameName{dosiernomo}%
+ \renewcommand*\pageName{pa\^go}%
+ \renewcommand*\dateName{dato}%
+ \renewcommand*\verName{versio}%
+ \renewcommand*\descriptionName{priskribo}%
+ }%
+% \end{macrocode}
+% Am Ende der Ausführung von '\dateiliste@babel' vernichtet der Befehl sich
+% selbst. Das spart etwas Speicher, und sorgt dafür, dass er nicht versehentlich
+% mehrfach ausgeführt wird (auch wenn das wohl nicht schädlich wäre).
+% \begin{macrocode}
+ \let \dateiliste@babel = \relax%
+}%
+% \end{macrocode}
+% \end{macro}
+% Wir untersuchen jetzt, ob \pack{babel} schon geladen wurde.
+% Diese Fallunterscheidung ist notwendig, weil der Code von
+% '\dateiliste@babel' zwar das Paket benötigt (also nach ihm
+% ausgeführt werden sollte), aber nicht einfach direkt mit '\AtBeginDocument'
+% ans Ende geschoben werden sollte, da er (falls \pack{babel} schon vor
+% diesem Paket geladen wurde) dort nach dem \pack{babel}-Code (der die
+% Sprache auswählt) kommen würde, und damit mehr nichts bewirkt.
+%
+% Falls \pack{babel} jetzt schon geladen wurde, \ldots
+% \begin{macrocode}
+\@ifpackageloaded{babel}
+{%
+% \end{macrocode}
+% \ldots informieren wir es sofort über die neuen Namen, die beim
+% Sprachwechsel bitte angepasst werden sollten.
+% \begin{macrocode}
+ \dateiliste@babel%
+}%
+% \end{macrocode}
+% Ansonsten verschieben wir das zum Beginn des Dokumentes (und machen
+% das auch dann nur, wenn \pack{babel} inzwischen geladen wurde --
+% ansonsten ist das ganze ja überflüssig, und '\addto' gibt es auch
+% nicht, also können wir dann '\dateiliste@babel' vernichten).
+% \begin{macrocode}
+{%
+ \AtBeginDocument{%
+ \@ifpackageloaded{babel}{%
+ \dateiliste@babel%
+ }{%
+ \let \dateiliste@babel = \relax
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Hauptdatei in die Dateiliste}
+% \begin{macro}{\mainFileToList}
+% \changes{v0.6}{2012/10/13}{Wir geben eine Warnung aus anstatt einer Endlosschleife,
+% wenn \cs{@filelist} undefiniert ist. Danke an Markus Kohm, Matthias Kospiech
+% und Andrew Swann für Bugreport and Analyse, siehe auch
+% \texttt{http://tex.stackexchange.} \texttt{com/q/75533/3335}.}
+% \changes{v0.1}{2006/04/02}{Neu}
+% \changes{v0.2}{2006/04/19}{Mögliche Erkennung des Dateinamens jetzt
+% auch ohne \eTeX}
+% Hier unser Nutzer-Makro für die Inklusion der Hauptdatei
+% in die Dateiliste.
+% \begin{macrocode}
+\newcommand*{\mainFileToList}{% \mainFileToList
+% \end{macrocode}
+% Falls die Dateiliste (d.h. das Makro '\@filelist') nicht definiert ist,
+% geben wir eine Warnung aus, und tun nichts weiter. (Ohne das würde es
+% in dem Fall eine Endlosschleife/-rekursion geben, wenn wir versuchen, aus
+% dieser Liste etwas zu entfernen.)
+% \begin{macrocode}
+ \@ifundefined{@filelist}{%
+ \PackageWarning{dateiliste}%
+ {%
+ ^^J
+ \protect\mainFileToList\space (i.e. using the {dateiliste}
+ package withouth^^J
+ the [noaddmain] option) works only if \protect\listfiles\space
+ is given^^J
+ in the preamble.^^J
+ }%
+ }{%
+% \end{macrocode}
+% Zunächst sehen wir nach, ob es eine Datei mit Namen \meta{jobname}'.tex'
+% gibt.
+% \begin{macrocode}
+ \IfFileExists{\jobname.tex} {%
+ \begingroup
+% \end{macrocode}
+% Falls ja, dann ist das höchstwahrscheinlich die Haupt-Datei des
+% Dokumentes\footnote{Andernfalls hat entweder jemand '\jobname' manipuliert,
+% oder die Hauptdatei ist eine Datei, die nicht auf '.tex' endet,
+% etwa \meta{jobname}'.dtx' -- in dem Fall sollte man eigentlich keine Datei
+% \meta{jobname}'.tex' daneben haben. Ansonsten ist es wohl zumutbar, die
+% Option 'noaddmainfile' anzugeben.
+% }, und taucht wahrscheinlich -- nämlich, wenn sie auf der
+% Kommandozeile oder mit '\input '\meta{jobname}'.tex' anstatt
+% '\input{'\meta{jobname}'.tex}' geladen wurde -- nicht in der Dateiliste
+% auf.
+%
+% Das Problem an der Erkennung des letzten Falles (\LaTeX-'\input{}') ist,
+% dass '\jobname' die Zeichen (auch die Buchstaben) in
+% Kategorie 12 (\emph{other}) liefert anstatt in der natürlichen Kategorie
+% (d.h. Buchstaben in 11 = \emph{letter}) (wie die Dateien, deren Name
+% irgendwo im Quelltext auftaucht und dann in '\@filelist' landet).
+%
+% Ich habe drei Möglichkeiten gefunden, damit umzugehen:
+% \begin{enumerate}[(1)]
+% \item Wir wandeln '\@filelist' komplett in Kategorie-12-Zeichen um.
+% \footnote{Den Tipp, wie das geht, habe ich zufällig beim Durchstöbern
+% der UK-\TeX-FAQ gefunden:
+% \texttt{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=compjobnam}}
+% \item Wir wandeln '\jobname' (bzw. die Buchstaben darin) in ihre
+% "`richtige"' Kategorie (11 für Buchstaben) um.
+% \item Wir ignorieren das Problem und leben damit, dass eventuell der
+% Dateiname doppelt auftaucht.
+% \end{enumerate}
+%
+% Variante (2) funktioniert leider nur bei Verwendung von \eTeX, (1)
+% hat den Nachteil, dass anschließend '\@filelist' komplett aus
+% Kategorie-12-Zeichen besteht, was eventuell zu Problemen mit anderen
+% Paketen führt, welche ebenfalls diese Liste verarbeiten und auf deren
+% Catcodes angewiesen sind.
+%
+% Daher haben ich zwei Paket-Optionen hinzugefügt, welche eine entsprechende
+% Auswahl ermöglichen:
+% \begin{description}
+% \item[Standardvorgehen:] Falls \eTeX\ verwendet wurde, nimm (2),
+% für \TeX\ nimm (1). (Die Unterscheidung läuft dabei natürlich nicht
+% über die Existenz von \eTeX, sondern über die Existenz von
+% '\scantokens', der beötigten Kontrollsequenz.)
+% \item[Mit Option \texttt{nocat12}:] \DescribeOption{nocat12}
+% Falls \eTeX\ verwendet wurde, nimm (2), sonst (3).
+% \item[Mit Option \texttt{cat12}:] \DescribeOption{cat12}
+% Nimm immer (1).
+% \end{description}
+% Vor Version 0.2 gab es nur das Verhalten, welches jetzt 'nocat12' entspricht.)
+%
+% \begin{macro}{\dateiliste@catxii@transform}
+% Hier die Implementation für (1). Wir wandeln auch das '.tex' in Kategorie 12 um,
+% mittels '\meaning' (mit '\strip@prefix' entfernen wir etwas Text, der vor der
+% Makrodefinition steht)
+% \begin{macrocode}
+ \newcommand*{\dateiliste@catxii@transform}%
+ {
+ \edef\dateiliste@mainfile{\jobname.tex}%
+ \edef\dateiliste@mainfile{%
+ \expandafter\strip@prefix\meaning\dateiliste@mainfile
+ }%
+% \end{macrocode}
+% Jetzt das gleiche für '\@filelist'.
+% \begin{macrocode}
+ \edef\@filelist{\expandafter\strip@prefix\meaning\@filelist}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\dateiliste@scantoken@tr}
+% Hier die Implementation für (2) mit '\scantokens':
+% In \eTeX\ gibt es dagegen den '\scantokens'-Befehl, welcher
+% es ermöglicht, im Speicher von \TeX\ vorliegende Token neu aus
+% einer Pseudo-Datei einzulesen. Wenn
+% er definiert ist (nur dann wird dieses Makro aufgerufen), rufen wir ihn
+% hier auf -- mit einigen '\expandafter', um nur den '\jobname' vor
+% der '\scantokens'-Ausführung zu expandieren, und nicht die Token
+% '\edef\dateiliste@mainfile{' und '.tex}' drumherum.
+% '\scantokens' bekommt also die Zeichen \par
+% '\makeatletter\edef\dateiliste@mainfile{'\meta{jobname}'.tex}\makeatother'\par
+% \noindent zu lesen.
+%
+% Das '\edef' wird dann also mit Kategorie-11-Buchstaben (also "`richtigen"')
+% im Dateinamen ausgeführt. (Das '\makeatletter' und '\makeatother' ist
+% notwendig, um das '@' auch als Buchstabe zuzulassen und somit '\dateiliste@mainfile'
+% als einzelnen Makronamen anzusehen. Zu dem Zeitpunkt, zu dem '\scantokens'
+% ausgeführt wird, sind ja die Dokumenten-Catcodes in Kraft, nicht die einer
+% Package-Datei.)
+% \begin{macrocode}
+ \newcommand*{\dateiliste@scantoken@tr}%
+ {%
+ \scantokens
+ \expandafter{%
+ \expandafter\makeatletter
+ \expandafter\edef
+ \expandafter\dateiliste@mainfile
+ \expandafter{%
+ \jobname
+ .tex}%
+ \makeatother
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+% Hier jetzt die große Fallunterscheidung:
+% \begin{macrocode}
+ \if@dateiliste@catxii
+ \dateiliste@catxii@transform
+ \else
+ \@ifundefined{scantokens}%
+ {%
+ \if@dateiliste@nocatxii
+% \end{macrocode}
+% Das ist die Implementation für (3): wir merken uns den Dateinamen einfach
+% so. Das geht wahrscheinlich schief, wenn nicht noch irgend ein anderes
+% Makropaket eingreift, und wir können \meta{jobname}'.tex' nicht aus der
+% Liste entfernen.
+% \begin{macrocode}
+ \edef\dateiliste@mainfile{\jobname.tex}%
+ \else
+ \dateiliste@catxii@transform
+ \fi
+ }%
+ {%
+ \dateiliste@scantoken@tr
+ }%
+ \fi
+% \end{macrocode}
+% Jetzt haben wir in '\dateiliste@mainfile' den Namen der Hauptdatei,
+% auch (je nach Optionen und \eTeX-Verfügbarkeit) '@filelist' vorbereitet.
+%
+% Wir können nun mit '\@removeelement' (aus dem \LaTeX-Kernel)
+% das Vorkommen von \meta{jobname}'.tex' entfernen (falls der Name dort vorhanden
+% ist -- wahrscheinlich nicht).
+% \begin{macrocode}
+ \@expandtwoargs\@removeelement{\dateiliste@mainfile}%
+ \@filelist\@filelist
+% \end{macrocode}
+% Anschließend fügen wir den Dateinamen an den \emph{Anfang} der Liste an.
+% \begin{macrocode}
+ \xdef\@filelist{%
+ \dateiliste@mainfile,\@filelist
+ }%
+ \endgroup
+% \end{macrocode}
+% Falls \meta{jobname}'.tex' nicht existiert, ist dies sicher nicht
+% die Hauptdatei. Dann haben wir es entweder mit einer '.dtx'-Datei
+% zu tun (die sowieso durch das doppelte Einlesen noch einmal auftaucht),
+% oder irgendeinen anderen Fall, den ich nicht vorhersehen kann. Also
+% machen wir dann nichts.
+% \begin{macrocode}
+ }{%
+ \relax
+ }%
+ }%
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% Am Ende des Dokumentes (aber noch vor dem Aufruf von '\@writefilelist', der von
+% '\printFileList' hinzugefügt wird) rufen wir, sofern die passende
+% Option gesetzt war, das eben definierte Makro auf.
+% \begin{macrocode}
+\if@dateiliste@addMain
+ \AtEndDocument{\mainFileToList}
+\fi
+% \end{macrocode}
+%
+% \subsection{Schluss}
+% \begin{macrocode}
+\endinput %
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
+%
+%<*müll>
+
+
+%%% Folgendes ist nur für meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
+%</müll>
diff --git a/macros/latex/contrib/dateiliste/dateiliste.ins b/macros/latex/contrib/dateiliste/dateiliste.ins
new file mode 100644
index 0000000000..79b1f41b72
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/dateiliste.ins
@@ -0,0 +1,79 @@
+%%
+%% (C) 2002-2006 Paul Ebermann - Installationsdatei zu dateiliste.dtx
+%%
+%% Der vollstndige Urheberrechtshinweis befindet sich
+%% am Begin von dateiliste.dtx.
+%%
+%% Ich gebe keine Garantie irgendeiner Art.
+%%
+
+\input docstrip.tex
+
+\askonceonly
+
+
+% Die Readme-Dateien generieren wir vor dem Festlegen von \usedir,
+% damit sie nicht in das selbe Verzeichnis im texmf-Baum gesteckt
+% werden.
+\generate{%
+ \usepreamble\empty
+ \usepostamble\empty
+ \file{dateiliste.README}{\from{dateiliste.dtx}{readme}}%
+ \file{dateiliste.README-en}{\from{dateiliste.dtx}{en}}%
+ \file{dateiliste.README-de}{\from{dateiliste.dtx}{de}}%
+ \file{dateiliste.README-eo}{\from{dateiliste.dtx}{eo}}%
+ }
+
+
+
+\usedir{tex/latex/paul}
+
+\Msg{**********************************************************}
+\Msg{* Ich werde Dateien in \showdirectory{tex/latex/paul} }
+\Msg{* installieren. Bitte stellen Sie sicher, }
+\Msg{* dass dieses Verzeichnis vorhanden ist. }
+\Msg{* }
+
+%% der folgende Text wird in jeder generierten
+%% Datei am Anfang eingefgt.
+\preamble
+
+ ,--------------------------------------------------.
+ | Das ist eine generierte Datei. |
+ | |
+ | (c) 2006 Paul Ebermann. |
+ '--------------------------------------------------'
+\endpreamble
+
+
+\generate{\file{dateiliste.sty}{\from{dateiliste.dtx}{package}}}
+
+
+
+\Msg{#######################}
+\Msg{# }
+\Msg{# Um die Installation zu beenden, }
+\Msg{# mssen Sie die folgenden Dateien }
+\Msg{# in Ihrem TeX-Suchbaum unterbringen: }
+\Msg{# }
+\Msg{# dateiliste.sty }
+\Msg{# }
+\Msg{# Um eine Dokumentation zu erzeugen, }
+\Msg{# benutzen Sie }
+\Msg{# }
+\Msg{# latex dateiliste.dtx }
+\Msg{# }
+\Msg{# Viel Spa }
+\Msg{# Paul Ebermann }
+\Msg{# }
+\Msg{#######################}
+
+\endbatchfile
+
+
+%%% Folgendes ist nur fr meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/dateiliste/dateiliste.pdf b/macros/latex/contrib/dateiliste/dateiliste.pdf
new file mode 100644
index 0000000000..2d8f462ee9
--- /dev/null
+++ b/macros/latex/contrib/dateiliste/dateiliste.pdf
Binary files differ