+proc display-grs-medium {w r i} {
+ global tagSet
+
+ foreach e $r {
+ if {[tk4]} {
+ set start [$w index insert]
+ } else {
+ for {set j 0} {$j < $i} {incr j} {
+ insertWithTags $w " " marc-tag
+ }
+ }
+ set ttype [lindex $e 0]
+ set tval [lindex $e 2]
+ if {$ttype == 3} {
+ insertWithTags $w "$tval " marc-pref
+ } elseif {[info exists tagSet($ttype,$tval)]} {
+ insertWithTags $w "$tagSet($ttype,$tval) " marc-pref
+ } else {
+ insertWithTags $w "($ttype,$tval) " marc-tag
+ }
+ if {[lindex $e 3] == "string"} {
+ insertWithTags $w [lindex $e 4] marc-text
+ insertWithTags $w "\n"
+ } elseif {[lindex $e 3] == "subtree"} {
+ insertWithTags $w "\n"
+ } else {
+ insertWithTags $w [lindex $e 4] {}
+ insertWithTags $w " ?\n" {}
+ }
+ if {[tk4]} {
+ $w tag configure indent$i \
+ -lmargin1 [expr $i * 16] \
+ -lmargin2 [expr $i * 16 + 8]
+ $w tag add indent$i $start insert
+ }
+ if {[lindex $e 3] == "subtree"} {
+ display-grs-medium $w [lindex $e 4] [expr $i+1]
+ }
+ }
+}