Seite 1 von 1
Eigene Klasse +keyval als Klassenoption
Verfasst: Sa 5. Jun 2010, 15:02
von DG1BGS
Hallo zusammen,
ich programmiere gerade meine eigene Latex-Klasse die auf scrbook basiert. Ich möchte nun Klassenoptionen definieren, die neben dem eigentlichen Key, KEY=WERT erhalten und diesen Wert entsprechend abfragen können.
Beispiel: eigene Klasse laden mit:
\documentclass[XY=50mm]{MeineKlasse}
Meine eigene Klasse wird also jetzt mit der Option XY geladen und dieser gleichzeitig ein Wert mit übergeben. Aber wie definiere ich jetzt die Option in der "MeineKlasse.cls"
\DeclareOption{XY}{WasZuTunIst=#1}
Das funktioniert so natürlich nicht, da mir auch noch völlig unklar ist, wie ich ihm überhaupt mittelen kann, dass es sich bei "XY" um ein keyval handelt.
Habt ihr irgendwelche Voschläge?
LG Stephan
Verfasst: Sa 5. Jun 2010, 16:06
von phi
Hallo,
für Schlüssel-Wert-Optionen musst du eines der Dutzenden Pakete benutzen, die es dafür gibt, z.B. kvoptions, kvsetkeys, l3keys2e, scrbase, xkeyval...
Verfasst: Mi 9. Jun 2010, 17:25
von DG1BGS
phi hat geschrieben:Hallo,
für Schlüssel-Wert-Optionen musst du eines der Dutzenden Pakete benutzen, die es dafür gibt, z.B. kvoptions, kvsetkeys, l3keys2e, scrbase, xkeyval...
Danke für den guten Hinweis. Ich hatte bisher über pgfkeys gelesen, war mir aber unsicher ob das auch für Optionen einer eigenen Klasse geeignet ist. Nun habe ich mich in "kvoptions" eingearbeitet und ein Minalmalbeispiel konstruiert.
Die Klassendatei:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{keyvaltest}
\RequirePackage{ifthen}
\RequirePackage[patch]{kvoptions}
\SetupKeyvalOptions
{
family = mrm,
prefix = mrm@
}
\DeclareStringOption[0mm]{bincor}
\ProcessKeyvalOptions* %diese Zeile erzeugt die "falsche" Warnung
\ProcessOptions\relax
\LoadClass[12pt,a4paper]{scrbook}
\evensidemargin=-\mrm@bincor
\oddsidemargin=\mrm@bincor
Die tex-Datei:
\documentclass[bincor=5mm]{keyvaltest}
\usepackage{blindtext}
\begin{document}
\Blindtext
\end{document}
Der dem Key übergebene Wert wird richtig verarbeitet. Da meine spätere Klasse aber auch standard-Optionen verarbeiten möchte, bekomme ich bei der Verwendung der beiden Befehle
\ProcessKeyvalOptions*
\ProcessOptions\relax
miteinander die Warnung:
LaTeX Warning: Unused global option(s):
[bincor=5mm].
Hat jemand eine Idee wie ich diese Warnung unterdrücken kann? Der Benutzer soll später nicht das Gefühl haben, dass etwa seine Option falsch wäre, denn sie ist es ja nicht!
Lg Stephan
Verfasst: Do 10. Jun 2010, 08:10
von KOMA
Du hast die Wahl. Entweder Du definierst die Standardoptionen über das kvoptions-Interface beispielsweise als \DeclareVoidOption oder Du verwendest statt kvoptions ein Paket, das ein Nebeneinander von klassischen Optionen und key-value-Optionen beherrscht (beispielsweise scrbase).
Verfasst: Do 10. Jun 2010, 17:34
von DG1BGS
KOMA hat geschrieben:Du hast die Wahl. Entweder Du definierst die Standardoptionen über das kvoptions-Interface beispielsweise als \DeclareVoidOption oder Du verwendest statt kvoptions ein Paket, das ein Nebeneinander von klassischen Optionen und key-value-Optionen beherrscht (beispielsweise scrbase).
Ich hatte es fast befürchtet

Nun habe ich alle bisherigen Optionen mit "kvoptions" realisiert und die Warnung ist verschwunden. Alles wieder prima!