%META:TOPICINFO{author=“RainerSchoepf” date=“1255365999” format=“1.1” reprev=“1.3” version=“1.3”}% %META:TOPICPARENT{name=“WebHome”}%

Dokumentenklasse

Wie gehe ich am besten vor, wenn ich eine bestehende LaTeX-Klasse ändern bzw. an meine eigenen Vorgaben anpassen will?

Statt von einer bestehenden Klasse wie ,, article.cls `` eine Kopie unter eigenem Namen, hier als Beispiel ,, detexfaq.cls ``, anzulegen, empfiehlt es sich, eine schon bestehende Klasse zu laden und anschließend alle notwendigen Änderungen durchzuführen. Hierzu bietet LaTeX eine Reihe von Möglichkeiten, die in der Dokumentation für Klassen-Autoren ,,clsguide.tex`` beschrieben sind. Als einfaches Beispiel hätte damit die neue Klasse ,, detexfaq.cls ``, in der als Standard-Optionen , 11pt,a4paper ` verwendet werden und die beiden Pakete , babel ` mit der Option ngerman und , remreset ` bereits implizit geladen werden, folgendes Aussehen:

%% detexfaq.cls -- DE-TeX-FAQ's modified ``article.cls''
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesClass{detexfaq}[2000/05/11 Article Class from DE-TeX-FAQ]
%% Lade nun ``article.cls'', wobei als Default-Optionen ``11pt'' und
%% A4-Papierformat als Default gesetzt werden (fuer diese muss explizit
%% eine Deklaration hier vorhanden sein) und alle weiteren vom Autor
%% gegebenen Optionen einfach `durchgereicht' werden:
\DeclareOption{a4paper}{\PassOptionsToClass{\CurrentOption}{article}}
\DeclareOption{11pt}{\PassOptionsToClass{\CurrentOption}{article}}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ExecuteOptions{a4paper,11pt}
\ProcessOptions\relax
\LoadClass{article}
%% Ab hier kann man Aenderungen an den Makros der geladenen Klasse
%% durchfuehren (bitte mit \renewenvironment oder \renewcommand!),
%% Pakete hinzuladen und/oder eigene Anweisungen und Umgebungen
%% definieren:
\RequirePackage[ngerman]{babel}
\RequirePackage{remreset}
%% Schliesslich wird die Klassendatei `sauber' beendet':
\endinput
%% End of ``detexfaq.cls''

Diese Vorgehensweise hat einige Vorteile. So bleibt die eigene Klassendatei relativ klein und enthält nur die notwendigen Änderungen und Ergänzungen. Ändert sich an der verwendeten Klasse etwas, z.B. werden Fehler korrigiert, so sind in den meisten Fällen keinerlei Änderung an der eigenen Klassendatei zum Nachvollziehen dieser Änderungen notwendig. Daneben dokumentiert man explizit, von welcher Klasse und Versionsnummer man als Basis ausgegangen ist, zumal diese Klasse und alle geladenen Pakete mit ihren Versionsnummern bei einem im Dokumentkopf eingefügten \listfiles auftauchen. | clsguide: | macros/latex/doc/clsguide.pdf |

– Main.HerbertVoss - 04 Mar 2009