Seite 1 von 1

Dokumentenklasse entwickeln

Verfasst: Do 14. Apr 2011, 08:16
von fmichel
Hallo Forum,
für unser Büro möchte ich gern eine Dokumentenklasse entwickeln mit welcher wir unsere Statiken dokumentieren. Wir arbeiten jetzt seit ca. 1.5 Jahren mit LATEX und haben eine Menge Einträge für die Präambel gesammelt und verwendet. Ich möchte diese aber nicht immer in der Hauptdatei herumschleppen, sondern diese in eine Definitionsdatei schreiben und diese zentral ablegen und Pflegen.
Wie kann ich dies am besten bewerkstelligen?? Könnte mir eine eigene Dokumentenklasse helfen oder ist dies zu aufwendig??
Für Tipps usw. wäre ich sehr dankbar!!!

Verfasst: Do 14. Apr 2011, 09:03
von iTob
Guten Morgen,

ich denke, eine eigene Klasse bietet sich an. In dieser kannst du dann auch ine andere Klasse laden, auf die du aufbauen willst. Hab ’ grad nicht viel Zeit – muss gleich zu Uni – aber im LaTeX Begleiter gibt es ein ganzes Kapitel zu eigenen Klassen (und Paketen), in dem auch eine Beispielklasse erstellt wir (glaub ich)

Viele Grüße
Tobi

Verfasst: Do 14. Apr 2011, 09:13
von KOMA
Das ist eigentlich kein großes Problem. Als ersten Schritt empfehle ich ein eigenes Paket. Dazu alles zwischen \documentclass[...]{...} und \begin{document} bis auf \usepackage[...]{inputenc} in eine Datei mit Endung .sty kopieren, alle \usepackage durch \RequirePackage ersetzen, alle \makeatletter und \makeatother entfernen, ganz am Anfang der neuen Datei noch
\ProvidesPackage{NamesDesPakets}[2011/04/14 v1.0 Paket fuer fmichel}
\ProcessOptions\relax
einfügen und als letzte Zeile des neuen Pakets vorzugsweise noch ein \endinput.

Falls in dem neuen Paket Umlaute oder ß vorkommen, sollten die noch in TeX-Schreibweise geändert werden, also »\"a« statt »ä«, »\"A« statt »Ä« und »\ss « (man beachte hier das Leerzeichen!) statt »ß«. Dann sollte es auch funktionieren, wenn Du inputenc in einem Dokument nach dem neuen Paket lädst. Genau das solltest Du als nächstes testen.

Wenn bis hierher alles funktioniert, kommt als nächstes der Umbau in eine Klasse. Dabei muss \ProvidesPackage in \ProvidesClass geändert werden. Die Klasse wird dann nach \ProcessOptions per \LoadClass oder \LoadClassWithOptions geladen. Der Unterschied ist clsguide.pdf zu entnehmen. Wichtig ist, dass bei \LoadClass keine Optionen angegeben werden können, die an Pakete weitergereicht werden sollen. Diese Optionen sind stattdessen bei den entsprechenden \RequirePackage anzugeben oder (besser) per \PassOptionsToPackage an die jeweiligen Pakete zu reichen.

Eine solche Klasse nennt man übrigens Wrapper-Klasse.