Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Parameter an Klassendatei übergeben

  1. #1
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157

    Parameter an Klassendatei übergeben

    Hallo Freunde!

    Ich habe (mit Hilfe) eine kleine Klassendatei geschrieben (apa6g). In der Klassendatei apa6g.cls wird die Klasse apa6 geladen.

    Die apa6-Klasse sieht 3 verschiedene Modi vor, von denen eine bei den optionalen Argumenten bei Laden der Klassendatei anzugeben ist. Das sind die Modi: man, jou und doc. Da ich eigentlich nur den man-Mode benötige, habe ich ihn so in die apa6g.cls geschrieben.

    Leider schränkt das aber die Möglichkeiten der apa6-Klasse ein. Meine Frage wäre nun, was ich in der TeX-Datei, in der ich die apa6g-Klasse lade, eingeben kann/muss, um die verschiedenen Modi nutzen zu können?

    Vielleicht ist das zu umständlich ausgedrückt, deshalb hier noch mal die entsprechenden Quelltexte. Aus meinem TeX-Dokument:

    Code:
    \documentclass[ngerman]{apa6g}
    Aus der apa6g.cls:

    Code:
    \LoadClass[a4paper,man,biblatex,babel,noextraspace]{apa6}
    Statt der Option man gibt es eben noch die beiden weiteren Modi.

    Was kann ich nun also tun, um diese von meiner TeX-Datei aus zu laden?


    Herzlichen Dank, André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Schaue mal in den clsguide ("texdoc clsguide"), insbesondere Abschnitt "3.3 Declaring options".

    In Kürze: Du kannst Optionen auch vor dem Laden der Klasse apa6 mit \PassOptionsToClass für das spätere Laden vormerken. So hast du die Möglichkeit, Optionen wie "man", "jou" und "doc" selber zu behandeln und unbekannte Optionen an apa6 weiterzureichen, z.B. so:

    Code:
    % Die Optionen "man", "jou" und "doc" so definieren, daß sie jeweils \apasixg@mode setzen
    \DeclareOption{man}{\def\apasixg@mode{man}}
    \DeclareOption{jou}{\def\apasixg@mode{jou}}
    \DeclareOption{doc}{\def\apasixg@mode{doc}}
    % Alle anderen Optionen transparent an apa6 durchreichen
    \DeclareOption*{\PassOptionsToClass{\CurrentOption}{apa6}}
    % "a4paper,man,biblatex,babel,noextraspace" ausführen, "man" belegt hierbei lediglich \apasixg@mode vor
    \ExecuteOptions{a4paper,man,biblatex,babel,noextraspace}
    % Optionen des Anwenders ausführen (z.B. "doc,ngerman")
    \ProcessOptions\relax
    % \apasixg@mode ist nun gesetzt, also an apa6 weiterreichen
    % (Ist das \@expandtwoargs wirklich notwendig? Keine Ahnung, aber auf jeden Fall schadet es hier nicht.)
    \@expandtwoargs\PassOptionsToClass{\apasixg@mode}{apa6}
    % apa6 mit all den vorgemerkten Optionen laden
    \LoadClass{apa6}
    Nun kann man deine Klasse mit \documentclass[ngerman]{apa6g} laden, dies würde den "man"-Modus verwenden, da dieser voreingestellt ist. \documentclass[jou,ngerman]{apa6g} hingegen würde den "jou"-Modus von apa6 verwenden.

    (Viel einfacher wäre es, wenn sich in apa6.cls die Optionen "man", "jou" und "doc" jeweils überschreiben würden, für mich sieht es allerdings so aus, als wäre apa6.cls auf die Angabe von mehr als einer der drei Modi nicht vorbereitet, daher die etwas umständliche Lösung oben.)

    P.S.: Danke für den indirekten Hinweis auf den Fehler im endfloat-Paket. Ich werde das in die nächste Version, die ich (hoffentlich) im August (endlich) veröffentlichen werde, einpflegen.
    Geändert von sommerfee (28-07-2012 um 18:13 Uhr) Grund: Kommentare eingepflegt

  3. #3
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157
    Vielen Dank -- das sieht richtig gut aus. Ich hatte tatsächlich schon mal in den clsguide geschaut, aber irgendwie sind solche Dinge noch zu hoch für mich.

    Ein kleines Problem gibt es dennoch. Nachdem ich die Lösung so eingearbeitet habe, werden die Überschriften (Kolumnentilel, Zusammenfassung, usw.) nicht mehr übersetzt.

    Ich habe mir die Optionen angeschaut, die jetzt durchgereicht werden. Es sind die gleichen wie zuvor -- woran kann das also liegen?

    Besten Dank, André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Mea culpa, ersetze
    Code:
    \ExecuteOptions{a4paper,man,biblatex,babel,noextraspace}
    durch
    Code:
    \PassOptionsToClass{a4paper,biblatex,babel,noextraspace}{apa6}
    \ExecuteOptions{man}
    denn \DeclareOption* greift bei \ExecuteOptions nicht, sondern nur bei denjenigen Optionen, die der Anwender beim Laden der Klasse angegeben hat.

    (BTW: Das \@expandtwoargs ist nicht notwendig.)
    Geändert von sommerfee (29-07-2012 um 05:49 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    Warum nicht einfach:
    Code:
    \PassOptionsToClass{a4paper,man,biblatex,babel,noextraspace}{apa6}
    \LoadClassWithOptions{apa6}
    Dabei werden schlicht alle Optionen auch an die Basisklasse apa6 weitergeleitet. Probleme bekommt man damit nur, wenn die Wrapperklasse zusätzliche Optionen deklariert, die die Basisklasse nicht kennt. Oder sehe ich das irgendwie falsch?

    PS: Bin gerade im Urlaub und nur online, weil es regnet.

  6. #6
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von klops Beitrag anzeigen
    Warum nicht einfach:
    Dazu zitiere ich mich mal selber:
    Zitat Zitat von sommerfee Beitrag anzeigen
    (Viel einfacher wäre es, wenn sich in apa6.cls die Optionen "man", "jou" und "doc" jeweils überschreiben würden, für mich sieht es allerdings so aus, als wäre apa6.cls auf die Angabe von mehr als einer der drei Modi nicht vorbereitet, daher die etwas umständliche Lösung oben.)

  7. #7
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157
    Hallo sommerfee!

    Nun läuft es -- vielmals danke!

    Grüße vom André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

Lesezeichen

Berechtigungen

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