Dokumentenklasse entwickeln

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


fmichel
Forum-Anfänger
Forum-Anfänger
Beiträge: 42
Registriert: Mo 16. Nov 2009, 10:05
Wohnort: Höxter

Dokumentenklasse entwickeln

Beitrag 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!!!

Benutzeravatar
iTob
Forum-Meister
Forum-Meister
Beiträge: 1221
Registriert: Mo 19. Apr 2010, 22:19
Kontaktdaten:

Beitrag 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

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag 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.

Antworten