summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLudovic Court`es2007-06-06 09:25:35 +0000
committerLudovic Court`es2007-06-06 09:25:35 +0000
commit6ec84d65e48bf0e6f7b682afdfed9f081d8baea7 (patch)
tree54983d24ab276ad6e5e263f983fdc2b3ed571677 /src
parent089f71c9b54b6714d5a83e9686c13b43c2b03d93 (diff)
downloadskribilo-6ec84d65e48bf0e6f7b682afdfed9f081d8baea7.tar.gz
skribilo-6ec84d65e48bf0e6f7b682afdfed9f081d8baea7.tar.lz
skribilo-6ec84d65e48bf0e6f7b682afdfed9f081d8baea7.zip
More package cleanups.
Various additional package cleanups, thanks to Guile-Lint.

git-archimport-id: lcourtes@laas.fr--2006-libre/skribilo--devo--1.2--patch-61
Diffstat (limited to 'src')
-rw-r--r--src/guile/skribilo/package/acmproc.scm5
-rw-r--r--src/guile/skribilo/package/base.scm167
-rw-r--r--src/guile/skribilo/package/diff.scm10
-rw-r--r--src/guile/skribilo/package/eq.scm10
-rw-r--r--src/guile/skribilo/package/letter.scm9
-rw-r--r--src/guile/skribilo/package/pie.scm23
-rw-r--r--src/guile/skribilo/package/scribe.scm96
-rw-r--r--src/guile/skribilo/package/sigplan.scm5
-rw-r--r--src/guile/skribilo/package/slide.scm14
-rw-r--r--src/guile/skribilo/package/web-article.scm67
-rw-r--r--src/guile/skribilo/package/web-book.scm14
11 files changed, 220 insertions, 200 deletions
diff --git a/src/guile/skribilo/package/acmproc.scm b/src/guile/skribilo/package/acmproc.scm
index 5ca1288..4a3c4a2 100644
--- a/src/guile/skribilo/package/acmproc.scm
+++ b/src/guile/skribilo/package/acmproc.scm
@@ -35,7 +35,7 @@
   :use-module (ice-9 optargs)
   :use-module (srfi srfi-13)
 
-  :export (abstract references))
+  :export (abstract references acm-copyright))
 
 (fluid-set! current-reader %skribilo-module-reader)
 
@@ -170,7 +170,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    acm-copyright ...                                                */
 ;*---------------------------------------------------------------------*/
-(define-markup (acm-copyright :rest opt :key conference location year crdata)
+(define* (acm-copyright :key conference location year crdata
+                        :rest opt)
    (let* ((le (find-engine 'latex))
 	  (cop (format #f "\\conferenceinfo{~a,} {~a}
 \\CopyrightYear{~a}
diff --git a/src/guile/skribilo/package/base.scm b/src/guile/skribilo/package/base.scm
index 3aae9bf..a32f3f4 100644
--- a/src/guile/skribilo/package/base.scm
+++ b/src/guile/skribilo/package/base.scm
@@ -21,7 +21,6 @@
 
 (define-module (skribilo package base)
   :use-syntax (skribilo lib)
-  :use-syntax (skribilo reader)
   :use-syntax (skribilo utils syntax)
   :use-syntax (ice-9 optargs)
 
@@ -40,10 +39,11 @@
   :autoload   (skribilo source)    (language? source-read-lines source-fontify)
   :autoload   (skribilo prog)      (make-prog-body resolve-line)
   :autoload   (skribilo index)     (make-index-table default-index)
+  :autoload   (skribilo sui)       (load-sui sui-ref->url)
 
   :replace (symbol))
 
-(fluid-set! current-reader (make-reader 'skribe))
+(fluid-set! current-reader %skribilo-module-reader)
 
 ;;; Author: Manuel Serrano
 ;;; Commentary:
@@ -61,7 +61,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    include ...                                                      */
 ;*---------------------------------------------------------------------*/
-(define-markup (include file)
+(define-public (include file)
    (if (not (string? file))
        (skribe-error 'include "Illegal file (string expected)" file)
        (include-document file)))
@@ -69,9 +69,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    document ...                                                     */
 ;*---------------------------------------------------------------------*/
-(define-markup (document #!rest
+(define-markup (document :rest
 			 opts
-			 #!key
+			 :key
 			 (ident #f) (class "document")
 			 (title #f) (html-title #f) (author #f)
 			 (ending #f) (keywords '()) (env '()))
@@ -108,9 +108,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    author ...                                                       */
 ;*---------------------------------------------------------------------*/
-(define-markup (author #!rest
+(define-markup (author :rest
 		       opts
-		       #!key
+		       :key
 		       (ident #f) (class "author")
 		       name
 		       (title #f)
@@ -137,9 +137,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    toc ...                                                          */
 ;*---------------------------------------------------------------------*/
-(define-markup (toc #!rest
+(define-markup (toc :rest
 		    opts
-		    #!key
+		    :key
 		    (ident #f) (class "toc")
 		    (chapter #t) (section #t) (subsection #f)
 		    (subsubsection #f))
@@ -181,9 +181,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:chapter@                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (chapter #!rest
+(define-markup (chapter :rest
 			opts
-			#!key
+			:key
 			(ident #f) (class "chapter")
 			title (html-title #f) (file #f) (toc #t) (number #t))
    (new container
@@ -222,9 +222,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:sectionr@                       */
 ;*---------------------------------------------------------------------*/
-(define-markup (section #!rest
+(define-markup (section :rest
 			opts
-			#!key
+			:key
 			(ident #f) (class "section")
 			title (file #f) (toc #t) (number #t))
    (new container
@@ -250,9 +250,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:subsectionr@                    */
 ;*---------------------------------------------------------------------*/
-(define-markup (subsection #!rest
+(define-markup (subsection :rest
 			   opts
-			   #!key
+			   :key
 			   (ident #f) (class "subsection")
 			   title (file #f) (toc #t) (number #t))
    (new container
@@ -275,9 +275,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:subsubsectionr@                 */
 ;*---------------------------------------------------------------------*/
-(define-markup (subsubsection #!rest
+(define-markup (subsubsection :rest
 			      opts
-			      #!key
+			      :key
 			      (ident #f) (class "subsubsection")
 			      title (file #f) (toc #f) (number #t))
    (new container
@@ -300,7 +300,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    ~ (unbreakable space) ...                                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (~ #!rest opts #!key (class #f))
+(define-markup (~ :rest opts :key (class #f))
   (new markup
      (markup '~)
      (ident (symbol->string (gensym "~")))
@@ -318,8 +318,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    footnote ...                                                     */
 ;*---------------------------------------------------------------------*/
-(define-markup (footnote #!rest opts
-			 #!key (ident #f) (class "footnote") (label #t))
+(define-markup (footnote :rest opts
+			 :key (ident #f) (class "footnote") (label #t))
    ;; The `:label' option used to be called `:number'.
    (new container
       (markup 'footnote)
@@ -342,7 +342,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    linebreak ...                                                    */
 ;*---------------------------------------------------------------------*/
-(define-markup (linebreak #!rest opts #!key (ident #f) (class #f))
+(define-markup (linebreak :rest opts :key (ident #f) (class #f))
    (let ((ln (new markup
 		(ident (or ident (symbol->string (gensym "linebreak"))))
 		(class class)
@@ -362,9 +362,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    hrule ...                                                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (hrule #!rest
+(define-markup (hrule :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class #f)
 		      (width 100.) (height 1))
    (new markup
@@ -381,9 +381,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    color ...                                                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (color #!rest
+(define-markup (color :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class "color")
 		      (bg #f) (fg #f) (width #f) (margin #f))
    (new container
@@ -400,9 +400,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    frame ...                                                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (frame #!rest
+(define-markup (frame :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class "frame")
 		      (width #f) (margin 2) (border 1))
    (new container
@@ -422,9 +422,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    font ...                                                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (font #!rest
+(define-markup (font :rest
 		     opts
-		     #!key
+		     :key
 		     (ident #f) (class #f)
 		     (size #f) (face #f))
    (new container
@@ -439,9 +439,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    flush ...                                                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (flush #!rest
+(define-markup (flush :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class #f)
 		      side)
    (case side
@@ -475,9 +475,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:prog@                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (prog #!rest
+(define-markup (prog :rest
 		     opts
-		     #!key
+		     :key
 		     (ident #f) (class "prog")
 		     (line 1) (linedigit #f) (mark ";!"))
    (if (not (or (string? mark) (eq? mark #f)))
@@ -499,9 +499,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:source@                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (source #!rest
+(define-markup (source :rest
 		       opts
-		       #!key
+		       :key
 		       language
 		       (file #f) (start #f) (stop #f)
 		       (definition #f) (tab 8))
@@ -555,7 +555,7 @@
 ;*    doc:                                                             */
 ;*       @ref ../../doc/user/prgm.skb:language@                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (language #!key name (fontifier #f) (extractor #f))
+(define-markup (language :key name (fontifier #f) (extractor #f))
    (if (not (string? name))
        (skribe-type-error 'language "illegal name" name "string")
        (new language
@@ -571,9 +571,9 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:figure@                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (figure #!rest
+(define-markup (figure :rest
 		       opts
-		       #!key
+		       :key
 		       (ident #f) (class "figure")
 		       (legend #f) (number #t) (multicolumns #f))
    (new container
@@ -633,7 +633,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    itemize ...                                                      */
 ;*---------------------------------------------------------------------*/
-(define-markup (itemize #!rest opts #!key (ident #f) (class "itemize") symbol)
+(define-markup (itemize :rest opts :key (ident #f) (class "itemize") symbol)
    (new container
       (markup 'itemize)
       (ident (or ident (symbol->string (gensym "itemize"))))
@@ -646,7 +646,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    enumerate ...                                                    */
 ;*---------------------------------------------------------------------*/
-(define-markup (enumerate #!rest opts #!key (ident #f) (class "enumerate") symbol)
+(define-markup (enumerate :rest opts :key (ident #f) (class "enumerate") symbol)
    (new container
       (markup 'enumerate)
       (ident (or ident (symbol->string (gensym "enumerate"))))
@@ -659,7 +659,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    description ...                                                  */
 ;*---------------------------------------------------------------------*/
-(define-markup (description #!rest opts #!key (ident #f) (class "description") symbol)
+(define-markup (description :rest opts :key (ident #f) (class "description") symbol)
    (new container
       (markup 'description)
       (ident (or ident (symbol->string (gensym "description"))))
@@ -672,7 +672,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    item ...                                                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (item #!rest opts #!key (ident #f) (class #f) key)
+(define-markup (item :rest opts :key (ident #f) (class #f) key)
    (if (and key (not (or (string? key)
 			 (number? key)
 			 (markup? key)
@@ -690,9 +690,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    table                                                            */
 ;*---------------------------------------------------------------------*/
-(define-markup (table #!rest
+(define-markup (table :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class #f)
 		      (border #f) (width #f)
 		      (frame 'none) (rules 'none)
@@ -745,7 +745,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    tr ...                                                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (tr #!rest opts #!key (ident #f) (class #f) (bg #f))
+(define-markup (tr :rest opts :key (ident #f) (class #f) (bg #f))
    (new container
       (markup 'tr)
       (ident (or ident (symbol->string (gensym "tr"))))
@@ -760,9 +760,9 @@
 ;*    tc...                                                            */
 ;*---------------------------------------------------------------------*/
 (define-markup (tc m
-		   #!rest
+		   :rest
 		   opts
-		   #!key
+		   :key
 		   (ident #f) (class #f)
 		   (width #f) (align 'center) (valign #f)
 		   (colspan 1) (rowspan 1) (bg #f))
@@ -807,9 +807,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    th ...                                                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (th #!rest
+(define-markup (th :rest
 		   opts
-		   #!key
+		   :key
 		   (ident #f) (class #f)
 		   (width #f) (align 'center) (valign #f)
 		   (colspan 1) (rowspan 1) (bg #f))
@@ -818,9 +818,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    td ...                                                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (td #!rest
+(define-markup (td :rest
 		   opts
-		   #!key
+		   :key
 		   (ident #f) (class #f)
 		   (width #f) (align 'center) (valign #f)
 		   (colspan 1) (rowspan 1) (bg #f))
@@ -835,9 +835,9 @@
 ;*       html: @ref ../../skr/html.skr:image@                          */
 ;*       latex: @ref ../../skr/latex.skr:image@                        */
 ;*---------------------------------------------------------------------*/
-(define-markup (image #!rest
+(define-markup (image :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class #f)
 		      file (url #f) (width #f) (height #f) (zoom #f))
    (cond
@@ -882,7 +882,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    char ...                                                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (char char)
+(define-public (char char)
    (cond
       ((char? char)
        (string char))
@@ -914,7 +914,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    ! ...                                                            */
 ;*---------------------------------------------------------------------*/
-(define-markup (! format #!rest node)
+(define-markup (! format :rest node)
    (if (not (string? format))
        (skribe-type-error '! "Illegal format:" format "string")
        (new command
@@ -925,8 +925,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    processor ...                                                    */
 ;*---------------------------------------------------------------------*/
-(define-markup (processor #!rest opts
-			  #!key (combinator #f) (engine #f) (procedure #f))
+(define-markup (processor :rest opts
+			  :key (combinator #f) (engine #f) (procedure #f))
    (cond
       ((and combinator (not (procedure? combinator)))
        (skribe-error 'processor "Combinator not a procedure" combinator))
@@ -959,8 +959,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    handle ...                                                       */
 ;*---------------------------------------------------------------------*/
-(define-markup (handle #!rest opts
-		       #!key (ident #f) (class "handle") value section)
+(define-markup (handle :rest opts
+		       :key (ident #f) (class "handle") value section)
    (let ((body (the-body opts)))
       (cond
 	 (section
@@ -989,7 +989,7 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:mailto@                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (mailto #!rest opts #!key (ident #f) (class "mailto") text)
+(define-markup (mailto :rest opts :key (ident #f) (class "mailto") text)
    (new markup
       (markup 'mailto)
       (ident (or ident (symbol->string (gensym "ident"))))
@@ -1012,7 +1012,7 @@
 ;*    writer:                                                          */
 ;*       html: @ref ../../skr/html.skr:mark@                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (mark #!rest opts #!key (ident #f) (class "mark") (text #f))
+(define-markup (mark :rest opts :key (ident #f) (class "mark") (text #f))
    (let ((bd (the-body opts)))
       (cond
 	 ((and (pair? bd) (not (null? (cdr bd))))
@@ -1044,9 +1044,9 @@
 ;*       html: @ref ../../skr/html.skr:ref@                            */
 ;*       latex: @ref ../../skr/latex.skr:ref@                          */
 ;*---------------------------------------------------------------------*/
-(define-markup (ref #!rest
+(define-markup (ref :rest
 		    opts
-		    #!key
+		    :key
 		    (class #f)
 		    (ident #f)
 		    (text #f)
@@ -1245,22 +1245,21 @@
 ;*---------------------------------------------------------------------*/
 ;*    numref ...                                                       */
 ;*---------------------------------------------------------------------*/
-(define-markup (numref #!rest opts
-                       #!key (ident #f) (text "") (page #f)
+(define-markup (numref :rest opts
+                       :key (ident #f) (text "") (page #f)
                              (separator ".") (class #f))
   ;; Produce a numbered reference to `ident'.
   (new unresolved
        (loc  &invocation-location)
        (proc (lambda (n e env)
-	       (let* ((parent (ast-parent n))
-                      (doc (ast-document n))
+	       (let* ((doc (ast-document n))
 		      (target (document-lookup-node doc ident))
 		      (number (and target
                                    (markup-option target :number))))
                  (cond
                   ((not target)
                    (skribe-warning/ast 1 n 'numref
-                                       (format #f "can't find `ident': ")
+                                       "can't find `ident': "
                                        ident)
                    (new markup
                         (markup 'unref)
@@ -1300,8 +1299,8 @@
 ;*    doc:                                                             */
 ;*       @ref ../../doc/user/bib.skb:bibliography@                     */
 ;*---------------------------------------------------------------------*/
-(define-markup (bibliography #!rest files
-			     #!key
+(define-markup (bibliography :rest files
+			     :key
 			     (command #f) (bib-table (*bib-table*)))
    (for-each (lambda (f)
 		(cond
@@ -1321,8 +1320,8 @@
 ;*    writer:                                                          */
 ;*       base: @ref ../../skr/base.skr:the-bibliography@               */
 ;*---------------------------------------------------------------------*/
-(define-markup (the-bibliography #!rest opts
-				 #!key
+(define-markup (the-bibliography :rest opts
+				 :key
 				 pred
 				 (bib-table (*bib-table*))
 				 (sort bib-sort/authors)
@@ -1338,7 +1337,7 @@
                            (else
                             (skribe-error
                              'the-bibliography
-                             "invalid label type" lables)))))
+                             "invalid label type" labels)))))
          (new unresolved
             (loc  &invocation-location)
             (proc (lambda (n e env)
@@ -1356,7 +1355,7 @@
 ;*    doc:                                                             */
 ;*       @ref ../../doc/user/index.skb:make-index@                     */
 ;*---------------------------------------------------------------------*/
-(define-markup (make-index ident)
+(define-public (make-index ident)
    (make-index-table ident))
 
 ;*---------------------------------------------------------------------*/
@@ -1365,9 +1364,9 @@
 ;*    doc:                                                             */
 ;*       @ref ../../doc/user/index.skb:index@                          */
 ;*---------------------------------------------------------------------*/
-(define-markup (index #!rest
+(define-markup (index :rest
 		      opts
-		      #!key
+		      :key
 		      (ident #f) (class "index")
 		      (note #f) (index #f) (shape #f)
 		      (url #f))
@@ -1376,7 +1375,7 @@
 		    ((string? entry-name)
 		     entry-name)
 		    ((and (pair? entry-name) (every string? entry-name))
-		     (apply string-append entry-name))
+		     (string-concatenate entry-name))
 		    (else
 		     (skribe-error
 		      'index
@@ -1420,9 +1419,9 @@
 ;*       base: @ref ../../skr/base.skr:the-index@                      */
 ;*       html: @ref ../../skr/html.skr:the-index-header@               */
 ;*---------------------------------------------------------------------*/
-(define-markup (the-index #!rest
+(define-markup (the-index :rest
 			  opts
-			  #!key
+			  :key
 			  (ident #f)
 			  (class "the-index")
 			  (split #f)
@@ -1458,7 +1457,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    p ...                                                            */
 ;*---------------------------------------------------------------------*/
-(define-markup (p #!rest opt #!key ident (class #f))
+(define-markup (p :rest opt :key ident (class #f))
    (paragraph :ident ident :class class :loc &invocation-location
       (the-body opt)))
 
@@ -1482,7 +1481,7 @@
 ;*    produces:                                                        */
 ;*       i) toto, ii) tutu, iii) titi.                                 */
 ;*---------------------------------------------------------------------*/
-(define-markup (counter #!rest opts #!key (numbering 'roman))
+(define-markup (counter :rest opts :key (numbering 'roman))
    (define items (if (eq? (car opts) :numbering) (cddr opts) opts))
    (define vroman #(- "i" "ii" "iii" "iv" "v" "vi" "vii" "viii" "ix" "x"))
    (define (the-roman-number num)
@@ -1492,9 +1491,9 @@
 			"too many items for roman numbering"
 			(length items))))
    (define (the-arabic-number num)
-      (list (list "(" (it (integer->string num)) ") ")))
+      (list (list "(" (it (number->string num)) ") ")))
    (define (the-alpha-number num)
-      (list (list "(" (it (+ (integer->char #\a) num -1)) ") ")))
+      (list (list "(" (it (+ (char->integer #\a) num -1)) ") ")))
    (let ((the-number (case numbering
 			((roman) the-roman-number)
 			((arabic) the-arabic-number)
@@ -1514,7 +1513,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    q                                                                */
 ;*---------------------------------------------------------------------*/
-(define-markup (q #!rest opt)
+(define-markup (q :rest opt)
    (new markup
       (markup 'q)
       (loc &invocation-location)
diff --git a/src/guile/skribilo/package/diff.scm b/src/guile/skribilo/package/diff.scm
index 58887ff..fe509b7 100644
--- a/src/guile/skribilo/package/diff.scm
+++ b/src/guile/skribilo/package/diff.scm
@@ -37,7 +37,6 @@
   :autoload   (skribilo biblio)        (*bib-table* make-bib-table)
   :use-module (skribilo package base)
   :use-module (skribilo utils syntax)
-  :autoload   (skribilo utils keywords) (the-options the-body)
 
   :export (make-diff-document
            make-diff-document-from-files))
@@ -137,8 +136,7 @@
     (if (null? result)
         `((unchanged ,start ,end))
         (let ((prev-unchanged? (eq? (caar result) 'unchanged))
-              (prev-start      (cadr (car result)))
-              (prev-end        (caddr (car result))))
+              (prev-start      (cadr (car result))))
           (if prev-unchanged?
               (cons `(unchanged ,prev-start ,end)
                     (cdr result))
@@ -385,16 +383,16 @@
   ;; are highlighted.
   (let ((ast1
          (parameterize ((*bib-table* (make-bib-table 'doc-1)))
+           (skribe-message "diff: loading first document~%")
            (evaluate-ast-from-port (open-input-file old-file)
                                    :reader reader
                                    :module (make-run-time-module))))
-        (~~ (skribe-message "diff: first document loaded~%"))
         (ast2
          (parameterize ((*bib-table* (make-bib-table 'doc-2)))
+           (skribe-message "diff: loading second document~%")
            (evaluate-ast-from-port (open-input-file new-file)
                                    :reader reader
-                                   :module (make-run-time-module))))
-        (%% (skribe-message "diff: second document loaded~%")))
+                                   :module (make-run-time-module)))))
 
     (resolve! ast1 engine env)
     (resolve! ast2 engine env)
diff --git a/src/guile/skribilo/package/eq.scm b/src/guile/skribilo/package/eq.scm
index ec6bbc7..9b03aef 100644
--- a/src/guile/skribilo/package/eq.scm
+++ b/src/guile/skribilo/package/eq.scm
@@ -25,7 +25,6 @@
   :use-module (skribilo engine)
   :use-module (skribilo lib)
   :use-module (skribilo utils syntax)
-  :use-module (skribilo module)
   :use-module (skribilo utils keywords) ;; `the-options', etc.
   :autoload   (skribilo package base) (it symbol sub sup)
   :autoload   (skribilo engine lout) (lout-illustration)
@@ -253,6 +252,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
   ;; If no `:div-style' is specified here, obey the top-level one.
   (new markup
        (markup 'eq:/)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:/"))))
        (class #f)
        (options `((:div-style ,div-style)
@@ -263,6 +263,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
   ;; If no `:mul-style' is specified here, obey the top-level one.
   (new markup
        (markup 'eq:*)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:*"))))
        (class #f)
        (options `((:mul-style ,mul-style)
@@ -288,6 +289,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 		                       (from #f) (to #f))
   (new markup
        (markup 'eq:sum)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:sum"))))
        (options (the-options opts))
        (body (the-body opts))))
@@ -296,6 +298,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 			                   (from #f) (to #f))
   (new markup
        (markup 'eq:product)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:product"))))
        (options (the-options opts))
        (body (the-body opts))))
@@ -304,6 +307,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 			                  (sub #f) (sup #f))
   (new markup
        (markup 'eq:script)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:script"))))
        (options (the-options opts))
        (body (the-body opts))))
@@ -317,6 +321,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
   ;; non-list arguments but the last one has to be a list.
   (new markup
        (markup 'eq:apply)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:apply"))))
        (options (the-options opts))
        (body (let loop ((body (the-body opts))
@@ -336,6 +341,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 (define-markup (eq:limit var lim :rest body :key (ident #f))
   (new markup
        (markup 'eq:limit)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:limit"))))
        (options `((:var ,var) (:limit ,lim)
                   ,@(the-options body :ident)))
@@ -344,6 +350,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 (define-markup (eq:combinations x y :rest opts :key (ident #f))
   (new markup
        (markup 'eq:combinations)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:combinations"))))
        (options `((:of ,x) (:among ,y)
                   ,@(the-options opts :ident)))
@@ -352,6 +359,7 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
 (define-markup (eq:set :rest opts :key (ident #f))
   (new markup
        (markup 'eq:set)
+       (loc &invocation-location)
        (ident (or ident (symbol->string (gensym "eq:set"))))
        (options '())
        (body (the-body opts))))
diff --git a/src/guile/skribilo/package/letter.scm b/src/guile/skribilo/package/letter.scm
index 9036bd3..6f5c248 100644
--- a/src/guile/skribilo/package/letter.scm
+++ b/src/guile/skribilo/package/letter.scm
@@ -26,7 +26,7 @@
   :use-module (skribilo lib)
   :autoload   (skribilo output)          (output)
   :autoload   (skribilo utils keywords)  (the-body the-options)
-  :use-module (skribilo package base)
+  :use-module ((skribilo package base) :renamer (symbol-prefix-proc 'skr:))
   :use-module (srfi srfi-1)
 
   :use-module (skribilo utils syntax)
@@ -38,8 +38,6 @@
 ;*---------------------------------------------------------------------*/
 ;*    document                                                         */
 ;*---------------------------------------------------------------------*/
-(define %letter-document document)
-
 (define-markup (document :rest opt
 		  :key (ident #f) (class "letter")
 		  where date author
@@ -52,7 +50,7 @@
 				    (:date ,date)
 				    (:author ,author))))
 		      ubody)))
-      (apply %letter-document
+      (apply skr:document
 	     :author #f :title #f
 	     (append (concatenate
 		      (the-options opt :where :date :author :title))
@@ -77,7 +75,8 @@
 			(ne (copy-engine 'author e)))
 		    ;; author
 		    (markup-writer 'author ne
-		       :options '(:name :title :affiliation :email :url :address :phone :photo :align :header)
+		       :options '(:name :title :affiliation :email :url
+                                  :address :phone :photo :align :header)
 		       :action (lambda (n e)
 				  (let ((name (markup-option n :name))
 					(title (markup-option n :title))
diff --git a/src/guile/skribilo/package/pie.scm b/src/guile/skribilo/package/pie.scm
index 232ef9c..0292ccf 100644
--- a/src/guile/skribilo/package/pie.scm
+++ b/src/guile/skribilo/package/pie.scm
@@ -27,10 +27,9 @@
   :use-module (skribilo utils syntax)
   :use-module (skribilo utils keywords) ;; `the-options', etc.
   :use-module (skribilo utils strings)  ;; `make-string-replace'
-  :use-module (skribilo module)
   :autoload   (skribilo color)        (skribe-color->rgb)
   :autoload   (skribilo package base) (bold)
-  :autoload   (skribilo engine lout)  (lout-illustration)
+  :autoload   (srfi srfi-13)          (string-concatenate)
   :autoload   (ice-9 popen)           (open-output-pipe)
   :use-module (ice-9 optargs)
   :export     (%ploticus-program %ploticus-debug?
@@ -125,7 +124,7 @@ the string \"hello\".  Implement `sliceweight' markups too."
 	     (number->string (percentage-round value)))
 	  (pie-remove-markup (markup-body node)))
       (if (list? node)
-	  (apply string-append (map pie-remove-markup node))
+	  (string-concatenate (map pie-remove-markup node))
 	  node)))
 
 (define strip-newlines (make-string-replace '((#\newline " "))))
@@ -174,14 +173,16 @@ the string \"hello\".  Implement `sliceweight' markups too."
 			  (string-append (color-spec->ploticus c)
 					 " ")))
 		      (markup-body pie)))
-	 (total-weight (or (if (number? (markup-option pie
-						       :total))
-			       (markup-option pie :total)
-			       #f)
-			   (apply + weights)))
+	 (total-weight
+          (let ((w (or (if (number? (markup-option pie
+                                                   :total))
+                           (markup-option pie :total)
+                           #f)
+                       (apply + weights))))
 
-	 ;; Attach useful information to the pie and its slices
-	 (-/- (markup-option-add! pie '&total-weight total-weight))
+            ;; Attach useful information to the pie and its slices
+            (markup-option-add! pie '&total-weight w)
+            w))
 
 	 ;; One slice label per line -- so we need to remove
 	 ;; newlines from labels.
@@ -215,7 +216,7 @@ the string \"hello\".  Implement `sliceweight' markups too."
 		       (* max-radius max-radius)) .
 		       ,(* max-radius max-radius))))
 
-    (apply string-append
+    (string-concatenate
 	   (append (list "#proc getdata\n" "data: ")
 		   (map (lambda (weight)
 			  (string-append (number->string weight)
diff --git a/src/guile/skribilo/package/scribe.scm b/src/guile/skribilo/package/scribe.scm
index 388ef56..5ab3069 100644
--- a/src/guile/skribilo/package/scribe.scm
+++ b/src/guile/skribilo/package/scribe.scm
@@ -21,11 +21,10 @@
 
 (define-module (skribilo package scribe)
   :use-module (skribilo engine)
-  :autoload   (skribilo package base)   (chapter font flush
-                                         toc the-bibliography)
   :autoload   (skribilo utils keywords) (the-options the-body)
   :autoload   (skribilo evaluator)      (load-document)
   :use-module (skribilo biblio)
+  :use-module ((skribilo package base) :renamer (symbol-prefix-proc 'skr:))
 
   :use-module (skribilo lib)
   :use-module (skribilo utils syntax)
@@ -35,13 +34,13 @@
   :use-module (srfi srfi-13)
 
   :export (style chapter table-of-contents frame copyright sect euro
-           tab space print-bibliography linebreak ref make-index
-           print-index scribe-format? scribe-url prgm
-           *scribe-tex-predocument* latex-prelude html-prelude
+	   tab space print-bibliography linebreak ref make-index
+	   index print-index scribe-format? scribe-url prgm
+	   *scribe-tex-predocument* latex-prelude html-prelude
 
-           *scribe-background* *scribe-foreground* *scribe-tbackground*
-           *scribe-tforeground* *scribe-title-font* *scribe-author-font*
-           *scribe-chapter-numbering* *scribe-footer* *scribe-prgm-color*))
+	   *scribe-background* *scribe-foreground* *scribe-tbackground*
+	   *scribe-tforeground* *scribe-title-font* *scribe-author-font*
+	   *scribe-chapter-numbering* *scribe-footer* *scribe-prgm-color*))
 
 (fluid-set! current-reader %skribilo-module-reader)
 
@@ -71,10 +70,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    chapter ...                                                      */
 ;*---------------------------------------------------------------------*/
-(define skribe-chapter chapter)
-
 (define-markup (chapter :rest opt :key title subtitle split number toc file)
-   (apply skribe-chapter 
+   (apply skr:chapter
 	  :title (or title subtitle)
 	  :number number
 	  :toc toc
@@ -85,16 +82,14 @@
 ;*    table-of-contents ...                                            */
 ;*---------------------------------------------------------------------*/
 (define* (table-of-contents :key chapter section subsection
-                            :rest opts)
-   (apply toc opts))
+			    :rest opts)
+   (apply skr:toc opts))
 
 ;*---------------------------------------------------------------------*/
 ;*    frame ...                                                        */
 ;*---------------------------------------------------------------------*/
-(define skribe-frame frame)
-
 (define-markup (frame :rest opt :key width margin)
-   (apply skribe-frame 
+   (apply skr:frame
 	  :width (if (real? width) (* 100 width) width)
 	  :margin margin
 	  (the-body opt)))
@@ -121,61 +116,54 @@
 ;*    tab ...                                                          */
 ;*---------------------------------------------------------------------*/
 (define (tab)
-   (char #\tab))
+   (skr:char #\tab))
 
 ;*---------------------------------------------------------------------*/
 ;*    space ...                                                        */
 ;*---------------------------------------------------------------------*/
 (define (space)
-   (char #\space))
+   (skr:char #\space))
 
 ;*---------------------------------------------------------------------*/
 ;*    print-bibliography ...                                           */
 ;*---------------------------------------------------------------------*/
-(define-markup (print-bibliography :rest opts 
+(define-markup (print-bibliography :rest opts
 				   :key all (sort bib-sort/authors))
-   (the-bibliography all sort))
+   (skr:the-bibliography all sort))
 
 ;*---------------------------------------------------------------------*/
 ;*    linebreak ...                                                    */
 ;*---------------------------------------------------------------------*/
-(define skribe-linebreak linebreak)
-
 (define (linebreak . lnum)
    (cond
       ((null? lnum)
-       (skribe-linebreak))
+       (skr:linebreak))
       ((string? (car lnum))
-       (skribe-linebreak (string->number (car lnum))))
+       (skr:linebreak (string->number (car lnum))))
       (else
-       (skribe-linebreak (car lnum)))))
+       (skr:linebreak (car lnum)))))
 
 ;*---------------------------------------------------------------------*/
 ;*    ref ...                                                          */
 ;*---------------------------------------------------------------------*/
-(define skribe-ref ref)
-
 (define* (ref :key scribe url id page figure mark
-              chapter section subsection subsubsection subsubsubsection
-              bib bib+ number
-              :rest opts)
+	      chapter section subsection subsubsection subsubsubsection
+	      bib bib+ number
+	      :rest opts)
    (let ((bd (the-body opts))
 	 (args (concatenate (the-options opts :id))))
       (if id (set! args (cons* :mark id args)))
       (if (pair? bd) (set! args (cons* :text bd args)))
-      (apply skribe-ref args)))
+      (apply skr:ref args)))
 
 ;*---------------------------------------------------------------------*/
 ;*    indexes ...                                                      */
 ;*---------------------------------------------------------------------*/
 (define *scribe-indexes*
-   (list (cons "theindex" (make-index "theindex"))))
-
-(define skribe-index index)
-(define skribe-make-index make-index)
+   (list (cons "theindex" (skr:make-index "theindex"))))
 
 (define (make-index index)
-   (let ((i (skribe-make-index index)))
+   (let ((i (skr:make-index index)))
       (set! *scribe-indexes* (cons (cons index i) *scribe-indexes*))
       i))
 
@@ -186,12 +174,12 @@
 		   (if (pair? i)
 		       (cdr i)
 		       (make-index index))))))
-      (apply skribe-index :note note :index i :shape shape (the-body opts))))
+      (apply skr:index :note note :index i :shape shape (the-body opts))))
 
 (define* (print-index :key split (char-offset 0) (header-limit 100)
-                      :rest opts)
-   (apply the-index 
-	  :split split 
+		      :rest opts)
+   (apply skr:the-index
+	  :split split
 	  :char-offset char-offset
 	  :header-limit header-limit
 	  (map (lambda (i)
@@ -200,7 +188,7 @@
 		       (cdr c)
 		       (skribe-error 'the-index "Unknown index" i))))
 	       (the-body opts))))
-	      
+
 ;*---------------------------------------------------------------------*/
 ;*    format?                                                          */
 ;*---------------------------------------------------------------------*/
@@ -227,26 +215,26 @@
 ;*---------------------------------------------------------------------*/
 ;*    prgm ...                                                         */
 ;*---------------------------------------------------------------------*/
-(define-markup (prgm :rest opts
-		     :key lnum lnumwidth language bg frame (width 1.)
-		     colors (monospace #t))
+(define (prgm :key lnum lnumwidth language bg frame (width 1.)
+		     colors (monospace #t)
+		     :rest opts)
    (let* ((w (cond
 		((real? width) (* width 100.))
 		((number? width) width)
 		(else 100.)))
-	  (body (if language 
-		    (source :language language (the-body opts))
+	  (body (if language
+		    (skr:source :language language (the-body opts))
 		    (the-body opts)))
 	  (body (if monospace
-		    (prog :line lnum body)
+		    (skr:prog :line lnum body)
 		    body))
 	  (body (if bg
-		    (color :width 100. :bg bg body)
-		    body)))
-      (skribe-frame :width w
-		    :border (if frame 1 #f)
+		    (skr:color :width 100. :bg bg body)
 		    body)))
-   
+      (skr:frame :width w
+		 :border (if frame 1 #f)
+		 body)))
+
 ;*---------------------------------------------------------------------*/
 ;*    latex configuration                                              */
 ;*---------------------------------------------------------------------*/
@@ -260,7 +248,7 @@
        (begin
 	  (if *scribe-tex-predocument*
 	      (engine-custom-set! e 'predocument *scribe-tex-predocument*)))))
-      
+
 ;*---------------------------------------------------------------------*/
 ;*    html-prelude ...                                                 */
 ;*---------------------------------------------------------------------*/
@@ -268,7 +256,7 @@
    (if (engine-format? "html" e)
        (begin
 	  #f)))
-      
+
 ;*---------------------------------------------------------------------*/
 ;*    prelude                                                          */
 ;*---------------------------------------------------------------------*/
diff --git a/src/guile/skribilo/package/sigplan.scm b/src/guile/skribilo/package/sigplan.scm
index e1db670..5be8ac5 100644
--- a/src/guile/skribilo/package/sigplan.scm
+++ b/src/guile/skribilo/package/sigplan.scm
@@ -33,7 +33,7 @@
   :use-module (skribilo utils syntax)
   :use-module (ice-9 optargs)
 
-  :export (abstract references))
+  :export (abstract references acm-copyright))
 
 (fluid-set! current-reader %skribilo-module-reader)
 
@@ -172,7 +172,8 @@
 ;*---------------------------------------------------------------------*/
 ;*    acm-copyright ...                                                */
 ;*---------------------------------------------------------------------*/
-(define-markup (acm-copyright :rest opt :key conference location year crdata)
+(define* (acm-copyright :key conference location year crdata
+                       :rest opt)
    (let* ((le (find-engine 'latex))
 	  (cop (format #f "\\conferenceinfo{~a,} {~a}
 \\CopyrightYear{~a}
diff --git a/src/guile/skribilo/package/slide.scm b/src/guile/skribilo/package/slide.scm
index dd6519d..0a3d773 100644
--- a/src/guile/skribilo/package/slide.scm
+++ b/src/guile/skribilo/package/slide.scm
@@ -21,19 +21,19 @@
 
 
 (define-module (skribilo package slide)
-  :use-module (skribilo reader)
   :use-module (skribilo utils syntax)
 
   :use-module (skribilo lib)
   :use-module (skribilo ast)
   :use-module (skribilo engine)
   :use-module (skribilo evaluator) ;; `*load-options*'
-  :use-module (skribilo package base)
 
+  :autoload   (skribilo color)          (skribe-use-color!)
   :autoload   (skribilo utils keywords) (the-options the-body)
 
   :use-module (srfi srfi-1)
-  :use-module (ice-9 optargs))
+  :use-module (ice-9 optargs)
+  :use-module (ice-9 match))
 
 (fluid-set! current-reader %skribilo-module-reader)
 
@@ -92,7 +92,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    ref ...                                                          */
 ;*---------------------------------------------------------------------*/
-(define %slide-old-ref ref)
+; (define %slide-old-ref ref)
 
 ;; Extend the definition of `ref'.
 ;; FIXME: This technique breaks `ref' for some reason.
@@ -144,7 +144,7 @@
 ;*---------------------------------------------------------------------*/
 ;*    slide-pause ...                                                  */
 ;*---------------------------------------------------------------------*/
-(define-markup (slide-pause)
+(define-markup (slide-pause :rest ignored)
    (new markup
       (loc    &invocation-location)
       (markup 'slide-pause)))
@@ -220,8 +220,8 @@
 			    :key ident class color (scolor "#000000"))
    (let ((body (the-body opt)))
       (for-each (lambda (lbl)
-		   (match-case lbl
-		      ((?id ?col)
+		   (match lbl
+		      ((id col)
 		       (skribe-use-color! col))))
 		body)
       (new markup
diff --git a/src/guile/skribilo/package/web-article.scm b/src/guile/skribilo/package/web-article.scm
index 6d1b7a5..31a88fa 100644
--- a/src/guile/skribilo/package/web-article.scm
+++ b/src/guile/skribilo/package/web-article.scm
@@ -1,6 +1,7 @@
-;;; web-article.scm  --  A Skribe style for producing web articles
+;;; web-article.scm  --  A style to produce web articles.
 ;;;
 ;;; Copyright 2003, 2004  Manuel Serrano
+;;; Copyright 2007  Ludovic Courtès <ludo@chbouib.org>
 ;;;
 ;;;
 ;;; This program is free software; you can redistribute it and/or modify
@@ -18,12 +19,28 @@
 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 ;;; USA.
 
-(define-skribe-module (skribilo package web-article))
+(define-module (skribilo package web-article)
+  :use-module (skribilo utils syntax)
 
+  :use-module (skribilo ast)
+  :use-module (skribilo engine)
+  :use-module (skribilo writer)
+  :use-module (skribilo package base)
+
+  :autoload   (skribilo output)         (output)
+  :autoload   (skribilo evaluator)      (evaluate-document)
+  :autoload   (skribilo engine html)    (html-width html-title-authors)
+  :autoload   (skribilo utils strings)  (string-canonicalize)
+
+  :use-module (srfi srfi-1))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
 ;*---------------------------------------------------------------------*/
 ;*    &web-article-load-options ...                                    */
 ;*---------------------------------------------------------------------*/
-(define &web-article-load-options (skribe-load-options))
+(define &web-article-load-options (*load-options*))
 
 ;*---------------------------------------------------------------------*/
 ;*    web-article-body-width ...                                       */
@@ -41,23 +58,23 @@
 	  (tbg (engine-custom e 'title-background))
 	  (tfg (engine-custom e 'title-foreground))
 	  (tfont (engine-custom e 'title-font)))
-      (printf "<center><table cellspacing='0' cellpadding='0' width=\"~a\" class=\"skribetitle\"><tbody>\n<tr>"
+      (format #t "<center><table cellspacing='0' cellpadding='0' width=\"~a\" class=\"skribetitle\"><tbody>\n<tr>"
 	      (html-width (web-article-body-width e)))
       (if (string? tbg)
-	  (printf "<td bgcolor=\"~a\">" tbg)
+	  (format #t "<td bgcolor=\"~a\">" tbg)
 	  (display "<td>"))
       (if (string? tfg)
-	  (printf "<font color=\"~a\">" tfg))
+	  (format #t "<font color=\"~a\">" tfg))
       (if title
 	  (begin
 	     (display "<center>")
 	     (if (string? tfont)
 		 (begin
-		    (printf "<font ~a><b>" tfont)
+		    (format #t "<font ~a><b>" tfont)
 		    (output title e)
 		    (display "</b></font>"))
 		 (begin
-		    (printf "<h1>")
+		    (display "<h1>")
 		    (output title e)
 		    (display "</h1>")))
 	     (display "</center>\n")))
@@ -76,12 +93,12 @@
 	  (authors (markup-option n 'author))
 	  (id (markup-ident n)))
       ;; the title
-      (printf "<div id=\"~a\" class=\"document-title-title\">\n"
+      (format #t "<div id=\"~a\" class=\"document-title-title\">\n"
 	      (string-canonicalize id))
       (output title e)
       (display "</div>\n")
       ;; the authors
-      (printf "<div id=\"~a\" class=\"document-title-authors\">\n"
+      (format #t "<div id=\"~a\" class=\"document-title-authors\">\n"
 	      (string-canonicalize id))
       (for-each (lambda (a) (output a e))
 		(cond
@@ -103,26 +120,24 @@
 	 (email (markup-option n :email))
 	 (url (markup-option n :url))
 	 (address (markup-option n :address))
-	 (phone (markup-option n :phone))
-	 (nfn (engine-custom e 'author-font))
-	 (align (markup-option n :align)))
+	 (phone (markup-option n :phone)))
       (when name
-	 (printf "<span class=\"document-author-name\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-name\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output name e)
 	 (display "</span>\n"))
       (when title
-	 (printf "<span class=\"document-author-title\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-title\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output title e)
 	 (display "</span>\n"))
       (when affiliation
-	 (printf "<span class=\"document-author-affiliation\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-affiliation\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output affiliation e)
 	 (display "</span>\n"))
       (when (pair? address)
-	 (printf "<span class=\"document-author-address\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-address\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (for-each (lambda (a)
 		      (output a e)
@@ -130,17 +145,17 @@
 		   address)
 	 (display "</span>\n"))
       (when phone
-	 (printf "<span class=\"document-author-phone\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-phone\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output phone e)
 	 (display "</span>\n"))
       (when email
-	 (printf "<span class=\"document-author-email\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-email\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output email e)
 	 (display "</span>\n"))
       (when url
-	 (printf "<span class=\"document-author-url\" id=\"~a\">"
+	 (format #t "<span class=\"document-author-url\" id=\"~a\">"
 		 (string-canonicalize (markup-ident n)))
 	 (output url e)
 	 (display "</span>\n"))))
@@ -164,7 +179,7 @@
 		       (markup-writer 'section e1
 			  :options 'all
 			  :action (lambda (n e2) (output n e sec)))
-		       (skribe-eval
+		       (evaluate-document
 			(center (color :width (web-article-body-width e)
 				   :margin 5 :bg bg n))
 			e1))))
@@ -180,7 +195,7 @@
 			  :options 'all
 			  :action (lambda (n e2)
 				     (invoke (writer-action ft) n e)))
-		       (skribe-eval
+		       (evaluate-document
 			(center (color :width (web-article-body-width e)
 				   :margin 5 :bg bg :fg fg n))
 			e1))))))
@@ -194,7 +209,7 @@
       ;; &html-document-title
       (markup-writer '&html-document-title he
 	 :before (lambda (n e)
-		    (printf "<div id=\"~a\" class=\"document-title\">\n"
+		    (format #t "<div id=\"~a\" class=\"document-title\">\n"
 			    (string-canonicalize (markup-ident n))))
 	 :action web-article-css-document-title
 	 :after "</div>\n")
@@ -202,7 +217,7 @@
       (markup-writer 'author he
 	 :options '(:name :title :affiliation :email :url :address :phone :photo :align)
 	 :before (lambda (n e)
-		    (printf "<span id=\"~a\" class=\"document-author\">\n"
+		    (format #t "<span id=\"~a\" class=\"document-author\">\n"
 			    (string-canonicalize (markup-ident n))))
 	 :action web-article-css-author
 	 :after "</span\n")
@@ -210,7 +225,7 @@
       (markup-writer 'section he
 	 :options 'all
 	 :before (lambda (n e)
-		    (printf "<div class=\"section\" id=\"~a\">"
+		    (format #t "<div class=\"section\" id=\"~a\">"
 			    (string-canonicalize (markup-ident n))))
 	 :action (lambda (n e) (output n e sec))
 	 :after "</div>\n")
@@ -218,7 +233,7 @@
       (markup-writer '&html-footnotes he
 	 :options 'all
 	 :before (lambda (n e)
-		    (printf "<div class=\"footnotes\" id=\"~a\">"
+		    (format #t "<div class=\"footnotes\" id=\"~a\">"
 			    (string-canonicalize (markup-ident n))))
 	 :action (lambda (n e)
 		    (output n e ft))
diff --git a/src/guile/skribilo/package/web-book.scm b/src/guile/skribilo/package/web-book.scm
index 49197f1..624a8d2 100644
--- a/src/guile/skribilo/package/web-book.scm
+++ b/src/guile/skribilo/package/web-book.scm
@@ -1,6 +1,7 @@
-;;; web-book.scm  --  The Skribe web book style.
+;;; web-book.scm  --  The web book style.
 ;;;
 ;;; Copyright 2003, 2004  Manuel Serrano
+;;; Copyright 2007  Ludovic Courtès <ludo@chbouib.org>
 ;;;
 ;;;
 ;;; This program is free software; you can redistribute it and/or modify
@@ -18,8 +19,17 @@
 ;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 ;;; USA.
 
-(define-skribe-module (skribilo package web-book))
+(define-module (skribilo package web-book)
+  :use-module (skribilo utils syntax)
 
+  :use-module (skribilo ast)
+  :use-module (skribilo engine)
+  :use-module (skribilo package base))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
+
 ;*---------------------------------------------------------------------*/
 ;*    html customization                                               */
 ;*---------------------------------------------------------------------*/