Standardoption in eigener Klasse

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benji

Standardoption in eigener Klasse

Beitrag von Benji »

Hallo

Ich komme bei einem Problem mit meiner Klasse nicht weiter. Die Klasse basiert auf der Klasse "book". Diese hat als Standartoption eine Schriftgröße von 10pt, d.h. wird keine Option angegeben sind es 10pt. In den Optionen kann ich nun 12pt einstellen. Ich würde aber gerne haben, dass Standardmäßig 12pt verwendet werden, d.h. wenn keine Optionen angegeben werden. Wenn ich in die Optionsliste 10pt schreibe, soll dann die Schriftgröße 10pt verwendet werden. Dieses bekomme ich nicht hin. Hier einmal ein Minimalbeispiel (\blindtext hilft nur bei der Unterscheidung im PDF):
\documentclass[]{klasse} 

\begin{document}
  \blindtext
  \blindtext
  \blindtext
  \blindtext
\end{document}
Und hier die Klasse, mit verschiedenen Ideen zur Umsetzung, welche aber alle nicht funktionieren:
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesClass{klasse}

%So funktioniert das ganze, jedoch ist dann ohne Angabe einer Option die Standard Groesse 10pt
\DeclareOption{12pt}{\PassOptionsToClass{12pt}{book}}
\DeclareOption{10pt}{\PassOptionsToClass{10pt}{book}}

%Meine erste Idee. Jedoch klappt diese nicht. 
\newcommand{\ptsize}{12pt}
\DeclareOption{10pt}{\renewcommand{\ptsize}{10pt}}
\DeclareOption{12pt}{\renewcommand{\ptsize}{12pt}}
\PassOptionsToClass{\ptsize}{book}

%Zweite Idee, die leider auch nicht geht: Das ganze ueber ein if zu machen (So wuerde es eh nur mit 2 Moeglichkeiten gehen)
\newif\if@tenpt
\@tenptfalse
\DeclareOption{10pt}{\@tenpttrue}

\if@tenpt
    \PassOptionsToClass{10pt}{book}
\else
    \PassOptionsToClass{12pt}{book}
\fi

%Die dritte Idee, welche auf der zeiten (und etwas spielen basiert)
\newif\if@tenpt
\@tenptfalse
\DeclareOption{10pt}{\@tenpttrue}

\if@tenpt
    \DeclareOption{10pt}{\PassOptionsToClass{10pt}{book}}
    \ExecuteOptions{10pt}
\else
    \DeclareOption{12pt}{\PassOptionsToClass{12pt}{book}}
    \ExecuteOptions{12pt}
\fi

\ProcessOptions\relax
\LoadClass{book}

\RequirePackage{blindtext}
\RequirePackage[english]{babel}
Würde mich super über Input freuen. Vielleicht geht es ja auch wesentlich einfacher, dass man einfach eine Standardoption angibt. Toll wäre es, wenn ich irgendwie verstehen könnte warum meine Versuche oben nicht funktionieren.

Vielen Dank schonmal.
Benji

benji

Beitrag von benji »

Nur falls jm. ebenfalls danach sucht: Der "Trick" ist, die ProcessOptions vor die PassOptionsToClass zu ziehen.

Antworten