Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Dynamischer Kommandoname

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.08.2008
    Beiträge
    44

    Dynamischer Kommandoname

    Hallo,

    ich würde gerne innerhalb eines \newcommand-Befehls ein weiteres neues Kommando definieren. Dabei soll allerdings ein Argument mit in die Namenserstellung einfließen. Beispiel:

    Code:
    \newcommand{\test}[1][]{
      ...
      \newcommand{\foobar#1}{irgendwas}
      ...
    }
    Dies schlägt jedoch fehl. Wie müsste ich richtig vorgehen, um dynamische Variablennamen zu erhalten?

    Wie geht man mit so etwas denn generell um, also wie kann ich generell Kommando- oder Variablennamen auf dynamische Weise verwenden?
    Geändert von Mithrandir (10-08-2009 um 17:27 Uhr)
    Gruß,
    M.

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    \newcommand\test[1]{%
    \expandafter\newcommand\csname foobar#1\endcsname{....}}

    (Überlege dir aber gut, ob du das innere \newcommand willst, denn dann kannst du #1 nur einmal benutzen).

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.08.2008
    Beiträge
    44
    Danke schon mal. Aber wieso kann ich das #1 dann nur einmal benutzen?

    Kann ich das neue Kommando dann mit \foobar#1 aufrufen? Denn darum gehts mir ja eigentlich.
    Geändert von Mithrandir (11-08-2009 um 07:50 Uhr)
    Gruß,
    M.

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    \test{a} wird \foobara definieren. Noch einmal \test{a} wird einen Fehler geben, weil \foobara schon definiert ist.

    Nach \test{a} kannst du \foobara verwenden (das hättest du doch einfach mal probieren können), Nach \test{123} kannst du nicht \foobar123 benutzen, aber \csname foobar123\endcsname wird gehen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.08.2008
    Beiträge
    44
    Ok, danke, werde das mal ausprobieren.
    Gruß,
    M.

Lesezeichen

Berechtigungen

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