diff --git a/doc/lfun/QueryArticle b/doc/lfun/QueryArticle
index 0993b3e..3be5ecc 100644
--- a/doc/lfun/QueryArticle
+++ b/doc/lfun/QueryArticle
@@ -1,92 +1,118 @@
+
 QueryArticle()
+**************
 
-FUNKTION:
-     varargs string QueryArticle(int casus, int dem, int force);
 
-DEFINIERT IN:
-     /std/thing/language.c
+FUNKTION
+========
 
-ARGUMENTE:
-     casus
-          Der Fall, in dem der Artikel gewuenscht wird.
-          (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
+   varargs string QueryArticle(int casus, int dem, int force);
 
-     dem
-          Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
-             + dem = 0: Unbestimmter Artikel!
-             + dem = 1: Bestimmter Artikel!
-             + dem = 2: Finde selbst heraus, welcher Artikel passt!
 
-     force
-          Falls ungleich Null, so wird auf jeden Fall ein Artikel
-          zurueckgegeben, trotz P_ARTICLE == 0.
+DEFINIERT IN
+============
 
-BESCHREIBUNG:
-     Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
-     zurueck, der in den passenden Fall dekliniert wird.
+   /std/thing/language.c
 
-     Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
-     Situationen, in denen mehrere gleichnamige Objekte im selben Environment
-     sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
 
-     Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
-     man uebergibt in dem Argument 'force' einen Wert ungleich Null.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
+   casus
+        Der Fall, in dem der Artikel gewuenscht wird.
+        (Konstanten aus /sys/thing/language.h: WER, WEM, WESSEN, WEN.)
 
-     Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
-     ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
-     QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
-     im Raum herumstehen und man eine Nachricht wie:
-       "Du haust den Ork." und folgend
-       "[Des|Eines] Orks Nase schwillt an."
-     haben moechte:
-       "Du haust "+ork->name(WEN, 1)+". "
-       ork->Name(WESSEN, 2)+" Nase schwillt an."
+   dem
+        Wird ein bestimmter oder ein unbestimmter Artikel verlangt?
+           + dem = 0: Unbestimmter Artikel!
+           + dem = 1: Bestimmter Artikel!
+           + dem = 2: Finde selbst heraus, welcher Artikel passt!
 
-RUeCKGABEWERT:
-     * gewuenschter Artikel als String plus Leerzeichen (!) ODER
-     * Leerstring
+   force
+        Falls ungleich Null, so wird auf jeden Fall ein Artikel
+        zurueckgegeben, trotz P_ARTICLE == 0.
 
-BEISPIELE:
-     // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * nur den bestimmten Artikel
-     send_room(this_object(),
-       pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
-       capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
-       MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
 
-     // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * nur den bestimmten Artikel
-     send_room(this_object(),
-       pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
-       capitalize(pl2->QueryPronoun(WER))+" prueft "+
-       ob->QueryArticle(WEN, 1, 1)+"...",
-       MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+BESCHREIBUNG
+============
 
-     // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
-     // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
-     // "von dir?"
-     // Man will:
-     // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
-     // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
-     //   (zB Kokosnuesse) auf dem Boden liegen ...
-     ob->move(environment(), M_NOCHECK); // vorher machen!
-     pl->ReceiveMsg(
-       "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
-       ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
-       capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
+   Diese Funktion gibt einen zum Geschlecht des Objektes passenden Artikel
+   zurueck, der in den passenden Fall dekliniert wird.
 
-SIEHE AUCH:
-     Aehnlich:  SuggestArticle(), query_c_article(), query_g_suffix()
-     Sonstiges: QueryOwn(), QueryDu(),
-                QueryPronoun(), QueryPossPronoun()
-                DeclAdj()
-                name()
+   Das Herausfinden des passenden Artikels bei 'dem' = 2 bezieht sich auf
+   Situationen, in denen mehrere gleichnamige Objekte im selben Environment
+   sind. Man 'nimmt' dann zB nicht "den Stamm" sondern "einen Stamm".
+
+   Ist P_ARTICLE = 0, so wird ein Leerstring zurueckgegeben, es sei denn,
+   man uebergibt in dem Argument 'force' einen Wert ungleich Null.
+
+
+BEMERKUNGEN
+===========
+
+   Achtung: bei gueltigem Artikel wird ein Leerzeichen angehaengt!
+
+   Name()/name() nutzen bereits QueryArticle(), wenn P_ARTICLE gesetzt
+   ist. Deshalb muss man sich "Eines Orks" nicht selbst aus dem
+   QueryArticle() und dem Namen zusammenbasteln, wenn mehrere Orks
+   im Raum herumstehen und man eine Nachricht wie:
+     "Du haust den Ork." und folgend
+     "[Des|Eines] Orks Nase schwillt an."
+   haben moechte:
+     "Du haust "+ork->name(WEN, 1)+". "
+     ork->Name(WESSEN, 2)+" Nase schwillt an."
+
+
+RUeCKGABEWERT
+=============
+
+   * gewuenschter Artikel als String plus Leerzeichen (!) ODER
+   * Leerstring
+
+
+BEISPIELE
+=========
+
+   // "X haut Y auf die Nase. [Der|Die|Das] ist nicht beeindruckt."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" haut "+pl2->name(WEM)+" auf die Nase. "+
+     capitalize(pl2->QueryArticle(WER, 1, 1))+"ist nicht beeindruckt.",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "X gibt dir Y. [Er|Sie|Es] prueft [den|die|das] ..."
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * nur den bestimmten Artikel
+   send_room(this_object(),
+     pl1->Name(WER)+" gibt "+pl2->name(WEM)+" "+obj->name(WER)+". "+
+     capitalize(pl2->QueryPronoun(WER))+" prueft "+
+     ob->QueryArticle(WEN, 1, 1)+"...",
+     MT_LOOK|MT_LISTEN, 0, 0, ({pl1, pl2}));
+
+   // "Dir faellt X auf den Kopf. Du siehst [die|den|das|eine|einen|eines "
+   // "auf dem Boden liegen. [Sie|Er|Es] sieht blutig aus. Aua. Ist das "
+   // "von dir?"
+   // Man will:
+   // * auf jeden Fall einen Artikel, auch wenn kein P_ARTICLE gesetzt ist
+   // * bestimmte/unbestimmte Artikel, wenn bereits gleiche Gegenstaende
+   //   (zB Kokosnuesse) auf dem Boden liegen ...
+   ob->move(environment(), M_NOCHECK); // vorher machen!
+   pl->ReceiveMsg(
+     "Dir faellt "+ob->name(WER, 0)+" auf den Kopf. Du siehst "+
+     ob->QueryArticle(WEN, 2, 1)+" auf dem Boden liegen. "+
+     capitalize(ob->QueryPronoun(WER))+" sieht blutig ...
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  SuggestArticle(), query_c_article(), query_g_suffix()
+   Sonstiges: QueryOwn(), QueryDu(),
+              QueryPronoun(), QueryPossPronoun()
+              DeclAdj()
+              name()
 
 9. Jun 2016, Gloinson
