Hier eine komplexe Fragestellung:
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. gefragt 30 Mai '14, 00:42 ctansearch |
Soweit, sogut.
Über ein Shellscript werden die Dateien, die für das Dokument benötigt werden, in das Verzeichnis kopiert. In der Ausgabe von Latex erkennt man, wenn ganze Pfade angegeben werden, daß manche abhängige, von Paketen nachgeladene Dateien noch nicht im Verzeichnis vorhanden sind. Man gibt deren Pfad dann mit Open in writeLaTeX
%makepreamble.sty %2014-06-01 \def\archived{\immediate\closeout\archfile \immediate\openout\archfile \immediate\write\archfile{file closed}\immediate\closeout\archfile}%ergibt ein leeres \jobname.arch, %damit keine aktualisierten Dateien mehr %kopiert werden. \def\copycommand{}%muss in makepreamble.tex angegeben werden \def\copytarget{}%muss in makepreamble.tex angegeben werden \newwrite\archfile% \immediate\openout\archfile=\jobname.arch%Zum Auflisten der Quelldateien, %später als Shellscript verwendbar \newwrite\preamble% \immediate\openout\preamble=\jobname.pre%Zum Erstellen der Präamble \def\docclass[#1]#2#3%Zum Definieren der Dokumentklasse {% % \immediate\write\preamble{\unexpanded{\documentclass[#1]{#2}}} \immediate\write\archfile{\copycommand #3 \copytarget} }% \def\makepream[#1]#2#3%fordert das gewünschte Paket an {% \def\pathA{#3} \def\pathB{} \immediate\write\preamble% {% \unexpanded{\usepackage[#1]{#2}}% \ifx \archiv \pathB \immediate\write\archfile{\copycommand #3 \copytarget}% \else \ifx \pathA \pathB % \else \immediate\write\archfile{\copycommand #3 \copytarget}% \fi\fi }% }% \def\endpreamble% {% \immediate\closeout\preamble% \input \jobname.pre%Einfügen der Präamble % \message{Preamble loaded (.\jobname.pre)}% }% %\archived Wenn aktiv, leert der Befehl die \jobname.arch, sodaß keine %aktuellen Dateien mehr kopiert werden \def\copytarget{}%Zielpfad eingeben,systemabhängig \def\copycommand{}%Kopierbefehl eingeben,systemabhängig \docclass[a4paper]{article}{/usr/share/texmf/tex/latex/base/article.cls}%Quellpfad %eingeben \makepream[]{}{/usr/share/texmf/tex/latex/base/size10.clo} \makepream[utf8]{inputenc}{/usr/share/texmf/tex/latex/base/inputenc.sty} \makepream[]{}{/usr/share/texmf/tex/latex/base/utf8.def} \makepream[]{}{/usr/share/texmf/tex/latex/base/t1enc.dfu} \makepream[]{}{/usr/share/texmf/tex/latex/base/ot1enc.dfu} \makepream[]{}{/usr/share/texmf/tex/latex/base/omsenc.dfu}%Quellpfad \makepream[ngerman]{babel}{/usr/share/texmf/tex/generic/babel/babel.sty} \makepream[]{}{/usr/share/texmf/tex/generic/babel/ngermanb.ldf} \makepream[]{}{/usr/share/texmf/tex/generic/babel/babel.def}%Quellpfad \makepream[T1]{fontenc}{/usr/share/texmf/tex/latex/base/fontenc.sty} \makepream[]{}{/usr/share/texmf/tex/latex/base/t1enc.def}%Quellpfad \makepream[]{longtable}{/usr/share/texmf/tex/latex/tools/longtable.sty}%Quellpfad \makepream[]{mbenotes}{/usr/share/texmf/tex/latex/mbenotes/mbenotes.sty}%Quellpfad \makepream[]{graphicx}{}%Solange in der Ausgabe von Latex noch vollständige %Pfade erscheinen. sind die Dateien nicht im aktuellen %Verzeichnis vorhanden. Wenn man diese Pfade kopiert %und als \makepream[]{}{Pfad} eingibt, werden sie in die %Kopierliste eingetragen. Besonders zu beachten bei %von Paketen nachgeladenen Dateien \endpreamble %Über die Shell werden alle nötigen Dateien in das Verzeichnis kopiert.sh<\jobname.arch %Wenn man alle notwendigen Dateien im Verzeichnis vorfindet, aktiviert man \archive \begin{document} Pream \begin{longtable}{p{1cm}} \mbenote{Spaghetti}Noodles\\ \thembenotes[] \end{longtable} \end{document} beantwortet 02 Jun '14, 01:09 ctansearch |
Wenn du alle Paketdateien speicherst, inklusive Abhängigkeiten, denn fehlen doch aber noch die Dateien für die Formaterstellung und die Quellen, um die Engine zu kompilieren. Oder liege ich da falsch.
Es fehlen auch die Schriften und ggfs. diverse Hilfsprogramme (biber, makeindex, ... etc). Und natürlich musst du im Prinzip auch noch das Betriebssystem sichern -- es ist ja nicht gesagt, dass auf einem neuen System die Programme exakt so laufen, wie auf dem alten. Ich denke es ist illusorisch. Ich würde daher eher die .tex-Datei als das zu archivierende Dokument bezeichnen und die pdf-Datei nur als eine Art Ausdruck betrachten.
@johannes,ulrike Tatsächlich müsste es so sein, daß für einen Zeitraum jeweils das gesamte System gesichert werden müsste und jemand eine Datei aus 1999 unverändert mit dem Hintergrund von '99 kompilieren lassen kann. Dazu kämen dann Maschinen oder Emulatoren. Nur dann ist die .tex-Datei eine ausreichende Archivgrundlage. Ansonsten ist nur ein Ausdruck "archivfähig". Ein Beispiel ist die Gutenberg-Bibel. Man könnte sie nachdrucken, das wäre aber nicht das Original. Aber wie wäre es authentisch? Mit den alten Werkzeugen und dem alten Handwerk, oder mit modernen Mitteln nachgedruckt?