diff --git a/doc/lfun/PreventInsert b/doc/lfun/PreventInsert
index 55c1533..3635142 100644
--- a/doc/lfun/PreventInsert
+++ b/doc/lfun/PreventInsert
@@ -1,46 +1,71 @@
+
 PreventInsert()
+***************
 
-FUNKTION:
-     int PreventInsert(object ob);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     ob
-          Das Objekt, das in den Behaelter eingefuegt werden soll.
+   int PreventInsert(object ob);
 
-BESCHREIBUNG:
-     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
-     aufnehmen moechte oder nicht.
 
-RUeCKGABEWERT:
-     0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
-     zeigt an, dass das Objekt nicht aufgenommen werden soll.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
-     aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
-     bewegt, unabhaengig vom Rueckgabewert!
+   /std/container/restrictions.c
 
-BEISPIELE:
-     Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
-     man wie folgt vorgehen:
 
-     varargs int PreventInsert(object ob)
-     {
-       // Wenn es Geld ist, erheben wir sofort Einspruch
-       if (ob->id("geld"))
-         return 1;
-       // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
-       else
-         return ::PreventInsert(ob);
-     }
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
-     PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
-     PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+   ob
+        Das Objekt, das in den Behaelter eingefuegt werden soll.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann ein Behaelter pruefen, ob er das Objekt ob
+   aufnehmen moechte oder nicht.
+
+
+RUeCKGABEWERT
+=============
+
+   0, wenn das Objekt aufgenommen werden kann; ein Wert groesser als 0
+   zeigt an, dass das Objekt nicht aufgenommen werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsert() zwar
+   aufgerufen, das Objekt wird jedoch auf jeden Fall in den Behaelter
+   bewegt, unabhaengig vom Rueckgabewert!
+
+
+BEISPIELE
+=========
+
+   Um zu verhindern, dass man Geld in einen Behaelter stecken kann, sollte
+   man wie folgt vorgehen:
+
+   varargs int PreventInsert(object ob)
+   {
+     // Wenn es Geld ist, erheben wir sofort Einspruch
+     if (ob->id("geld"))
+       return 1;
+     // Ansonsten koennte ein ererbtes Objekt noch Einspruch erheben!
+     else
+       return ::PreventInsert(ob);
+   }
+
+
+SIEHE AUCH
+==========
+
+   PreventLeave(), NotifyInsert(), NotifyLeave(), MayAddObject(),
+   PreventInsertLiving(), PreventLeaveLiving(), NotifyMove(),
+   PreventMove(), MayAddWeight(), move(), /std/container/restrictions.c
+
 Last modified: Sat Dec 18 02:00:00 1999 by Tiamak
