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.

gefragt 30 Mai '14, 00:42

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 02 Jun '14, 01:11

1

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.

(02 Okt '14, 13:06) Johannes
2

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.

(02 Okt '14, 14:26) Ulrike Fischer

@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?

(03 Okt '14, 12:30) 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 \makepream[]{}{Pfad} an. Um das Verzeichnis zu vervollständigen, führt man das Shellscript \jobname.arch aus. Der Befehl \archived deaktiviert dieses Script, damit die Dateien nicht mehr aktualisiert werden. Man erhält dann einen Status Quo, in dem alle Quelldateien zum Dokument vorhanden sind. Bei neuerlicher Kompilierung werden nur die im Verzeichnis vorhandene Dateien benutzt, es findet keine Aktualisierung statt.

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}
Permanenter link

beantwortet 02 Jun '14, 01:09

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×2

gestellte Frage: 30 Mai '14, 00:42

Frage wurde gesehen: 8,828 Mal

zuletzt geändert: 03 Okt '14, 12:30