Hilfe bei Erstellung eines neuen Befehls

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


goldeagle
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Di 15. Jun 2010, 17:44

Hilfe bei Erstellung eines neuen Befehls

Beitrag von goldeagle »

Hallo,

ich bräuchte eine Hilfestellung, bei der Erstellung eines Befehls, welcher folgendes tun soll:

Befehlaufruf:
\meinbefehl{TMP1=Text1, TMP2=Text2, TMP3=Text3}
Dieser Aufruf wäre bspw. äquivalent zu:
\psfrag{TMP1}{Text1}
\psfrag{TMP2}{Text2}
\psfrag{TMP3}{Text3}
Hilft mir da in irgendeiner Weise das Paket keyval weiter oder muss ich das ganz anders angehen?

Vielen Dank für konstruktive Beiträge.
Gruß

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wenn Du nicht alle möglichen Angaben vor dem Gleichheitszeichen als key definieren willst, dann hilft Dir keyval in diesem Fall eher wenig. Stattdessen musst Du selbst einen Parser für die gewünschte Syntax schreiben. Das ist sicher nichts für einen LaTeX-Anfänger. Auch wenn Du Teile von keyval dafür übernehmen kannst, zeigt die Erfahrung, dass ein Anfänger das in der Regel nicht wirklich versteht. Schon die einfachste Form, die keinerlei Fehleingaben duldet und bezüglich der Leerzeichen sehr pingelig ist, werden die meisten Anfänger nicht in allen Konsequenzen durchschauen (ungetestet, was bei solchen Dingen immer fehleranfällig ist):
\newcommand*{\meinbefehl}[1]{%
  \@for \@tempa:=#1\do {%
    \expandafter\meinpsfrag\expandafter{\@tempa}%
  }%
}
\newcommand*{\meinpsfrag}[1]{%
  \@meinpsfrag#1\@nil
}
\newcommand*{\@meinpsfrag}{}
\def\@meinpsfrag#1=#2\@nil{%
  \psfrag{#1}{#2}%
}

goldeagle
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Di 15. Jun 2010, 17:44

Beitrag von goldeagle »

Vielen Dank für die Antwort. Das Grundgerüst tut genau das, was ich möchte. Zu weiteren gewünschten Anpassungen bin ich selber fähig :)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wenn die Frage damit beantwortet ist, solltest Du den Status entsprechend anpassen. Wenn die Frage noch nicht beantwortet ist, bitte angeben, was noch fehlt.

Markus
(Moderator)

Antworten