Seite 1 von 1

Hilfe bei Erstellung eines neuen Befehls

Verfasst: So 27. Jun 2010, 14:41
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ß

Verfasst: Mo 28. Jun 2010, 08:51
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}%
}

Verfasst: Mo 28. Jun 2010, 20:25
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 :)

Verfasst: Di 29. Jun 2010, 10:33
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)