[Tustep-Liste] iteratives Ersetzen innerhalb eines Bereiches

Michael Trauth trauth at uni-trier.de
Do Jun 1 10:19:31 CEST 2006


Lieber Herr Brunschoen,

zu Ihrer Frage:

> Innerhalb von Fußnoten befinden sich gem. <5s 
> definierte Indexeinträge. Diese sollen nun vor 
> die jeweilige Fußnote kopiert werden.
> #KO,hilf.5,hilf.6,,+,*
> <5s       |&xp<><%&x{|
> axx       |@f+|
> exx       |@f-|
> xx        |@f+<><%<5|&xf&x{>=05>=(01-04)|
> xx        |@f+<5|&xf&x{>=04>=(01-03)|
> xxi       3
> *eof
> Frage:
> Warum wird nur der erste Indexeintrag innerhalb 
> einer Fußnote herausgezogen? Liegt es an einer 
> falschen Angabe zu xxi, oder muß eine Sprungta-
> belle erstellt werden?

Nein, es liegt an Ihrem Muster: Sie lassen nach
'@f+ plus Beliebiges plus Kommentar' suchen, und
diese Suchzeichenfolge kommt fuer das Programm,
das stur von links nach rechts sucht, auch dann,
wenn *viele* Kommentare in der Fn. drinstehen, nur
ein einziges Mal vor. Aber das Problem laesst sich
leicht loesen. Zuerst die Daten: Wenn Ihre Textdatei
so aussieht:

---------------------------------------------------
$ Text Text Text Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text Text Text
Text Text @f+ Text Text &xp Name1 &x{ Text Text &xp Name2 &x{
Text Text &xp Name3 &x{ Text Text &xp Name4 &x{ Text Text Text
Text Text Text Text Text &xp Name5 &x{ Text Text &xp Name6 &x{
Text Text @f- Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text Text Text
Text @f+ Text Text &xp Name7 &x{ Text Text &xp Name8 &x{ @f-
Text Text Text Text Text Text Text Text Text Text Text Text
----------------------------------------------------

muesste das folgende (kommentierte! ;o)) #kopiere die
gewuenschte Leistung erbringen:

----------------------------------------------------
#ko,q,z,+,+,*
        * Definition der Zeichen in einer Fussnote:
<fz       |<%||@f+|@f-|
        * Abschnitte zusammenfassen an Hand von '$ ':
aa        |$ |
        * Pruefen, ob Fn. + Kommentar vorkommt:
zf+   1   |@f+><<><[fz]&x><<><%&x{|
        * Wenn ja, austauschen wie angegeben:
xx    1   |@f+><<><[fz]&x><<><%&x{|&xf&x{>=(5-10)>=(1-4)|
        * Danach erneut pruefen (-> 11) usw.
spn        3
sp2       11
sl        80 80
        * Ausgabesaetze unterteilen an &xf&x{ und @f+... at f-:
za        |&xf&x{|@f+|
ze        |@f-|
*eof
----------------------------------------------------

Die von Ihnen gewuenschte Iteration funktioniert wie
im Kommentar angegeben: Das Programm sucht zunaechst
mit zf+, ob Fn.-Beginn plus Kommentar vorkommt, dann
tauscht es aus (im Prinzip so, wie Sie es schon reali-
siert hatten), dann geht es zurueck in den Vergleich
(Sprung nach -> 11), sucht wieder mit zf+, tauscht
wieder usw., bis das Suchen nicht mehr erfolgreich
ist (dann Sprung in die Ausgabe -> 3). Das war's.


Viele Gruesse reihum von

Michael Trauth


---------------------------------------------------------------
Dr. Michael Trauth                  e-mail: trauth at uni-trier.de
Rechenzentrum                       office: Tel. 0651-201-3413
der Universitaet                            Fax  0651-201-3921
Universitaetsring                secretary: Tel. 0651-201-3417
D-54286 Trier
---------------------------------------------------------------



Mehr Informationen über die Mailingliste Tustep-Liste