Aufteilen des Textes von \foo{Text} an einem bestimmten Char

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


chris#434b
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 10. Okt 2012, 16:25

Aufteilen des Textes von \foo{Text} an einem bestimmten Char

Beitrag von chris#434b »

Hallo,

ich habe gerade die Ehre Dukmentation zu erstellen. Die Quellen der einzelnen Kapitel komm,en von unterschiedlichsten Systemen, u.a. auch aus einer Host-Datenbank, deren Output in geringen maße angepasst werden konnte. Daher viel die Wahl auf (La)TeX. Jetzt zum Problem:

Durch die Anpassungen gibt es Textteile der Form [code]\foo{Text}[/code].

[code]\foo[code] ist definiert als:

[code]\newcommand{\foo}[1]{#1\bar{#1}}[/code]

Soweit so gut. Nun zeigte es sich aber, daß manchmal on #1 ein Doppelpunkt vorkommt. Der Text vor bis einschließlich des Doppelpunktes soll jetzt aber nicht ausgegeben werden.

Das heißt ich benötige jetzt ein Makro [code]\baz#1{...}[/code] innerhalb der geänderten \foo

[code]\newcommand{\foo}[1]{\baz{#1}\bar{#1}}[/code]

das aus seinem Argument vom Anfang bis zum Doppelpunkt (einschließlich) alles entfernt und nur den Rest (der Alles ist wenn *kein* Doppelpunkt vorkommt) "durchläßt"

Hat jemand eine Idee. Meine sind alle im Sande verlaufen oder haben sich in Endlosschleifen fangen lassen. ;-)

Danke
[/code]

Sirius3
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 30. Okt 2011, 10:22

Beitrag von Sirius3 »

Hallo Chris,

was hast Du schon alles versucht?
\def\bazI#1:#2:\hoffset#3\end{\ifx\hoffset#2#1\else#2\fi}
\def\baz#1{\bazI#1:\hoffset:\hoffset\end}
Ich hoffe, Du willst alles hinter dem ersten ":", und nicht hinter dem letzten ":".
Zweiteres wäre schwieriger.
\baz{Tom: Was sagt Tim?} -> Was sagt Tim?
\baz{Kim: Tim sagt: Tom komm!} -> Tim sagt: Tom komm!
\baz{Tom geht.}  -> Tom geht.
Grüße
Sirius

chris#434b
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 10. Okt 2012, 16:25

Beitrag von chris#434b »

Hallo Sirius

> was hast Du schon alles versucht?

Nun mein archäologisches Gedächtnis hatte sich genau an so ein \def#1:#2{...} Konstrukt erinnert. Jedoch kam ich nicht mit der wahlweisen Optionalität vor dem Doppelpunkt klar.

Danach wollte ich dann auf das \vokale{...} Beispiel aus dem Buch "Einführung in TeX" von "Norbert Schwarz" Seite 120 (Mittlerweile im Netz verfügbar) zurückgreifen, was dann nach meinen Anpassungen in 100 mal "...missing \cr" bei gleicher "Zeilennummer" und dem dann folgenden FATAL-Ausstieg von pdflatex mit einem beinahe "Absturz" meiner Exclipse-Texlipse Umgebung endete.

Aber danke Dir, Deine Lösung funktioniert wunderbar. Ich habe nur das \end durch ein \relax ausgetauscht. Da sich sonst der Texlipse Parser ganz wunderbar über dieses obskure \end echauffiert.

Christian

stonjohn4
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Mi 19. Dez 2012, 07:12

Beitrag von stonjohn4 »

Ich habe mir hier aus dem eine Definierte Umgebung heraus gesucht und nach einer weiteren hatte ich selber gefragt. Nun wollte ich die zwei einmal zusammen verwenden, es kommt dabei aber nur eine Fehlermeldung

Sirius3
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 30. Okt 2011, 10:22

Beitrag von Sirius3 »

Du hast Dir aus was eine wem herausgesucht und nach welcher Fehlermeldung gefragt?

Antworten