Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Probleme im Umgang mit "FamilyBoolKey"

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.01.2011
    Beiträge
    8

    Probleme im Umgang mit "FamilyBoolKey"

    Hallo,

    gegenwärtig versuche ich, mit Hilfe des Pakets scrbase (KOMAscript), boolsche Schalter mit identischem Namen in verschiedenen Schlüsseln anzulegen.

    Beim Abprüfen der Werte, habe ich allerdings keinen Zugriff auf die Schlüssel der Schalter, um einen einzigen davon gezielt abzufragen.

    Gegenwärtig sieht mein Vorgehen wiefolgt aus:
    Code:
    %Schalter 1 erstellen
    \FamilyBoolKey[FL]{MP}{Application}{@AppTest} 
    %Schalter 2 erstellen
    \FamilyBoolKey[FL]{MP}{Level}{@AppTest} 
    
    %Schalter 1 auf TRUE setzen
    \FamilySetBool{MP}{Application}{@AppTest}{true} 
    %Schalter 2 auf TRUE setzen
    \FamilySetBool{MP}{Level}{@AppTest}{true} 
    
    %Schalter abprüfen
    \makeatletter\if@AppTest\makeatother
    do something
    \fi
    Wie unschwer zu erkennen ist, kommt bei meiner Prüfung an keiner Stelle der Schlüssel vor, um die Schalter voneinander zu unterscheiden. Leider habe ich auch keinen Plan, wie ich diese Information in den Test mit reinbekommen soll.

    Es wäre prima, wenn mir jemand 'nen Tipp geben könnte, wie das normalerweise geht.
    Ich möchte beide Schalter getrennt voneinander abprüfen können, und die Schlüssel verstehe ich bei meinen Überlegungen bisher immer als Namensraum für die Schalter.

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Wie unschwer zu erkennen ist
    Sagen wir mal so: Es ist das erste Mal, dass ich eine Frage oder eine Nachricht zu diesem Paket sehe – und ich sehe eigentlich ziemlich viele Fragen. Ich habe daher Zweifel, dass dir hier jemand helfen kann, besonders wo du nur einen Codeschnipsel zeigst – ich zumindest habe keine Lust die Dokumentation durchzuarbeiten um rauszufinden, wie man den Schnipsel zu einem geeigneten Testdokument erweitern muss. Auf komascript.de oder golatex.de, wo Markus antwortet, dürften deine Chancen größer sein – aber auch dort solltest du ein vollständiges Beispiel liefern.

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Ich glaube, Du hast das ganze Paket falsch verstanden. Die Schalter, die man da setzt, mit \FamilySetBool ein- und auszuschalten ist jedenfalls relativ sinnlos. So wie ich das verstehe, benötigt man \FamilySetBool eigentlich nur, wenn man aus irgendwelchen Gründen, einen Schalter nicht mit \FamilyBoolKey definiert, sondern mit \DefineFamilyKey. Ein Grund könnte beispielsweise sein, dass man zu einer Option draft auch eine Option final definieren will und deshalb eine inverse Logik benötigt.

    Normalerweise erledigt man das Ein- und Ausschalten per \FamilyOption oder \FamilyOptions. Der Sinn der Familien ist dabei dann, dass man innerhalb einer Familie gleiche Optionen definieren kann, bei denen dann jedes Famillienmitglied auf den entsprechenden Aufruf von \FamilyOption oder \FamilyOptions reagiert.

    Du willst anscheinend etwas ganz anderes, nämlich schlicht mehrere boolsche Unterscheidungen für Dein Dokument (oder was auch immer). Das geht einfach per:
    Code:
    \newif\ifMeinErsterSchalter
    \newif\ifMeinZweiterSchalter
    
    \MeinErsterSchaltertrue
    
    Mein erster Schalter ist \ifMeinErsterSchalter an\else aus\fi.
    
    Mein zweiter Schalter ist \ifMeinZweiterSchalter an\else aus\fi.
    Alternative: Siehe Paket ifthen.
    Geändert von Schweinebacke (09-06-2011 um 13:52 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.01.2011
    Beiträge
    8
    Das was ich will sollte eigentlich ganz simple sein:
    Ich möchte wiederkehrende "Variablen" anhand Ihrer Funktion sinnvoll benennen können, um Namenskonflikten aus dem Weg zu gehen.

    Normalerweise würde ich dies einfach mit einem Unterstrich oder einem Punkt oder einem anderen auf den ersten Blick erkennbaren Sonderzeichen erledigen.
    z.B.
    Code:
    Namensraum1_Parameter1
    Namensraum1_Parameter2
    
    Namensraum2_Parameter1
    Namensraum2_Parameter2
    In LaTeX habe ich diesbezüglich leider noch keine wirklich praktikable Lösung finden können. Die folgende Lösung mit dem "@" würde zwar prinzipiell funktionieren, scheint mir aber in der Anwendung ein wenig unhandlich, da insbesondere das Setzen der Schalter im Quellcode nicht einfach zu sehen ist.
    Code:
    \documentclass{scrartcl}
    
    \begin{document}
    
    \makeatletter
    \newif\if@MeinErster@Schalter
    \newif\if@MeinZweiter@Schalter
    
    \@MeinErster@Schaltertrue
    \@MeinZweiter@Schalterfalse
    
    Mein erster Schalter ist \if@MeinErster@Schalter an\else aus\fi.
    
    Mein zweiter Schalter ist \if@MeinZweiter@Schalter an\else aus\fi.
    \makeatother
    \end{document}
    Das eigentliche Setzen der Schalter mit FamilySetBool{Familie}{Schalter}{Wert} scheint mir da deutlich transparenter.
    Leider finde ich jedoch keine Möglichkeit, die so gesetzten Schalter auch gezielt zu prüfen. Also etwas in der Art:
    Code:
    \if@Familie@Schalter

  5. #5
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Es bestätigt sich für mich, dass Du den falschen Ansatz gewählt hast. Genau für diesen Fall hatte ich eine Alternative vorgeschlagen, die Du leider unbeachtet lässt …

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •