Probleme bei eigenem Makro

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

Ehrlich gesagt ist mir der Sinn des Ganzen auch etwas schleierhaft. Du betreibst hier seit Wochen einen riesigen Aufwand, nur um die Syntax der pstricks-Befehle ein bisschen zu verändern. Neue Funktionalität wird dadurch ja gar nicht hinzugefügt. Bei deinem letzten Beispiel würde der Befehl \Diode exakt dasselbe wir der schon vorhandene Befehl \diode machen, nur müsste der Benutzer ein paar Klammern und Kommata anders setzen. Ich würde hier einfach die schon vorhandene Syntax benutzen.

sLy
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 30. Sep 2009, 17:41

Beitrag von sLy »

KOMA hat geschrieben: Da funktioniert diverses nicht. Zum einen fehlen pst-circ, \makeatletter und \makeatother. Dann definierst Du hier:

Code: Alles auswählen

\newcommand*{\csname#1\endcsname}[1]{%
\csname neu. Noch deutlicher wird das bei

Code: Alles auswählen

\def\csname@#1
, wobei hier eben nicht \csname, sondern \csname@ neu definiert wird. Es fehlt also auch noch ein Leerzeichen nach \csname.

Bevor Du Dich an derart komplizierte Dinge wagst, solltest Du im TeXbook oder min. in TeX by Topic mal nachlesen, wie die Expansion in TeX generell und Dinge wie \expandafter und \csname...\endcsname funktionieren. Im Beispiel müsste man erst \csname #1\endcsname expandierten und dann \newcommand, also

Code: Alles auswählen

\expandafter\newcommand\expandafter*\expandafter{\csname #1\endcsname}
Das ist dann aber noch nicht das Ende der Probleme. Du hast auch wieder Umwege über \protected@edef, wo diese sicher nicht erforderlich sind. Dafür sollte man überlegen, bei der \def\csname-Geschichte eher auf diesem Weg vorzugehen. Desweiteren macht wohl auch:

Code: Alles auswählen

 \expandafter\csname @#1\endcsname\@tempa\@nil
nicht das, was Du willst. Denn hier wird lediglich die Expansion von \csname verzögert. Du willst aber vermutlich die Expansion des Makros der Expansion von \csname @#1\endcsname verzögern.

Ich glaube aber, dass es den Rahmen dieses Forums sprengt, Dir die low-level TeX-Grundlagen und die Feinheiten der Expansion beizubringen. Du begibst Dich da schon recht tief in den Teil von TeX, in dem man sich leicht verirren kann und auch ein Experte gut aufpassen muss.

Um es kurz zu machen: Neben anderen Fehlern funktioniert die komplette Expansionslogik Deines Codes nicht.
trotzdem danke, dass du dir die mühe gemacht hast, mir meine fehler zu erklären. ich werde mir bei gelegenheit evtl. mal das texbook o. ä. zu gemüte führen. Tex by topic lese ich gerade.
Das Problem bei dem ganzen ist, dass die tiefgründige literautr (z.b. texbook & tex by topic) auf englisch ist, was das erlernen nicht gerade vereinfacht.
phi hat geschrieben: Ehrlich gesagt ist mir der Sinn des Ganzen auch etwas schleierhaft. Du betreibst hier seit Wochen einen riesigen Aufwand, nur um die Syntax der pstricks-Befehle ein bisschen zu verändern. Neue Funktionalität wird dadurch ja gar nicht hinzugefügt. Bei deinem letzten Beispiel würde der Befehl \Diode exakt dasselbe wir der schon vorhandene Befehl \diode machen, nur müsste der Benutzer ein paar Klammern und Kommata anders setzen. Ich würde hier einfach die schon vorhandene Syntax benutzen.
Ich betreibe das ganze deswegen seit wochen, weil ich nicht nur meine Facharbeit (K13 gymnasium) mit latex schreibe, sondern weil auch das Thema meiner Facharbeit Darstellung von physikalischer Schaltbilder mit Hilfe von Latex und PSTricks lautet, wie ich in in diesem post bereits erwähnt habe.
Natürlich fragt man sich jetzt, wieso ich eine Facharbeit mit dem Thema schreibe eine Darstellungweise von Schaltbildern zu entwickeln, wenn es bereits seit langem pst-circ gibt. Die antwort ist ganz einfach, dass der betreffende Themensteller dieses paket nicht gekannt hat.
Der Sinn des Ganzen aufwandes, den ich hier betreibe, ist, die Darstellungsweise durch einschränkungen soweit zu vereinfachen, dass man ein einfaches schaltbild mit nur einem befehl erstellen kann. Ob das jetzt für die Augen eines erfahrenen Tex-Spezialisten (oder gar Latex-Entwicklers) sinnvoll erscheint, wage ich zu bezweifeln. Aber tatsache ist, dass das jetzt mein Thema ist und ich es auch nicht mehr ändern kann (abgabe ist übermorgen). Von daher habe ich es -in meinen augen- geschafft, die themenstellung zumindest auf dem nivau eines gymnasiasten befriedigend zu bearbeiten. Natürlich habe ich das nicht alleine geschafft, sondern nur dank eurer hilfe, für die ich mich an dieser stelle nochmal ausdrücklich bedanken will.

Von daher, werdet ihr spätestens am freitag keine anfänger-fragen von mir zu diesem thema beanworten müssen.

Mit freundlichen Grüßen,
sLy

Antworten