diff --git a/doc/lfun/QueryMaterialGroup b/doc/lfun/QueryMaterialGroup
index c3b6860..3365f73 100644
--- a/doc/lfun/QueryMaterialGroup
+++ b/doc/lfun/QueryMaterialGroup
@@ -1,50 +1,81 @@
+
+QueryMaterialGroup()
+********************
+
+
 QueryMaterialGroup(L)
-FUNKTION:
-     int QueryMaterialGroup(string grp)
+=====================
 
-DEFINIERT IN:
-     /std/thing/description.c
 
-ARGUMENTE:
-     string grp		- Materialgruppe, auf die getestet werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Liefert eine Angabe, zu welchem Anteil das Objekt aus Materialien
-     dieser Gruppe besteht.
-     Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+   int QueryMaterialGroup(string grp)
 
-RUECKGABEWERT:
-     Anteil in Prozent.
 
-BEMERKUNGEN:
-     Ruft MaterialGroup() an der MATERIALDB.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     // kann man damit was anfangen?
-     if(ob->QueryMaterialGroup(MATGROUP_METAL)<50)
-       write("Der Schmied sagt: Daraus kann ich kein Schwert fertigen.\n");
+   /std/thing/description.c
 
-     // verbrennt das Ding?
-     if(ob->QueryMaterialGroup(MATGROUP_INFLAMMABLE)>50) {
-       write(ob->Name(WER)+" geht in Flammen auf.\n");
-       ob->remove();
-     }
 
-     // wie magnetisch ist es denn?
-     if(ob->QueryMaterialGroup(MATGROUP_MAGNETIC)>50)
-      write(break_string(
-       ob->Name(WER)+" flutscht Dir aus der Hand und bleibt am Magneten "
-		     "kleben!",78));
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-     Konzepte:	  material, materialerkennung
-     Grundlegend: P_MATERIAL, /sys/thing/material.h
-     Methoden:    QueryMaterial(), MaterialList(),
-     Listen:	  AllMaterials(), AllGroups(), Dump()
-		  materialliste, materialgruppen
-     Master:	  AddMaterial(), ConvMaterialList(), MaterialGroup(),
-		  GroupName(), MaterialName(),
-		  GetGroupMembers(), GetMatMembership()
-     Sonstiges:	  P_MATERIAL_KNOWLEDGE
+   string grp         - Materialgruppe, auf die getestet werden soll
 
-7. Mai 2004 Gloinson
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Liefert eine Angabe, zu welchem Anteil das Objekt aus Materialien
+   dieser Gruppe besteht.
+   Die Rueckgabe ist im Wertebereich -100 (Antigruppen) bis +100 (%).
+
+
+RUECKGABEWERT
+=============
+
+   Anteil in Prozent.
+
+
+BEMERKUNGEN
+===========
+
+   Ruft MaterialGroup() an der MATERIALDB.
+
+
+BEISPIELE
+=========
+
+   // kann man damit was anfangen?
+   if(ob->QueryMaterialGroup(MATGROUP_METAL)<50)
+     write("Der Schmied sagt: Daraus kann ich kein Schwert fertigen.\n");
+
+   // verbrennt das Ding?
+   if(ob->QueryMaterialGroup(MATGROUP_INFLAMMABLE)>50) {
+     write(ob->Name(WER)+" geht in Flammen auf.\n");
+     ob->remove();
+   }
+
+   // wie magnetisch ist es denn?
+   if(ob->QueryMaterialGroup(MATGROUP_MAGNETIC)>50)
+    write(break_string(
+     ob->Name(WER)+" flutscht Dir aus der Hand und bleibt am Magneten "
+                   "kleben!",78));
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: P_MATERIAL, /sys/thing/material.h
+   Methoden:    QueryMaterial(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
