Transparente Klassenoptionen bei Wrapper-Klassen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


mrpiggi
Forum-Anfänger
Forum-Anfänger
Beiträge: 18
Registriert: Mi 3. Apr 2013, 17:42

Transparente Klassenoptionen bei Wrapper-Klassen

Beitrag von mrpiggi »

Hallo zusammen,
ich baue gerade an einer Wrapper-Klasse und habe folgendes -- zugegebener Maßen eher kleine -- Problem. Ich möchte mit neuen Klassenoptionen Befehle der Basis-Klasse (KOMA) anpassen. Der standardmäßige Weg, wie er im clsguide vorgegeben ist, funktioniert deshalb nicht und erzeugt logischerweise einen Fehler:
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.cls}
\newcommand*\myclsname{scrreprt}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\myclsname}}
\DeclareOption{newopt}{%
  \renewcommand{\chapterheadendvskip}{\vspace*{5\baselineskip}}%
}
\ProcessOptions*\relax
\LoadClass{\myclsname}
\end{filecontents}
\documentclass[chapterprefix,newopt]{\jobname}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
Natürlich muss die Klasse für diesen Fall vor der Definition der Option geladen werden. Damit diese dennoch die Klassenoptionen sieht, wird diese nicht mit
\LoadClass
sondern durch
\LoadClassWithOptions
aufgerufen.
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.cls}
\newcommand*\myclsname{scrreprt}
\LoadClassWithOptions{\myclsname}
\DeclareOption{newopt}{%
  \renewcommand{\chapterheadendvskip}{\vspace*{5\baselineskip}}%
}
\ProcessOptions*\relax
\end{filecontents}
\documentclass[chapterprefix,newopt]{\jobname}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
Dieses Vorgehen erzeugt jedoch eine Warnung, dass die hier beispielhaft verwendete Option chapterprefix nicht verwendet wurde, obwohl dies -- wie in der Ausgabe zu sehen -- der Fall ist. In meiner Lösung nutze ich deshalb folgende Konstruktion:
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.cls}
\newcommand*\myclsname{scrreprt}
\LoadClassWithOptions{\myclsname}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\myclsname}}
\DeclareOption{newopt}{%
  \renewcommand{\chapterheadendvskip}{\vspace*{5\baselineskip}}%
}
\ProcessOptions*\relax
\end{filecontents}
\documentclass[chapterprefix,newopt]{\jobname}
\usepackage{blindtext}
\begin{document}
\blinddocument
\end{document}
Das Einfügen der Zeile
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\myclsname}}
lässt besagte Warnung verschwinden. Meine Frage ist nun, ob dieses Vorgehen so in Ordnung geht oder vielleicht doch in irgendeiner Form zu Problemen o.ä. führen könnte. Falls ja, wie würde denn eine bessere Lösung aussehen?

Grüße
Falk

Besserwisser

Beitrag von Besserwisser »

Diskussion wird auf komascript.de geführt. Dort gibt es auch erste Lösungen.

Antworten