diff --git a/doc/lfun/RemoveCmd b/doc/lfun/RemoveCmd
index 25941c6..6adffbf 100644
--- a/doc/lfun/RemoveCmd
+++ b/doc/lfun/RemoveCmd
@@ -1,60 +1,91 @@
+
+RemoveCmd()
+***********
+
+
 RemoveCmd(L)
-FUNKTION:
-    varargs int RemoveCmd(mixed cmd, int norule, mixed id)
+============
 
-DEFINIERT IN:
-    /std/thing/commands.c
 
-ARGUMENTE:
-    com
-         String oder Array von Strings mit den zu entfernenden Kommandos.
-    norule
-         Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
-    id
-         eine ID, mit der man ein vorher mit dieser ID gespeichertes
-         Kommando eindeutig lvschen kann
+FUNKTION
+========
 
-BESCHREIBUNG:
-    Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
-    abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
-    RemoveCmd()-Aufruf nicht mehr ansprechbar.
+   varargs int RemoveCmd(mixed cmd, int norule, mixed id)
 
-    Wird ein Regelstring angegeben, so wird die identische AddCmd-
-    Regel entfernt.
 
-BEMERKUNGEN:
-    Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
-    entfernt!
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-    Anzahl der entfernten Kommandos.
+   /std/thing/commands.c
 
-BEISPIELE:
-    (1) AddCmd("test");
-    (2) AddCmd("test|teste&mit&parameter");
-    (3) AddCmd(({"test"}),1);
-    (4) AddCmd("test",0,0,"XYZ");
-    (5) AddCmd("test&mit&parameter",0,0,"XYZ");
 
-    RemoveCmd(0);
-    - entfernt alle Kommandos
-    RemoveCmd("test",1);
-    - entfernt (1) und (3)
-    RemoveCmd("test");
-    - entfernt (1), (3) und einen Teil von (2),
-      es verbleibt "teste&mit&parameter"
-    RemoveCmd("test|teste&mit&parameter"
-    - entfernt (2)
-    RemoveCmd("test",0,"XYZ");
-    - entfernt (4) und (5)
-    RemoveCmd("test",1,"XYZ");
-    - entfernt (4), nicht (5)
-    RemoveCmd(0,0,"XYZ");
-    - entfernt (4) und (5)
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-			AddCmd(L), AddCmd_bsp
-    Sonstiges:		replace_personal(E), enable_commands(E), init(E)
-    Alternativen:	AddAction(L), add_action(E)
+   com
+        String oder Array von Strings mit den zu entfernenden Kommandos.
+   norule
+        Kommandos mit Regeln werden nicht entfernt (ausser bei cmd==0)
+   id
+        eine ID, mit der man ein vorher mit dieser ID gespeichertes
+        Kommando eindeutig lvschen kann
+
+
+BESCHREIBUNG
+============
+
+   Mit AddCmd() hinzugefuegte Kommandos koennen mit diesem Befehl wieder
+   abgemeldet werden. Die entfernten Kommandos sind direkt nach dem
+   RemoveCmd()-Aufruf nicht mehr ansprechbar.
+
+   Wird ein Regelstring angegeben, so wird die identische AddCmd-
+   Regel entfernt.
+
+
+BEMERKUNGEN
+===========
+
+   Uebergibt man fuer com eine 0, so werden alle definierten Kommandos
+   entfernt!
+
+
+RUECKGABEWERT
+=============
+
+   Anzahl der entfernten Kommandos.
+
+
+BEISPIELE
+=========
+
+   (1) AddCmd("test");
+   (2) AddCmd("test|teste&mit&parameter");
+   (3) AddCmd(({"test"}),1);
+   (4) AddCmd("test",0,0,"XYZ");
+   (5) AddCmd("test&mit&parameter",0,0,"XYZ");
+
+   RemoveCmd(0);
+   - entfernt alle Kommandos
+   RemoveCmd("test",1);
+   - entfernt (1) und (3)
+   RemoveCmd("test");
+   - entfernt (1), (3) und einen Teil von (2),
+     es verbleibt "teste&mit&parameter"
+   RemoveCmd("test|teste&mit&parameter"
+   - entfernt (2)
+   RemoveCmd("test",0,"XYZ");
+   - entfernt (4) und (5)
+   RemoveCmd("test",1,"XYZ");
+   - entfernt (4), nicht (5)
+   RemoveCmd(0,0,"XYZ");
+   - entfernt (4) und (5)
+
+
+SIEHE AUCH
+==========
+
+                       AddCmd(L), AddCmd_bsp
+   Sonstiges:          replace_personal(E), enable_commands(E), init(E)
+   Alternativen:       AddAction(L), add_action(E)
 
 24.Maerz 2004 Gloinson
