summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--TODO8
-rw-r--r--doc/user/package.skb92
-rw-r--r--src/guile/skribilo/package/web-article.scm10
3 files changed, 72 insertions, 38 deletions
diff --git a/TODO b/TODO
index fe405c5..4328be3 100644
--- a/TODO
+++ b/TODO
@@ -21,6 +21,14 @@ Expressions like `(if (engine-format? "lout") xxx yyy)' are wrong,
 because they look at the value of `*current-engine*' rather than the
 engine actually used during resolution and output.
 
+** Find a clean way to have packages customize engines
+Currently, most packages have side-effects at `use-modules'-time, e.g.,
+they `engine-custom-set!' the current engine, which kinda sucks (see,
+e.g., `(skribilo package slide)').
+
+Likewise, there's no replacement for the `*load-options*' mechanism
+implemented by `skribe-load' (see, e.g., `web-article').
+
 ** Write an Info engine based on Scribe's one
 ** Write an XHTML engine
 ** Write a nice GUI based on Andy's STexi browser
diff --git a/doc/user/package.skb b/doc/user/package.skb
index f51dacf..2bfe4e1 100644
--- a/doc/user/package.skb
+++ b/doc/user/package.skb
@@ -1,6 +1,6 @@
 ;;; package.skb  --  Packages
 ;;;
-;;; Copyright 2007  Ludovic Courtès <ludo@gnu.org>
+;;; Copyright 2007, 2008  Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright 2001, 2004, 2005  Manuel Serrano
 ;;;
 ;;;
@@ -24,28 +24,32 @@
 ;*---------------------------------------------------------------------*/
 (chapter :title "Standard Packages"
    
-   (p [
-This chapter describes the standard Skribe packages. Additional
-packages can be found from the 
-,(ref :url (skribe-url) :text "Skribe web page").
-This chapter only describes the packages that are contained in the standard
-Skribe distribution.])
+   (p [This chapter describes the standard packages that come with
+Skribilo.  Additional packages may be found from the ,(ref :url
+(skribe-url) :text "Skribe web page"), but they may require slight
+modifications to work correctly with Skribilo.])
    
-   (p [
-In order to use the facilities described in the following sections, the 
-Skribe source file must contains expressions such as:])
+   (p [In order to use the facilities described in the following
+sections, the Skribilo source file must contains statements such as:]
 
-(prgm "(skribe-load \"package.skr\" ...)")
+(prgm "(use-modules (skribilo package THE-PACKAGE))")
 
-[where ,(it (tt "package.skr")) is the described package.]
+[where ,(tt "THE-PACKAGE") is the desired package.  GNU Guile users will
+recognize that this is Guile's standard way to use Scheme modules.  The
+effect of the ,(tt [use-modules]) clause is to insert the bindings
+exported by ,(tt "THE-PACKAGE") into the current module's name space.
+Note that third-party Skribilo packages can have arbitrary Guile module
+names.  And of course, the ,(tt [use-modules]) clause can be used to
+import ,(emph [any]) Guile module, not just Skribilo packages.])
 
 ;*---------------------------------------------------------------------*/
 ;*    jfp                                                              */
 ;*---------------------------------------------------------------------*/
 (section :title "Articles"
 
-   (subsection :title (tt "acmproc.skr") :ident "acmproc"
-      (index :index *package-index* "acmproc.skr" :note "package")
+   (subsection :title (tt "acmproc") :ident "acmproc"
+
+      (index :index *package-index* "acmproc" :note "package")
       (p [
 This package enables producing LaTeX documents conforming to the
 ,(emph "ACM proceeding") (ACMPROC) style. It introduces the
@@ -60,8 +64,8 @@ markup ,(code "abstract"):])
 	 :force-engines *api-engines*
 	 :source "skribilo/package/acmproc.scm"))
 
-   (subsection :title (tt "jfp.skr") :ident "jfp"
-      (index :index *package-index* "jfp.skr" :note "package")
+   (subsection :title (tt "jfp") :ident "jfp"
+      (index :index *package-index* "jfp" :note "package")
       (p [
 This package enables producing LaTeX documents conforming to the
 ,(emph "Journal of Functional Programming") (JFP) style. It introduces the
@@ -75,8 +79,8 @@ markup ,(code "abstract"):])
 	 :force-engines *api-engines*
 	 :source "skribilo/package/jfp.scm"))
 
-   (subsection :title (tt "lncs.skr") :ident "lncs"
-      (index :index *package-index* "lncs.skr" :note "package")
+   (subsection :title (tt "lncs") :ident "lncs"
+      (index :index *package-index* "lncs" :note "package")
       (p [
 This package enables producing LaTeX documents conforming to the
 ,(emph "Lecture Notes on Computer Science") (LNCS) style. It introduces the
@@ -105,16 +109,25 @@ markups ,(code "abstract") and ,(code "references"):])
 ;*    french                                                           */
 ;*---------------------------------------------------------------------*/
 (section :title "Languages"
-   (subsection :title (tt "french.skr")
-      (index :index *package-index* "french.skr" :note "package")
+
+   ;; FIXME: Provide proper i18n.
+
+   (p [Currently, native language support in Skribilo is rudimentary,
+limited to the following package.  In the future, it should be possible
+to specify a document's language so that the output engine behaves
+accordingly, e.g., by choosing the right typographical rules and the
+right phrases.])
+
+   (subsection :title (tt "french")
+      (index :index *package-index* "french" :note "package")
       (p [
 Enables French typesetting and typographical rules.])))
 
 ;*---------------------------------------------------------------------*/
 ;*    letter                                                           */
 ;*---------------------------------------------------------------------*/
-(section :title (tt "letter.skr")
-   (index :index *package-index* "letter.skr" :note "package")
+(section :title (tt "letter")
+   (index :index *package-index* "letter" :note "package")
    (p [
 This package is to be used to authoring simple letters. It redefines the
 ,(markup-ref "document") markup.])
@@ -134,30 +147,35 @@ This package is to be used to authoring simple letters. It redefines the
 ;*---------------------------------------------------------------------*/
 (section :title "Web"
    
-   (subsection :title (tt "web-article.skr")
-      (index :index *package-index* "web-article.skr" :note "package")
-      (p [
-A convenient mode for rendering articles (i.e., documents made of
-sections) in HTML. The Slide package supports two ,(markup-ref "skribe-load")
-user options:
-,(param :style) and ,(param :css). The ,(param :style) option can either
-be ,(code "'traditional") which forces traditional HTML code
-emission or ,(code "'css") which forces HTML code emission using CSS
-annotations. The CSS style used is specified in the (code "css")
-HTML engine ,(ref :subsection "The HTML customization" :text "custom").
-The ,(param :css) is a shorthand for ,(param :style). For instance:])
+   #;(subsection :title (tt "web-article")
+      (index :index *package-index* "web-article" :note "package")
+
+      (p [This module provides a convenient mode for rendering articles
+(i.e., documents made of sections) in HTML.])
+      
+      ;; FIXME: We don't have any clean way to pass load options through
+      ;; `use-modules'.
+      (p [The ,(tt [web-article]) package supports two ,(markup-ref
+"skribe-load") user options: ,(param :style) and ,(param :css). The
+,(param :style) option can either be ,(code "'traditional") which forces
+traditional HTML code emission or ,(code "'css") which forces HTML code
+emission using CSS annotations. The CSS style used is specified in the
+(code "css") HTML engine ,(ref :subsection "The HTML customization"
+:text "custom").  The ,(param :css) is a shorthand for ,(param
+:style). For instance:]
 (prgm [(skribe-load "web-article.skr" :css "style.css")])
 [is equivalent to:]
 (prgm [(skribe-load "web-article.skr" :style 'css)
 (engine-custom-set! (find-engine 'html) :css "style.css")]))
+      )
    
-   (subsection :title (tt "web-book.skr")
-      (index :index *package-index* "web-book.skr" :note "package")
+   (subsection :title (tt "web-book")
+      (index :index *package-index* "web-book" :note "package")
       (p [
 A convenient mode for rendering books (i.e., documents made of
 chapters and sections) in HTML.]))
    
-   (subsection :title [HTML Navigation Tabs]
+   (subsection :title (tt [html-navtabs])
 
       (p [The ,(tt [html-navtabs]) package enables quick navigation
 inside HTML documents by means of tabs.  The produced HTML code uses CSS
diff --git a/src/guile/skribilo/package/web-article.scm b/src/guile/skribilo/package/web-article.scm
index 31a88fa..d291c7c 100644
--- a/src/guile/skribilo/package/web-article.scm
+++ b/src/guile/skribilo/package/web-article.scm
@@ -1,7 +1,7 @@
 ;;; web-article.scm  --  A style to produce web articles.
 ;;;
+;;; Copyright 2007, 2008  Ludovic Courtès <ludo@chbouib.org>
 ;;; 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
@@ -36,6 +36,11 @@
 
 (fluid-set! current-reader %skribilo-module-reader)
 
+;; FIXME: The purpose of this package is unclear, and it relies on "documents
+;; made of sections" (according to the doc), which sucks (we want all
+;; documents to consist of chapters at the top-level, so that engines can at
+;; least assume that), so better not advertise it.
+
 
 ;*---------------------------------------------------------------------*/
 ;*    &web-article-load-options ...                                    */
@@ -242,6 +247,9 @@
 ;*---------------------------------------------------------------------*/
 ;*    Setup ...                                                        */
 ;*---------------------------------------------------------------------*/
+;; FIXME: The `*load-options*' stuff is not usable from `use-modules', so we
+;; must provide another mechanism, e.g., exporting a `customize-engine!'
+;; method or so.
 (let* ((opt &web-article-load-options)
        (p (memq :style opt))
        (css (memq :css opt))