[Tustep-Liste] LNR etc. Beispiel2

Thomas Kollatz kol at steinheim-institut.org
Fr Aug 29 11:24:35 CEST 2008


Lieber Herr Moser, liebe TUSTEP'er

Beispiel 2: Fussnoten in Endnoten.
Wieder gehe ich aus vom Trierer Beispiel habe aber spasseshalber eine  
zeilenübergreifende Fussnote eingebaut (Nr.5 im 1. Brief),
setze in der Zieldatei anstelle der Fussnote einen Platzhalter ein
und ändere die tags: <fn> zu <endnote>.

Zum Konzept:
4 definierte Stellen <brief>, </brief> und <fn>, </fn> steuern die  
Ausgabe in die Zieldatei
(TYP "4" = Die Variable 'text' besteht aus einer dieser 4 definierten  
Trennzeichenfolgen).

Nach ------>  kopieren, dann einfügen (Anweisung: ez1), und ausführen  
"x #t,<editor>:
Das Ergebnis steht in der Datei "hi2".
Auch hier kann TRACE die Arbeitsweise veranschaulichen.

Herzliche Grüße
THOMAS KOLLATZ


--------->
#- Hilfsdateien
#da,beispiel2'hi2,fr=-
#- Aufgabe: Wandle Fussnoten in Endnoten um
#- 1. Setze Platzhalter <endnote/> statt <fn>...</fn>;
#- 2. Setze Endnoten jeweils ans Abschnittsende;

#- Beispieltext in Datei beispiel2 schreiben
#um,*,beispiel2,lo=+
<brief>
Text Text Text Text Text <fn> Fn-Text 1 </fn>  Text
Text Text <fn> Fn-Text 2 </fn> Text Text Text Text
Text Text Text Text Text <fn> Fn-Text 3 </fn>  Text
Text <fn> Fn-Text 4 </fn> Text Text <fn> Fn-
Text 5 </fn> Text Text Text Text <fn> Fn-Text 6 </fn>  Text
</brief>
<brief>
Text Text Text Text Text <fn> Fn-Text 1 </fn>  Text
Text Text <fn> Fn-Text 2 </fn> Text Text Text Text
Text Text Text Text Text <fn> Fn-Text 3 </fn> Text
Text <fn> Fn-Text 4 </fn>  Text Text <fn> Fn-Text 5 </fn>
Text Text Text Text Text <fn> Fn-Text 6 </fn>  Text
</brief>
<brief>
Text Text Text Text Text <fn> Fn-Text 1 </fn>  Text
Text Text <fn> Fn-Text 2 </fn>  Text Text Text Text
Text Text Text Text Text <fn> Fn-Text 3 </fn>  Text
Text <fn> Fn-Text 4 </fn>  Text Text <fn> Fn-Text 5 </fn>
Text Text Text Text Text <fn> Fn-Text 6 </fn>  Text
</brief>
*eof

#ma
$$! quelle=beispiel2,ziel=hi2,endnoten,tag=endnote
$$ MODE TUSCRIPT
SET aken = START_TAG (tag)
SET eken = END_TAG (tag)
SET sn=0
-Trace +stop
BUILD S_TABLE stop = ":<<brief>>:<<fn>>:<</fn>>:<</brief>>:"
COMPILE
ACCESS q: READ/STREAM/RECORDS $quelle ...
           s.z/u,  taganf + text/stop + tagend,typ
ACCESS z: WRITE/ERASE/STREAM $ziel ...
           sn.z/u,  taganf+text+tagend
LOOP/9999
READ/EXIT q
SELECT typ
- 4 = Einer der unter "stop"-definierten Fälle
CASE "4"
- Texteinheit Anfang:  alles zurück auf 'start'
IF (text=="<brief>") SET marker=0,sn=sn+1,endnote=endnoten=""
- Fussnotenmarkierung Anfang: marker auf "1"
- Fussnotentag wird endnotentag, ausgeben
IF (text=="<fn>") THEN
SET marker=1
SET text = EMPTY_ELEMENT_TAG (tag)
ENDIF
- Fussnotenmarkierung Ende:
- Text der Endnote an Variable endnoten hängen
- nichts ausgeben (=CYCLE)
IF (text=="</fn>") THEN
SET endnote  = CONCAT (aken,endnote,eken)
SET endnoten = REPLACE  (endnoten,0,endnote)
SET endnote=""
SET marker=0
CYCLE
ENDIF
- Texteinheit Ende: Endnote ausgeben
IF (text=="</brief>") THEN
SET endnotentxt = APPEND (endnoten,text)
SET text = SPLIT (endnotentxt)
ENDIF

- 0 = Text ohne tags
CASE "0"
- Wenn Variable "marker" den Wert "1" hat,
- dann Text in Variable "endnote" ablegen
- nichts ausgeben (=CYCLE)
IF (marker==1) THEN
SET endnote = JOIN (endnote,"",text)
CYCLE
ENDIF
ENDSELECT
WRITE z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
ENDCOMPILE
*EOF

#- Kontrolle am Bildschirm:
#ve,beispiel2,hi2,z,,,,+



Mehr Informationen über die Mailingliste Tustep-Liste