diff --git a/doc/lfun/put b/doc/lfun/put
index 33e7eaf..9b1d5eb 100644
--- a/doc/lfun/put
+++ b/doc/lfun/put
@@ -1,43 +1,65 @@
+
 put()
+*****
 
-FUNKTION:
-    public varargs int put(object o, object dest, mixed msg);
 
-DEFINIERT IN:
-    /std/living/put_and_get.c
+FUNKTION
+========
 
-ARGUMENTE:
-    object o
-        Das Objekt, das irgendwo hingesteckt werden soll.
-    object dest
-        Der Behaelter, in den das Objekt gesteckt werden soll.
-    mixed msg
-        Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
-        Standardmeldung verwendet wird, oder -1, um die Meldung zu
-        unterdruecken.
+   public varargs int put(object o, object dest, mixed msg);
 
-BESCHREIBUNG:
-    Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
-    keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
-    weggeben darf oder der Behaelter schon voll ist, bekommt er eine
-    entsprechende Fehlermeldung.
 
-RUECKGABEWERT:
-    Wenn das Bewegen geklappt hat, 1, ansonsten 0.
+DEFINIERT IN
+============
 
-BEMERKUNG:
-    Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
-    hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
-    moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
-    manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+   /std/living/put_and_get.c
 
-    Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
-    in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
-    ermitteln.
 
-SIEHE AUCH:
-    move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
-    P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   object o
+       Das Objekt, das irgendwo hingesteckt werden soll.
+   object dest
+       Der Behaelter, in den das Objekt gesteckt werden soll.
+   mixed msg
+       Eine optionale Meldung, die anstelle von P_PUT_MSG oder der
+       Standardmeldung verwendet wird, oder -1, um die Meldung zu
+       unterdruecken.
+
+
+BESCHREIBUNG
+============
+
+   Der Spieler oder NPC steckt das Objekt in einen Behaelter. Gibt o->move()
+   keinen positiven Wert zurueck, beispielsweise weil er das Objekt nicht
+   weggeben darf oder der Behaelter schon voll ist, bekommt er eine
+   entsprechende Fehlermeldung.
+
+
+RUECKGABEWERT
+=============
+
+   Wenn das Bewegen geklappt hat, 1, ansonsten 0.
+
+
+BEMERKUNG
+=========
+
+   Diese Funktion ist dann sinnvoll, wenn man den Spieler ein Objekt irgendwo
+   hinstecken lassen und sich nicht selbst um die Fehlerbehandlung kuemmern
+   moechte - und da unzaehlige verschiedene Dinge schiefgehen koennen und
+   manche Objekte eigene Fehlermeldungen definieren, eigentlich immer.
+
+   Die Funktion prueft nicht, ob sich das Objekt und der Behaelter ueberhaupt
+   in der Reichweite des Spielers/NPC befinden, das muss man ggf. selbst
+   ermitteln.
+
+
+SIEHE AUCH
+==========
+
+   move(L), P_PUT_MSG, put_objects(L), P_NOINSERT_MSG, P_NOLEAVE_MSG,
+   P_TOO_MANY_MSG, P_TOO_HEAVY_MSG, P_ENV_TOO_HEAVY_MSG, P_NOGET, P_NODROP
+
 Last modified: Thu Aug 28 22:21:58 2008 by Amynthor
