Commits

Paul Sexton committed 13be9a0

Added ability to produce a class hierarchy chart. The chart is in 'dot' format, which org mode can feed to GraphViz
to produce a PNG image.

Comments (0)

Files changed (3)

 ;;;;   describe.
 ;;;;
 ;;;; todo table of slots at beginning of each class def
+;;;;
+;;;; (document-package :clod "~/lisp/clod/doc/clod-doc.org"
+;;;;     :title "CLOD" :author "Paul Sexton" :email "eeeickythump@gmail.com")
+;;;;
 
 (in-package :cl-user)
 
 CLOD examines a loaded package and writes information about all the
 symbols defined within that package, to a file.
 
-The output file is in org format. Org is a simple but powerful 'wiki-like'
+The output file is in /Org/ format. Org is a simple but powerful 'wiki-like'
 markup language that is understood by *Org-mode*, a powerful outliner, personal
-wiki and organiser that runs within Emacs. Org-mode can export
+wiki and organiser that runs as a major mode within Emacs. Org-mode can export
 org-format files to numerous other formats, including HTML, LaTeX, PDF,
 DocBook, and plain text.
 
   to external URLs, etc.
 - Easy export to multiple file formats: text, HTML, LaTeX -> PDF...
 - You can edit the output within Emacs, which is already the IDE of most
-  CL programmers.
-- Org has many cool tricks. Some examples of useful things you can put in
-  docstrings:
+  Commn Lisp programmers.
+- If GraphViz is installed, automatically create a diagram showing the
+  package's class hierarchy -- see http://www.graphviz.org/
+- Org markup has many cool tricks. Some examples of useful things you can
+  put in docstrings:
   - Include an entire file and format as plain text:
     : #+INCLUDE: \"filename\" quote
   - Include an entire file with common lisp syntax highlighting
 - *Hyperlinks* are created using
   : [[double square brackets]]
   Any text surrounded by these brackets will link to the same text (case
-  insensitive) surrounded by <<double angle brackets>>. CLOD uses this to define
+  insensitive) surrounded by =<<double angle brackets>>=. CLOD uses this to define
   hyperlinks for all symbols in the package. Every symbol MYSYMBOL has:
   1. A hyperlink =<<function MYSYMBOL>>= if MYSYMBOL is a function,
      =<<variable MYSYMBOL>>= if it is a global variable, etc.
      (eg there is both a function and a variable called MYSYMBOL).
 - Org mode has the ability to use Emacs' font-lock mode to produce source code
   snippets that are correctly syntax highlighted for any major mode.
-  To use this normally requires surrounding the code with #+BEGIN_SRC ... #+END_SRC.
+  To use this normally requires surrounding the code with =#+BEGIN_SRC ... #+END_SRC=.
   CLOD provides a shortcut: Any lines within docstrings that begin with three
   semicolons ;;; are assumed to be example lisp source code. The first 3
   semicolons are removed and the rest of the line is syntax highlighted.
 
 * Limitations
 
-- There is no portable way to access the lambda lists of functions. Thus, you need
-  to spell these out in function docstrings.
+- There is no portable way to access the lambda lists of functions. Thus, you
+  need to describe these manually in function docstrings.
 "))
 
 (in-package :clod)
 in a very brief format (bulleted list).
 
 If false, each method receives its own section, just like other functions.")
+(defvar *class-diagram* nil
+  "If true, creates a section describing the package class hierarchy as a
+'dot' diagram, which can be fed to the GraphViz program (if installed) to
+create a visual representation of the hierarchy.")
 (defvar *document-title* "Documentation"
   "The title of the document. A string.")
 (defvar *document-author* "CLOD"
                           (list-all-slot-accessors
                            (mapcar #'find-class classes))))
     ;; === main body of definitions ===
+    (when (and classes *class-diagram*)
+      (writing-section ("Class Hierarchy")
+        (write-class-hierarchy (mapcar #'find-class classes))
+        ))
     (write-chapter classes :class "Classes")
     (write-chapter structures :structure "Structures")
     (write-chapter types :type "Types")
     (write-index pkg accessibilities)))
 
 
+
+(defun write-class-hierarchy (classes)
+  "* Usage
+: (write-class-hierarchy CLASSES)
+* Arguments
+- CLASSES :: A list of CLASS objects.
+* Returns
+Ignored.
+* Description
+Writes the inheritance tree of CLASSES as a GraphViz diagram, using the
+DOT language. External parent classes are also included.
+
+See http://www.graphviz.org/ for details of the GraphViz language."
+  (let ((foreign-parents nil))
+    (write-out "~&#+begin_dot class.png -Tpng~%")
+    (write-out "digraph data_relationships {~%")
+    (write-out "   rankdir=\"LR\";~%")
+    (dolist (c classes)
+      (write-out "    \"~:(~A~)\";~%" (class-name c)))
+    (dolist (c classes)
+      (dolist (parent (class-direct-superclasses c))
+        (write-out "   \"~:(~A~)\" -> \"~:(~A~)\";~%"
+                   (class-name parent) (class-name c))
+        (unless (eql (symbol-package (class-name parent))
+                     (symbol-package (class-name c)))
+          (push parent foreign-parents))))
+    (dolist (fp foreign-parents)
+      (write-out "   \"~:(~A~)\" [shape=Mrecord,colour=lightblue,label=\"{~:(~A~)|~(~A~)}\"];~%"
+                 (class-name fp) (class-name fp)
+                 (package-name (symbol-package (class-name fp)))))
+    (write-out "~&}~%")
+    (write-out "~&#+end_dot~%~%")))
+
+
+
 (defun docpkg (&rest packages)
   (write-preamble)
   (dolist (pkg (mapcar #'(lambda (p) (if (packagep p) p (find-package p)))
                           &key (auto-links nil)
                           (lines-between-sections t)
                           (brief-methods t)
+                          (class-diagram nil)
                           (title *document-title*)
                           (author *document-author*)
                           (email *document-email*))
   (let ((*auto-links* auto-links)
         (*lines-between-sections* lines-between-sections)
         (*brief-methods* brief-methods)
+        (*class-diagram* class-diagram)
         (*document-title* title)
         (*document-author* author)
         (*document-email* email))
 (defun document-package (pkg file/stream &key (auto-links nil)
                           (lines-between-sections t)
                           (brief-methods t)
+                         (class-diagram nil)
                          (title nil) (author *document-author*)
                          (email *document-email*))
   "* Usage
 : (document-package PKG FILE/STREAM &key AUTO-LINKS
-:      LINES-BETWEEN-SECTIONS BRIEF-METHODS TITLE
-:      AUTHOR EMAIL)
+:      LINES-BETWEEN-SECTIONS BRIEF-METHODS CLASS-DIAGRAM
+:      TITLE AUTHOR EMAIL)
 * Arguments
 - PKG :: A package name or package object.
 - FILE/STREAM :: A string (filename), stream object, or =NIL=.
 - AUTO-LINKS :: Boolean.
 - LINES-BETWEEN-SECTIONS :: Boolean.
 - BRIEF-METHODS :: Boolean.
+- CLASS-DIAGRAM :: Boolean.
 - TITLE :: A string.
 - AUTHOR :: A string.
 - EMAIL :: A string.
 - If =AUTO-LINKS= is non-nil, *all* occurrences of symbol names within the
   text of docstrings will be interpreted as hyperlinks, regardless of
   whether they are marked up as hyperlinks.
-- If LINES-BETWEEN-SECTIONS is nil, do not output a horizontal line before
+- If =LINES-BETWEEN-SECTIONS= is nil, do not output a horizontal line before
   each new section of documentation.
-- If BRIEF-METHODS is nil, document individual methods with their own
+- If =BRIEF-METHODS= is nil, document individual methods with their own
   sections, just like functions and generic functions. Most people put
   'method' documentation in the docstrings of their generic functions, but
   if you set docstrings for individual methods then set this to nil.
+- If =CLASS-DIAGRAM= is non-nil, create a section after the toplevel package
+  description, containing a description of the package hierarchy
+  in the form of a GraphViz 'dot' diagram (see http://www.graphviz.org/).
 
 * See also
 - [[document-packages]]"
                      :auto-links auto-links
                      :lines-between-sections lines-between-sections
                      :brief-methods brief-methods
+                     :class-diagram class-diagram
                      :title title :author author :email email))
   
 

doc/clod-doc.html

 <html xmlns="http://www.w3.org/1999/xhtml"
 lang="en" xml:lang="en">
 <head>
-<title>The CLOD package</title>
+<title>CLOD</title>
 <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
 <meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2010-02-13 01:33:11 NZDT"/>
-<meta name="author" content="CLOD"/>
+<meta name="generated" content="2010-02-26 23:43:30 NZDT"/>
+<meta name="author" content="Paul Sexton"/>
 <meta name="description" content=""/>
 <meta name="keywords" content=""/>
 <style type="text/css">
 <body>
 <div id="content">
 
-<h1 class="title">The CLOD package</h1>
+<h1 class="title">CLOD</h1>
 
 <p><a name="clod" id="clod"></a>
 <a name="package==clod" id="package==clod"></a>
 </p>
-
-
+<p>
+</p>
+<p>
+</p>
 <div id="table-of-contents">
 <h2>Table of Contents</h2>
 <div id="text-table-of-contents">
 <ul>
+<li></li>
 <li><a href="#sec-1">1 Internal Package: <code>clod</code></a>
 <ul>
 <li>
 <ul>
+<li>
+</li>
 <li><a href="#sec-1.1">1.1 Description</a></li>
 <li><a href="#sec-1.2">1.2 Why use CLOD?</a></li>
 <li><a href="#sec-1.3">1.3 Dependencies</a></li>
 <li><a href="#sec-1.7">1.7 Limitations</a></li>
 </ul>
 </li>
-<li><a href="#sec-1.1">1.1 Classes</a>
+<li><a href="#sec-1.1">1.1 Types</a>
 <ul>
-<li><a href="#sec-1.1.1">1.1.1 Internal Class: <code>&lt;foo&gt;</code></a></li>
+<li>
+</li>
+<li><a href="#sec-1.1.1">1.1.1 Internal Type: ==entity==</a></li>
 </ul>
 </li>
-<li><a href="#sec-1.2">1.2 Types</a>
+<li><a href="#sec-1.2">1.2 Global Variables</a>
 <ul>
-<li><a href="#sec-1.2.1">1.2.1 Internal Type: ==entity==</a></li>
+<li>
+</li>
+<li><a href="#sec-1.2.1">1.2.1 Internal Variable: <code>*alphabet*</code></a></li>
+<li><a href="#sec-1.2.2">1.2.2 Internal Variable: <code>*ambiguities*</code></a></li>
+<li><a href="#sec-1.2.3">1.2.3 Internal Variable: <code>*auto-links*</code></a></li>
+<li><a href="#sec-1.2.4">1.2.4 Internal Variable: <code>*brief-methods*</code></a></li>
+<li><a href="#sec-1.2.5">1.2.5 Internal Variable: <code>*class-diagram*</code></a></li>
+<li><a href="#sec-1.2.6">1.2.6 Internal Variable: <code>*document-author*</code></a></li>
+<li><a href="#sec-1.2.7">1.2.7 Internal Variable: <code>*document-email*</code></a></li>
+<li><a href="#sec-1.2.8">1.2.8 Internal Variable: <code>*document-title*</code></a></li>
+<li><a href="#sec-1.2.9">1.2.9 Internal Variable: <code>*heading-char*</code></a></li>
+<li><a href="#sec-1.2.10">1.2.10 Internal Variable: <code>*heading-level*</code></a></li>
+<li><a href="#sec-1.2.11">1.2.11 Internal Variable: <code>*hyperspec-root*</code></a></li>
+<li><a href="#sec-1.2.12">1.2.12 Internal Variable: <code>*left-margin*</code></a></li>
+<li><a href="#sec-1.2.13">1.2.13 Internal Variable: <code>*line-width*</code></a></li>
+<li><a href="#sec-1.2.14">1.2.14 Internal Variable: <code>*lines-between-sections*</code></a></li>
+<li><a href="#sec-1.2.15">1.2.15 Internal Variable: <code>*out*</code></a></li>
+<li><a href="#sec-1.2.16">1.2.16 Internal Variable: <code>*unsafe-html-chars*</code></a></li>
 </ul>
 </li>
-<li><a href="#sec-1.3">1.3 Constants</a>
+<li><a href="#sec-1.3">1.3 Macros</a>
 <ul>
-<li><a href="#sec-1.3.1">1.3.1 Internal Constant: <code>+alphabet+</code></a></li>
+<li>
+</li>
+<li><a href="#sec-1.3.1">1.3.1 Internal Macro: <code>do-own-symbols</code></a></li>
+<li><a href="#sec-1.3.2">1.3.2 Internal Macro: <code>write-indented</code></a></li>
+<li><a href="#sec-1.3.3">1.3.3 Internal Macro: <code>writing-bulleted-list</code></a></li>
+<li><a href="#sec-1.3.4">1.3.4 Internal Macro: <code>writing-section</code></a></li>
+<li><a href="#sec-1.3.5">1.3.5 Internal Macro: <code>writing-section-for-symbol</code></a></li>
 </ul>
 </li>
-<li><a href="#sec-1.4">1.4 Global Variables</a>
+<li><a href="#sec-1.4">1.4 Functions</a>
 <ul>
-<li><a href="#sec-1.4.1">1.4.1 Internal Variable: <code>*alphabet*</code></a></li>
-<li><a href="#sec-1.4.2">1.4.2 Internal Variable: <code>*ambiguities*</code></a></li>
-<li><a href="#sec-1.4.3">1.4.3 Internal Variable: <code>*auto-links*</code></a></li>
-<li><a href="#sec-1.4.4">1.4.4 Internal Variable: <code>*brief-methods*</code></a></li>
-<li><a href="#sec-1.4.5">1.4.5 Internal Variable: <code>*document-author*</code></a></li>
-<li><a href="#sec-1.4.6">1.4.6 Internal Variable: <code>*document-email*</code></a></li>
-<li><a href="#sec-1.4.7">1.4.7 Internal Variable: <code>*document-title*</code></a></li>
-<li><a href="#sec-1.4.8">1.4.8 Internal Variable: <code>*heading-char*</code></a></li>
-<li><a href="#sec-1.4.9">1.4.9 Internal Variable: <code>*heading-level*</code></a></li>
-<li><a href="#sec-1.4.10">1.4.10 Internal Variable: <code>*hyperspec-root*</code></a></li>
-<li><a href="#sec-1.4.11">1.4.11 Internal Variable: <code>*left-margin*</code></a></li>
-<li><a href="#sec-1.4.12">1.4.12 Internal Variable: <code>*line-width*</code></a></li>
-<li><a href="#sec-1.4.13">1.4.13 Internal Variable: <code>*lines-between-sections*</code></a></li>
-<li><a href="#sec-1.4.14">1.4.14 Internal Variable: <code>*out*</code></a></li>
-<li><a href="#sec-1.4.15">1.4.15 Internal Variable: <code>*unsafe-html-chars*</code></a></li>
-<li><a href="#sec-1.4.16">1.4.16 Internal Variable: <code>*unsafe-symbol-strings*</code></a></li>
-<li><a href="#sec-1.4.17">1.4.17 Internal Variable: <code>ff</code></a></li>
-</ul>
+<li>
 </li>
-<li><a href="#sec-1.5">1.5 Macros</a>
-<ul>
-<li><a href="#sec-1.5.1">1.5.1 Internal Macro: <code>do-own-symbols</code></a></li>
-<li><a href="#sec-1.5.2">1.5.2 Internal Macro: <code>write-indented</code></a></li>
-<li><a href="#sec-1.5.3">1.5.3 Internal Macro: <code>writing-bulleted-list</code></a></li>
-<li><a href="#sec-1.5.4">1.5.4 Internal Macro: <code>writing-section</code></a></li>
-<li><a href="#sec-1.5.5">1.5.5 Internal Macro: <code>writing-section-for-symbol</code></a></li>
-</ul>
-</li>
-<li><a href="#sec-1.6">1.6 Functions</a>
-<ul>
-<li><a href="#sec-1.6.1">1.6.1 Internal Function: <code>docpkg</code></a></li>
-<li><a href="#sec-1.6.2">1.6.2 Internal Function: <code>docpkg-file</code></a></li>
-<li><a href="#sec-1.6.3">1.6.3 External Function: <code>document-package</code></a></li>
-<li><a href="#sec-1.6.4">1.6.4 Internal Function: <code>document-package-contents</code></a></li>
-<li><a href="#sec-1.6.5">1.6.5 External Function: <code>document-packages</code></a></li>
-<li><a href="#sec-1.6.6">1.6.6 Internal Function: <code>entity-&gt;string</code></a></li>
-<li><a href="#sec-1.6.7">1.6.7 Internal Function: <code>entity-&gt;tag</code></a></li>
-<li><a href="#sec-1.6.8">1.6.8 Internal Function: <code>html-safe-string</code></a></li>
-<li><a href="#sec-1.6.9">1.6.9 Internal Function: <code>list-&gt;string-with-commas</code></a></li>
-<li><a href="#sec-1.6.10">1.6.10 Internal Function: <code>list-all-direct-slots</code></a></li>
-<li><a href="#sec-1.6.11">1.6.11 Internal Function: <code>list-all-indirect-slots</code></a></li>
-<li><a href="#sec-1.6.12">1.6.12 Internal Function: <code>list-all-slot-accessors</code></a></li>
-<li><a href="#sec-1.6.13">1.6.13 Internal Function: <code>make-class-link</code></a></li>
-<li><a href="#sec-1.6.14">1.6.14 Internal Function: <code>make-package-link</code></a></li>
-<li><a href="#sec-1.6.15">1.6.15 Internal Function: <code>make-specialised-lambda-list</code></a></li>
-<li><a href="#sec-1.6.16">1.6.16 Internal Function: <code>make-target</code></a></li>
-<li><a href="#sec-1.6.17">1.6.17 Internal Function: <code>org-safe-symbol</code></a></li>
-<li><a href="#sec-1.6.18">1.6.18 Internal Function: <code>safe-symbol</code></a></li>
-<li><a href="#sec-1.6.19">1.6.19 Internal Function: <code>simple-type?</code></a></li>
-<li><a href="#sec-1.6.20">1.6.20 Internal Function: <code>symbol-accessibility</code></a></li>
-<li><a href="#sec-1.6.21">1.6.21 Internal Function: <code>type-&gt;string</code></a></li>
-<li><a href="#sec-1.6.22">1.6.22 Internal Function: <code>uses-for-symbol</code></a></li>
-<li><a href="#sec-1.6.23">1.6.23 Internal Function: <code>word-wrap</code></a></li>
-<li><a href="#sec-1.6.24">1.6.24 Internal Function: <code>wrap-and-write</code></a></li>
-<li><a href="#sec-1.6.25">1.6.25 Internal Function: <code>wrap-and-write-code</code></a></li>
-<li><a href="#sec-1.6.26">1.6.26 Internal Function: <code>write-bullet-point</code></a></li>
-<li><a href="#sec-1.6.27">1.6.27 Internal Function: <code>write-chapter</code></a></li>
-<li><a href="#sec-1.6.28">1.6.28 Internal Function: <code>write-disambiguation</code></a></li>
-<li><a href="#sec-1.6.29">1.6.29 Internal Function: <code>write-docstring</code></a></li>
-<li><a href="#sec-1.6.30">1.6.30 Internal Function: <code>write-docstring-section</code></a></li>
-<li><a href="#sec-1.6.31">1.6.31 Internal Function: <code>write-heading</code></a></li>
-<li><a href="#sec-1.6.32">1.6.32 Internal Function: <code>write-index</code></a></li>
-<li><a href="#sec-1.6.33">1.6.33 Internal Function: <code>write-list-as-paragraph</code></a></li>
-<li><a href="#sec-1.6.34">1.6.34 Internal Function: <code>write-out</code></a></li>
-<li><a href="#sec-1.6.35">1.6.35 Internal Function: <code>write-preamble</code></a></li>
-</ul>
-</li>
-<li><a href="#sec-1.7">1.7 Generic Functions</a>
-<ul>
-<li><a href="#sec-1.7.1">1.7.1 Internal Generic Function: <code>document</code></a></li>
-<li><a href="#sec-1.7.2">1.7.2 Internal Generic Function: <code>make-link</code></a></li>
-</ul>
-</li>
-<li><a href="#sec-1.8">1.8 Index</a>
-<ul>
-<li><a href="#sec-1.8.1">1.8.1 Nonalphabetic</a></li>
-<li><a href="#sec-1.8.2">1.8.2 C</a></li>
-<li><a href="#sec-1.8.3">1.8.3 D</a></li>
-<li><a href="#sec-1.8.4">1.8.4 E</a></li>
-<li><a href="#sec-1.8.5">1.8.5 F</a></li>
-<li><a href="#sec-1.8.6">1.8.6 H</a></li>
-<li><a href="#sec-1.8.7">1.8.7 L</a></li>
-<li><a href="#sec-1.8.8">1.8.8 M</a></li>
-<li><a href="#sec-1.8.9">1.8.9 O</a></li>
-<li><a href="#sec-1.8.10">1.8.10 S</a></li>
-<li><a href="#sec-1.8.11">1.8.11 T</a></li>
-<li><a href="#sec-1.8.12">1.8.12 U</a></li>
-<li><a href="#sec-1.8.13">1.8.13 W</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-
+<li><a href="#sec-1.4.1">1.4.1 Internal Function: <code>docpkg</code></a></li>
+<li><a href="#sec-1.4.2">1.4.2 External Function: <code>document-package</code></a></li>
+<li><a href="#sec-1.4.3">1.4.3 Internal Function: <code>document-package-contents</code></a></li>
+<li><a href="#sec-1.4.4">1.4.4 External Function: <code>document-packages</code></a></li>
+<li><a href="#sec-1.4.5">1.4.5 Internal Function: <code>entity-&gt;string</code></a></li>
+<li><a href="#sec-1.4.6">1.4.6 Internal Function: <code>entity-&gt;tag</code></a></li>
+<li><a href="#sec-1.4.7">1.4.7 Internal Function: <code>html-safe-string</code></a></li>
+<li><a href="#sec-1.4.8">1.4.8 Internal Function: <code>list-&gt;string-with-commas</code></a></li>
+<li><a href="#sec-1.4.9">1.4.9 Internal Function: <code>list-all-direct-slots</code></a></li>
+<li><a href="#sec-1.4.10">1.4.10 Internal Function: <code>list-all-indirect-slots</code></a></li>
+<li><a href="#sec-1.4.11">1.4.11 Internal Function: <code>list-all-slot-accessors</code></a></li>
+<li><a href="#sec-1.4.12">1.4.12 Internal Function: <code>make-class-link</code></a></li>
+<li><a href="#sec-1.4.13">1.4.13 Internal Function: <code>make-package-link</code></a></li>
+<li><a href="#sec-1.4.14">1.4.14 Internal Function: <code>make-specialised-lambda-list</code></a></li>
+<li><a href="#sec-1.4.15">1.4.15 Internal Function: <code>make-target</code></a></li>
+<li><a href="#sec-1.4.16">1.4.16 Internal Function: <code>org-safe-symbol</code></a></li>
+<li><a href="#sec-1.4.17">1.4.17 Internal Function: <code>simple-type?</code></a></li>
+<li><a href="#sec-1.4.18">1.4.18 Internal Function: <code>symbol-accessibility</code></a></li>
+<li><a href="#sec-1.4.19">1.4.19 Internal Function: <code>type-&gt;string</code></a></li>
+<li><a href="#sec-1.4.20">1.4.20 Internal Function: <code>uses-for-symbol</code></a></li>
+<li><a href="#sec-1.4.21">1.4.21 Internal Function: <code>word-wrap</code></a></li>
+<li><a href="#sec-1.4.22">1.4.22 Internal Function: <code>wrap-and-write</code></a></li>
+<li><a href="#sec-1.4.23">1.4.23 Internal Function: <code>wrap-and-write-code</code></a>
 <div id="outline-container-1" class="outline-2">
 <h2 id="sec-1"><span class="section-number-2">1</span> Internal Package: <code>clod</code></h2>
 <div class="outline-text-2" id="text-1">
 
-
-<ul>
+<p></p>
+<p>
+</p><ul>
 <li>
 Uses:
 <a href="#package==common-lisp">common-lisp</a>, <a href="#package==iterate">iterate</a>, <a href="#package==closer-mop">closer-mop</a>, <a href="#package==cl-ppcre">cl-ppcre</a>
 <h4 id="sec-1.1"><span class="section-number-4">1.1</span> Description</h4>
 <div class="outline-text-4" id="text-1.1">
 
-
-
+<p></p>
+<p>
+</p>
 <p>
 CLOD is a tool for creating documentation for Common Lisp programs.
 CLOD examines a loaded package and writes information about all the
 symbols defined within that package, to a file.
 </p>
 <p>
-The output file is in org format. Org is a simple but powerful 'wiki-like'
+The output file is in <i>Org</i> format. Org is a simple but powerful 'wiki-like'
 markup language that is understood by <b>Org-mode</b>, a powerful outliner, personal
-wiki and organiser that runs within Emacs. Org-mode can export
+wiki and organiser that runs as a major mode within Emacs. Org-mode can export
 org-format files to numerous other formats, including HTML, LaTeX, PDF,
 DocBook, and plain text.
 </p>
 <dt>Org mode</dt><dd>
 <a href="http://orgmode.org/">http://orgmode.org/</a>
 
-</dd>
+<p>
+</p></dd>
 </dl>
 </div>
 
 <h4 id="sec-1.2"><span class="section-number-4">1.2</span> Why use CLOD?</h4>
 <div class="outline-text-4" id="text-1.2">
 
-
-
-<ul>
+<p></p>
+<p>
+</p>
+<p>
+</p><ul>
 <li>
 You can use org markup within docstrings (easy for humans to read) to
 create subsections, bulleted lists, hyperlinks within the document or
 </li>
 <li>
 You can edit the output within Emacs, which is already the IDE of most
-CL programmers.
+Commn Lisp programmers.
 </li>
 <li>
-Org has many cool tricks. Some examples of useful things you can put in
-docstrings:
+If GraphViz is installed, automatically create a diagram showing the
+package's class hierarchy &ndash; see <a href="http://www.graphviz.org/">http://www.graphviz.org/</a>
+</li>
+<li>
+Org markup has many cool tricks. Some examples of useful things you can
+put in docstrings:
 <ul>
 <li>
 Include an entire file and format as plain text:
 #+INCLUDE: "filename" quote
 </pre>
 
-</li>
+<p></p></li>
 <li>
 Include an entire file with common lisp syntax highlighting
 <pre class="example">
 #+INCLUDE: "filename.lisp" src lisp
 </pre>
 
-</li>
+<p></p></li>
 <li>
 Timestamps and datestamps:
 <pre class="example">
 {{{ modification-time(%r) }}}
 </pre>
 
-<p>01:32:57 AM
+<p>11:41:36 PM
 </p><pre class="example">
 {{{ date(%Y-%m-%d) }}}
 </pre>
 
-<p>2010-02-13
+<p>2010-02-26
 </p></li>
 <li>
 Define text macros, use with <code>{{{macro(arg1,arg2)}}}</code>
 #+MACRO: foo Replacement text $1 $2
 </pre>
 
-</li>
+<p></p></li>
 <li>
 Embed any LaTeX code directly (no special markup needed)
 </li>
 Automatic syntax highlighting of source code examples in exported
 documents, eg:
 
-</li>
+<p>
+</p></li>
 </ul>
 </li>
 </ul>
 
 
 <pre class="src src-lisp"><span style="color: #696969;">(</span><span style="color: #8b4789; font-weight: bold;">defun</span> <span style="color: #1e90ff; font-weight: bold;">hello</span> <span style="color: #696969;">(</span>a <span style="color: #d2691e; font-weight: bold;">&amp;key</span> b<span style="color: #696969;">)</span>
-   <span style="color: #696969;">(</span><span style="color: #1e90ff; font-weight: bold;">print</span> <span style="color: #006400;">"Hello, world!"</span><span style="color: #696969;">))</span>
+   <span style="color: #696969;">(</span><span style="color: #1e90ff; font-weight: bold;">print</span> <span style="color: #008b00;">"Hello, world!"</span><span style="color: #696969;">))</span>
 </pre>
 
 
 
-</div>
+<p>
+</p></div>
 
 </div>
 
 <h4 id="sec-1.3"><span class="section-number-4">1.3</span> Dependencies</h4>
 <div class="outline-text-4" id="text-1.3">
 
-
-
-<ul>
+<p></p>
+<p>
+</p>
+<p>
+</p><ul>
 <li>
 ASDF
 </li>
 <li>
 CL-PPCRE: <a href="http://weitz.de/cl-ppcre/">http://weitz.de/cl-ppcre/</a>
 
-</li>
+<p>
+</p></li>
 </ul>
 </div>
 
 <h4 id="sec-1.4"><span class="section-number-4">1.4</span> How to use</h4>
 <div class="outline-text-4" id="text-1.4">
 
-
-
-<ol>
+<p></p>
+<p>
+</p>
+<p>
+</p><ol>
 <li>
 Install CLOD somewhere ASDF can find it.
 </li>
 Load filename.org into Emacs. Export to HTML with <code>M-x org-export</code>, or press
 C-c C-e to be presented with a menu of export options.
 
-</li>
+<p>
+</p></li>
 </ol>
 </div>
 
 <h4 id="sec-1.5"><span class="section-number-4">1.5</span> Writing the documentation</h4>
 <div class="outline-text-4" id="text-1.5">
 
-
-
+<p></p>
+<p>
+</p>
 <p>
 All documentation produced by CLOD is obtained by introspection, i.e.  the
 running CL process examining itself. If a symbol has an associated docstring,
 </pre>
 
 <p>Any text surrounded by these brackets will link to the same text (case
-insensitive) surrounded by <a name="double==angle==brackets" class="target">double angle brackets</a> . CLOD uses this to define
+insensitive) surrounded by <code>&lt;&lt;double angle brackets&gt;&gt;</code>. CLOD uses this to define
 hyperlinks for all symbols in the package. Every symbol MYSYMBOL has:
 </p><ol>
 <li>
 <li>
 Org mode has the ability to use Emacs' font-lock mode to produce source code
 snippets that are correctly syntax highlighted for any major mode.
-To use this normally requires surrounding the code with #+BEGIN<sub>SRC</sub> &hellip; #+END<sub>SRC</sub>.
+To use this normally requires surrounding the code with <code>#+BEGIN_SRC ... #+END_SRC</code>.
 CLOD provides a shortcut: Any lines within docstrings that begin with three
 semicolons ;;; are assumed to be example lisp source code. The first 3
 semicolons are removed and the rest of the line is syntax highlighted.
 
-</li>
+<p>
+</p></li>
 </ul>
 </div>
 
 <h4 id="sec-1.6"><span class="section-number-4">1.6</span> Example</h4>
 <div class="outline-text-4" id="text-1.6">
 
-
-
+<p></p>
+<p>
+</p>
 <p>
 Here is the docstring for <a href="#document-package">document-package</a>.
 </p>
-<pre class="example">
+<p>
+</p><pre class="example">
 * Usage
 : (document-package PKG FILE/STREAM &amp;key AUTO-LINKS
 :      LINES-BETWEEN-SECTIONS BRIEF-METHODS TITLE
 - [[document-packages]]
 </pre>
 
-
-</div>
+<p></p>
+<p>
+</p></div>
 
 </div>
 
 <h4 id="sec-1.7"><span class="section-number-4">1.7</span> Limitations</h4>
 <div class="outline-text-4" id="text-1.7">
 
-
-
-<ul>
+<p></p>
+<p>
+</p>
+<p>
+</p><ul>
 <li>
-There is no portable way to access the lambda lists of functions. Thus, you need
-to spell these out in function docstrings.
-
-</li>
+There is no portable way to access the lambda lists of functions. Thus, you
+need to describe these manually in function docstrings.
+
+<p>
+</p></li>
 </ul>
 </div>
 
 </div>
 
 <div id="outline-container-1.1" class="outline-3">
-<h3 id="sec-1.1"><span class="section-number-3">1.1</span> Classes</h3>
+<h3 id="sec-1.1"><span class="section-number-3">1.1</span> Types</h3>
 <div class="outline-text-3" id="text-1.1">
 
-
-
-<hr/>
-<p>
-<a name="..3c..foo..3e.." id="..3c..foo..3e.."></a>
-<a name="class==..3c..foo..3e.." id="class==..3c..foo..3e.."></a>
-</p>
-
-
-</div>
-
-<div id="outline-container-1.1.1" class="outline-4">
-<h4 id="sec-1.1.1"><span class="section-number-4">1.1.1</span> Internal Class: <code>&lt;foo&gt;</code></h4>
-<div class="outline-text-4" id="text-1.1.1">
-
-
-
-
-</div>
-
-<div id="outline-container-1.1.1.1" class="outline-5">
-<h5 id="sec-1.1.1.1"><span class="section-number-5">1.1.1.1</span> Inheritance</h5>
-<div class="outline-text-5" id="text-1.1.1.1">
-
-
-<ul>
-<li>
-Parent classes:
-<a href="#class==standard-object">standard-object</a>
-</li>
-<li>
-Precedence list:
-<a href="#class==..3c..foo..3e..">&lt;foo&gt;</a>, <a href="#class==standard-object">standard-object</a>,
-<a href="#class==t">t</a>
-</li>
-<li>
-Direct subclasses:
-None.
-
-
-</li>
-</ul>
-</div>
-
-</div>
-
-<div id="outline-container-1.1.1.2" class="outline-5">
-<h5 id="sec-1.1.1.2"><span class="section-number-5">1.1.1.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.1.1.2">
-
-
-<p>
-Not documented.
-</p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.1.1.3" class="outline-5">
-<h5 id="sec-1.1.1.3"><span class="section-number-5">1.1.1.3</span> Direct Slots</h5>
-<div class="outline-text-5" id="text-1.1.1.3">
-
-
-<p>
-<a name="myslot" id="myslot"></a>
-<a name="slot==myslot" id="slot==myslot"></a>
-</p>
-
-
-</div>
-
-<div id="outline-container-1.1.1.3.1" class="outline-6">
-<h6 id="sec-1.1.1.3.1"><span class="section-number-6">1.1.1.3.1</span> Internal Slot: <code>myslot</code></h6>
-<div class="outline-text-6" id="text-1.1.1.3.1">
-
-
-<ul>
-<li>
-Value type: <code>t</code>
-</li>
-<li>
-Initial value: <code>NIL</code>
-</li>
-<li>
-Initargs: none
-</li>
-<li>
-Allocation: instance
-
-
-
-
-
-
-
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.2" class="outline-3">
-<h3 id="sec-1.2"><span class="section-number-3">1.2</span> Types</h3>
-<div class="outline-text-3" id="text-1.2">
-
-
-
+<p></p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="..3d..entity..3d.." id="..3d..entity..3d.."></a>
 <a name="type==..3d..entity..3d.." id="type==..3d..entity..3d.."></a>
 </p>
-
-
-</div>
-
-<div id="outline-container-1.2.1" class="outline-4">
-<h4 id="sec-1.2.1"><span class="section-number-4">1.2.1</span> Internal Type: ==entity==</h4>
-<div class="outline-text-4" id="text-1.2.1">
-
-
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.1.1" class="outline-4">
+<h4 id="sec-1.1.1"><span class="section-number-4">1.1.1</span> Internal Type: ==entity==</h4>
+<div class="outline-text-4" id="text-1.1.1">
+
+<p></p>
 <p>
 The type 'entity' can have any of several different symbols as its value.
 Each value is a different kind of 'meaning' which a symbol can have within
 a package. For example, <code>:function</code> is a function, <code>:class</code> is a class,
 and so on.
 </p>
-
-
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.3" class="outline-3">
-<h3 id="sec-1.3"><span class="section-number-3">1.3</span> Constants</h3>
-<div class="outline-text-3" id="text-1.3">
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2" class="outline-3">
+<h3 id="sec-1.2"><span class="section-number-3">1.2</span> Global Variables</h3>
+<div class="outline-text-3" id="text-1.2">
+
+<p></p>
+<p>
+
+</p>
 <hr/>
 <p>
-<a name="..2b..alphabet..2b.." id="..2b..alphabet..2b.."></a>
-<a name="constant==..2b..alphabet..2b.." id="constant==..2b..alphabet..2b.."></a>
-</p>
-
-
-</div>
-
-<div id="outline-container-1.3.1" class="outline-4">
-<h4 id="sec-1.3.1"><span class="section-number-4">1.3.1</span> Internal Constant: <code>+alphabet+</code></h4>
-<div class="outline-text-4" id="text-1.3.1">
-
-
-
-
-</div>
-
-<div id="outline-container-1.3.1.1" class="outline-5">
-<h5 id="sec-1.3.1.1"><span class="section-number-5">1.3.1.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.3.1.1">
-
-
-<pre class="example">
+<a name="<b>alphabet</b>" id="<b>alphabet</b>"></a>
+<a name="variable==*alphabet*" id="variable==*alphabet*"></a>
+</p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.1" class="outline-4">
+<h4 id="sec-1.2.1"><span class="section-number-4">1.2.1</span> Internal Variable: <code>*alphabet*</code></h4>
+<div class="outline-text-4" id="text-1.2.1">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.1.1" class="outline-5">
+<h5 id="sec-1.2.1.1"><span class="section-number-5">1.2.1.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.1.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 (#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S
 #\T #\U #\V #\W #\X #\Y #\Z)
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>cons</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.3.1.2" class="outline-5">
-<h5 id="sec-1.3.1.2"><span class="section-number-5">1.3.1.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.3.1.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.1.2" class="outline-5">
+<h5 id="sec-1.2.1.2"><span class="section-number-5">1.2.1.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.1.2">
+
+<p></p>
 <p>
 List of uppercase letters (characters) from A to Z.
 </p>
-
-
-
-
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4" class="outline-3">
-<h3 id="sec-1.4"><span class="section-number-3">1.4</span> Global Variables</h3>
-<div class="outline-text-3" id="text-1.4">
-
-
-
-<hr/>
-<p>
-<a name="<b>alphabet</b>" id="<b>alphabet</b>"></a>
-<a name="variable==*alphabet*" id="variable==*alphabet*"></a>
-</p>
-
-
-</div>
-
-<div id="outline-container-1.4.1" class="outline-4">
-<h4 id="sec-1.4.1"><span class="section-number-4">1.4.1</span> Internal Variable: <code>*alphabet*</code></h4>
-<div class="outline-text-4" id="text-1.4.1">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.1.1" class="outline-5">
-<h5 id="sec-1.4.1.1"><span class="section-number-5">1.4.1.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.1.1">
-
-
-<pre class="example">
-(#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M #\N #\O #\P #\Q #\R #\S
-#\T #\U #\V #\W #\X #\Y #\Z)
-</pre>
-
-
-<p>
-Type: <code>cons</code>
-</p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.1.2" class="outline-5">
-<h5 id="sec-1.4.1.2"><span class="section-number-5">1.4.1.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.1.2">
-
-
-<p>
-List of uppercase letters (characters) from A to Z.
-</p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>ambiguities</b>" id="<b>ambiguities</b>"></a>
 <a name="variable==*ambiguities*" id="variable==*ambiguities*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.2" class="outline-4">
-<h4 id="sec-1.4.2"><span class="section-number-4">1.4.2</span> Internal Variable: <code>*ambiguities*</code></h4>
-<div class="outline-text-4" id="text-1.4.2">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.2.1" class="outline-5">
-<h5 id="sec-1.4.2.1"><span class="section-number-5">1.4.2.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.2.1">
-
-
-<pre class="example">
-#&lt;HASH-TABLE :TEST EQL size 0/60 #x2643595E&gt;
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.2" class="outline-4">
+<h4 id="sec-1.2.2"><span class="section-number-4">1.2.2</span> Internal Variable: <code>*ambiguities*</code></h4>
+<div class="outline-text-4" id="text-1.2.2">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.2.1" class="outline-5">
+<h5 id="sec-1.2.2.1"><span class="section-number-5">1.2.2.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.2.1">
+
+<p></p>
+<p>
+</p><pre class="example">
+#&lt;HASH-TABLE :TEST EQL size 0/60 #x235EDDDE&gt;
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>hash-table</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.2.2" class="outline-5">
-<h5 id="sec-1.4.2.2"><span class="section-number-5">1.4.2.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.2.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.2.2" class="outline-5">
+<h5 id="sec-1.2.2.2"><span class="section-number-5">1.2.2.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.2.2">
+
+<p></p>
 <p>
 Hash table created during package documentation. Stores all
 symbols which have multiple 'meanings' within the package.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>auto-links</b>" id="<b>auto-links</b>"></a>
 <a name="variable==*auto-links*" id="variable==*auto-links*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.3" class="outline-4">
-<h4 id="sec-1.4.3"><span class="section-number-4">1.4.3</span> Internal Variable: <code>*auto-links*</code></h4>
-<div class="outline-text-4" id="text-1.4.3">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.3.1" class="outline-5">
-<h5 id="sec-1.4.3.1"><span class="section-number-5">1.4.3.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.3.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.3" class="outline-4">
+<h4 id="sec-1.2.3"><span class="section-number-4">1.2.3</span> Internal Variable: <code>*auto-links*</code></h4>
+<div class="outline-text-4" id="text-1.2.3">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.3.1" class="outline-5">
+<h5 id="sec-1.2.3.1"><span class="section-number-5">1.2.3.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.3.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 NIL
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>null</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.3.2" class="outline-5">
-<h5 id="sec-1.4.3.2"><span class="section-number-5">1.4.3.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.3.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.3.2" class="outline-5">
+<h5 id="sec-1.2.3.2"><span class="section-number-5">1.2.3.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.3.2">
+
+<p></p>
 <p>
 If true, all occurrences of package symbols anywhere in the documentation
 will be turned into hyperlinks, even if they are not marked up as such.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>brief-methods</b>" id="<b>brief-methods</b>"></a>
 <a name="variable==*brief-methods*" id="variable==*brief-methods*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.4" class="outline-4">
-<h4 id="sec-1.4.4"><span class="section-number-4">1.4.4</span> Internal Variable: <code>*brief-methods*</code></h4>
-<div class="outline-text-4" id="text-1.4.4">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.4.1" class="outline-5">
-<h5 id="sec-1.4.4.1"><span class="section-number-5">1.4.4.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.4.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.4" class="outline-4">
+<h4 id="sec-1.2.4"><span class="section-number-4">1.2.4</span> Internal Variable: <code>*brief-methods*</code></h4>
+<div class="outline-text-4" id="text-1.2.4">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.4.1" class="outline-5">
+<h5 id="sec-1.2.4.1"><span class="section-number-5">1.2.4.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.4.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 T
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>boolean</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.4.2" class="outline-5">
-<h5 id="sec-1.4.4.2"><span class="section-number-5">1.4.4.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.4.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.4.2" class="outline-5">
+<h5 id="sec-1.2.4.2"><span class="section-number-5">1.2.4.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.4.2">
+
+<p></p>
 <p>
 If true, most documentation for methods is assumed to be found in the docstring
 for their generic function. A generic function's methods are therefore described
 <p>
 If false, each method receives its own section, just like other functions.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
+<hr/>
+<p>
+<a name="<b>class-diagram</b>" id="<b>class-diagram</b>"></a>
+<a name="variable==*class-diagram*" id="variable==*class-diagram*"></a>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.5" class="outline-4">
+<h4 id="sec-1.2.5"><span class="section-number-4">1.2.5</span> Internal Variable: <code>*class-diagram*</code></h4>
+<div class="outline-text-4" id="text-1.2.5">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.5.1" class="outline-5">
+<h5 id="sec-1.2.5.1"><span class="section-number-5">1.2.5.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.5.1">
+
+<p></p>
+<p>
+</p><pre class="example">
+NIL
+</pre>
+
+<p></p>
+<p>
+Type: <code>null</code>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.5.2" class="outline-5">
+<h5 id="sec-1.2.5.2"><span class="section-number-5">1.2.5.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.5.2">
+
+<p></p>
+<p>
+If true, creates a section describing the package class hierarchy as a
+'dot' diagram, which can be fed to the GraphViz program (if installed) to
+create a visual representation of the hierarchy.
+</p>
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>document-author</b>" id="<b>document-author</b>"></a>
 <a name="variable==*document-author*" id="variable==*document-author*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.5" class="outline-4">
-<h4 id="sec-1.4.5"><span class="section-number-4">1.4.5</span> Internal Variable: <code>*document-author*</code></h4>
-<div class="outline-text-4" id="text-1.4.5">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.5.1" class="outline-5">
-<h5 id="sec-1.4.5.1"><span class="section-number-5">1.4.5.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.5.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.6" class="outline-4">
+<h4 id="sec-1.2.6"><span class="section-number-4">1.2.6</span> Internal Variable: <code>*document-author*</code></h4>
+<div class="outline-text-4" id="text-1.2.6">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.6.1" class="outline-5">
+<h5 id="sec-1.2.6.1"><span class="section-number-5">1.2.6.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.6.1">
+
+<p></p>
+<p>
+</p><pre class="example">
+"Paul Sexton"
+</pre>
+
+<p></p>
+<p>
+Type: <code>simple-base-string</code>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.6.2" class="outline-5">
+<h5 id="sec-1.2.6.2"><span class="section-number-5">1.2.6.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.6.2">
+
+<p></p>
+<p>
+The author of the document. A string.
+</p>
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
+<hr/>
+<p>
+<a name="<b>document-email</b>" id="<b>document-email</b>"></a>
+<a name="variable==*document-email*" id="variable==*document-email*"></a>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.7" class="outline-4">
+<h4 id="sec-1.2.7"><span class="section-number-4">1.2.7</span> Internal Variable: <code>*document-email*</code></h4>
+<div class="outline-text-4" id="text-1.2.7">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.7.1" class="outline-5">
+<h5 id="sec-1.2.7.1"><span class="section-number-5">1.2.7.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.7.1">
+
+<p></p>
+<p>
+</p><pre class="example">
+"eeeickythump@gmail.com"
+</pre>
+
+<p></p>
+<p>
+Type: <code>simple-base-string</code>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.7.2" class="outline-5">
+<h5 id="sec-1.2.7.2"><span class="section-number-5">1.2.7.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.7.2">
+
+<p></p>
+<p>
+The email address of the document's author. A string.
+</p>
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
+<hr/>
+<p>
+<a name="<b>document-title</b>" id="<b>document-title</b>"></a>
+<a name="variable==*document-title*" id="variable==*document-title*"></a>
+</p>
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.8" class="outline-4">
+<h4 id="sec-1.2.8"><span class="section-number-4">1.2.8</span> Internal Variable: <code>*document-title*</code></h4>
+<div class="outline-text-4" id="text-1.2.8">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.8.1" class="outline-5">
+<h5 id="sec-1.2.8.1"><span class="section-number-5">1.2.8.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.8.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 "CLOD"
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>simple-base-string</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.5.2" class="outline-5">
-<h5 id="sec-1.4.5.2"><span class="section-number-5">1.4.5.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.5.2">
-
-
-<p>
-The author of the document. A string.
-</p>
-
-
-
-<hr/>
-<p>
-<a name="<b>document-email</b>" id="<b>document-email</b>"></a>
-<a name="variable==*document-email*" id="variable==*document-email*"></a>
-</p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.6" class="outline-4">
-<h4 id="sec-1.4.6"><span class="section-number-4">1.4.6</span> Internal Variable: <code>*document-email*</code></h4>
-<div class="outline-text-4" id="text-1.4.6">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.6.1" class="outline-5">
-<h5 id="sec-1.4.6.1"><span class="section-number-5">1.4.6.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.6.1">
-
-
-<pre class="example">
-"your@email.here"
-</pre>
-
-
-<p>
-Type: <code>simple-base-string</code>
-</p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.6.2" class="outline-5">
-<h5 id="sec-1.4.6.2"><span class="section-number-5">1.4.6.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.6.2">
-
-
-<p>
-The email address of the document's author. A string.
-</p>
-
-
-
-<hr/>
-<p>
-<a name="<b>document-title</b>" id="<b>document-title</b>"></a>
-<a name="variable==*document-title*" id="variable==*document-title*"></a>
-</p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.7" class="outline-4">
-<h4 id="sec-1.4.7"><span class="section-number-4">1.4.7</span> Internal Variable: <code>*document-title*</code></h4>
-<div class="outline-text-4" id="text-1.4.7">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.7.1" class="outline-5">
-<h5 id="sec-1.4.7.1"><span class="section-number-5">1.4.7.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.7.1">
-
-
-<pre class="example">
-"The CLOD package"
-</pre>
-
-
-<p>
-Type: <code>simple-base-string</code>
-</p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.7.2" class="outline-5">
-<h5 id="sec-1.4.7.2"><span class="section-number-5">1.4.7.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.7.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.8.2" class="outline-5">
+<h5 id="sec-1.2.8.2"><span class="section-number-5">1.2.8.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.8.2">
+
+<p></p>
 <p>
 The title of the document. A string.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>heading-char</b>" id="<b>heading-char</b>"></a>
 <a name="variable==*heading-char*" id="variable==*heading-char*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.8" class="outline-4">
-<h4 id="sec-1.4.8"><span class="section-number-4">1.4.8</span> Internal Variable: <code>*heading-char*</code></h4>
-<div class="outline-text-4" id="text-1.4.8">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.8.1" class="outline-5">
-<h5 id="sec-1.4.8.1"><span class="section-number-5">1.4.8.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.8.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.9" class="outline-4">
+<h4 id="sec-1.2.9"><span class="section-number-4">1.2.9</span> Internal Variable: <code>*heading-char*</code></h4>
+<div class="outline-text-4" id="text-1.2.9">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.9.1" class="outline-5">
+<h5 id="sec-1.2.9.1"><span class="section-number-5">1.2.9.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.9.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 #\*
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>standard-char</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.8.2" class="outline-5">
-<h5 id="sec-1.4.8.2"><span class="section-number-5">1.4.8.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.8.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.9.2" class="outline-5">
+<h5 id="sec-1.2.9.2"><span class="section-number-5">1.2.9.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.9.2">
+
+<p></p>
 <p>
 Character used at the beginning of lines to signify headings and
 subheadings. Should not be changed.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>heading-level</b>" id="<b>heading-level</b>"></a>
 <a name="variable==*heading-level*" id="variable==*heading-level*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.9" class="outline-4">
-<h4 id="sec-1.4.9"><span class="section-number-4">1.4.9</span> Internal Variable: <code>*heading-level*</code></h4>
-<div class="outline-text-4" id="text-1.4.9">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.9.1" class="outline-5">
-<h5 id="sec-1.4.9.1"><span class="section-number-5">1.4.9.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.9.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.10" class="outline-4">
+<h4 id="sec-1.2.10"><span class="section-number-4">1.2.10</span> Internal Variable: <code>*heading-level*</code></h4>
+<div class="outline-text-4" id="text-1.2.10">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.10.1" class="outline-5">
+<h5 id="sec-1.2.10.1"><span class="section-number-5">1.2.10.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.10.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 4
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>integer</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.9.2" class="outline-5">
-<h5 id="sec-1.4.9.2"><span class="section-number-5">1.4.9.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.9.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.10.2" class="outline-5">
+<h5 id="sec-1.2.10.2"><span class="section-number-5">1.2.10.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.10.2">
+
+<p></p>
 <p>
 Number of levels 'deep' within the outline. Used when creating
 headings for sections and subsections.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>hyperspec-root</b>" id="<b>hyperspec-root</b>"></a>
 <a name="variable==*hyperspec-root*" id="variable==*hyperspec-root*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.10" class="outline-4">
-<h4 id="sec-1.4.10"><span class="section-number-4">1.4.10</span> Internal Variable: <code>*hyperspec-root*</code></h4>
-<div class="outline-text-4" id="text-1.4.10">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.10.1" class="outline-5">
-<h5 id="sec-1.4.10.1"><span class="section-number-5">1.4.10.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.10.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.11" class="outline-4">
+<h4 id="sec-1.2.11"><span class="section-number-4">1.2.11</span> Internal Variable: <code>*hyperspec-root*</code></h4>
+<div class="outline-text-4" id="text-1.2.11">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.11.1" class="outline-5">
+<h5 id="sec-1.2.11.1"><span class="section-number-5">1.2.11.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.11.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 "http://www.lispworks.com/reference/HyperSpec/"
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>simple-base-string</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.10.2" class="outline-5">
-<h5 id="sec-1.4.10.2"><span class="section-number-5">1.4.10.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.10.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.11.2" class="outline-5">
+<h5 id="sec-1.2.11.2"><span class="section-number-5">1.2.11.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.11.2">
+
+<p></p>
 <p>
 URL or directory where the Hyperspec is found. Not currently
 implemented.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>left-margin</b>" id="<b>left-margin</b>"></a>
 <a name="variable==*left-margin*" id="variable==*left-margin*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.11" class="outline-4">
-<h4 id="sec-1.4.11"><span class="section-number-4">1.4.11</span> Internal Variable: <code>*left-margin*</code></h4>
-<div class="outline-text-4" id="text-1.4.11">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.11.1" class="outline-5">
-<h5 id="sec-1.4.11.1"><span class="section-number-5">1.4.11.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.11.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.12" class="outline-4">
+<h4 id="sec-1.2.12"><span class="section-number-4">1.2.12</span> Internal Variable: <code>*left-margin*</code></h4>
+<div class="outline-text-4" id="text-1.2.12">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.12.1" class="outline-5">
+<h5 id="sec-1.2.12.1"><span class="section-number-5">1.2.12.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.12.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 0
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>bit</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.11.2" class="outline-5">
-<h5 id="sec-1.4.11.2"><span class="section-number-5">1.4.11.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.11.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.12.2" class="outline-5">
+<h5 id="sec-1.2.12.2"><span class="section-number-5">1.2.12.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.12.2">
+
+<p></p>
 <p>
 Width of the current 'left margin', in spaces.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>line-width</b>" id="<b>line-width</b>"></a>
 <a name="variable==*line-width*" id="variable==*line-width*"></a>
 </p>
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.12" class="outline-4">
-<h4 id="sec-1.4.12"><span class="section-number-4">1.4.12</span> Internal Variable: <code>*line-width*</code></h4>
-<div class="outline-text-4" id="text-1.4.12">
-
-
-
-
-</div>
-
-<div id="outline-container-1.4.12.1" class="outline-5">
-<h5 id="sec-1.4.12.1"><span class="section-number-5">1.4.12.1</span> Value</h5>
-<div class="outline-text-5" id="text-1.4.12.1">
-
-
-<pre class="example">
+<p>
+</p>
+<p>
+</p></div>
+</div>
+
+</div>
+
+<div id="outline-container-1.2.13" class="outline-4">
+<h4 id="sec-1.2.13"><span class="section-number-4">1.2.13</span> Internal Variable: <code>*line-width*</code></h4>
+<div class="outline-text-4" id="text-1.2.13">
+
+<p></p>
+<p>
+</p>
+<p>
+</p>
+</div>
+
+<div id="outline-container-1.2.13.1" class="outline-5">
+<h5 id="sec-1.2.13.1"><span class="section-number-5">1.2.13.1</span> Value</h5>
+<div class="outline-text-5" id="text-1.2.13.1">
+
+<p></p>
+<p>
+</p><pre class="example">
 80
 </pre>
 
-
+<p></p>
 <p>
 Type: <code>integer</code>
 </p>
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.12.2" class="outline-5">
-<h5 id="sec-1.4.12.2"><span class="section-number-5">1.4.12.2</span> Description</h5>
-<div class="outline-text-5" id="text-1.4.12.2">
-
-
+<p>
+</p>
+<p>
+</p></div>
+
+</div>
+
+<div id="outline-container-1.2.13.2" class="outline-5">
+<h5 id="sec-1.2.13.2"><span class="section-number-5">1.2.13.2</span> Description</h5>
+<div class="outline-text-5" id="text-1.2.13.2">
+
+<p></p>
 <p>
 Width to which paragraphs are wrapped, in characters.
 </p>
-
-
-
+<p>
+</p>
+<p>
+</p>
+<p>
+
+</p>
 <hr/>
 <p>
 <a name="<b>lines-between-sections</b>" id="<b>lines-between-sections</b>"></a>
 <a name="variable==*lines-between-sections*" id="variable==*lines-between-sections*"></a>
 </p>
-
-</div>