Eigene Klasse entwickeln

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


FelixF
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: So 6. Dez 2015, 11:39

Eigene Klasse entwickeln

Beitrag von FelixF »

Hallo alle zusammen,
ich versuche mich etwas Tiefer in LaTeX einzuarbeiten und möchte meine eigene Klasse entwerfen. Diese ist vorerst ausschließlich für mich zu Testzwecken.

Hier wäre mein kleines Beispiel zu welchem ich ein paar Fragen habe.
% minimal.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{minimal}[2016/06/01 v0.1 Minimal]

% Variablen deklarieren
\newif\if@loadPackages

% Optionen definieren
\DeclareOption{loadPackage}{\@loadPackagestrue}
\if@loadPackages
    \RequirePackage{lmodern}
\fi

% Default Options
\ExecuteOptions{}

% Optionen an Elternklasse übergeben
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\ProcessOptions\relax

% Laden der Elternklasse
\LoadClass[a4paper, 12pt]{scrartcl}

% Definition unterschiedlicher Macros
\newcommand{\test}{\blindtext}

\endinput
Zu meinen Fragen:
1. Ist die grundsätzliche Herangehensweise bzw. der Aufbau dieses Beispiels korrekt?
2. Ist es sinnvoll eine Klasse gleich mit LaTeX3 zu entwickeln oder am Anfang lieber mit den grundlegenden Mitteln, um die Prinzipien zu verstehen?
3. An welche Stelle gehört
\LoadClass{}
und warum?

Liebe Grüße
Felix

Stamm-

Weiterführende Literatur

Beitrag von Stamm- »

Da ich selbst kein Experte bin, kann ich die Fragen nicht direkt beantworten. Aber vielleicht hilft dir ja die kurze Einführung »LaTeX2ε for class and packages writers« weiter. Ob da auch die Strukturierung des Quelltextes behandelt wird, weiß ich nicht.

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Re: Eigene Klasse entwickeln

Beitrag von cgnieder »

FelixF hat geschrieben:2. Ist es sinnvoll eine Klasse gleich mit LaTeX3 zu entwickeln oder am Anfang lieber mit den grundlegenden Mitteln, um die Prinzipien zu verstehen?
Prinzipien zu verstehen ist immer gut. Der Teil der Frage beantwortet sich IMHO daher von selbst. Kurze Begriffsklärung: LaTeX3 ist noch nicht veröffentlicht/gibt es noch nicht. Die aktuelle Version ist immer noch LaTeX 2e. Ich vermute, dass Du expl3 meist, die „Programmiersprache“, die ein zukünftiges LaTeX3 verwenden wird.

Grüße

PS: es gibt schon eine Klasse minimal
Clemens
Paketauthor

FelixF
Forum-Anfänger
Forum-Anfänger
Beiträge: 20
Registriert: So 6. Dez 2015, 11:39

Beitrag von FelixF »

Danke für eure Antworten. Anhand des [d]clsguide[/d] habe ich versucht, mir dieses Minimalbeispiel aufzubauen.

@cgnieder: Du hast natürlich Recht und ich meinte im eigentlichen die Verwendung von expl3. Dann Frage ich lieber in der Richtung, ob es sinnvoll ist, dieses Paket gleich von Anfang an in die Entwicklung neuer Klassen einzubinden?
Den Namen meiner eigenen Klasse habe ich nur für das Forum hier gewählt.

DADABBI

Beitrag von DADABBI »

Pakete lädt man besser erst nach dem Optionenteil, also nach \ProcessOptions*. Ausnahme sind Pakete, die für die Optionen benötigt werden, die man dann vor dem ersten \DeclareOption laden sollte. Meist ist es in einer Wrapper-Klasse auch sinnvoll, erst die Basisklasse und dann Pakete zu laden, weil Pakete manchmal Dinge der Klasse umdefinieren, was nur funktioniert, wenn die Klasse bereits geladen ist.

Klare Strukturen dienen nicht zuletzt der Übersichtlichkeit aber auch dem klaren Denken. Deshalb ist es sinnvoll, sich Regeln (wie die oben genannten) zu erarbeite und diese möglichst durchzuhalten. Muss man sie allzu oft durchbrechen und zu viele Ausnahmen hinzufügen, sollte man allerdings auch die Regeln kritisch hinterfragen.

Antworten