Sie sind hier

Funktionsweise von \FamilyUnknownKeyValue

Hallo!

Ich verwende in einem Paket \FamilySetNumerical zum Setzen eines numerischen Schlüssels. Wenn dem Schlüssel ein unbekannter Wert zugewiesen wird, gibt \FamilyUnknownKeyValue eine Fehlermeldung aus, und zwar – abhängig vom Inhalt von \scr@removeunused – mittels \PackageError oder \PackageInfo.

Meine Frage ist nun: Wann verwendet \FamilyUnknownKeyValue \PackageError und wann \PackageInfo? In meinem Fall bekomme ich immer nur einen Eintrag in die Logdatei.

MfG, Michael

P.S.: Mir fällt gerade auf, dass in der KOMA-Script–Anleitung statt \FamilyUnknownKeyValue immer \FamilyUnkownKeyValue steht.

Bild von Markus Kohm

\scr@removeunused ist normalerweise als leer definiert. Innerhalb von \FamilyProvessOptions wird es bei der Abarbeitung globaler Optionen benutzt, um die aktuelle Option genau dann aus der Liste, der weder von der Klasse noch einem Paket benutzten globalen Optionen zu entfernen, falls diese Option vom jeweiligen Paket genutzt wird.

Da globale Optionen nicht dem Paket alleine gehören, soll bei der Abarbeitung einer globalen Option kein Fehler gemeldet werden, wenn das Paket den gegebenen Wert nicht kennt. In diesem Fall bleibt die Option einfach ungenutzt. Zur Sicherheit wird aber per \PackageInfo noch eine Information geschrieben.

Erstes Beispiel:

\documentclass[twoside=genau]{article}
\usepackage{typearea}
\begin{document}
\end{document}

Ergibt die LaTeX-Warnung:

LaTeX Warning: Unused global option(s):
    [twoside=genau].

Das ist absolut korrekt. Es könnte ja ein anderes Paket geladen werden, das mit twoside=genau etwas anfangen kann.

Zweites Beispiel:

\documentclass{article}
\usepackage[twoside=genau]{typearea}
\begin{document}
\end{document}

Sollte die Fehlermeldung:

! Package scrbase Error: option `twoside' of family `KOMA' has no value `genau'.
 
See the scrbase package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
 
l.675 \KOMAProcessOptions
                         \relax
You've tried to set option `twoside' of family 'KOMA' to value `genau'.
But allowed values are only:
`true', `on', `yes', `false', `off', `no'.
See the manual of the class or package, that provides family `KOMA'
for more information about options and their values.

erzeugen. Da ist bezüglich der Angabe des Werts leider noch ein Fehler in 3.11 (im SVN ist der berteits behoben), so dass statt `genau' leider `@twoside' gemeldet wird. Da der Fehler aber nur im Fehlerfall auftritt, sehe ich das nicht ganz so tragisch und werde nur dafür eher keine neue Release erstellen.

Damit ist klar, dass \FamilyUnknownKeyValue korrekt funktioniert.

Verwirrend in meinem Fall ist, dass ich keine „Unused global option(s)“ -Warnung bekomme, wenn ich dem Schlüssel als globaler Option einen falschen Wert zuweise. Werde versuchen herauszufinden, woran das liegt. Vielleicht gibt’s irgendeine Interferenz mit einem anderen Paket.

Bild von Markus Kohm

Wenn irgendein Paket der Meinung ist, dass es die Option auswertet, dann entfällt die Warnung. Das ist auch der Grund, warum scrbase bei unbekannten Werten zumindest noch eine Info in die log-Datei schreibt.

Ich habe mir die Sache etwas genauer angeschaut. Beim Kompilieren folgenden Minimalbeispiels wird keine „Unused global option(s)“-Warnung ausgegeben, obwohl dem Schlüssel mykey als globaler Option ein ungültiger Wert zugewiesen wird:

\documentclass[mykey=notmyvalue]{scrartcl}
 
\usepackage{filecontents}
 
\begin{filecontents}{mypackage.sty}
\ProvidesPackage{mypackage}
\DefineFamily{mhp}
\DefineFamilyMember{mhp}
\FamilyNumericalKey{mhp}{mykey}{mhp@mykey}{{myvalue}{0}}
\FamilyProcessOptions{mhp}
\end{filecontents}
 
\usepackage{mypackage}
 
\begin{document}
 
\end{document}

Wenn ich richtig verstanden habe, sollte es hier jedoch eine „Unused global option(s)“-Warnung geben, oder?

Bild von Markus Kohm

Du hast einen weiteren Bug gefunden.

Comments for "Funktionsweise von \FamilyUnknownKeyValue" abonnieren