From 09039355539a79187669b688ff6a03c8a74e2099 Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Tue, 31 Jan 2006 23:23:15 +0000 Subject: First time the user manual is compiled to HTML. * doc/skr/api.skr (make-engine?): Fixed. (make-engine-custom): Likewise. * doc/skr/manual.skr (the-index): Don't pass `:&skribe-eval-location'. * doc/user/emacs.skb: Fixed typo. * doc/user/htmle.skb: Documented the `file-name-proc' custom. * doc/user/package.skb: Fixed the `prgm' example there. * doc/user/skribe-config.skb: Commented out the `OPTIONS' section. * doc/user/skribec.skb: Likewise. * doc/user/slide.skb: Don't refer to HTML-ENGINE, use `find-engine' instead. * doc/user/src/slides.skb: Don't pass `:slide' to `toc'. * doc/user/toc.skb: Commented the `:subsubsection' argument. * doc/user/user.skb (Index): Set `:indent' to "Index". * src/guile/skribilo.scm (skribilo-options): Added `--image-path'. (skribilo): Handle it. * src/guile/skribilo/ast.scm (ast->file-location): Exported. * src/guile/skribilo/engine/base.scm (the-index): Don't pass `:&skribe-eval-location'. * src/guile/skribilo/engine/html.scm: Export `html-width' and `html-title-authors'. * src/guile/skribilo/engine/lout.scm (lout-width): Don't use `flonum?'. * src/guile/skribilo/evaluator.scm (load-document): Added `:allow-other-keys' so that the optional parameters may contain keywords, too. * src/guile/skribilo/package/slide.scm: Use `(skribilo engine html)'. * src/guile/skribilo/skribe/api.scm (toc): Added `subsubsection'. git-archimport-id: lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-31 --- ChangeLog | 66 ++++++++++++++++++++++++++++++++++++ doc/skr/api.skr | 34 +++++++++++-------- doc/skr/manual.skr | 8 +++-- doc/user/emacs.skb | 2 +- doc/user/htmle.skb | 3 ++ doc/user/package.skb | 2 +- doc/user/skribe-config.skb | 22 ++++++------ doc/user/skribec.skb | 8 ++--- doc/user/slide.skb | 3 +- doc/user/src/slides.skb | 4 +-- doc/user/toc.skb | 1 + doc/user/user.skb | 4 +-- src/guile/skribilo.scm | 4 ++- src/guile/skribilo/ast.scm | 2 +- src/guile/skribilo/engine/base.scm | 8 +++-- src/guile/skribilo/engine/html.scm | 6 ++-- src/guile/skribilo/engine/lout.scm | 2 +- src/guile/skribilo/evaluator.scm | 3 +- src/guile/skribilo/package/slide.scm | 4 ++- src/guile/skribilo/skribe/api.scm | 4 ++- 20 files changed, 142 insertions(+), 48 deletions(-) diff --git a/ChangeLog b/ChangeLog index fb6c7ed..a4d8ec6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,72 @@ # arch-tag: automatic-ChangeLog--lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2 # +2006-01-31 23:23:15 GMT Ludovic Courtes patch-31 + + Summary: + First time the user manual is compiled to HTML. + Revision: + skribilo--devel--1.2--patch-31 + + * doc/skr/api.skr (make-engine?): Fixed. + (make-engine-custom): Likewise. + + * doc/skr/manual.skr (the-index): Don't pass `:&skribe-eval-location'. + + * doc/user/emacs.skb: Fixed typo. + + * doc/user/htmle.skb: Documented the `file-name-proc' custom. + + * doc/user/package.skb: Fixed the `prgm' example there. + + * doc/user/skribe-config.skb: Commented out the `OPTIONS' section. + + * doc/user/skribec.skb: Likewise. + + * doc/user/slide.skb: Don't refer to HTML-ENGINE, use `find-engine' + instead. + + * doc/user/src/slides.skb: Don't pass `:slide' to `toc'. + + * doc/user/toc.skb: Commented the `:subsubsection' argument. + + * doc/user/user.skb (Index): Set `:indent' to "Index". + + * src/guile/skribilo.scm (skribilo-options): Added `--image-path'. + (skribilo): Handle it. + + * src/guile/skribilo/ast.scm (ast->file-location): Exported. + + * src/guile/skribilo/engine/base.scm (the-index): Don't pass + `:&skribe-eval-location'. + + * src/guile/skribilo/engine/html.scm: Export `html-width' and + `html-title-authors'. + + * src/guile/skribilo/engine/lout.scm (lout-width): Don't use `flonum?'. + + * src/guile/skribilo/evaluator.scm (load-document): Added + `:allow-other-keys' so that the optional parameters may contain + keywords, too. + + * src/guile/skribilo/package/slide.scm: Use `(skribilo engine html)'. + + * src/guile/skribilo/skribe/api.scm (toc): Added `subsubsection'. + + modified files: + ChangeLog doc/skr/api.skr doc/skr/manual.skr + doc/user/emacs.skb doc/user/htmle.skb doc/user/package.skb + doc/user/skribe-config.skb doc/user/skribec.skb + doc/user/slide.skb doc/user/src/slides.skb doc/user/toc.skb + doc/user/user.skb src/guile/skribilo.scm + src/guile/skribilo/ast.scm src/guile/skribilo/engine/base.scm + src/guile/skribilo/engine/html.scm + src/guile/skribilo/engine/lout.scm + src/guile/skribilo/evaluator.scm + src/guile/skribilo/package/slide.scm + src/guile/skribilo/skribe/api.scm + + 2006-01-25 22:57:34 GMT Ludovic Courtes patch-30 Summary: diff --git a/doc/skr/api.skr b/doc/skr/api.skr index 00c6a38..a86e745 100644 --- a/doc/skr/api.skr +++ b/doc/skr/api.skr @@ -121,16 +121,21 @@ ;* make-engine? ... */ ;*---------------------------------------------------------------------*/ (define (make-engine? id o) + ;(format #t "make-engine? ~a ~a~%" id o) (match o - (((or 'make-engine 'copy-engine) - (quote (? (lambda (x) (eq? x id)))) _) - o) - ((`_) - #f) - ((_) - #f) - ((a d) - (or (make-engine? id a) (make-engine? id d))) + (((or 'make-engine 'copy-engine) ('quote sym) . rest) + (if (eq? sym id) + o + #f)) + ((exp ___) + (let loop ((exp exp)) + (cond ((null? exp) + #f) + ((pair? exp) + (or (make-engine? id (car exp)) + (make-engine? id (cdr exp)))) + (else + (make-engine? id exp))))) (else #f))) @@ -138,13 +143,14 @@ ;* make-engine-custom ... */ ;*---------------------------------------------------------------------*/ (define (make-engine-custom def) - (match (memq :custom def) - ((:custom `custom _) + (let ((customs (memq :custom def))) + (match (if customs (cdr customs) #f) + ((((or 'quote 'quasiquote) custom) _ ___) custom) - ((:custom custom _) - (eval custom)) + (((custom) _ ___) + (primitive-eval custom)) (else - '()))) + '())))) (define (sym/kw? x) (or (symbol? x) (keyword? x))) diff --git a/doc/skr/manual.skr b/doc/skr/manual.skr index 30b2fcd..e6b7d64 100644 --- a/doc/skr/manual.skr +++ b/doc/skr/manual.skr @@ -248,14 +248,18 @@ (nc (markup-option n :column)) (pref (eq? (engine-custom e 'index-page-ref) #t)) (loc (ast-loc n)) + ;; FIXME: Since we don't support + ;; `:&skribe-eval-location', we could set up a + ;; `parameterize' thing around `skribe-eval' to provide + ;; it with the right location information. (t (cond ((null? ie) "") ((or (not (integer? nc)) (= nc 1)) - (table :width 100. :&skribe-eval-location loc + (table :width 100. ;;:&skribe-eval-location loc (make-column ie pref))) (else - (table :width 100. :&skribe-eval-location loc + (table :width 100. ;;:&skribe-eval-location loc (make-sub-tables ie nc pref)))))) (output (skribe-eval t e) e)))) diff --git a/doc/user/emacs.skb b/doc/user/emacs.skb index 742fa87..a526790 100644 --- a/doc/user/emacs.skb +++ b/doc/user/emacs.skb @@ -52,7 +52,7 @@ The ,(code "skribe") mode is a minor mode. It is intended to be used with a Lisp or Scheme mode. Hence, to use the ,(code "skribe") mode you will have to use the following Emacs commands:]) -,(disp :vert #t (source :language lisp [ +,(disp :verb #t (source :language lisp [ ESC-x: scheme-mode ESC-x: skribe-mode ]))])) diff --git a/doc/user/htmle.skb b/doc/user/htmle.skb index 5e556cc..90343b9 100644 --- a/doc/user/htmle.skb +++ b/doc/user/htmle.skb @@ -65,6 +65,9 @@ the document.]) (title-background "The title background color.") (title-foreground "The title foreground color.") (file-title-separator "A text to be inserted in between the document title and the chapter or section title when the chapter or section is rendered in a separate file.") + (file-name-proc "A two-argument procedure that should return +a string. This procedure is to be passed a node and an engine and +should return a file name for the HTML page corresponding to this node.") ;; index configuration (index-header-font-size "The index header font size.") ;; chapter configuration diff --git a/doc/user/package.skb b/doc/user/package.skb index b3fe6c3..19c99c9 100644 --- a/doc/user/package.skb +++ b/doc/user/package.skb @@ -25,7 +25,7 @@ Skribe distribution.]) In order to use the facilities described in the following sections, the Skribe source file must contains expressions such as:]) -(prgm [(skribe-load ,(it "package.skr") ...)]) +(prgm "(skribe-load \"package.skr\" ...)") [where ,(it (tt "package.skr")) is the described package.] diff --git a/doc/user/skribe-config.skb b/doc/user/skribe-config.skb index 956af63..e96e35b 100644 --- a/doc/user/skribe-config.skb +++ b/doc/user/skribe-config.skb @@ -29,16 +29,18 @@ The ,(code "skribe-config") gives information about the Skribe configuration. This information can be the directories used to install Skribe, the Scheme implementation used for compiling Skribe, etc.]) -;; Options -(section :title "OPTIONS" :number #f [ -,(pre (let* ((proc (run-process "../etc/skribe-config" "--help" error: pipe:)) - (port (process-error-port proc))) - (let loop ((line (read-line port)) - (lines '())) - (if (eof-object? line) - (reverse! lines) - (begin - (loop (read-line port) (cons* line "\n" lines)))))))])) +;; Options (FIXME) +; (section :title "OPTIONS" :number #f [ +; ,(pre (let* ((proc (run-process "../etc/skribe-config" "--help" error: pipe:)) +; (port (process-error-port proc))) +; (let loop ((line (read-line port)) +; (lines '())) +; (if (eof-object? line) +; (reverse! lines) +; (begin +; (loop (read-line port) (cons* line "\n" lines)))))))]) + +) diff --git a/doc/user/skribec.skb b/doc/user/skribec.skb index 0f00632..cad8f35 100644 --- a/doc/user/skribec.skb +++ b/doc/user/skribec.skb @@ -43,10 +43,10 @@ its possible targets which one to choose. These suffixes are: (item :key (it ".tex") [a ,(it "TeX") target file.]) (item :key (it ".sui") [a ,(it "Skribe url index") file.]))]) -;; Options -(section :title "OPTIONS" :number #f [ -,(mark "skribe compiler option") -,(compiler-options *skribe-bin*)]) +;; Options (FIXME) +;;(section :title "OPTIONS" :number #f [ +;;,(mark "skribe compiler option") +;;,(compiler-options *skribe-bin*)]) ;; Environment variables (section :title "ENVIRONMENT VARIABLES" :number #f [ diff --git a/doc/user/slide.skb b/doc/user/slide.skb index 0137e84..aff8ab5 100644 --- a/doc/user/slide.skb +++ b/doc/user/slide.skb @@ -101,7 +101,8 @@ output format does not support embedded application.])) (p [Here is a complete example of Skribe slides:]) (if (and (engine-format? "html") - (not (equal? (engine-custom html-engine 'html-variant) "html4"))) + (not (equal? (engine-custom (find-engine 'html) 'html-variant) + "html4"))) ;; Show the example and its result (example-produce (example :legend "Example of Skribe slides" diff --git a/doc/user/src/slides.skb b/doc/user/src/slides.skb index ac584d1..1606e91 100644 --- a/doc/user/src/slides.skb +++ b/doc/user/src/slides.skb @@ -7,8 +7,8 @@ (if (engine-format? "html") (slide :title "Table of contents" :number #f :toc #f - (toc :chapter #f :section #f :subsection #f :subsubsection #f - :slide #t))) + (toc :chapter #f :section #f :subsection #f :subsubsection #f))) +;;; :slide #t))) (slide :title "X11 client" :toc #t :vspace 0.3 diff --git a/doc/user/toc.skb b/doc/user/toc.skb index aa6c0dc..657ed7c 100644 --- a/doc/user/toc.skb +++ b/doc/user/toc.skb @@ -21,6 +21,7 @@ inclusion of chapters in the table of contents.]) (:section [A boolean controlling sections.]) (:subsection [A boolean controlling subsections.]) + (:subsubsection [A boolean controlling subsubsections.]) (#!rest handle [An optional handle pointing to the node from which the table of contents if computed.])) :see-also '(document chapter section resolve handle)) diff --git a/doc/user/user.skb b/doc/user/user.skb index d5ed06b..0c74e66 100644 --- a/doc/user/user.skb +++ b/doc/user/user.skb @@ -146,12 +146,12 @@ as HTML, Info pages, man pages, Postscript, etc.])))) (begin (chapter :title "Table of contents" (toc :chapter #t :section #t :subsection #t)) - (section :title "Index" :number #f + (section :title "Index" :number #f :ident "Index" (mark "global index") (the-index :column (if (engine-format? "latex") 2 3) *markup-index* *custom-index* *function-index* *package-index* (default-index)))) - (chapter :title "Index" + (chapter :title "Index" :ident "Index" (mark "global index") (the-index :column (if (engine-format? "latex") 2 3) *markup-index* *custom-index* *function-index* *package-index* diff --git a/src/guile/skribilo.scm b/src/guile/skribilo.scm index 285a92d..f683080 100644 --- a/src/guile/skribilo.scm +++ b/src/guile/skribilo.scm @@ -92,7 +92,7 @@ specifications." (skribe-bib-path-set! (cons path (skribe-bib-path)))) (("source-path" :alternate "S" :arg path :help "adds to source path") (skribe-source-path-set! (cons path (skribe-source-path)))) - (("P" :arg path :help "adds to image path") + (("image-path" :alternate "P" :arg path :help "adds to image path") (skribe-image-path-set! (cons path (skribe-image-path)))) (("split-chapters" :alternate "C" :arg chapter :help "emit chapter's sections in separate files") @@ -396,6 +396,7 @@ Processes a Skribilo/Skribe source file and produces its output. (load-path (option-ref options 'load-path ".")) (bib-path (option-ref options 'bib-path ".")) (source-path (option-ref options 'source-path ".")) + (image-path (option-ref options 'image-path ".")) (preload '()) (variants '()) @@ -426,6 +427,7 @@ Processes a Skribilo/Skribe source file and produces its output. (*source-path* (cons source-path (append %load-path (*source-path*)))) + (*image-path* (cons image-path (*image-path*))) (*warning* (string->number warning-level)) (*verbose* (let ((v (option-ref options 'verbose 0))) diff --git a/src/guile/skribilo/ast.scm b/src/guile/skribilo/ast.scm index ab56442..ff61ff7 100644 --- a/src/guile/skribilo/ast.scm +++ b/src/guile/skribilo/ast.scm @@ -24,7 +24,7 @@ :autoload (skribilo location) (location?) :use-module (skribilo utils syntax) :export ( ast? ast-loc ast-loc-set! - ast-parent ast->string + ast-parent ast->string ast->file-location command? command-fmt command-body unresolved? unresolved-proc diff --git a/src/guile/skribilo/engine/base.scm b/src/guile/skribilo/engine/base.scm index ed15da4..1d04e1d 100644 --- a/src/guile/skribilo/engine/base.scm +++ b/src/guile/skribilo/engine/base.scm @@ -418,14 +418,18 @@ (t (cond ((null? ie) "") + ;; FIXME: Since we don't support + ;; `:&skribe-eval-location', we could set up a + ;; `parameterize' thing around `skribe-eval' to + ;; provide it with the right location information. ((or (not (integer? nc)) (= nc 1)) (table :width 100. - :&skribe-eval-location loc + ;;:&skribe-eval-location loc :class "index-table" (make-column ie pref))) (else (table :width 100. - :&skribe-eval-location loc + ;;:&skribe-eval-location loc :class "index-table" (make-sub-tables ie nc pref)))))) (output (skribe-eval t e) e)))) diff --git a/src/guile/skribilo/engine/html.scm b/src/guile/skribilo/engine/html.scm index 5165258..1ad86e9 100644 --- a/src/guile/skribilo/engine/html.scm +++ b/src/guile/skribilo/engine/html.scm @@ -531,7 +531,7 @@ ;*---------------------------------------------------------------------*/ ;* html-width ... */ ;*---------------------------------------------------------------------*/ -(define (html-width width) +(define-public (html-width width) (cond ((and (integer? width) (exact? width)) (format #f "~A" width)) @@ -545,7 +545,7 @@ ;*---------------------------------------------------------------------*/ ;* html-class ... */ ;*---------------------------------------------------------------------*/ -(define (html-class m) +(define-public (html-class m) (if (markup? m) (let ((c (markup-class m))) (if (or (string? c) (symbol? c) (number? c)) @@ -926,7 +926,7 @@ ;*---------------------------------------------------------------------*/ ;* html-title-authors ... */ ;*---------------------------------------------------------------------*/ -(define (html-title-authors authors e) +(define-public (html-title-authors authors e) (define (html-authorsN authors cols first) (define (make-row authors . opt) (tr (map (lambda (v) diff --git a/src/guile/skribilo/engine/lout.scm b/src/guile/skribilo/engine/lout.scm index d01b547..c2339ca 100644 --- a/src/guile/skribilo/engine/lout.scm +++ b/src/guile/skribilo/engine/lout.scm @@ -876,7 +876,7 @@ ;* lout-width ... */ ;*---------------------------------------------------------------------*/ (define (lout-width width) - (cond ((flonum? width) ;; a relative size + (cond ((inexact? width) ;; a relative size (XXX: was `flonum?') ;; FIXME: Hack ahead: assuming A4 with a 2.5cm margin ;; on both sides (let* ((orientation (let ((lout (find-engine 'lout))) diff --git a/src/guile/skribilo/evaluator.scm b/src/guile/skribilo/evaluator.scm index df5e6a7..b47f821 100644 --- a/src/guile/skribilo/evaluator.scm +++ b/src/guile/skribilo/evaluator.scm @@ -118,7 +118,8 @@ ;; List of the names of files already loaded. (define *loaded-files* (make-parameter '())) -(define* (load-document file :key (engine #f) (path #f) :rest opt) +(define* (load-document file :key (engine #f) (path #f) :allow-other-keys + :rest opt) (with-debug 4 'skribe-load (debug-item " engine=" engine) (debug-item " path=" path) diff --git a/src/guile/skribilo/package/slide.scm b/src/guile/skribilo/package/slide.scm index f5f0011..ddbbd1d 100644 --- a/src/guile/skribilo/package/slide.scm +++ b/src/guile/skribilo/package/slide.scm @@ -9,7 +9,9 @@ ;* Skribe style for slides */ ;*=====================================================================*/ -(define-skribe-module (skribilo package slide)) +(define-skribe-module (skribilo package slide) + :autoload (skribilo engine html) (html-width html-title-authors)) + ;*---------------------------------------------------------------------*/ ;* slide-options */ diff --git a/src/guile/skribilo/skribe/api.scm b/src/guile/skribilo/skribe/api.scm index c9606a0..2cd8b2e 100644 --- a/src/guile/skribilo/skribe/api.scm +++ b/src/guile/skribilo/skribe/api.scm @@ -102,7 +102,8 @@ opts #!key (ident #f) (class "toc") - (chapter #t) (section #t) (subsection #f)) + (chapter #t) (section #t) (subsection #f) + (subsubsection #f)) (let ((body (the-body opts))) (new container (markup 'toc) @@ -112,6 +113,7 @@ (options `((:chapter ,chapter) (:section ,section) (:subsection ,subsection) + (:subsubsection ,subsubsection) ,@(the-options opts :ident :class))) (body (cond ((null? body) -- cgit v1.2.3