diff --git a/doc/sefun/replace_personal b/doc/sefun/replace_personal
index 2a18dc7..3804be3 100644
--- a/doc/sefun/replace_personal
+++ b/doc/sefun/replace_personal
@@ -1,84 +1,113 @@
-FUNKTION:
-     varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-DEFINIERT IN:
-     /secure/simul_efun.c
+replace_personal()
+******************
 
-ARGUMENTE:
-     str    - zu bearbeitender String
-     obs    - Liste von Objekt1, Objekt2, ..., Objekt9
-              (Objekte oder Strings)
-     caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
-              0 sonst
 
-BESCHREIBUNG:
-     Ersetzt in Strings
-     @WERx, @WESSENx, @WEMx, @WENx durch
-        Objectx->name(<casus>, 1);
-     @WERUx, @WESSENUx, @WEMUx, @WENUx durch
-        Objectx->name(<casus>);
-     @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
-        Objectx->QueryPronoun(<casus>);
-     @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
-        Objectx->QueryArticle(<casus>, 1, 1);
-     @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
-        Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
-     oder den entsprechenden String bei "Objektx".            
+FUNKTION
+========
 
-BEMERKUNGEN:
-     x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
-     
-     Besonderheiten beim Possessivpronomen (@WERQPPGNx):
-     G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S 
-     oder P) ersetzt werden. 
-     Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
-     besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x 
-     bestimmt.
-     
-RUeCKGABEWERT:
-     durchersetzter String 
-     
-Beispiele:
+   varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-     replace_personal("@WER1", ({find_player("gloinson")}))
-     == "Gloinson"
-     
-     replace_personal("@WEMQP1", ({find_player("gloinson")}))
-     == "ihm"     
-     
-     // unbestimmter und bestimmter Artikel:
-     replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.", 
-                      ({find_player("gloinson"),
-                        find_object("/obj/mpa"), 
-                        find_object("/obj/wanderer")}))
-     == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
-     
-     // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
-     // Femininum, Plural) auf die Taschen, nicht auf Kessa:
-     replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
-                      "Taschen.", 
-                      ({find_player("kessa"), 
-                        find_player("gloinson")}))
-     == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
 
-     // Ein Beispiel mit laengerem *obs:
-     replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
-                      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
-                      "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
-                      "verschwinden laesst. @WERU5 schaut zu und kichert "
-                      "irre. Wenn das @WER6 gesehen haette!",
-                      ({find_player("gloinson"), 
-                        find_player("kessa"),
-                        find_object("/obj/mpa"),                        
-                        "Birne",
-                        find_object("/obj/wanderer"),
-                        find_netdead("jof")}),1)
-     == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so beeindruckt, "
-        "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in ihrer "
-        "Tasche verschwinden laesst. Ein Wanderer schaut zu und kichert "
-        "irre. Wenn das Jof gesehen haette!"
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddCmd(L)
+   /secure/simul_efun.c
 
-05. September 2015, Arathorn
+
+ARGUMENTE
+=========
+
+   str    - zu bearbeitender String
+   obs    - Liste von Objekt1, Objekt2, ..., Objekt9
+            (Objekte oder Strings)
+   caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
+            0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Ersetzt in Strings
+   @WERx, @WESSENx, @WEMx, @WENx durch
+      Objectx->name(<casus>, 1);
+   @WERUx, @WESSENUx, @WEMUx, @WENUx durch
+      Objectx->name(<casus>);
+   @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
+      Objectx->QueryPronoun(<casus>);
+   @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
+      Objectx->QueryArticle(<casus>, 1, 1);
+   @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
+      Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
+   oder den entsprechenden String bei "Objektx".
+
+
+BEMERKUNGEN
+===========
+
+   x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
+
+
+
+   Besonderheiten beim Possessivpronomen (@WERQPPGNx):
+   G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
+   oder P) ersetzt werden.
+   Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
+   besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
+   bestimmt.
+
+
+RUeCKGABEWERT
+=============
+
+   durchersetzter String
+
+Beispiele
+
+   replace_personal("@WER1", ({find_player("gloinson")})) ==
+   "Gloinson"
+
+   replace_personal("@WEMQP1", ({find_player("gloinson")})) == "ihm"
+
+   // unbestimmter und bestimmter Artikel: replace_personal("@WER1
+   zueckt @WENU2 und verhaut @WEN3.",
+
+      ({find_player("gloinson"),
+         find_object("/obj/mpa"), find_object("/obj/wanderer")}))
+
+   == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
+
+   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ, //
+   Femininum, Plural) auf die Taschen, nicht auf Kessa:
+   replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
+
+      "Taschen.", ({find_player("kessa"),
+
+         find_player("gloinson")}))
+
+   == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
+
+   // Ein Beispiel mit laengerem >>*<<obs: replace_personal("@WER1
+   zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
+
+      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die " "@WEN4
+      haut und die Schuhe in @WEMQPPFS2 Tasche " "verschwinden laesst.
+      @WERU5 schaut zu und kichert " "irre. Wenn das @WER6 gesehen
+      haette!", ({find_player("gloinson"),
+
+         find_player("kessa"), find_object("/obj/mpa"), "Birne",
+         find_object("/obj/wanderer"), find_netdead("jof")}),1)
+
+   == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so
+   beeindruckt, "
+      "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in
+      ihrer " "Tasche verschwinden laesst. Ein Wanderer schaut zu und
+      kichert " "irre. Wenn das Jof gesehen haette!"
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(L)
+
+5. September 2015, Arathorn
