Sie sind hier

Erstellen einer eigenen Klasse

Hallo zusammen,

ich habe ein kleines Problem bei der Erstellung einer eigenen Dokumentklasse, genauer gesagt beim Definieren der Optionen für diese Klasse mittels der DefineFamily-Kommandos. Da ich gleichzeitig Optionen an die Klasse scrartcl durchreichen möchte, ist der Befehl \ProcessOptions¹ eingebunden. Dieser führt allerdings zur Warnung

Unused global option(s): [first=a].

da offensichtlich auch die Option first=a¹ weitergereicht wird, mit der srcartcl natürlich nichts anzufangen weiß. Ich habe zwar einen unsauberen Workaround mittels \DeclareOption{first=a}{}¹ gefunden, der diese Meldung beseitigt. Allerdings das äußerst unsauber und wird bei vielen potentiellen Werten für first¹ auch etwas umständlich.

Daher meine Frage: Kennt jemand eine saubere Methode, diese Warnung zu vermeiden?

Viele Grüße
Wolfgang

Minimalbeispiel:

\RequirePackage{filecontents}
\begin{filecontents}{test.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{test}
\RequirePackage{scrbase}
 
 
\DefineFamily{bla}
\DefineFamilyMember{bla}
\DefineFamilyKey{bla}{first}[a]{
	% ...
	}
 
\FamilyProcessOptions{bla}
 
%\DeclareOption{first=a}{} % Dies verhindert die Fehlermeldung
%\DeclareOption{first=b}{}
 
\ProcessOptions\relax
\LoadClass{scrartcl}
 
\end{filecontents}
 
\documentclass[
	first=a,
	landscape,
	]{test}
 
\begin{document}
 
test
 
\end{document}

P.S.: Ich verwende KOMA-Script Version 2015/05/13 v3.17c

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)
Bild von Markus Kohm

\FamilyProcessOptions führt auch die normalen Optionen entsprechend \ProcessOptions* aus. Das zusätzliche \ProcessOptions\relax ist daher nicht nur überflüssig, sondern auch Verursacher der Warnung. Die einfache Lösung lautet also:

\RequirePackage{filecontents}
\begin{filecontents}{test.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{test}
\RequirePackage{scrbase}
 
 
\DefineFamily{bla}
\DefineFamilyMember{bla}
\DefineFamilyKey{bla}{first}[a]{% <-- potentiell signifikantes Leerzeichen!
	% ...
  \FamilyKeyStateProcessed% scrbase mitteilen, dass die Option vollständig
                          % verarbeitet werden konnte. Ohne das bekommt man
                          % ein:
% Package scrbase Info: Unknown processing state.
% (scrbase)             Processing option `first=a'
% (scrbase)             of member `.test.cls' of family
% (scrbase)             `bla' doesn't set
% (scrbase)             a valid state. This will be interpreted
% (scrbase)             as \FamilyKeyStateProcessed on input line 25.
}
 
\FamilyProcessOptions{bla}
 
\LoadClass{scrartcl}
 
\end{filecontents}
 
\documentclass[
	first=a,
	landscape,
	]{test}
 
\begin{document}
 
test
 
\end{document}

Vielen Dank, das war ja noch einfacher als erhofft :)

Comments for "Erstellen einer eigenen Klasse" abonnieren