[Tustep-Liste] LNR etc. Beispiel3

Thomas Kollatz kol at steinheim-institut.org
Fr Aug 29 19:31:48 CEST 2008


Liebe Liste,
im dritten Beispiel habe ich die zwei Funktionalitäten in einem  
Skript zusammengeführt:
im ersten Brief - nur Apparateinträge, die nummeriert werden sollen
im zweiten Brief - nur Fussnoten, die zu Endnoten werden sollen
im dritten Brief - Apparateinträge und Fussnoten ...

In der Zieldatei - hi3 - steht anschliessend:

<brief>
Text Text Text Text Text <a1>[1] App App </a1> Text
Text Text <a1>[2] App App </a1> Text Text Text Text
Text Text Text Text Text <a1>[3] App App </a1> Text
Text <a1>[4] App </a1> Text Text <a1>[5] App </a1> Text
Text Text Text Text Text <a1>[6] App App </a1> Text
</brief>
<brief>
Text Text Text Text Text <endnote/>  Text
Text Text <endnote/> Text Text Text Text
Text Text Text Text Text <endnote/> Text
Text <endnote/>  Text Text <endnote/>
Text Text Text Text Text <endnote/>  Text
<endnote> Fn-Text 1 </endnote>
<endnote> Fn-Text 2 </endnote>
<endnote> Fn-Text 3 </endnote>
<endnote> Fn-Text 4 </endnote>
<endnote> Fn-Text 5 </endnote>
<endnote> Fn-Text 6 </endnote>
</brief>
<brief>
Text <endnote/> Text Text <a1>[1] App App </a1>
Text <endnote/> <a1>[2] App App </a1> Text Text
Text Text Text Text <a1>[3] App App </a1> Text Text Text
Text <a1>[4] App </a1> Text <endnote/> Text <a1>[5] App </a1>
Text <endnote/>  Text <a1>[6] App App </a1> Text <endnote/>
  Text Text <endnote/>  Text Text
<endnote> Fn-Text 1 </endnote>
<endnote> Fn-Text 2 </endnote>
<endnote> Fn-Text 3 </endnote>
<endnote> Fn-Text 4</endnote>
<endnote> Fn-Text 5 </endnote>
<endnote> Fn-Text 6 </endnote>
</brief>


ab -----> kopieren (ctrl-c)
Anweisung (ez1)
ausführen x #t,<editor>
----->
#- Hilfsdateien
#da,beispiel3'hi3,fr=-
#- Aufgabe: Wandle Fussnoten in Endnoten um
#- 1. Setze Platzhalter <endnote/> statt <fn>...</fn>;
#- 2. Setze Endnoten jeweils ans Abschnittsende;

#- Beispieltext in Datei beispiel3 schreiben
#um,*,beispiel3,lo=+
<brief>
Text Text Text Text Text <a1>App App </a1> Text
Text Text <a1>App App </a1> Text Text Text Text
Text Text Text Text Text <a1>App App </a1> Text
Text <a1>App </a1> Text Text <a1>App </a1> Text
Text Text Text Text Text <a1>App App </a1> 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 <fn> Fn-Text 1 </fn> Text Text <a1>App App </a1>
Text <fn> Fn-Text 2 </fn> <a1>App App </a1> Text Text
Text Text Text Text <a1>App App </a1> Text Text Text
Text <a1>App </a1> Text <fn> Fn-Text 3 </fn> Text <a1>App </a1>
Text <fn> Fn-Text 4</fn>  Text <a1>App App </a1> Text <fn> Fn-
Text 5 </fn> Text Text <fn> Fn-Text 6 </fn>  Text Text
</brief>
*eof

#ma
$$! quelle=beispiel3,ziel=hi3,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>>:<<a1>>:"
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=appzaehler=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=="<a1>") THEN
- Nach jedem <a1> Zähler um 1 erhöhen;
SET appzaehler=appzaehler+1
- <a1> mit der lfd. Nr. des Zählers (in []) verbinden;
SET text=CONCAT (text,"[",appzaehler,"] ")
ENDIF
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,beispiel3,hi3,z,,,,+



Mehr Informationen über die Mailingliste Tustep-Liste