Eigene Klasse +keyval als Klassenoption

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Eigene Klasse +keyval als Klassenoption

von DG1BGS » Do 10. Jun 2010, 17:34

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 :roll: Nun habe ich alle bisherigen Optionen mit "kvoptions" realisiert und die Warnung ist verschwunden. Alles wieder prima!

von KOMA » Do 10. Jun 2010, 08:10

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).

von DG1BGS » Mi 9. Jun 2010, 17:25

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
Dateianhänge
keyvaltest.tex
(111 Bytes) 787-mal heruntergeladen
keyvaltest.cls.txt
".txt" entfernen!
(405 Bytes) 804-mal heruntergeladen

von phi » Sa 5. Jun 2010, 16:06

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...

Eigene Klasse +keyval als Klassenoption

von DG1BGS » Sa 5. Jun 2010, 15:02

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

Nach oben