Common subdirectories: /home/vs/lisp/systems/cl-who-0.11.1/doc and /home/vs/tmp/cl-who/doc
diff -u /home/vs/lisp/systems/cl-who-0.11.1/packages.lisp /home/vs/tmp/cl-who/packages.lisp
--- /home/vs/lisp/systems/cl-who-0.11.1/packages.lisp	2008-03-28 01:17:55.000000000 +0200
+++ /home/vs/tmp/cl-who/packages.lisp	2008-06-28 11:26:27.000000000 +0300
@@ -42,6 +42,7 @@
            :conc
            :convert-attributes
            :convert-tag-to-string-list
+           :emb
            :esc
            :escape-char
            :escape-char-all
diff -u /home/vs/lisp/systems/cl-who-0.11.1/who.lisp /home/vs/tmp/cl-who/who.lisp
--- /home/vs/lisp/systems/cl-who-0.11.1/who.lisp	2008-03-28 01:17:55.000000000 +0200
+++ /home/vs/tmp/cl-who/who.lisp	2008-06-28 11:31:34.000000000 +0300
@@ -399,7 +399,7 @@
   (declare (optimize speed space))
   "Transforms an HTML tree into code to print the HTML to STREAM."
   ;; use TREE-TO-TEMPLATE, then TREE-TO-COMMANDS-AUX, and finally
-  ;; replace the special symbols ESC, STR, FMT, and HTM
+  ;; replace the special symbols EMB, ESC, STR, FMT, and HTM
   (apply-to-tree #'(lambda (x)
                      (case (first x)
                        ((esc)
@@ -432,9 +432,16 @@
                                          (eq x 'htm)))
                                 (tree-to-commands-aux
                                  (if prologue
-                                   (list* 'htm prologue +newline+
-                                          (tree-to-template tree))
-                                   (cons 'htm (tree-to-template tree)))
+                                     (list* 'htm prologue +newline+
+                                            (tree-to-template tree))
+                                     (cons 'htm (tree-to-template
+                                           ;; macroexpand-1 form in EMB
+                                           (apply-to-tree #'(lambda (x)
+                                                              (macroexpand-1 (second x)))
+                                                          #'(lambda (x)
+                                                              (and (consp x)
+                                                                   (eq (first x) 'emb)))
+                                                          tree))))
                                  stream))))
 
 (defmacro with-html-output ((var &optional stream
--- /home/vs/lisp/systems/cl-who-0.11.1/doc/index.html	2008-03-28 01:16:49.000000000 +0200
+++ /home/vs/tmp/cl-who/doc/index.html	2008-06-28 11:36:44.000000000 +0300
@@ -96,6 +96,7 @@
     <li><a href="#*html-empty-tag-aware-p*"><code>*html-empty-tag-aware-p*</code></a>
     <li><a href="#*html-empty-tags*"><code>*html-empty-tags*</code></a>
     <li><a href="#*downcase-tokens-p*"><code>*downcase-tokens-p*</code></a>
+    <li><a href="#emb"><code>emb</code></a>
     <li><a href="#esc"><code>esc</code></a>
     <li><a href="#fmt"><code>fmt</code></a>
     <li><a href="#htm"><code>htm</code></a>
@@ -405,6 +406,8 @@
 
   <li>A form which is neither a string nor a keyword nor a list beginning with a keyword will be left as is except for the following <em>substitutions</em>:
     <ul>
+      <li>Forms that look like <code>(<b>emb</b> <i>form1</i> <i>form*</i>)</code> will be subjected to <code>macroexpand-1</code> before the transformation of the tree. (Note that all forms behind <code><i>form1</i></code> are ignored.)
+
       <li>Forms that look like <code>(<b>str</b> <i>form1</i> <i>form*</i>)</code> will be substituted with
 	  <span style="white-space: nowrap"><code>(let ((result <i>form1</i>)) (when result (princ result s)))</code></span>. <br>
 	  (Note that all forms behind <code><i>form1</i></code> are ignored.)
@@ -591,6 +594,8 @@
 </blockquote>
 
 <p><br>[Symbol]
+<br><a class=none name="emb"><b>emb</b></a>
+<p><br>[Symbol]
 <br><a class=none name="esc"><b>esc</b></a>
 <br>[Symbol]
 <br><a class=none name="fmt"><b>fmt</b></a>
