Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Befehl überladen bzw. variable Anzahl Parameter

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.03.2007
    Beiträge
    14

    Befehl überladen bzw. variable Anzahl Parameter

    Hallo,

    ich suche einen Möglichkeit um die folgenden Befehle durch einen zu ersetzen:

    \newcommand{\cdEins}[3]{\cda{#1}\cdp{#3}\cde{#2}}
    \newcommand{\cdZwei}[4]{\cda{#1}\cdp{#3}\cdp{#4}\cde{#2}}
    \newcommand{\cdDrei}[5]{\cda{#1}\cdp{#3}\cdp{#4}\cdp{#5}\cde{#2}}
    usw.

    Leider lässt Latex es nicht zu den gleichen Namen zu verwenden, da es einen Befehl scheinbar nur am Namen erkennt und somit unabhängig von der Parameteranzahl.

    Daher wollte ich fragen ob es denn eine Möglichkeit gibt die Parameteranzahl variabel zu halten. Allerdings meine ich damit nicht einfach {} als Paramter anzugeben, denn dies führt dann zum Ausführen der Funktion \cdp{}, was nicht erwünscht ist. Vielmehr soll für jeden Parameter ab dem Dritten \cdp ausgeführt werden.

    Vielleicht kann ja jemand helfen.

    Im voraus herzlichen Dank.

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von Homeboyli Beitrag anzeigen
    Daher wollte ich fragen ob es denn eine Möglichkeit gibt die Parameteranzahl variabel zu halten.
    Mir fällt da spontan ein:

    1. Optionale Argumente nehmen. Davon kann man ja beliebig viele erkennen, bis eine wohl definierte Anzahl von nicht-optionalen Argument folgt. Also z.B.:

    \cd{...}
    \cd[...]{...}
    \cd[...][...]{...}
    \cd[...][...][...]{...}
    ...

    So hat z.B. \parbox bis zu 3 optionale Argumente.

    2. key-value-Interface nehmen, wie z.B. bei \hypersetup. Zur Realisierung könnte man z.B. das kvoptions-Paket nehmen.

    Liebe Grüße,
    Axel

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.03.2007
    Beiträge
    14
    Hallo,

    zunächst mal vielen Dank für die Hilfe.

    Allerdings muss ich sagen, dass ich es nicht hinbekommen habe.

    Zu 2. muss ich zugeben das ich gar nichts verstehe. Bin halt noch kein Profi.

    Zu 1. das klingt ja ganz vielversprechend habe auch ein wenig herumgespielt, habe es aber nicht geschafft. Wäre nett wenn du mir ein Beispiel zeigen könntest. Am besten eines wo Definition des Befehls und Benutzung zeigt.

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von Homeboyli Beitrag anzeigen
    Zu 2. muss ich zugeben das ich gar nichts verstehe. Bin halt noch kein Profi.
    \hypersetup hat als Syntax \hypersetup{parameter1=wert, parameter2=wert, ...}, d.h. man kann beliebig viele Parameter in beliebiger Reihenfolge über den Namen angeben. Ähnlich wie auch \includegraphics könnte man ein Kommando \cd[...]{...} realisieren, wo man in den eckigen Klammern die Optionsliste angeben kann. Schaue dir einfach mal \hypersetup vom hyperref Paket bzw. \includegraphics vom graphicx-Paket an.

    Realisieren kann man das als User wohl am einfachsten über das kvoptions-Paket oder das xkeyval-Paket, wobei ich ersteres bevorzuge.

    Zu 1. das klingt ja ganz vielversprechend habe auch ein wenig herumgespielt, habe es aber nicht geschafft. Wäre nett wenn du mir ein Beispiel zeigen könntest. Am besten eines wo Definition des Befehls und Benutzung zeigt.
    Bei mehr als einem optionalen Parameter muß man auf die LaTeX-Kernel-Befehle \@ifnextchar bzw. \@testopt zurückgreifen, den Mechanismus quasi selber "zu Fuß" implementieren. Am besten schaut man sich das am Beispiel des Quelltextes von \parbox oder so an, da sieht man sehr schön, wie sich \parbox von optionalen Parameter zu Parameter "hangelt".

    Als Anfänger ist aber Möglichkeit 2 sicherlich einfacher zu realisieren.

    Liebe Grüße,
    Axel
    Geändert von sommerfee (06-08-2007 um 08:18 Uhr) Grund: "keyvalx" zu "xkeyval" korrigiert

  5. #5
    Registrierter Benutzer
    Registriert seit
    08.03.2007
    Beiträge
    14
    Hallo, auch dies hilft mir ehrlich gesagt nicht weiter, da ich hieraus nicht erkennen kann wie ich einen Befehl mit Variabler PArameteranzahl definiere oder benutze.

    Wo kann ich denn den Wualltext von \parbox mir anschauen, habe leider nichts gefunden.

  6. #6
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von Homeboyli Beitrag anzeigen
    Wo kann ich denn den Wualltext von \parbox mir anschauen, habe leider nichts gefunden.
    Z.B. hier: ftp://ftp.dante.de/tex-archive/macro...se/ltboxes.dtx

    Gruß,
    Axel

Lesezeichen

Berechtigungen

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