In einem mittlerweile sehr alten und umfangreichen Dokument möchte ich meine Präambel aufräumen/optimieren. Diese beinhaltet mittlerweile recht viele Pakete, wobei ich davon ausgehe, dass das ein oder andere Paket noch weitere nachläd. Da sich mittlerweile aber einiges in dem über 1000 Seiten langem Dokument geändert hat, gehe ich davon aus, dass nicht mehr alle der geladenen Pakete auch benötigt werden. Es stellt sich nur die Frage, welche das sind.

gefragt 17 Apr '14, 12:43

nonlinearx's gravatar image

nonlinearx
10081218
Akzeptiert-Rate: 33%

bearbeitet 17 Apr '14, 14:07

cgnieder's gravatar image

cgnieder
22.1k253463

(17 Apr '14, 13:15) Johannes

Könnte hier nicht das nag-Paket etwas sein?

(23 Apr '14, 02:56) cis

Mit der \listfiles Anweisung in der Präambel bekommt man eine lange Liste der geladenen Dateien. Mit einer "Umleitung" in der console latex datei> neuedatei.txt werden diese in eine Datei geschrieben.

Permanenter link

beantwortet 17 Apr '14, 13:07

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 17 Apr '14, 13:08

Ich glaube, ihm geht es nur darum, welche Pakete der Präambel übh. benutzt wurden - das kann er doch so leider nicht rausbekommen?

(17 Apr '14, 13:13) cis

Ok, damit sehe ich, welche Pakete geladen, aber nicht, ob sie auch im Dokument verwendet worden sind. Ich möchte halt herausfinden, auf welche Pakete ich verzichten kann.

(17 Apr '14, 13:18) nonlinearx

Mit dem schrittweisen Auskommentieren der Präamble und dem Vergleich mit der \listfile-Info kommt man schon sehr weit. Ansonsten kannst Du die Funktion aus http://www.texwelt.de/wissen/fragen/4452/wie-kann-ich-mir-eine-sammlung-paketunabhangiger-befehle-anlegen nutzen, indem Du jeden Befehl, der Dir im Quelltext begegnet, umdefinierst und anzeigst, wo er verwendet wird. Aus den drei Informationen ergibt sich, wo welcher Befehl aus welchem Paket genutzt wurde. Meist hat man mit wenig Aufwand in den ersten Seiten die meisten Befehle erwischt. Mit Minimalbeispiel könnte man es ausarbeiten.

(17 Apr '14, 21:12) ctansearch

Die Antwort ist vielleicht nicht ganz einfach zu geben. Daher ist das folgende auch keine »richtige« Antwort im Sinne von: »mache das und das, dann weißt Du Bescheid«.

Wenn man sein Dokument von vorneherein aufbaut, dann fügt man ja grundsätzlich immer nur die Pakete in die Präambel hinzu, die man braucht, und vermeidet damit, dass man unnötige Pakete lädt. Ich fange beispielsweise immer mit einer leeren Präambel an, die nur

Open in writeLaTeX
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

enthält und füge nur bei Bedarf weitere Pakete hinzu. So habe ich nie unnötige Pakete in der Präambel. Allerdings mag ich es auch, Pakete, die ich verwende, explizit in der Präambel stehen zu haben. So lade ich zum Beispiel tikz und xcolor, wenn ich \color einsetze, obwohl ersteres das zweite lädt, einfach um in der Präambel zu sehen, dass ich ein Farbpaket verwende. So habe ich immer einen Überblick darüber, welche Pakete ich tatsächlich verwende. Ich halte das persönlich für die beste Variante, andere mögen das anders sehen.

Wenn man sich eine Präambel von irgendwoher besorgt (aus einer Vorlage oder so), dann hat man oft Unmengen an Paketen in der Präambel stehen, häufig leider auch veraltete, unnütze, ... (Einer von vielen Gründen, warum ich gegen Vorlagen bin.)

Um herauszufinden, welche Pakete man braucht, und welche man unnötig lädt, könnte man zum Beispiel die Pakete in der Päambel nach und nach auskommentieren und zwischendurch kompilieren. Dann bekommt man schon einen Fehler, wenn man ein benötigtes Paket auskommentiert. Dabei kann aber passieren, dass man ein Paket auskommentiert, das das Verhalten von Befehlen ändert, ohne dass das zu einem Fehler führt, ist also keine ideale Methode. Ich wüsste aber nicht, wie man sonst herausfinden sollte, ob man ein Paket verwendet.

Es kann auch nicht schaden, sich von Paketen, die einem nichts sagen und bei denen man also auch nicht weiß, was sie machen, mal die Dokumentation anzusehen. So findet man heraus, wofür sie da sind und kann entscheiden, ob man sie braucht oder nicht. Mit der Zeit lernt man so eine ganze Menge von Paketen kennen und kann irgendwann selbst entscheiden, was man will und was nicht.

Im Zweifelsfall gilt meines Erachtens: wenn ich ein Paket nicht kenne und nicht weiß, was es macht -- ich es also bewusst gar nicht einsetze -- dann kann ich es aus der Präambel streichen. Wenn es von einem anderen Paket benötigt wird, dann wird dieses schon selbst dafür sorgen, dass es geladen wird.

Natürlich kann man mit \listfiles in der Präambel herausfinden, welche Pakete geladen werden, da das eine Liste in die log-Datei schreibt. Damit hat man aber auch alle Pakete gelistet, die intern von anderen Paketen geladen werden. Ob sie benutzt werden oder nicht, findet man damit nicht heraus.

Permanenter link

beantwortet 17 Apr '14, 14:04

cgnieder's gravatar image

cgnieder
22.1k253463
Akzeptiert-Rate: 60%

Da es scheints keine globale Lösung gibt, vll. einmal umgedreht:

Worauf mich letztens Elke (esdd) hinwies: Man kann

hier

schauen, welche Befehle aus welchem Paket stammen.

Man mußte sich ggf. eine Möglichkeit überlegen, wie man alle Befehlsaufrufe ausfiltert.

Permanenter link

beantwortet 17 Apr '14, 14:28

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 17 Apr '14, 14:29

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:

×48
×4

gestellte Frage: 17 Apr '14, 12:43

Frage wurde gesehen: 11,176 Mal

zuletzt geändert: 23 Apr '14, 02:56