Wie erstelle ich ein echtes Archivdokument?
Hier eine komplexe Fragestellung:
Es geht darum, wie man die **gesamte** Dokumentbeschreibung, also **alle** zur Zeit der Dokumenterstellung benutzten Quelldateien, **während** der Kompilierung
1. in das Dokumentverzeichnis herunterladen,
2. in einer gesonderten Datei im vollen Umfang einschließen,
3. diese Datei benennen und fest mit der ausgeführten Datei verbinden,
4. eine Aktualisierung der Quellen bei erneuter Kompilierung verhindern,
5. und einen archivierbaren Ausdruck der Beschreibung ermöglichen kann.
Ziel ist, für jedes Dokument eine vollständige Beschreibungsdatei zu erstellen und zu behalten, die, unabhängig von Modernisierungen und Verbesserungen der Versionen in den Repositories, den *Status Quo* festschreibt, damit das Dokument jederzeit durch alte Programmversionen oder durch versierte Anwender in genau dem Zustand reproduziert werden kann, in dem es geschrieben wurde.
Es ist demnach nicht gefragt, wie man die Quellen in der **aktuellen** Fassung, sondern in der **jeweils** aktuellen Fassung **zur Zeit der Kompilierung** mit dem ausgeführten Dokument gemeinsam abspeichern und fixieren kann.
Es geht auch nicht um die Abspeicherung eines einmal erstellten Dokumentes als PDF etc. , sondern um die permanente Abspeicherung der **Dokument-Beschreibungsdateien**.
Natürlich kann man die nötigen Dateien herunterladen, wenn man die Quellen kennt, oder ein gesamtes System sichern. Geht das aber auch automatisiert und auf ein einzelnes Dokument bezogen, wobei ausschließlich die verwendeten Quellen einbezogen werden?
**Anmerkung:** Meine Frage ergibt sich aus der Archivwissenschaft, die fordert, daß ein Dokument aus seiner Beschreibung heraus mit jeder verfügbaren Technik reproduzierbar sein muß, im Kern also "plattformunabhängig" sein muß. Eine Dokumentbeschreibung muß also vollständig **und** archivierbar sein.
sein.
Hier ein handgestricktes Beispiel, **Beispiel**, das mit --shell-escape kompiliert werden muss. Interessant wäre nun, wie man die verwendeten Pakete per Listfiles etc verarbeiten kann.
\documentclass[a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\def\ziel{}%kopierziel setzen VORSICHT!
\newwrite\script
\immediate\openout\script=\jobname.sh
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/size10.clo
\ziel}%Für Ziel oben den Pfad \ziel{} setzen
\immediate\write\script{cp /usr/share/texmf/tex/generic/babel/babel.sty \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/generic/babel/ngermanb.ldf \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/generic/babel/babel.def \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/inputenc.sty \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/utf8.def \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/t1enc.dfu \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/ot1enc.dfu \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/omsenc.dfu \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/fontenc.sty \ziel}
\immediate\write\script{cp /usr/share/texmf/tex/latex/base/t1enc.def \ziel}
\immediate\closeout\script
\begin{document}
Das ist ein Testdokument.
\immediate\write18{sh<\jobname.sh}%VORSICHT!
\end{document}