diff --git a/doc/sphinx/man/props/P_MATERIAL b/doc/sphinx/man/props/P_MATERIAL
new file mode 100644
index 0000000..4ea4032
--- /dev/null
+++ b/doc/sphinx/man/props/P_MATERIAL
@@ -0,0 +1,99 @@
+
+P_MATERIAL
+**********
+
+
+NAME
+====
+
+   P_MATERIAL                                 "material"
+
+
+DEFINIERT IN
+============
+
+   <thing/material.h>
+
+
+BESCHREIBUNG
+============
+
+   Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt
+   besteht.
+
+
+BEMERKUNGEN
+===========
+
+   Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder
+   ein Array aus Materialien angeben. Die Anteile werden dann
+   gleichmaessig verteilt.
+
+
+BEISPIELE
+=========
+
+   // 100% Eis
+   SetProp(P_MATERIAL, MAT_ICE);
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
+
+   // 50% Eis, 50% Misc-Holz
+   SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
+   // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
+
+   // 60% Eis, 40% Misc-Holz
+   SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
+
+   // 100% Papier
+   SetProp(P_MATERIAL, MAT_PAPER);
+   // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
+
+   // 50% Silber, 50% Gold
+   SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
+   // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
+
+   // ein weiser Schmied, der was daraus macht:
+   int i;
+   string *mat, mname, mgroup;
+   mat=m_indices(ob->QueryProp(P_MATERIAL));
+   i=sizeof(mat);
+
+   write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
+   while(i--) {
+    // den Namen erkennen/aussprechen:
+    // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
+    // alles aus Metall wird zu +100% gut erkannt ...
+    mname=MATERIALDB->MaterialName(mat[i], WER,
+           ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
+                      ({MATGROUP_METAL, 100})])}));
+
+    // und nur Metalle analysieren ...
+    if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
+     int j;
+     string *mgr;
+     mgr=MATERIALDB->GetMatMembership(mat[i]);
+     j=sizeof(mgr);
+     mgroup=" gehoert zu ";
+     while(j--) {
+      mgroup+=MATERIALDB->GroupName(mgr[j]);
+      if(j>0) mgroup+=", ";
+     }
+    } else mgroup=" kenne ich nicht";
+    printf("%-12.12s: %s\n",mname, mgroup);
+   }
+
+
+SIEHE AUCH
+==========
+
+   Konzepte:    material, materialerkennung
+   Grundlegend: /sys/thing/material.h
+   Methoden:    QueryMaterial(), QueryMaterialGroup(), MaterialList(),
+   Listen:      AllMaterials(), AllGroups(), Dump()
+                materialliste, materialgruppen
+   Master:      AddMaterial(), ConvMaterialList(), MaterialGroup(),
+                GroupName(), MaterialName(),
+                GetGroupMembers(), GetMatMembership()
+   Sonstiges:   P_MATERIAL_KNOWLEDGE
+
+7. Mai 2004 Gloinson
