diff --git a/doc/sefun/process_string b/doc/sefun/process_string
index 75c9290..fbc7018 100644
--- a/doc/sefun/process_string
+++ b/doc/sefun/process_string
@@ -1,57 +1,77 @@
+
+process_string()
+****************
+
 process_string(E)
-FUNKTION:
-     string process_string(string str)
-     string process_string(closure cl)
-
-BESCHREIBUNG:
-     Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
-     durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
-     durch einen impliziten Funktionsaufruf.
-
-     Der zu ersetzenden Substring hat die Form:
-     @@function[:filename][|argument1|argument2]@@
-
-     Die entsprechende Funktion muss einen String zurueckgeben, oder der
-     process_string() uebergebene String str wird nicht modifiziert.
-
-     process_string() arbeitet nicht rekursiv, object_name und argument sind
-     optionale Werte.
-
-     Falls eine Closure angegeben wurde, wird diese lediglich gerufen
-     und nicht gefiltert.
-
-ANMERKUNGEN:
-     - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
-		   anfangen, '_' ist nicht moeglich!
-     - folgendes Properties und Details werden bei der Abfrage ueber
-       process_string() gefiltert:
-       P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
-       P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
-     - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
-       process_call()
-
-BEISPIEL:
-     // komplette Ersetzung ...
-     SetProp(P_LONG,"@@current_long@@");
-     ...
-     string current_long() {
-      if(x) return(break_string("Die Beschreibung."));
-      else return(break_string("Die andere Beschreibung."));
-     }
-
-     -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
 
 
-     // Teilersetzung
-     SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
-     ...
-     string farbenfun(string str) {
-      return(str+" "+"gelbes");
-     }
+FUNKTION
+========
 
-     -> bei Abfrage: "Ein huebsch gelbes Ding."
+   string process_string(string str)
+   string process_string(closure cl)
 
-SIEHE AUCH:
-     notify_fail(E), process_call(E), replace_personal(E)
+
+BESCHREIBUNG
+============
+
+   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
+   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
+   durch einen impliziten Funktionsaufruf.
+
+   Der zu ersetzenden Substring hat die Form:
+   @@function[:filename][|argument1|argument2]@@
+
+   Die entsprechende Funktion muss einen String zurueckgeben, oder der
+   process_string() uebergebene String str wird nicht modifiziert.
+
+   process_string() arbeitet nicht rekursiv, object_name und argument sind
+   optionale Werte.
+
+   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
+   und nicht gefiltert.
+
+
+ANMERKUNGEN
+===========
+
+   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
+                 anfangen, '_' ist nicht moeglich!
+   - folgendes Properties und Details werden bei der Abfrage ueber
+     process_string() gefiltert:
+     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
+     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
+   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
+     process_call()
+
+
+BEISPIEL
+========
+
+   // komplette Ersetzung ...
+   SetProp(P_LONG,"@@current_long@@");
+   ...
+   string current_long() {
+    if(x) return(break_string("Die Beschreibung."));
+    else return(break_string("Die andere Beschreibung."));
+   }
+
+   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
+
+
+   // Teilersetzung
+   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
+   ...
+   string farbenfun(string str) {
+    return(str+" "+"gelbes");
+   }
+
+   -> bei Abfrage: "Ein huebsch gelbes Ding."
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_call(E), replace_personal(E)
 
 22. Nov. 2006 Arathorn
