Az Emacs és XEmacs újabb változataihoz tartozik egy psgml nevű, nagyon hasznos csomag (a Portgyűjteményből a editors/psgml portból telepíthetjük fel). Ez a kiegészítés vagy az .xml állományok megnyitásakor töltődik be automatikusan, vagy pedig az M-x sgml-mode parancs begépelésével. Általánosságban véve ez az SGML állományok és a bennük található elemek és tulajdonságok szerkesztésére alkalmas mód.
Az alábbiakban bemutatunk néhány olyan alapvető parancsot ebben a módban, amelyekkel könnyebbé válik a különböző SGML dokumentumok, többek közt a kézikönyv szerkesztése.
Meghívja az
	  sgml-insert-element függvényt.
	  Ekkor meg kell adnunk az adott pontra beillesztendő elem
	  nevét.  Itt a Tab
	  lenyomásával kérhetjük a név
	  kiegészítését, az adott ponton
	  érvénytelen elemek neveit ilyenkor nem
	  érhetjük el.
A szövegbe ekkor bekerülnek az elemhez tartozó kezdő- és zárócímkék. Amennyiben az elemhez még tartoznak más egyéb kötelező elemek is, akkor egyúttal ezek is beszúródnak.
Meghívja az
	  sgml-change-element-name
	  függvényt.  A parancs használatához
	  álljunk a módosítandó elembe.  A
	  végrehajtáshoz meg kell még adnunk azt
	  is, hogy mire akarjuk átírni az elem
	  nevét.  Ezután az érintett elem
	  kezdő- és zárócímkéi
	  lecserélődnek.
Meghívja az sgml-tag-region
	  függvényt.  A használatához
	  először jelöljük ki a szöveg egy
	  részét (vigyük a kurzort a
	  kijelölés kezdetéhez, adjuk ki a
	  C-space billentyűparancsot, vigyük a kurzort a
	  kijelölés végéhez és
	  ismét adjuk ki a C-space parancsot).
	  Ezután meg kell adnunk még a bejelölt
	  rész jelöléséhez használni
	  kívánt elemet.  Ennek
	  eredményeképpen végül a
	  kijelölt szakasz elejére és
	  végére bekerül az adott elem kezdő-
	  és zárócímkéje.
Meghívja az sgml-untag-element
	  függvényt.  Álljunk a kurzorral az
	  eltávolítani kívánt elem
	  kezdő- vagy
	  zárócímkéjére és
	  adjuk ki a parancsot.  Ekkor az elem kezdő- és
	  zárócímkéi törlésre
	  kerülnek.
Meghívja az sgml-fill-element
	  függvényt.  Ennek hatására az elem,
	  amelyben állunk a kurzorral rekurzívan
	  feldolgozásra kerül (például
	  újraformázódik).  Ez a
	  változtatás a tördelést is
	  érinteni fogja, tehát
	  például még
	  <programlisting> elemek esetében is.
	  Ezért mindig csak körültekintéssel
	  alkalmazzuk!
Meghívja az
	  sgml-edit-attributes függvényt.
	  Ekkor a legközelebbi befoglaló elemhez
	  megnyílik egy másik szerkesztési
	  pufferben az összes hozzá tartozó
	  tulajdonság, értékekkel együtt.  Itt
	  a Tab lenyomásával tudunk
	  lépkedni az egyes elemek között, a
	  C-k paranccsal lecserélni egy
	  meglevő értéket egy újra, illetve a
	  C-c C-c paranccsal bezárni a puffert
	  és visszatérni az eredeti dokumentum
	  szerkesztéséhez.
Meghívja az sgml-validate
	  függvényt.  Felajánlja a jelenleg megnyitott
	  dokumentum mentését (amennyiben
	  szükséges) és ellenőrzi az SGML
	  szabvány szerinti
	  érvényességét.  A vizsgálat
	  eredménye egy új pufferbe kerül, ahol
	  szépen sorban végig tudjuk nézni az
	  összes hibát és javítani ezeket
	  menet közben.
Meghívja az
	  sgml-insert-end-tag
	  függvényt.  Bezárja a kurzor előtt
	  megkezdett elemet.
Nyilvánvalóan ebben a módban még vannak további hasznos funkciók, de az említetteket használják a leggyakrabban.
A Dokumentációs Projekten belüli munkához az .emacs állományban a következő bejegyzéseket érdemes megadni a megfelelő tördeléshez, elrendezéshez és sorszélességhez:
    (defun local-sgml-mode-hook
      (setq fill-column 70
            indent-tabs-mode nil
            next-line-add-newlines nil
            standard-indent 4
            sgml-indent-data t)
      (auto-fill-mode t)
      (setq sgml-catalog-files '("/usr/local/share/xml/catalog")))
    (add-hook 'psgml-mode-hook
      '(lambda () (local-psgml-mode-hook)))
  Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
		  címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
		  kérjük erre a címre írjon: <gabor@FreeBSD.org>.