diff --git a/doc/lfun/GetDetail b/doc/lfun/GetDetail
index 4bd7301..7e5a092 100644
--- a/doc/lfun/GetDetail
+++ b/doc/lfun/GetDetail
@@ -1,67 +1,90 @@
+
 GetDetail()
+***********
 
-FUNKTION:
-    varargs string GetDetail(string key, string race, int sense)
 
-DEFINIERT IN:
-    /std/thing/description.c
+FUNKTION
+========
 
-ARGUMENTE:
-    key
-      Das zu ermittelnde Detail.
-    race
-      Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
-    sense
-      Die Art des zu untersuchenden Details:
-        Untersuchen, Riechen, Hoeren, Tasten.
+   varargs string GetDetail(string key, string race, int sense)
 
-BESCHREIBUNG:
-    Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
-    werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
-    verschiedene Detailarten, deren Typ man in <sense> angibt:
-      SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
-      SENSE_SMELL   - Fuer Details, die man riechen kann.
-      SENSE_SOUND   - Fuer Details, die man hoeren kann.
-      SENSE_TOUCH   - Fuer Details, die man abtasten kann.
-      SENSE_READ    - Fuer Details, die man lesen kann.
 
-    Dabei ist 0 == SENSE_VIEW.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-    Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
-    gibt.
+   /std/thing/description.c
 
-BEISPIEL:
-    Im folgenden wird ein kleines Testdetail generiert:
-      AddDetail("test","Das ist ein Test!\n");
-    Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
-    eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
-    eventuell sind ja noch weitere Aktionen noetig.
-      if(GetDetail("test"))
-      { RemoveDetail("test");
-        ...
-      }
-    Ein Geruch kann man folgendermassen erzeugen:
-      AddSmells("gold",
-        ([0      :"Gold kann man nicht riechen!\n",
-          "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
-    Die Abfrage des Details gestaltet sich recht einfach:
-      GetDetail("gold","zwerg",SENSE_SMELL);
-    Die Funktion liefert das Detail fuer den Zwerg.
-      GetDetail("gold",0,SENSE_SMELL);
-    Die Funktion liefert das Detail fuer die restlichen Rassen.
-      GetDetail("gold",0,SENSE_SOUND);
-    Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
-    liefert 0 zurueck.
 
-SIEHE AUCH:
-    Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
-               AddTouchDetail()
-    Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
-               RemoveSounds(), RemoveTouchDetail()
-    Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
-               P_TOUCH_DETAILS, P_SPECIAL_DETAILS
-    Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
-    Sonstiges: break_string()
+ARGUMENTE
+=========
+
+   key
+     Das zu ermittelnde Detail.
+   race
+     Rasse des ermittelnden Objektes (falls es ein Lebewesen ist).
+   sense
+     Die Art des zu untersuchenden Details:
+       Untersuchen, Riechen, Hoeren, Tasten.
+
+
+BESCHREIBUNG
+============
+
+   Die Beschreibung des gewuenschten Details wird ermittelt. Dabei
+   werden rassenspezifische Details beruecksichtigt. Es gibt hierbei
+   verschiedene Detailarten, deren Typ man in <sense> angibt:
+     SENSE_VIEW    - Fuer Defaultdetails zum Untersuchen.
+     SENSE_SMELL   - Fuer Details, die man riechen kann.
+     SENSE_SOUND   - Fuer Details, die man hoeren kann.
+     SENSE_TOUCH   - Fuer Details, die man abtasten kann.
+     SENSE_READ    - Fuer Details, die man lesen kann.
+
+   Dabei ist 0 == SENSE_VIEW.
+
+
+RUeCKGABEWERT
+=============
+
+   Die Beschreibung des Details oder 0, wenn es dieses Detail nicht
+   gibt.
+
+
+BEISPIEL
+========
+
+   Im folgenden wird ein kleines Testdetail generiert:
+     AddDetail("test","Das ist ein Test!\n");
+   Im folgenden wird das Detail entfernt, wenn es existiert. Dies ist
+   eigentlich nicht noetig, da RemoveDetail() damit zurechtkommt, aber
+   eventuell sind ja noch weitere Aktionen noetig.
+     if(GetDetail("test"))
+     { RemoveDetail("test");
+       ...
+     }
+   Ein Geruch kann man folgendermassen erzeugen:
+     AddSmells("gold",
+       ([0      :"Gold kann man nicht riechen!\n",
+         "zwerg":"Deine trainierte Nase riecht es muehelos!\n"]));
+   Die Abfrage des Details gestaltet sich recht einfach:
+     GetDetail("gold","zwerg",SENSE_SMELL);
+   Die Funktion liefert das Detail fuer den Zwerg.
+     GetDetail("gold",0,SENSE_SMELL);
+   Die Funktion liefert das Detail fuer die restlichen Rassen.
+     GetDetail("gold",0,SENSE_SOUND);
+   Ein Sounddetail mit dem Namen "gold" existiert nicht, die Funktion
+   liefert 0 zurueck.
+
+
+SIEHE AUCH
+==========
+
+   Setzen:    AddDetail(), AddReadDetail(), AddSmells(), AddSounds(),
+              AddTouchDetail()
+   Loeschen:  RemoveReadDetail(), RemoveSmells(), RemoveDetail(),
+              RemoveSounds(), RemoveTouchDetail()
+   Daten:     P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS,
+              P_TOUCH_DETAILS, P_SPECIAL_DETAILS
+   Veraltet:  AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG
+   Sonstiges: break_string()
 
 27. Jan 2013 Gloinson
