diff --git a/doc/lfun/ShowPropList b/doc/lfun/ShowPropList
index 64bc4cb..41599d7 100644
--- a/doc/lfun/ShowPropList
+++ b/doc/lfun/ShowPropList
@@ -1,49 +1,74 @@
+
 ShowPropList()
+**************
 
-FUNKTION:
-     void ShowPropList(string *props);
 
-DEFINIERT IN:
-     /std/thing/util.c
+FUNKTION
+========
 
-ARGUMENTE:
-     props
-          Array von Strings mit den Namen der Properties, die ausgegeben
-          werden sollen.
+   void ShowPropList(string *props);
 
-BESCHREIBUNG:
-     Gibt die Inhalte der in props angegebenen Properties aus.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEISPIELE:
-     Sei test.c folgendes Programm:
+   /std/thing/util.c
 
-     inherit "std/thing";
-     inherit "std/thing/util";
 
-     create() {
-       ::create();
+ARGUMENTE
+=========
 
-       SetProp(P_SHORT, "Kurz");
-       SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
-       SetProp("me", this_object() );
-     }
+   props
+        Array von Strings mit den Namen der Properties, die ausgegeben
+        werden sollen.
 
-     Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
-     man dann folgende Ausgabe:
 
-     *short: "Kurz"
-     *name: ({ "Name", "Namens", "Namen", "Namen" })
-     *me: OBJ(/players/wargon/test#12345)
+BESCHREIBUNG
+============
 
-BEMERKUNGEN:
-     Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
-     Properties eines Objekte auf einen Schlag ausgeben.
+   Gibt die Inhalte der in props angegebenen Properties aus.
 
-SIEHE AUCH:
-     /std/ting/util.c
 
-----------------------------------------------------------------------------
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   Sei test.c folgendes Programm:
+
+   inherit "std/thing";
+   inherit "std/thing/util";
+
+   create() {
+     ::create();
+
+     SetProp(P_SHORT, "Kurz");
+     SetProp(P_NAME, ({ "Name", "Namens", "Namen", "Namen" }));
+     SetProp("me", this_object() );
+   }
+
+   Mit xcall test->ShowPropList( ({ P_SHORT, P_NAME, "me" }) ); erhielte
+   man dann folgende Ausgabe:
+
+   *short: "Kurz"
+   *name: ({ "Name", "Namens", "Namen", "Namen" })
+   *me: OBJ(/players/wargon/test#12345)
+
+
+BEMERKUNGEN
+===========
+
+   Mit dem Befehl xprops des MGtools lassen sich uebrigens saemtliche
+   Properties eines Objekte auf einen Schlag ausgeben.
+
+
+SIEHE AUCH
+==========
+
+   /std/ting/util.c
+
 Last modified: Wed May 8 10:25:26 1996 by Wargon
