diff --git a/doc/lfun/MayAddWeight b/doc/lfun/MayAddWeight
index 1cc4e47..bc8e06d 100644
--- a/doc/lfun/MayAddWeight
+++ b/doc/lfun/MayAddWeight
@@ -1,47 +1,72 @@
+
 MayAddWeight()
+**************
 
-FUNKTION:
-     int MayAddWeight(int gewicht);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     gewicht
-          Das zu pruefende Gewicht.
+   int MayAddWeight(int gewicht);
 
-BESCHREIBUNG:
-     Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
-     diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
-     passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
-     bewegenden Objektes.
 
-RUeCKGABEWERT:
-     0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
-     kann, -1 im anderen Fall.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
-     gesetzt war!
+   /std/container/restrictions.c
 
-BEISPIELE:
-     Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
-     folgendermassen aus:
 
-     int weight;
+ARGUMENTE
+=========
 
-     ...
-     weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
-     if (!weight)
-       weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht
+   gewicht
+        Das zu pruefende Gewicht.
 
-     if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
-       return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben
 
-     ...
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c
+   Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
+   diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
+   passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
+   bewegenden Objektes.
 
-----------------------------------------------------------------------------
+
+RUeCKGABEWERT
+=============
+
+   0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
+   kann, -1 im anderen Fall.
+
+
+BEMERKUNGEN
+===========
+
+   move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
+   gesetzt war!
+
+
+BEISPIELE
+=========
+
+   Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
+   folgendermassen aus:
+
+   int weight;
+
+   ...
+   weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
+   if (!weight)
+     weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht
+
+   if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
+     return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben
+
+   ...
+
+
+SIEHE AUCH
+==========
+
+   MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c
+
 Last modified: 23.09.2007, Zesstra
