anchor.diff:                   (format t "&#x~A~C" buffer ch)
                    (setf state :normal)))))
          :finally (case state
  -                  ((:normal))
  -                  (otherwise (princ buffer)))))
  -
  -  ;; (let ((chunks (list string)))
  -  ;;   (DOLIST (SUBSTITUTION *ENTITIES*
  -  ;;            (apply (function concatenate) 'string chunks))
  -  ;;     (when (some (lambda (chunk) (search (car substitution) chunk
  -  ;;                                         :test (function string=))) chunks)
  -  ;;       (setf chunks
  -  ;;             (mapcan
  -  ;;              (lambda (chunk) 
  -  ;;                (do* ((start 0 (+ pos (length (car substitution))))
  -  ;;                      (pos (search (car substitution) chunk 
  -  ;;                                   :start2 start
  -  ;;                                   :test (function string=))
  -  ;;                           (search (car substitution) chunk 
  -  ;;                                   :start2 start
  -  ;;                                   :test (function string=)))
  -  ;;                      (result '()))
  -  ;;                     ((null pos)
  -  ;;                      (cond
  -  ;;                        ((= 0 start) 
  -  ;;                         (push chunk result))
  -  ;;                        ((< start (length chunk)) 
  -  ;;                         (push (displaced-vector chunk start) result)))
  -  ;;                      (nreverse result))
  -  ;;                  (when (< start pos)
  -  ;;                    (push (displaced-vector chunk start pos) result))
  -  ;;                  (push (cdr substitution) result)))
  -  ;;              chunks)))))
  -  )
  -
  -                                
  +                  ((:normal :space))
  +                  (otherwise (princ buffer))))))
  +
  +
  +
   
   (defmacro defentity (name code &optional documentation)
     `(progn
  
positive.code:                           ((#\&)
                             (setf state :ampersand))
                            ((#\newline  #\space)
                             (princ " ")
                             (setf state :space))
                            (otherwise
                             (princ ch))))
               ((:space) (case ch
                           ((#\newline #\space))
                           ((#\&)
                            (setf state :ampersand))
                           (otherwise
  
negative.code:            "Aacute" "Agrave" "iquest" "frac34" "frac12" "frac14" "raquo" "ordm" "sup1"
             "cedil" "middot" "para" "micro" "acute" "sup3" "sup2" "plusmn" "deg" "macr"
             "reg" "shy" "not" "laquo" "ordf" "copy" "uml" "sect" "brvbar" "yen" "curren"
             "pound" "cent" "iexcl" "nbsp" "MELT-ENTITIES" "*PRE*")
    (:import-from "COM.INFORMATIMAGO.COMMON-LISP.CESARUM.ARRAY" "DISPLACED-VECTOR")
    (:import-from "COM.INFORMATIMAGO.COMMON-LISP.CESARUM.STRING" "STRING-REPLACE")
    (:documentation
  