MoeWe hat geschrieben: ↑Do 14. Mai 2020, 18:17
Meiner Meinung nach gehört aber zum Beispiel die bei pdfLaTeX mit dem Paket `inputenc` eingestellte Eingabecodierung nicht zur "Dokument-Art", sie ist immer eine Eigenschaft der `.tex`-Datei und gehört daher nicht in die Klasse oder ein Paket, sondern immer direkt in die Präambel.
Und eben auch nicht in eine per \input ausgelagerte Datei.
MoeWe hat geschrieben: ↑Do 14. Mai 2020, 18:17
Aber andere Fälle könnten weniger klar sein. Pakete stellen idealerweise eine bestimmte Funktion für das Dokument bereit (z.B. Acronymlisten, Glossar, Literaturverzeichnis, ...), auch hier fände ich es irgendwann zu viel des Guten, wenn ein Paket "alles" bündelt.
Was aber natürlich genauso für eine Bündelung in einer Datei gilt, die man dann bei jedem Dokument unbesehen lädt.
MoeWe hat geschrieben: ↑Do 14. Mai 2020, 18:17
Oft bietet das Auslagern auch die Gefahr, dass sich über die Zeit immer mehr Pakete und Code dort ansammeln, sodass man schnell den Überblick verliert.
Und auch das gilt natürlich ebenso, wenn man statt einer Klasse oder eines Pakets einfach eine Präambeldatei, die man immer wieder verwendet, zumüllt. Bei einer Klasse oder einem Paket gibt es wenigstens die Chance, per Optionen bestimmte Teile quasi ein- und auszuschalten. In diesen Präambeldateien stehen dagegen oftmals Kommentare wie: "auskommentieren, wenn nicht gebraucht". Das ist für eine zentrale Datei natürlich unsinnig und bei Präambel-Dateien, die man immer wieder kopiert, wird überflüssiges allzu oft nicht gelöscht. Stattdessen wird nur immer neues dazu gebastelt und dabei allzu häufig übersehen, dass ein Paket inzwischen mehrfach geladen wird oder Paketreihenfolgen nicht mehr stimmen oder Pakete eigentlich inkompatibel sind.
Ich denke, man kann mit einer Klasse oder einem Paket genau denselben Unsinn treiben wie mit einer Präambeldatei und umgekehrt. Wichtiger ist, in der Tat, dass man sich über die Struktur etwas Gedanken macht und sich bei wiederkehrenden Tätigkeiten fragt ob sie typisch für das Dokument oder für eine bestimmte Art von Dokumenten sind.
Schönes Beispiel, wo so etwas wie eine Klasse oder ein Paket Sinn ergibt, ist ein immer wieder verwendeter Aufbau des Titels. Dagegen wäre das für einen einmal verwendeten Titel vollkommener Blödsinn.
Ich muss hier in erster Linie zwei Arten von Dokumenten erstellen. Die einen sind für den internen Gebrauch, die andere gehen auch an Kunden raus. Im Prinzip sehen die ganz ähnlich aus. Sie unterscheiden sich hauptsächlich im Deckblatt bzw. Titel (externe Dokumente haben beides, interne kommen ohne Deckblatt aus), Kopf- und Fußzeilen. Ich habe dafür ein Paket geschrieben, das eine Option intern und eine Option extern kennt und dann die Einstellungen entsprechend vornimmt und beispielsweise auch eine Fehlermeldung erzeugt, wenn bestimmte, je nach Dokumentart zwingende Felder für den Titel und den Fuß nicht gesetzt wurden. Natürlich könnte ich auch zwei verschiedene Präambeldateien dafür verwenden. Aber das meiste ist doch gleich. So muss ich nicht, wenn ich etwas gleiches ändere, in zwei Dateien ändern. Natürlich könnte ich den Unterschied auch nur per boolschem Schalter lösen, der dann in der Dokumentpräambel gesetzt wird. Paket und zwei Optionen, die dann natürlich auch einen Schalter umlegen, erschien mir aber eleganter.
Inzwischen gibt es in dem Paket auch noch Optionen v1, v2 und v3, weil ein paar Dinge mit der Zeit im Aussehen geändert wurden (beispielsweise war die Seitenzahl ursprünglich weiß auf schwarz, ist jetzt aber nur noch mit einem schwarzen vertikalen Strich getrennt) und ich manchmal eben doch noch eine alte Fassung haben will.
Und ja, natürlich hat das alles nicht direkt als Paket begonnen. Ganz am Anfang war das auch einmal eine Ansammlung von Code, den ich von Dokument zu Dokument kopiert habe. Daraus vor ein paar Jahren ein Paket zu machen, war eine gute Gelegenheit aufzuräumen. Und wenn sich in meinen Dokumenten von Zeit zu Zeit wieder viel Code ansammelt, dann denke ich tatsächlich darüber nach, ob davon irgend etwas besser in ein Paket wandern sollte. Stattdessen habe ich aber ein private Sammlung mit (meist) gut dokumentierten Codeschnipseln erstellt. Daraus kopiere ich dann individuell je nach Dokument etwas heraus. Ein Paket oder eine Klasse mit unzähligen Schaltern daraus zu machen, lohnt sich nicht.