Bereits früher wurde erklärt, wie man Klassen oder Pakete direkt und ohne eigentliche Installation verwenden kann, bzw. wie man sie ggf. auch installieren kann. Allerdings gilt dies nur, wenn die Klasse bzw. das Paket bereits als Klassendatei bzw. als Paketdatei vorliegt, nicht jedoch, wenn sie nur als Quelltext bereit steht. Die Frage ist nun also, wie man aus dem Quelltext diese Datei erhält, damit man sie wie angegeben verwenden kann.

gefragt 07 Mai '14, 02:10

Bes's gravatar image

Bes
1411516
Akzeptiert: 100%


Zunächst sei betont, dass es in der Regel einfacher ist, Pakete über den Paketmanager der jeweiligen TeX-Distribution zu installieren und aktuell zu halten. Wenn man Klassen oder Pakete hingegen selbst erzeugt, dann ist man auch selbst dafür verantwortlich, dies korrekt und vollständig zu tun und es ggf. immer wieder zu wiederholen, um sie aktuell zu halten. Siehe dazu auch: »Ist es sinnvoll Entwicklerversionen von Paketen an Stelle der offiziellen, stabilen Version zu verwenden?«.

Einfache Klassen oder Pakete bestehen in der Regel aus einer dtx-Datei und einer ins-Datei. Die dtx-Datei kann den Quelltext beliebig vieler Pakete, Klassen und weiteren Dateien enthalten. Die ins-Datei ist hingegen sozusagen die Information, aus der docstrip erfährt, wie diese Dateien aus der dtx-Datei zu erzeugen sind. Nehmen wir an, dass eine Klasse oder ein Paket foo aus den Dateien foo.dtx und foo.ins erzeugt werden soll. Dann lautet der Aufruf dazu in der Regel:

Open in writeLaTeX
tex foo.ins

Wie zu sehen ist, wird hier nicht latex, sondern tex verwendet. Hinter tex verbirgt sich normalerweise plainTeX. Man sollte diesen Aufruf in der Regel aus einem Terminalfenster bzw. der Windows-Eingabeaufforderung heraus starten. In vielen Fällen wird man nämlich interaktiv gefragt, ob ggf. Dateien überschrieben werden dürfen. Hat man foo.ins und foo.dtx in ein neues Verzeichnis kopiert, kann man das unbesorgt mit y (für yes, also ja) beantworten. tex kann nämlich beim Test, ob eine Datei bereits existiert, nicht erkennen, ob diese Datei in demselben Verzeichnis existiert, in das sie geschrieben wird oder sonst irgendwo in einem angemeldeten TEXMF-Baum.

In einigen Fällen wird es keine ins-Datei geben. In diesem Fall hat der Autor sich eventuell entschlossen, die dtx-Datei auch gleich als ins-Datei zu verwenden. In diesem Fall lautet der Aufruf also:

Open in writeLaTeX
tex foo.dtx

Ob dem so ist, erfährt man in der Regel aus der Dokumentation des Quelltextes. Diese kann sich in der README-Datei, in einer Datei INSTALL, in Kommentaren am Anfang der dtx-Datei oder in der Implementierungsanleitung selbst befinden. Ggf. kann man den Aufruf auch einfach versuchsweise durchführen und hoffen.

Aus der dtx-Datei kann man in der Regel auch zumindest die Implementierungsanleitung, häufig auch eine Anwenderanleitung erzeugen. Dies geschieht mit dem Aufruf

Open in writeLaTeX
pdflatex foo.dtx

Dieser Aufruf ist ggf. so lange zu wiederholen bis alle Verzeichnisse und Querverweise korrekt sind. Falls ein Index vorgesehen ist, benötigt man ggf. auch noch einen Aufruf von makeindex. Allerdings wird für Anleitungen aus dtx-Dateien häufig ein spezieller MakeIndex-Stil verwendet. Der Aufruf lautet daher meist

Open in writeLaTeX
makeindex -s gind.ist foo
makeindex -s gglo.ist foo

Diese beiden Aufrufe sind zwischen allen Aufrufen von pdflatex zu tätigen. Bei TeX Live gibt es dafür die Abkürzung

Open in writeLaTeX
mkindex foo

Eine behelfsmäßige Anleitung erhält man aber meist bereits nach dem ersten pdflatex-Lauf ohne zusätzliche Aufrufe von makeindex oder ähnlichen Programmen. Außerdem enthalten die Quellcode-Archive bereits auch oft fertige Anwenderanleitungen als PDF. Auf CTAN ist das sogar die Regel.

Einige Klassen bzw. Pakete benötigen zusätzliche Programmaufrufe oder es existieren mehrere dtx-Dateien, von denen nur eine gleichzeitig als ins-Datei dient, oder werden stattdessen mit lualatex aus einer dtx oder einer tex-Datei erzeugt oder benötigen die Aufruf-Option -shell-escape oder -write18. Meist gibt wiederum die Datei README oder eine Datei INSTALL o. ä. oder der Anfangskommentar der ins-Datei in solchen Fällen Auskunft über das korrekte Vorgehen.

In seltenen Fällen ist auch für die ins-Datei nicht tex, sondern latex zu verwenden. Dies ist aber eigentlich ein Verstoß gegen die docstrip-Konventionen. Auch darüber sollte die Dokumentation des Quelltextes informieren.

Natürlich gibt es auch Pakete, die weit komplexer aufgebaut ist. So besteht beispielsweise der LaTeX-Quelltext aus einer ganzen Reihe von dtx-Dateien. Die sehr beliebte KOMA-Script-Sammlung besteht ebenfalls aus mehreren dtx-Dateien und diversen zusätzlichen Anleitungsdateien. Will man solche Formate, Klassen, Pakete oder Sammlungen selbst aus dem Quelltext erzeugen, muss man sich oft deutlich intensiver mit dem Generierungsprozess beschäftigen und in jedem Fall die entsprechenden Anleitungen, die zu den Quelltexten gehören, studieren. Der Weg zu den fertigen Dateien kann tatsächlich recht kompliziert sein.

Hat man die eigentliche Generierung erfolgreich abgeschlossen, kann man die erzeugten Dateien wie in dem erwähnten Beitrag angegeben installieren.

Permanenter link

beantwortet 07 Mai '14, 02:38

Bes's gravatar image

Bes
1411516

bearbeitet 07 Mai '14, 02:58

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×108
×40
×32
×9

Frage gestellt: 07 Mai '14, 02:10

Frage wurde angeschaut: 3,119 Mal

Zuletzt aktualisiert: 07 Mai '14, 02:58