From d4360259d60722eaa175a483f792fce7b8c66d97 Mon Sep 17 00:00:00 2001 From: Ludovic Court`es Date: Wed, 11 Oct 2006 07:43:47 +0000 Subject: slide: Propagate the `outline?' parameter in `slide-(sub)?topic'. * src/guile/skribilo/package/slide.scm (slide-topic): Propagate the `outline?' parameter as an option. (slide-subtopic): Likewise. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-1 --- doc/COPYING | 1 + doc/Makefile | 233 --------- doc/Makefile.am | 1 + doc/dir/Makefile.am | 3 + doc/dir/dir.skb | 31 +- doc/img/Makefile.am | 3 + doc/img/bsd.gif | Bin 4226 -> 0 bytes doc/img/bsd.png | Bin 0 -> 4162 bytes doc/img/lambda.gif | Bin 169 -> 0 bytes doc/img/lambda.png | Bin 0 -> 222 bytes doc/img/linux.gif | Bin 1972 -> 0 bytes doc/img/linux.png | Bin 0 -> 1928 bytes doc/modules/Makefile.am | 3 + doc/modules/skribilo/Makefile.am | 3 + doc/modules/skribilo/documentation/Makefile.am | 3 + doc/modules/skribilo/documentation/api.scm | 623 +++++++++++++++++++++++ doc/modules/skribilo/documentation/env.scm | 47 ++ doc/modules/skribilo/documentation/extension.scm | 111 ++++ doc/modules/skribilo/documentation/manual.scm | 328 ++++++++++++ doc/skr/api.skr | 575 --------------------- doc/skr/env.skr | 32 -- doc/skr/extension.skr | 95 ---- doc/skr/manual.skr | 281 ---------- doc/user/.arch-inventory | 4 + doc/user/Makefile.am | 42 ++ doc/user/bib.skb | 63 ++- doc/user/char.skb | 38 +- doc/user/colframe.skb | 29 +- doc/user/document.skb | 35 +- doc/user/emacs.skb | 31 +- doc/user/engine.skb | 45 +- doc/user/enumeration.skb | 29 +- doc/user/eq.skb | 79 +++ doc/user/examples.skb | 29 +- doc/user/figure.skb | 39 +- doc/user/font.skb | 29 +- doc/user/footnote.skb | 35 +- doc/user/htmle.skb | 36 +- doc/user/image.skb | 33 +- doc/user/index.skb | 31 +- doc/user/justify.skb | 29 +- doc/user/latexe.skb | 33 +- doc/user/lib.skb | 77 ++- doc/user/line.skb | 29 +- doc/user/links.skb | 43 +- doc/user/markup.skb | 31 +- doc/user/ornament.skb | 29 +- doc/user/package.skb | 41 +- doc/user/pie.skb | 71 +++ doc/user/prgm.skb | 29 +- doc/user/sectioning.skb | 31 +- doc/user/skribe-config.skb | 51 +- doc/user/skribec.skb | 37 +- doc/user/skribeinfo.skb | 29 +- doc/user/slide.skb | 132 ++++- doc/user/src/Makefile.am | 11 + doc/user/src/api14.skb | 2 +- doc/user/src/api16.skb | 10 +- doc/user/src/api2.skb | 2 +- doc/user/src/api20-html.skb | 2 + doc/user/src/api20-lout.skb | 2 + doc/user/src/api20.skb | 2 - doc/user/src/bib1.sbib | 2 + doc/user/src/eq1.skb | 6 + doc/user/src/eq2.skb | 3 + doc/user/src/links1.skb | 2 +- doc/user/src/pie1.skb | 13 + doc/user/src/pie2.skb | 14 + doc/user/src/slides.skb | 34 +- doc/user/src/start3.skb | 4 +- doc/user/src/start4.skb | 8 +- doc/user/src/start5.skb | 2 +- doc/user/start.skb | 46 +- doc/user/syntax.skb | 29 +- doc/user/table.skb | 30 +- doc/user/toc.skb | 30 +- doc/user/user.skb | 106 ++-- doc/user/xmle.skb | 41 +- 78 files changed, 2358 insertions(+), 1735 deletions(-) create mode 120000 doc/COPYING delete mode 100644 doc/Makefile create mode 100644 doc/Makefile.am create mode 100644 doc/dir/Makefile.am create mode 100644 doc/img/Makefile.am delete mode 100644 doc/img/bsd.gif create mode 100644 doc/img/bsd.png delete mode 100644 doc/img/lambda.gif create mode 100644 doc/img/lambda.png delete mode 100644 doc/img/linux.gif create mode 100644 doc/img/linux.png create mode 100644 doc/modules/Makefile.am create mode 100644 doc/modules/skribilo/Makefile.am create mode 100644 doc/modules/skribilo/documentation/Makefile.am create mode 100644 doc/modules/skribilo/documentation/api.scm create mode 100644 doc/modules/skribilo/documentation/env.scm create mode 100644 doc/modules/skribilo/documentation/extension.scm create mode 100644 doc/modules/skribilo/documentation/manual.scm delete mode 100644 doc/skr/api.skr delete mode 100644 doc/skr/env.skr delete mode 100644 doc/skr/extension.skr delete mode 100644 doc/skr/manual.skr create mode 100644 doc/user/.arch-inventory create mode 100644 doc/user/Makefile.am create mode 100644 doc/user/eq.skb create mode 100644 doc/user/pie.skb create mode 100644 doc/user/src/Makefile.am create mode 100644 doc/user/src/api20-html.skb create mode 100644 doc/user/src/api20-lout.skb delete mode 100644 doc/user/src/api20.skb create mode 100644 doc/user/src/eq1.skb create mode 100644 doc/user/src/eq2.skb create mode 100644 doc/user/src/pie1.skb create mode 100644 doc/user/src/pie2.skb (limited to 'doc') diff --git a/doc/COPYING b/doc/COPYING new file mode 120000 index 0000000..012065c --- /dev/null +++ b/doc/COPYING @@ -0,0 +1 @@ +../COPYING \ No newline at end of file diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 934389e..0000000 --- a/doc/Makefile +++ /dev/null @@ -1,233 +0,0 @@ -#*=====================================================================*/ -#* serrano/prgm/project/skribe/doc/Makefile */ -#* ------------------------------------------------------------- */ -#* Author : Manuel Serrano */ -#* Creation : Mon Sep 1 10:29:28 2003 */ -#* Last change : Wed Mar 10 11:16:48 2004 (serrano) */ -#* Copyright : 2003-04 Manuel Serrano */ -#* ------------------------------------------------------------- */ -#* The Makefile to build the Skribe documentation. */ -#*=====================================================================*/ -include ../etc/Makefile.config -include ../etc/$(SYSTEM)/Makefile.skb - -#*---------------------------------------------------------------------*/ -#* Compiler and tools */ -#*---------------------------------------------------------------------*/ -BINDIR = ../bin -LIBDIR = ../lib -LATEX = latex -DVIPS = dvips - -SKRIBEVERBOSE = -v1 -SKRIBEWARNING = -w1 -SFLAGS = $(SKRIBEVERBOSE) $(SKRIBEWARNING) \ - -I ../skr \ - -I skr \ - -P img \ - -S .. \ - --custom emit-sui=yes \ - --eval '(define *skribe-bin* "$(SKRIBE)")' \ - --eval '(define *skribebibtex-bin* "$(SKRIBEBIBTEX)")' - -#*---------------------------------------------------------------------*/ -#* Doc skr */ -#*---------------------------------------------------------------------*/ -_SKR = manual.skr env.skr api.skr extension.skr -SKR = $(_SKR:%=skr/%) - -#*---------------------------------------------------------------------*/ -#* Images */ -#*---------------------------------------------------------------------*/ -_IMG = bsd.gif lambda.gif linux.gif -IMG = $(_IMG:%=img/%) - -#*---------------------------------------------------------------------*/ -#* User document */ -#*---------------------------------------------------------------------*/ -_USERMAIN = user.skb -_USEROTHERS = start.skb syntax.skb \ - markup.skb document.skb \ - sectioning.skb toc.skb ornament.skb line.skb font.skb \ - justify.skb enumeration.skb \ - examples.skb colframe.skb figure.skb image.skb table.skb \ - footnote.skb char.skb \ - links.skb index.skb bib.skb prgm.skb \ - engine.skb htmle.skb latexe.skb xmle.skb \ - emacs.skb skribec.skb skribe-config.skb \ - lib.skb slide.skb package.skb -_USERSRC = start1.skb start2.skb start3.skb start4.skb start5.skb \ - api1.skb api2.skb api3.skb api4.skb api5.skb \ - api6.skb api7.skb api8.skb api9.skb api10.skb \ - api11.skb api12.skb api13.skb api14.skb api15.skb \ - api16.skb api17.skb api18.skb api19.skb api20.skb \ - links1.skb links2.skb \ - index1.skb index2.skb index3.skb \ - bib1.sbib bib2.skb bib3.skb bib4.skb bib5.skb bib6.skb \ - prgm1.skb prgm2.skb prgm3.skb slides.skb - -USERMAIN = $(_USERMAIN:%=user/%) -USEROTHERS = $(_USEROTHERS:%=user/%) -USERSRC = $(_USERSRC:%=user/src/%) -USERSKB = $(USERMAIN) $(USEROTHERS) $(USERSRC) - -#*---------------------------------------------------------------------*/ -#* User document */ -#*---------------------------------------------------------------------*/ -_DIRMAIN = dir.skb -_DIROTHERS = -_DIRSRC = - -DIRMAIN = $(_DIRMAIN:%=dir/%) -DIROTHERS = $(_DIROTHERS:%=dir/%) -DIRSRC = $(_DIRSRC:%=dir/src/%) -DIRSKB = $(DIRMAIN) $(DIROTHERS) $(DIRSRC) - -#*---------------------------------------------------------------------*/ -#* Suffixes */ -#*---------------------------------------------------------------------*/ -.SUFFIXES: -.SUFFIXES: .skb .man .html .sui - -#*---------------------------------------------------------------------*/ -#* All */ -#*---------------------------------------------------------------------*/ -.PHONY: user dir - -all: user dir -re: re.html re.dir - -#*---------------------------------------------------------------------*/ -#* pop */ -#*---------------------------------------------------------------------*/ -.PHONY: pop - -pop: - @ echo doc/Makefile doc/Makefile.dir - @ echo $(USERSKB:%=doc/%) - @ echo $(DIRSKB:%=doc/%) - @ echo $(SKR:%=doc/%) - @ echo $(IMG:%=doc/%) - -#*---------------------------------------------------------------------*/ -#* user */ -#*---------------------------------------------------------------------*/ -.PHONY: user re.html user.html - -user: user.html user.sui -user.html: html/user.html html/img/lambda.gif html/img/bsd.gif html/img/linux.gif -user.sui: html/user.sui - -user.ps: tex/user.dvi - (cd tex; $(DVIPS) user.dvi -o user.ps) - -user.dvi: tex/user.dvi -tex/user.dvi: tex/user.tex - (cd tex; $(LATEX) user.tex) - -html/user.html html/user.sui: html $(USERSKB) $(SKR) - $(MAKE) re.html - -tex/user.tex: tex $(USERSKB) $(SKR) tex/img/lambda.eps tex/img/bsd.eps tex/img/linux.eps - $(MAKE) re.tex - -# gif -html/img/lambda.gif: html/img img/lambda.gif - cp img/lambda.gif html/img/lambda.gif - -html/img/linux.gif: html/img img/linux.gif - cp img/linux.gif html/img/linux.gif - -html/img/bsd.gif: html/img img/bsd.gif - cp img/bsd.gif html/img/bsd.gif - -# eps image -tex/img/lambda.eps: tex/img img/lambda.gif - convert img/lambda.gif tex/img/lambda.eps - -tex/img/linux.eps: tex/img img/linux.gif - convert img/linux.gif tex/img/linux.eps - -tex/img/bsd.eps: tex/img img/bsd.gif - convert img/bsd.gif tex/img/bsd.eps - -re.html: - $(SKRIBE) $(SFLAGS) $(USERMAIN) \ - --base html -I user -S user \ - -o html/user.html - -re.tex: - $(SKRIBE) $(SFLAGS) $(USERMAIN) \ - --base tex -I user -S user \ - -o tex/user.tex - -#*---------------------------------------------------------------------*/ -#* dir */ -#*---------------------------------------------------------------------*/ -.PHONY: dir re.dir dir.html - -dir: dir.html -dir.html: html/dir.html - -html/dir.html: html $(DIRSKB) $(SKR) - $(MAKE) re.dir - -re.dir: - $(MAKE) -f Makefile.dir SKRIBE="$(SKRIBE)" BASE=html - -#*---------------------------------------------------------------------*/ -#* Misc */ -#*---------------------------------------------------------------------*/ -html: - mkdir -p html - -html/img: - mkdir -p html/img - -tex: - mkdir -p tex - -tex/img: - mkdir -p tex/img - -gethtml: - @ echo "html/user.html" - -#*---------------------------------------------------------------------*/ -#* install/uinstall */ -#*---------------------------------------------------------------------*/ -.PHONY: install uninstall - -install: $(DESTDIR)$(INSTALL_DOCDIR) $(DESTDIR)$(INSTALL_SKRDIR)/doc/skr - cp -r html/* $(DESTDIR)$(INSTALL_DOCDIR) \ - && chmod $(BMASK) $(DESTDIR)$(INSTALL_DOCDIR)/* \ - && chmod a+rx $(DESTDIR)$(INSTALL_DOCDIR)/img - cp -r skr/* $(DESTDIR)$(INSTALL_SKRDIR)/doc/skr \ - && chmod a+rx $(DESTDIR)$(INSTALL_SKRDIR)/doc \ - && chmod a+rx $(DESTDIR)$(INSTALL_SKRDIR)/doc/skr \ - && chmod $(BMASK) $(DESTDIR)$(INSTALL_SKRDIR)/doc/skr/* - cp Makefile.dir $(DESTDIR)$(INSTALL_DOCDIR) \ - && chmod $(BMASK) $(DESTDIR)$(INSTALL_DOCDIR)/Makefile.dir - cp dir/dir.skb $(DESTDIR)$(INSTALL_DOCDIR) \ - && chmod $(BMASK) $(DESTDIR)$(INSTALL_DOCDIR)/dir.skb - -uninstall: - $(RM) -rf $(DESTDIR)$(INSTALL_DOCDIR) - -$(DESTDIR)$(INSTALL_DOCDIR): - mkdir -p $(DESTDIR)$(INSTALL_DOCDIR) && chmod a+rx $(DESTDIR)$(INSTALL_DOCDIR) - - -$(DESTDIR)$(INSTALL_SKRDIR)/doc/skr: - mkdir -p $(DESTDIR)$(INSTALL_SKRDIR)/doc/skr \ - && chmod -R a+rx $(DESTDIR)$(INSTALL_SKRDIR)/doc - -#*---------------------------------------------------------------------*/ -#* Clean */ -#*---------------------------------------------------------------------*/ -.PHONY: clean - -clean: - $(RM) -rf html - $(RM) -rf tex - $(RM) -f img/bsd.eps img/linux.eps diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..871a842 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = user modules img dir diff --git a/doc/dir/Makefile.am b/doc/dir/Makefile.am new file mode 100644 index 0000000..97f6673 --- /dev/null +++ b/doc/dir/Makefile.am @@ -0,0 +1,3 @@ +EXTRA_DIST = dir.skb + +## arch-tag: 68df7b7b-a45d-4cdc-b0b3-ef738a83965c diff --git a/doc/dir/dir.skb b/doc/dir/dir.skb index 8c6d377..1e1a7b6 100644 --- a/doc/dir/dir.skb +++ b/doc/dir/dir.skb @@ -1,14 +1,23 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/dir/dir.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Nov 28 10:37:39 2001 */ -;* Last change : Thu Jan 1 17:12:43 2004 (serrano) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe directory */ -;*=====================================================================*/ - +;;; dir.skb -- The Skribe directory +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + ;*---------------------------------------------------------------------*/ ;* The Skribe documentation style */ ;*---------------------------------------------------------------------*/ diff --git a/doc/img/Makefile.am b/doc/img/Makefile.am new file mode 100644 index 0000000..0be3236 --- /dev/null +++ b/doc/img/Makefile.am @@ -0,0 +1,3 @@ +EXTRA_DIST = bsd.png lambda.png linux.png + +## arch-tag: 0008e69a-4745-46d8-9da4-2173db33965d diff --git a/doc/img/bsd.gif b/doc/img/bsd.gif deleted file mode 100644 index e406ba6..0000000 Binary files a/doc/img/bsd.gif and /dev/null differ diff --git a/doc/img/bsd.png b/doc/img/bsd.png new file mode 100644 index 0000000..eb2e4e2 Binary files /dev/null and b/doc/img/bsd.png differ diff --git a/doc/img/lambda.gif b/doc/img/lambda.gif deleted file mode 100644 index 9c46b7d..0000000 Binary files a/doc/img/lambda.gif and /dev/null differ diff --git a/doc/img/lambda.png b/doc/img/lambda.png new file mode 100644 index 0000000..5673291 Binary files /dev/null and b/doc/img/lambda.png differ diff --git a/doc/img/linux.gif b/doc/img/linux.gif deleted file mode 100644 index fa764bd..0000000 Binary files a/doc/img/linux.gif and /dev/null differ diff --git a/doc/img/linux.png b/doc/img/linux.png new file mode 100644 index 0000000..fd121fb Binary files /dev/null and b/doc/img/linux.png differ diff --git a/doc/modules/Makefile.am b/doc/modules/Makefile.am new file mode 100644 index 0000000..1daf926 --- /dev/null +++ b/doc/modules/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = skribilo + +## arch-tag: 9c90dd7b-0ee7-44b9-ab41-5283d1bf1fb9 diff --git a/doc/modules/skribilo/Makefile.am b/doc/modules/skribilo/Makefile.am new file mode 100644 index 0000000..71e8c64 --- /dev/null +++ b/doc/modules/skribilo/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = documentation + +## arch-tag: af599d8d-2e67-49b3-afdf-aa2dba5a7c4a diff --git a/doc/modules/skribilo/documentation/Makefile.am b/doc/modules/skribilo/documentation/Makefile.am new file mode 100644 index 0000000..1562b0a --- /dev/null +++ b/doc/modules/skribilo/documentation/Makefile.am @@ -0,0 +1,3 @@ +EXTRA_DIST = api.scm env.scm extension.scm manual.scm + +## arch-tag: 171ec210-e895-42ce-b068-da10ed5c2551 diff --git a/doc/modules/skribilo/documentation/api.scm b/doc/modules/skribilo/documentation/api.scm new file mode 100644 index 0000000..84108c9 --- /dev/null +++ b/doc/modules/skribilo/documentation/api.scm @@ -0,0 +1,623 @@ +;;; api.scm -- The style for documenting Scheme APIs. +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; Copyright 2005, 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +(define-module (skribilo documentation api) + :use-module (skribilo reader) + :use-module (skribilo engine) + :use-module (skribilo writer) + :use-module (skribilo ast) + :use-module (skribilo output) + :use-module (skribilo lib) ;; `define-markup' + :use-module (skribilo utils keywords) + :use-module (skribilo utils compat) + :use-module (skribilo utils syntax) ;; `%skribilo-module-reader' + + :use-module (skribilo package base) + :use-module (skribilo documentation manual) ;; `*markup-index*' + :use-module (skribilo documentation env) ;; `*api-engines*' + + :use-module (srfi srfi-1) + :use-module (ice-9 match) + :use-module (ice-9 optargs)) + +(fluid-set! current-reader (make-reader 'skribe)) + + +;*---------------------------------------------------------------------*/ +;* Html configuration */ +;*---------------------------------------------------------------------*/ +(let* ((he (find-engine 'html)) + (tro (markup-writer-get 'tr he))) + (markup-writer 'tr he + :class 'api-table-header + :options '(:width :bg) + :action (lambda (n e) + (let ((c (engine-custom e 'section-title-background))) + (markup-option-add! n :bg c) + (output n e tro)))) + (markup-writer 'tr he + :class 'api-table-prototype + :options '(:width :bg) + :action (lambda (n e) + (let ((c (engine-custom e 'title-background))) + (markup-option-add! n :bg c) + (output n e tro)))) + (markup-writer 'tr he + :class 'api-symbol-prototype + :options '(:width :bg) + :action (lambda (n e) + (let ((c (engine-custom e 'title-background))) + (markup-option-add! n :bg c) + (output n e tro))))) + +;*---------------------------------------------------------------------*/ +;* LaTeX configuration */ +;*---------------------------------------------------------------------*/ +(let* ((le (find-engine 'latex)) + (tro (markup-writer-get 'tr le))) + (markup-writer 'tr le + :class 'api-table-prototype + :options '(:width :bg) + :action #f) + (markup-writer 'tr le + :class 'api-table-header + :options '(:width :bg) + :action (lambda (n e) + (let ((c (engine-custom e 'section-title-background))) + (markup-option-add! n :bg c) + (output n e tro))))) + +;*---------------------------------------------------------------------*/ +;* api-search-definition ... */ +;* ------------------------------------------------------------- */ +;* Find a definition inside a source file. */ +;*---------------------------------------------------------------------*/ +(define* (api-search-definition id file pred :optional (skribe-source? #t)) + ;; If SKRIBE-SOURCE? is true, then assume Skribe syntax. Otherwise, use + ;; the ``Skribilo module syntax''. + (let* ((path (append %load-path (skribe-path))) + (f (find-file/path file path)) + (read (if skribe-source? (make-reader 'skribe) + %skribilo-module-reader))) + (if (not (string? f)) + (skribe-error 'api-search-definition + (format #f "can't find source file `~a' in path" + file) + path) + (with-input-from-file f + (lambda () + (let loop ((exp (read))) + (if (eof-object? exp) + (skribe-error 'api-search-definition + (format #f + "can't find `~a' definition" id) + file) + (or (pred id exp) (loop (read)))))))))) + +;*---------------------------------------------------------------------*/ +;* api-compare-set ... */ +;* ------------------------------------------------------------- */ +;* This function compares two sets. It returns either #t */ +;* is they are equal, or two subsets which contain elements */ +;* not present in the arguments. For instance: */ +;* (api-compare-set '(foo bar) '(bar foo)) ==> #t */ +;* (api-compare-set '(foo gee) '(gee bar)) ==> '((foo) (bar)) */ +;*---------------------------------------------------------------------*/ +(define (api-compare-set s1 s2) + (let ((d1 (filter (lambda (x) (not (memq x s2))) s1)) + (d2 (filter (lambda (x) (not (memq x s1))) s2))) + (or (and (null? d1) (null? d2)) + (list d1 d2)))) + + +;*---------------------------------------------------------------------*/ +;* define-markup? ... */ +;*---------------------------------------------------------------------*/ +(define (define-markup? id o) + (match o + (((or 'define-markup 'define 'define* 'define-public 'define*-public) + ((? (lambda (x) (eq? x id))) + . (? (lambda (x) (or (pair? x) (null? x))))) + . _) + o) + (('define-simple-markup (? (lambda (x) (eq? x id)))) + o) + (('define-simple-container (? (lambda (x) (eq? x id)))) + o) + (else + #f))) + +;*---------------------------------------------------------------------*/ +;* make-engine? ... */ +;*---------------------------------------------------------------------*/ +(define (make-engine? id o) + ;(format #t "make-engine? ~a ~a~%" id o) + (match o + (((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))) + +;*---------------------------------------------------------------------*/ +;* make-engine-custom ... */ +;*---------------------------------------------------------------------*/ +(define (make-engine-custom def) + (let ((customs (memq :custom def))) + (match (if customs (cdr customs) #f) + ((((or 'quote 'quasiquote) custom) _ ___) + custom) + (((custom) _ ___) + (primitive-eval custom)) + (else + '())))) + +(define (sym/kw? x) + (or (symbol? x) (keyword? x))) + +;*---------------------------------------------------------------------*/ +;* define-markup-formals ... */ +;* ------------------------------------------------------------- */ +;* Returns the formal parameters of a define-markup (not the */ +;* options). */ +;*---------------------------------------------------------------------*/ +(define (define-markup-formals def) + (match def + ((_ (id args ___) _ ___) + (let loop ((args args) + (res '())) + (cond + ((null? args) + (reverse! res)) + ((symbol? args) + (reverse! (cons args res))) + ((not (symbol? (car args))) + (reverse! res)) + (else + (loop (cdr args) (cons (car args) res)))))) + (('define-simple-markup _) + '()) + (('define-simple-container _) + '()) + (else + (skribe-error 'define-markup-formals + "Illegal `define-markup' form" + def)))) + +;*---------------------------------------------------------------------*/ +;* define-markup-options ... */ +;* ------------------------------------------------------------- */ +;* Returns the options parameters of a define-markup. */ +;*---------------------------------------------------------------------*/ +(define (define-markup-options def) + (match def + ((_ (args ___) _ ___) + (if (not (list? args)) + '() + (let ((keys (memq #!key args))) + (if (pair? keys) + (cdr keys) ;; FIXME: do we need to filter ((key val)...)? + '())))) + (('define-simple-markup _) + '((ident #f) (class #f))) + (('define-simple-container _) + '((ident #f) (class #f))) + (else + (skribe-error 'define-markup-options + "Illegal `define-markup' form" + def)))) + +;*---------------------------------------------------------------------*/ +;* define-markup-rest ... */ +;* ------------------------------------------------------------- */ +;* Returns the rest parameter of a define-markup. */ +;*---------------------------------------------------------------------*/ +(define (define-markup-rest def) + (match def + ((_ (args ___) _) + (if (not (pair? args)) + args + (let ((l (last-pair args))) + (if (symbol? (cdr l)) + (cdr l) + (let ((rest (memq #!rest args))) + (if (pair? rest) + (if (or (not (pair? (cdr rest))) + (not (symbol? (cadr rest)))) + (skribe-error 'define-markup-rest + "Illegal `define-markup' form" + def) + (cadr rest)) + #f)))))) + (('define-simple-markup _) + 'node) + (('define-simple-container _) + 'node) + (else + (skribe-error 'define-markup-rest + "Illegal `define-markup' form" + def)))) + +;*---------------------------------------------------------------------*/ +;* doc-check-arguments ... */ +;*---------------------------------------------------------------------*/ +(define (doc-check-arguments id args dargs) + (if (not args) + (skribe-error 'doc-check-arguments id args)) + (if (not dargs) + (skribe-error 'doc-check-arguments id dargs)) + (let* ((s1 (map (lambda (x) (if (pair? x) (car x) x)) args)) + (s2 (map (lambda (x) + (let ((i (car x))) + (if (keyword? i) + (keyword->symbol i) + i))) + dargs)) + (d (api-compare-set s1 s2))) + (if (pair? d) + (let ((d1 (car d)) + (d2 (cadr d))) + (if (pair? d1) + (skribe-error 'doc-markup + (format #f "~a: missing descriptions" id) + d1) + (skribe-error 'doc-markup + (format #f "~a: extra descriptions" id) + d2)))))) + +;*---------------------------------------------------------------------*/ +;* exp->skribe ... */ +;*---------------------------------------------------------------------*/ +(define (exp->skribe exp) + (cond + ((number? exp) exp) + ((string? exp) (string-append "\"" exp "\"")) + ((eq? exp #f) "#f") + ((eq? exp #t) "#t") + ((symbol? exp) (symbol->string exp)) + ((equal? exp '(quote ())) "'()") + ((ast? exp) + (table :cellpadding 0 :cellspacing 0 + (tr (td :align 'left exp)))) + (else + (match exp + ((quote (and ?sym (? symbol?))) + (string-append "'" (symbol->string sym))) + (else + (with-output-to-string (lambda () (write exp)))))))) + +;*---------------------------------------------------------------------*/ +;* doc-markup-proto ... */ +;*---------------------------------------------------------------------*/ +(define (doc-markup-proto id options formals rest) + (define (option opt) + (if (pair? opt) + (if (eq? (cadr opt) #f) + (list " [" (keyword (car opt)) "]") + (list " [" (keyword (car opt)) " " + (code (exp->skribe (cadr opt))) "]")) + (list " " (keyword opt)))) + (define (formal f) + (list " " (param f))) + (code (list (bold "(") (bold :class 'api-proto-ident + (format #f "~a" id))) + (map option (sort options + (lambda (s1 s2) + (cond + ((and (pair? s1) (not (pair? s2))) + #f) + ((and (pair? s2) (not (pair? s1))) + #t) + (else + #t))))) + (if (pair? formals) + (map formal formals)) + (if rest (list " " (param rest))) + (bold ")"))) + +;*---------------------------------------------------------------------*/ +;* doc-markup ... */ +;*---------------------------------------------------------------------*/ +(define-markup (doc-markup id args + #!rest + opts + #!key + (ident #f) + (writer-id #f) + (common-args '((:ident "The node identifier.") + (:class "The node class."))) + (ignore-args '(&skribe-eval-location)) + (force-args '()) + (idx *markup-index*) + (idx-note "definition") + (idx-suffix #f) + (source "skribilo/package/base.scm") + (def #f) + (see-also '()) + (others '()) + (force-engines '()) + (engines *api-engines*) + (sui #f) + (skribe-source? #t) + &skribe-eval-location) + (define (opt-engine-support opt) + ;; find the engines providing a writer for id + (map (lambda (e) + (let* ((id (engine-ident e)) + (s (symbol->string id))) + (if (engine-format? "latex") + (list s " ") + (list (if sui + (ref :skribe sui + :mark (string-append s "-engine") + :text s) + (ref :mark (string-append s "-engine") + :text s)) + " ")))) + (if (pair? force-engines) + force-engines + (filter (lambda (e) + (or (memq opt '(:ident :class)) + (memq opt force-args) + (let ((w (markup-writer-get (or writer-id id) + e))) + (cond + ((not (writer? w)) + #f) + (else + (let ((o (writer-options w))) + (cond + ((eq? o 'all) + #t) + ((not (pair? o)) + #f) + (else + (memq opt o))))))))) + engines)))) + (cond + ((and def source) + (skribe-error 'doc-markup "source and def both specified" id)) + ((and (not def) (not source)) + (skribe-error 'doc-markup "source or def must be specified" id)) + (else + (let* ((d (or def (api-search-definition id source define-markup? + skribe-source?))) + (od (map (lambda (o) + (api-search-definition o source define-markup? + skribe-source?)) + others)) + (args (append common-args args)) + (formals (define-markup-formals d)) + (fformals (filter (lambda (s) + (let ((c (assq s args))) + (not + (and (pair? c) + (eq? (cadr c) 'ignore))))) + formals)) + (options (filter (lambda (s) + (not (memq s ignore-args))) + (define-markup-options d))) + (dformals (filter (lambda (x) + (symbol? (car x))) + args)) + (doptions (filter (lambda (x) + (and (keyword? (car x)) + ;; useful for STklos only + (not (eq? (car x) #!rest)))) + args)) + (drest (filter (lambda (x) + (eq? #!rest (car x))) + args)) + (dargs (and (pair? drest) (cadr (car drest)))) + (p+ (cons (doc-markup-proto id options fformals dargs) + (map (lambda (id def) + (doc-markup-proto + id + (define-markup-options def) + (define-markup-formals def) + dargs)) + others od)))) + ;; doc table + (define (doc-markup.html) + (let ((df (map (lambda (f) + (tr :bg *prgm-skribe-color* + (td :colspan 2 :width 20. :align 'left + (param (car f)) ) + (td :align 'left :width 80. (cadr f)))) + dformals)) + (dr (and (pair? drest) + (tr :bg *prgm-skribe-color* + (td :align 'left + :valign 'top + :colspan 2 + :width 20. + (param (cadr (car drest)))) + (td :align 'left :width 80. + (caddr (car drest)))))) + (do (map (lambda (f) + (tr :bg *prgm-skribe-color* + (td :align 'left + :valign 'top + :width 10. + (param (car f))) + (td :align 'left + :valign 'top + :width 20. + (opt-engine-support (car f))) + (td :align 'left :width 70. (cadr f)))) + doptions)) + (so (map (lambda (x) + (let ((s (symbol->string x))) + (list + (ref :mark s :text (code s)) + " "))) + see-also))) + (table :border (if (engine-format? "latex") 1 0) + :width (if (engine-format? "latex") #f *prgm-width*) + `(,(tr :class 'api-table-prototype + (th :colspan 3 :align 'left :width *prgm-width* + "prototype")) + ,@(map (lambda (p) + (tr :bg *prgm-skribe-color* + (td :colspan 3 :width *prgm-width* + :align 'left p))) + p+) + ,@(if (pair? do) + `(,(tr :class 'api-table-header + (th :align 'left "option" + :width 10.) + (th :align 'center "engines" + :width 20.) + (th "description")) + ,@do) + '()) + ,@(if (or (pair? df) dr) + `(,(tr :class 'api-table-header + (th :colspan 2 + :align 'left + :width 30. + "argument") + (th "description")) + ,@(if (pair? df) df '()) + ,@(if dr (list dr) '())) + '()) + ,@(if (pair? so) + `(,(tr :class 'api-table-header + (th :colspan 3 :align 'left + (it "See also"))) + ,(tr :bg *prgm-skribe-color* + (td :colspan 3 :align 'left so))) + '()))))) + ;; doc enumerate + (define (doc-markup.latex) + (let ((df (map (lambda (f) + (item :key (param (car f)) (cadr f))) + dformals)) + (dr (if (pair? drest) + (list (item :key (param (cadr (car drest))) + (caddr (car drest)))) + '())) + (do (map (lambda (f) + (item :key (param (car f)) + (list (opt-engine-support (car f)) + (cadr f)))) + doptions)) + (so (map (lambda (x) + (let ((s (symbol->string x))) + (list + (ref :mark s :page #t + :text [,(code s), p.]) + " "))) + see-also))) + (list (center + (frame :margin 5 :border 0 :width *prgm-width* + (color :class 'api-table-prototype + :margin 5 :width 100. :bg "#ccccff" + p+))) + (when (pair? do) + (subsubsection :title "Options" :number #f :toc #f + (description do))) + (when (or (pair? df) (pair? dr)) + (subsubsection :title "Parameters" :number #f :toc #f + (description (append df dr)))) + (when (pair? so) + (subsubsection :title "See also" :number #f :toc #f + (p so) + (! "\\noindent")))))) + ;; check all the descriptions + (doc-check-arguments id formals dformals) + (doc-check-arguments id options doptions) + (if (and (pair? drest) (not (define-markup-rest d))) + (skribe-error 'doc-markup "No rest argument for" id) + options) + (list (mark :class "public-definition" + (or ident (symbol->string id))) + (map (lambda (i) (mark (symbol->string i))) others) + (map (lambda (i) + (let ((is (symbol->string i))) + (index (if (string? idx-suffix) + (string-append is idx-suffix) + is) + :index idx + :note idx-note))) + (cons id others)) + (cond + ((engine-format? "latex") + (doc-markup.latex)) + (else + (center (doc-markup.html))))))))) + +;*---------------------------------------------------------------------*/ +;* doc-engine ... */ +;*---------------------------------------------------------------------*/ +(define-markup (doc-engine id args + #!rest + opts + #!key + (idx *custom-index*) + source + (skribe-source? #t) + (def #f)) + (cond + ((and def source) + (skribe-error 'doc-engine "source and def both specified" id)) + ((and (not def) (not source)) + (skribe-error 'doc-engine "source or def must be specified" id)) + (else + (let* ((d (or def (api-search-definition id source make-engine? + skribe-source?))) + (c (make-engine-custom d))) + (doc-check-arguments id c args) + (cond + ((engine-format? "latex") + #f) + (else + (center + (apply table + :width *prgm-width* + (tr :class 'api-table-header + (th :align 'left :width 20. "custom") + (th :width 10. "default") + (th "description")) + (map (lambda (r) + (tr :bg *prgm-skribe-color* + (td :align 'left :valign 'top + (list (index (symbol->string (car r)) + :index idx + :note (format #f "~a custom" + id)) + (symbol->string (car r)))) + (let ((def (assq (car r) c))) + (td :valign 'top + (code (exp->skribe (cadr def))))) + (td :align 'left :valign 'top (cadr r)))) + (filter cadr args)))))))))) + diff --git a/doc/modules/skribilo/documentation/env.scm b/doc/modules/skribilo/documentation/env.scm new file mode 100644 index 0000000..569f194 --- /dev/null +++ b/doc/modules/skribilo/documentation/env.scm @@ -0,0 +1,47 @@ +;;; env.scm -- The environment variables for the documentation. +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; Copyright 2005, 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +(define-module (skribilo documentation env) + :use-module (skribilo config) + :use-module (skribilo engine)) + +(define-public *serrano-url* "http://www.inria.fr/mimosa/Manuel.Serrano") +(define-public *serrano-mail* "Manuel.Serrano@sophia.inria.fr") +(define-public *courtes-mail* "ludovic.courtes@laas.fr") +(define-public *html-url* "http://www.w3.org/TR/html4") +(define-public *html-form* "interact/forms.html") +(define-public *emacs-url* "http://www.gnu.org/software/emacs") +(define-public *xemacs-url* "http://www.xemacs.org") +(define-public *texinfo-url* "http://www.texinfo.org") +(define-public *r5rs-url* "http://www.inria.fr/mimosa/fp/Bigloo/doc/r5rs.html") +(define-public *bigloo-url* "http://www.inria.fr/mimosa/fp/Bigloo") +(define-public *skribe-user-doc-url* (string-append (skribe-doc-dir) "/user.html")) +(define-public *skribe-dir-doc-url* (string-append (skribe-doc-dir) "/dir.html")) + +(define-public *prgm-width* 97.) +(define-public *prgm-skribe-color* "#ffffcc") +(define-public *prgm-default-color* "#ffffcc") +(define-public *prgm-xml-color* "#ffcccc") +(define-public *prgm-example-color* "#ccccff") +(define-public *disp-color* "#ccffcc") +(define-public *header-color* "#cccccc") + +(define-public *api-engines* (map find-engine '(html latex xml))) diff --git a/doc/modules/skribilo/documentation/extension.scm b/doc/modules/skribilo/documentation/extension.scm new file mode 100644 index 0000000..e012cb2 --- /dev/null +++ b/doc/modules/skribilo/documentation/extension.scm @@ -0,0 +1,111 @@ +;;; extension.scm -- The Skribe package for documenting extensions +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +(define-module (skribilo documentation extension) + :use-module (skribilo reader) + :use-module (skribilo utils compat)) + +(fluid-set! current-reader (make-reader 'skribe)) + + +;*---------------------------------------------------------------------*/ +;* extension */ +;*---------------------------------------------------------------------*/ +(define-markup (extension #!rest opt + #!key (ident (symbol->string (gensym 'extension))) + (class "extension") + title html-title ending author description + (env '())) + (new document + (markup 'extension) + (ident ident) + (class class) + (options (the-options opt)) + (body (the-body opt)) + (env (append env + (list (list 'example-counter 0) (list 'example-env '()) + (list 'chapter-counter 0) (list 'chapter-env '()) + (list 'section-counter 0) (list 'section-env '()) + (list 'footnote-counter 0) (list 'footnote-env '()) + (list 'figure-counter 0) (list 'figure-env '())))))) + +;*---------------------------------------------------------------------*/ +;* html engine */ +;*---------------------------------------------------------------------*/ +(let ((he (find-engine 'html))) + (engine-custom-set! he 'web-book-main-browsing-extra + (lambda (n e) + (let ((i (let ((m (find-markup-ident "Index"))) + (and (pair? m) (car m))))) + (if (not i) + (table :width 100. :border 0 :cellspacing 0 :cellpadding 0 + (tr (td :align 'left :valign 'top (bold "Skribe: ")) + (td :align 'right :valign 'top + (ref :url *skribe-dir-doc-url* + :text "Directory"))) + (tr (td) + (td :align 'right :valign 'top + (ref :url *skribe-user-doc-url* + :text "User Manual")))) + (table :width 100. :border 0 :cellspacing 0 :cellpadding 0 + (tr (td :align 'left :valign 'top (bold "index:")) + (td :align 'right (ref :handle (handle i)))) + (tr (td :align 'left :valign 'top (bold "Skribe: ")) + (td :align 'right :valign 'top + (ref :url *skribe-dir-doc-url* + :text "Directory"))) + (tr (td) + (td :align 'right :valign 'top + (ref :url *skribe-user-doc-url* + :text "User Manual")))))))) + (default-engine-set! he)) + +;*---------------------------------------------------------------------*/ +;* extension-sui ... */ +;*---------------------------------------------------------------------*/ +(define (extension-sui n e) + (define (sui) + (display "(sui \"") + (skribe-eval (markup-option n :title) html-title-engine) + (display "\"\n") + (printf " :file ~s\n" (sui-referenced-file n e)) + (printf " :description ~s\n" (markup-option n :description)) + (sui-marks n e) + (display " )\n")) + (if (string? *skribe-dest*) + (let ((f (format "~a.sui" (prefix *skribe-dest*)))) + (with-output-to-file f sui)) + (sui))) + +;*---------------------------------------------------------------------*/ +;* project ... */ +;*---------------------------------------------------------------------*/ +(markup-writer 'extension + :options '(:title :html-title :ending :author :description) + :action (lambda (n e) + (output n e (markup-writer-get 'document he))) + :after (lambda (n e) + (if (engine-custom e 'emit-sui) + (extension-sui n e)))) + +;*---------------------------------------------------------------------*/ +;* Restore the base engine */ +;*---------------------------------------------------------------------*/ +(default-engine-set! (find-engine 'base)) diff --git a/doc/modules/skribilo/documentation/manual.scm b/doc/modules/skribilo/documentation/manual.scm new file mode 100644 index 0000000..f2a6cdd --- /dev/null +++ b/doc/modules/skribilo/documentation/manual.scm @@ -0,0 +1,328 @@ +;;; manual.scm -- Skribe manuals and documentation pages style +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +(define-module (skribilo documentation manual) + :use-module (skribilo reader) + :use-module (skribilo engine) + :use-module (skribilo writer) + :use-module (skribilo ast) + :use-module (skribilo lib) ;; `define-markup' + :use-module (skribilo resolve) + :use-module (skribilo output) + :use-module (skribilo utils keywords) + :use-module (skribilo utils compat) + :use-module (skribilo utils syntax) ;; `when' + + :use-module (skribilo documentation env) + :use-module (skribilo package base) + :use-module (skribilo prog) + :use-module (skribilo coloring lisp) + :use-module (skribilo coloring xml) + + :use-module (ice-9 optargs)) + +(fluid-set! current-reader (make-reader 'skribe)) + + +;*---------------------------------------------------------------------*/ +;* The various indexes */ +;*---------------------------------------------------------------------*/ +(define-public *markup-index* (make-index "markup")) +(define-public *custom-index* (make-index "custom")) +(define-public *function-index* (make-index "function")) +(define-public *package-index* (make-index "package")) + +;*---------------------------------------------------------------------*/ +;* Base configuration */ +;*---------------------------------------------------------------------*/ +(let ((be (find-engine 'base))) + (markup-writer 'example be + :options '(:legend :number) + :action (lambda (n e) + (let ((ident (markup-ident n)) + (number (markup-option n :number)) + (legend (markup-option n :legend))) + (skribe-eval (mark ident) e) + (skribe-eval (center + (markup-body n) + (if number + (bold (format #f "Ex. ~a: " number))) + legend) + e))))) + +;*---------------------------------------------------------------------*/ +;* html-browsing-extra ... */ +;*---------------------------------------------------------------------*/ +(define (html-browsing-extra n e) + (let ((i1 (let ((m (find-markup-ident "Index"))) + (and (pair? m) (car m)))) + (i2 (let ((m (find-markup-ident "markups-index"))) + (and (pair? m) (car m))))) + (cond + ((not i1) + (skribe-error 'left-margin "Can't find section" "Index")) + ((not i2) + (skribe-error 'left-margin "Can't find chapter" "Standard Markups")) + (else + (table :width 100. + :border 0 + :cellspacing 0 :cellpadding 0 + (tr (td :align 'left :valign 'top (bold "index:")) + (td :align 'right (ref :handle (handle i1) :text "Global"))) + (tr (td :align 'left :valign 'top (bold "markups:")) + (td :align 'right (ref :handle (handle i2) :text "Index"))) + (tr (td :align 'left :valign 'top (bold "extensions:")) + (td :align 'right (ref :url *skribe-dir-doc-url* + :text "Directory")))))))) + +;*---------------------------------------------------------------------*/ +;* Html configuration */ +;*---------------------------------------------------------------------*/ +(let* ((he (find-engine 'html)) + (bd (markup-writer-get 'bold he))) + (markup-writer 'bold he + :class 'api-proto-ident + :before "" + :action (lambda (n e) (output n e bd)) + :after "") + (engine-custom-set! he 'web-book-main-browsing-extra html-browsing-extra) + (engine-custom-set! he 'favicon "lambda.gif")) + +;*---------------------------------------------------------------------*/ +;* LaTeX */ +;*---------------------------------------------------------------------*/ +(let* ((le (find-engine 'latex)) + (opckg (engine-custom le 'usepackage)) + (lpckg "\\usepackage{fullpage}\n\\usepackage{eurosym}\n") + (npckg (if (string? opckg) + (string-append lpckg opckg) + lpckg))) + (engine-custom-set! le 'documentclass "\\documentclass{book}") + (engine-custom-set! le 'usepackage npckg)) + +;*---------------------------------------------------------------------*/ +;* prgm ... */ +;*---------------------------------------------------------------------*/ +(define-markup (prgm #!rest opts #!key (language skribe) (line #f) (file #f) (definition #f)) + (let* ((c (cond + ((eq? language skribe) *prgm-skribe-color*) + ((eq? language xml) *prgm-xml-color*) + (else *prgm-default-color*))) + (sc (cond + ((and file definition) + (source :language language :file file :definition definition)) + (file + (source :language language :file file)) + (else + (source :language language (the-body opts))))) + (pr (cond + (line + (prog :line line sc)) + (else + (pre sc))))) + (center + (frame :margin 5 :border 0 :width *prgm-width* + (color :margin 5 :width 100. :bg c pr))))) + +;*---------------------------------------------------------------------*/ +;* disp ... */ +;*---------------------------------------------------------------------*/ +(define-markup (disp #!rest opts #!key (verb #f) (line #f) (bg *disp-color*)) + (if (engine-format? "latex") + (if verb + (pre (the-body opts)) + (the-body opts)) + (center + (frame :margin 5 :border 0 :width *prgm-width* + (color :margin 5 :width 100. :bg bg + (if verb + (pre (the-body opts)) + (the-body opts))))))) + +;*---------------------------------------------------------------------*/ +;* keyword ... */ +;*---------------------------------------------------------------------*/ +(define-markup (keyword arg) + (new markup + (markup '&source-key) + (body (cond + ((keyword? arg) + (with-output-to-string + (lambda () + (write arg)))) + ((symbol? arg) + (string-append ":" (symbol->string arg))) + (else + arg))))) + +;*---------------------------------------------------------------------*/ +;* param ... */ +;*---------------------------------------------------------------------*/ +(define-markup (param arg) + (cond + ((keyword? arg) + (keyword arg)) + ((symbol? arg) + (code (symbol->string arg))) + (else + arg))) + +;*---------------------------------------------------------------------*/ +;* example ... */ +;*---------------------------------------------------------------------*/ +(define-markup (example #!rest opts #!key legend class) + (new container + (markup 'example) + (ident (symbol->string (gensym 'example))) + (class class) + (required-options '(:legend :number)) + (options `((:number + ,(new unresolved + (proc (lambda (n e env) + (resolve-counter n env 'example #t))))) + ,@(the-options opts :ident :class))) + (body (the-body opts)))) + +;*---------------------------------------------------------------------*/ +;* example-produce ... */ +;*---------------------------------------------------------------------*/ +(define-markup (example-produce example . produce) + (list (it "Example:") + example + (if (pair? produce) + (list (paragraph "Produces:") (car produce))))) + +;*---------------------------------------------------------------------*/ +;* markup-ref ... */ +;*---------------------------------------------------------------------*/ +(define-markup (markup-ref mk) + (ref :mark mk :text (code mk))) + +;*---------------------------------------------------------------------*/ +;* &the-index ... */ +;*---------------------------------------------------------------------*/ +(markup-writer '&the-index + :class 'markup-index + :options '(:column) + :before (lambda (n e) + (output (markup-option n 'header) e)) + :action (lambda (n e) + (define (make-mark-entry n fst) + (let ((l (tr :class 'index-mark-entry + (td :colspan 2 :align 'left + (bold (it (sf n))))))) + (if fst + (list l) + (list (tr (td :colspan 2)) l)))) + (define (make-primary-entry n p) + (let* ((note (markup-option n :note)) + (b (markup-body n))) + (when p + (markup-option-add! b :text + (list (markup-option b :text) + ", p.")) + (markup-option-add! b :page #t)) + (tr :class 'index-primary-entry + (td :colspan 2 :valign 'top :align 'left b)))) + (define (make-column ie p) + (let loop ((ie ie) + (f #t)) + (cond + ((null? ie) + '()) + ((not (pair? (car ie))) + (append (make-mark-entry (car ie) f) + (loop (cdr ie) #f))) + (else + (cons (make-primary-entry (caar ie) p) + (loop (cdr ie) #f)))))) + (define (make-sub-tables ie nc p) + (define (split-list l num) + (let loop ((l l) + (i 0) + (acc '()) + (res '())) + (cond + ((null? l) + (reverse! (cons (reverse! acc) res))) + ((= i num) + (loop l + 0 + '() + (cons (reverse! acc) res))) + (else + (loop (cdr l) + (+ i 1) + (cons (car l) acc) + res))))) + (let* ((l (length ie)) + (w (/ 100. nc)) + (iepc (let ((d (/ l nc))) + (if (integer? d) + (inexact->exact d) + (+ 1 (inexact->exact (truncate d)))))) + (split (split-list ie iepc))) + (tr (map (lambda (ies) + (td :valign 'top :width w + (if (pair? ies) + (table :width 100. (make-column ies p)) + ""))) + split)))) + (let* ((ie (markup-body n)) + (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 + (make-column ie pref))) + (else + (table :width 100. ;;:&skribe-eval-location loc + (make-sub-tables ie nc pref)))))) + (output (skribe-eval t e) e)))) + +;*---------------------------------------------------------------------*/ +;* compiler-command ... */ +;*---------------------------------------------------------------------*/ +(define-markup (compiler-command bin . opts) + (disp :verb #t + (color :fg "red" (bold bin)) + (map (lambda (o) + (list " [" (it o) "]")) + opts) + "...")) + +;*---------------------------------------------------------------------*/ +;* compiler-options ... */ +;*---------------------------------------------------------------------*/ +(define-markup (compiler-options bin) + (skribe-message " [executing: ~a --options]\n" bin) + (let ((port (open-input-file (format #f "| ~a --options" bin)))) + (let ((opts (read port))) + (close-input-port port) + (apply description (map (lambda (opt) (item :key (bold (car opt)) + (cadr opt) ".")) + opts))))) diff --git a/doc/skr/api.skr b/doc/skr/api.skr deleted file mode 100644 index a27c3a4..0000000 --- a/doc/skr/api.skr +++ /dev/null @@ -1,575 +0,0 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/skr/api.skr */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 07:45:33 2003 */ -;* Last change : Tue Apr 6 06:51:34 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe style for documenting Lisp APIs. */ -;*=====================================================================*/ - -;*---------------------------------------------------------------------*/ -;* Html configuration */ -;*---------------------------------------------------------------------*/ -(let* ((he (find-engine 'html)) - (tro (markup-writer-get 'tr he))) - (markup-writer 'tr he - :class 'api-table-header - :options '(:width :bg) - :action (lambda (n e) - (let ((c (engine-custom e 'section-title-background))) - (markup-option-add! n :bg c) - (output n e tro)))) - (markup-writer 'tr he - :class 'api-table-prototype - :options '(:width :bg) - :action (lambda (n e) - (let ((c (engine-custom e 'title-background))) - (markup-option-add! n :bg c) - (output n e tro)))) - (markup-writer 'tr he - :class 'api-symbol-prototype - :options '(:width :bg) - :action (lambda (n e) - (let ((c (engine-custom e 'title-background))) - (markup-option-add! n :bg c) - (output n e tro))))) - -;*---------------------------------------------------------------------*/ -;* LaTeX configuration */ -;*---------------------------------------------------------------------*/ -(let* ((le (find-engine 'latex)) - (tro (markup-writer-get 'tr le))) - (markup-writer 'tr le - :class 'api-table-prototype - :options '(:width :bg) - :action #f) - (markup-writer 'tr le - :class 'api-table-header - :options '(:width :bg) - :action (lambda (n e) - (let ((c (engine-custom e 'section-title-background))) - (markup-option-add! n :bg c) - (output n e tro))))) - -;*---------------------------------------------------------------------*/ -;* api-search-definition ... */ -;* ------------------------------------------------------------- */ -;* Find a definition inside a source file. */ -;*---------------------------------------------------------------------*/ -(define (api-search-definition id file pred) - (let ((f (find-file/path file *skribe-source-path*))) - (if (not (string? f)) - (skribe-error 'api-search-definition - (format "Can't find source file `~a' in path" file) - *skribe-source-path*) - (with-input-from-file f - (lambda () - (let loop ((exp (read))) - (if (eof-object? exp) - (skribe-error 'api-search-definition - (format "Can't find `~a' definition" id) - file) - (or (pred id exp) (loop (read)))))))))) - -;*---------------------------------------------------------------------*/ -;* api-compare-set ... */ -;* ------------------------------------------------------------- */ -;* This function compares two sets. It returns either #t */ -;* is they are equal, or two subsets which contain elements */ -;* not present in the arguments. For instance: */ -;* (api-compare-set '(foo bar) '(bar foo)) ==> #t */ -;* (api-compare-set '(foo gee) '(gee bar)) ==> '((foo) (bar)) */ -;*---------------------------------------------------------------------*/ -(define (api-compare-set s1 s2) - (let ((d1 (filter (lambda (x) (not (memq x s2))) s1)) - (d2 (filter (lambda (x) (not (memq x s1))) s2))) - (or (and (null? d1) (null? d2)) - (list d1 d2)))) - -;*---------------------------------------------------------------------*/ -;* keyword->symbol ... */ -;*---------------------------------------------------------------------*/ -(define (keyword->symbol kwd) - (let ((s (keyword->string kwd))) - (if (char=? #\: (string-ref s 0)) - ;; Bigloo - (string->symbol (substring s 1 (string-length s))) - ;; STklos - (string->symbol s)))) - -;*---------------------------------------------------------------------*/ -;* define-markup? ... */ -;*---------------------------------------------------------------------*/ -(define (define-markup? id o) - (match-case o - (((or define-markup define define-inline) - ((? (lambda (x) (eq? x id))) . (? (lambda (x) (or (pair? x) (null? x))))) . ?-) - o) - ((define-simple-markup (? (lambda (x) (eq? x id)))) - o) - ((define-simple-container (? (lambda (x) (eq? x id)))) - o) - (else - #f))) - -;*---------------------------------------------------------------------*/ -;* make-engine? ... */ -;*---------------------------------------------------------------------*/ -(define (make-engine? id o) - (match-case o - (((or make-engine copy-engine) (quote (? (lambda (x) (eq? x id)))) . ?-) - o) - ((quasiquote . ?-) - #f) - ((quote . ?-) - #f) - ((?a . ?d) - (or (make-engine? id a) (make-engine? id d))) - (else - #f))) - -;*---------------------------------------------------------------------*/ -;* make-engine-custom ... */ -;*---------------------------------------------------------------------*/ -(define (make-engine-custom def) - (match-case (memq :custom def) - ((:custom (quote ?custom) . ?-) - custom) - ((:custom ?custom . ?-) - (eval custom)) - (else - '()))) - -;*---------------------------------------------------------------------*/ -;* define-markup-formals ... */ -;* ------------------------------------------------------------- */ -;* Returns the formal parameters of a define-markup (not the */ -;* options). */ -;*---------------------------------------------------------------------*/ -(define (define-markup-formals def) - (match-case def - ((?- (?- . ?args) . ?-) - (if (symbol? args) - (list args) - (let loop ((args args) - (res '())) - (cond - ((null? args) - (reverse! res)) - ((symbol? args) - (reverse! (cons args res))) - ((not (symbol? (car args))) - (reverse! res)) - (else - (loop (cdr args) (cons (car args) res))))))) - ((define-simple-markup ?-) - '()) - ((define-simple-container ?-) - '()) - (else - (skribe-error 'define-markup-formals - "Illegal `define-markup' form" - def)))) - -;*---------------------------------------------------------------------*/ -;* define-markup-options ... */ -;* ------------------------------------------------------------- */ -;* Returns the options parameters of a define-markup. */ -;*---------------------------------------------------------------------*/ -(define (define-markup-options def) - (match-case def - ((?- (?- . ?args) . ?-) - (if (not (list? args)) - '() - (let ((keys (memq #!key args))) - (if (pair? keys) - (cdr keys) - '())))) - ((define-simple-markup ?-) - '((ident #f) (class #f))) - ((define-simple-container ?-) - '((ident #f) (class #f))) - (else - (skribe-error 'define-markup-formals - "Illegal `define-markup' form" - def)))) - -;*---------------------------------------------------------------------*/ -;* define-markup-rest ... */ -;* ------------------------------------------------------------- */ -;* Returns the rest parameter of a define-markup. */ -;*---------------------------------------------------------------------*/ -(define (define-markup-rest def) - (match-case def - ((?- (?- . ?args) . ?-) - (if (not (pair? args)) - args - (let ((l (last-pair args))) - (if (symbol? (cdr l)) - (cdr l) - (let ((rest (memq #!rest args))) - (if (pair? rest) - (if (or (not (pair? (cdr rest))) - (not (symbol? (cadr rest)))) - (skribe-error 'define-markup-rest - "Illegal `define-markup' form" - def) - (cadr rest)) - #f)))))) - ((define-simple-markup ?-) - 'node) - ((define-simple-container ?-) - 'node) - (else - (skribe-error 'define-markup-formals - "Illegal `define-markup' form" - def)))) - -;*---------------------------------------------------------------------*/ -;* doc-check-arguments ... */ -;*---------------------------------------------------------------------*/ -(define (doc-check-arguments id args dargs) - (if (not args) - (skribe-error 'doc-check-arguments id args)) - (if (not dargs) - (skribe-error 'doc-check-arguments id dargs)) - (let* ((s1 (map (lambda (x) (if (pair? x) (car x) x)) args)) - (s2 (map (lambda (x) - (let ((i (car x))) - (if (keyword? i) - (keyword->symbol i) - i))) - dargs)) - (d (api-compare-set s1 s2))) - (if (pair? d) - (let ((d1 (car d)) - (d2 (cadr d))) - (if (pair? d1) - (skribe-error 'doc-markup - (format "~a: missing descriptions" id) - d1) - (skribe-error 'doc-markup - (format "~a: extra descriptions" id) - d2)))))) - -;*---------------------------------------------------------------------*/ -;* exp->skribe ... */ -;*---------------------------------------------------------------------*/ -(define (exp->skribe exp) - (cond - ((number? exp) exp) - ((string? exp) (string-append "\"" exp "\"")) - ((eq? exp #f) "#f") - ((eq? exp #t) "#t") - ((symbol? exp) (symbol->string exp)) - ((equal? exp '(quote ())) "'()") - ((ast? exp) - (table :cellpadding 0 :cellspacing 0 - (tr (td :align 'left exp)))) - (else - (match-case exp - ((quote (and ?sym (? symbol?))) - (string-append "'" (symbol->string sym))) - (else - (with-output-to-string (lambda () (write exp)))))))) - -;*---------------------------------------------------------------------*/ -;* doc-markup-proto ... */ -;*---------------------------------------------------------------------*/ -(define (doc-markup-proto id options formals rest) - (define (option opt) - (if (pair? opt) - (if (eq? (cadr opt) #f) - (list " [" (keyword (car opt)) "]") - (list " [" (keyword (car opt)) " " - (code (exp->skribe (cadr opt))) "]")) - (list " " (keyword opt)))) - (define (formal f) - (list " " (param f))) - (code (list (bold "(") (bold :class 'api-proto-ident (format "~a" id))) - (map option (sort options - (lambda (s1 s2) - (cond - ((and (pair? s1) (not (pair? s2))) - #f) - ((and (pair? s2) (not (pair? s1))) - #t) - (else - #t))))) - (if (pair? formals) - (map formal formals)) - (if rest (list " " (param rest))) - (bold ")"))) - -;*---------------------------------------------------------------------*/ -;* doc-markup ... */ -;*---------------------------------------------------------------------*/ -(define-markup (doc-markup id args - #!rest - opts - #!key - (writer-id #f) - (common-args '((:ident "The node identifier.") - (:class "The node class."))) - (ignore-args '(&skribe-eval-location)) - (force-args '()) - (idx *markup-index*) - (idx-note "definition") - (idx-suffix #f) - (source "src/common/api.scm") - (def #f) - (see-also '()) - (others '()) - (force-engines '()) - (engines *api-engines*) - (sui #f) - &skribe-eval-location) - (define (opt-engine-support opt) - ;; find the engines providing a writer for id - (map (lambda (e) - (let* ((id (engine-ident e)) - (s (symbol->string id))) - (if (engine-format? "latex") - (list s " ") - (list (if sui - (ref :skribe sui - :mark (string-append s "-engine") - :text s) - (ref :mark (string-append s "-engine") - :text s)) - " ")))) - (if (pair? force-engines) - force-engines - (filter (lambda (e) - (or (memq opt '(:ident :class)) - (memq opt force-args) - (let ((w (markup-writer-get (or writer-id id) - e))) - (cond - ((not (writer? w)) - #f) - (else - (let ((o (writer-options w))) - (cond - ((eq? o 'all) - #t) - ((not (pair? o)) - #f) - (else - (memq opt o))))))))) - engines)))) - (cond - ((and def source) - (skribe-error 'doc-markup "source and def both specified" id)) - ((and (not def) (not source)) - (skribe-error 'doc-markup "source or def must be specified" id)) - (else - (let* ((d (or def (api-search-definition id source define-markup?))) - (od (map (lambda (o) - (api-search-definition o source define-markup?)) - others)) - (args (append common-args args)) - (formals (define-markup-formals d)) - (fformals (filter (lambda (s) - (let ((c (assq s args))) - (not - (and (pair? c) - (eq? (cadr c) 'ignore))))) - formals)) - (options (filter (lambda (s) - (not (memq s ignore-args))) - (define-markup-options d))) - (dformals (filter (lambda (x) - (symbol? (car x))) - args)) - (doptions (filter (lambda (x) - (and (keyword? (car x)) - ;; useful for STklos only - (not (eq? (car x) #!rest)))) - args)) - (drest (filter (lambda (x) - (eq? #!rest (car x))) - args)) - (dargs (and (pair? drest) (cadr (car drest)))) - (p+ (cons (doc-markup-proto id options fformals dargs) - (map (lambda (id def) - (doc-markup-proto - id - (define-markup-options def) - (define-markup-formals def) - dargs)) - others od)))) - ;; doc table - (define (doc-markup.html) - (let ((df (map (lambda (f) - (tr :bg *prgm-skribe-color* - (td :colspan 2 :width 20. :align 'left - (param (car f)) ) - (td :align 'left :width 80. (cadr f)))) - dformals)) - (dr (and (pair? drest) - (tr :bg *prgm-skribe-color* - (td :align 'left - :valign 'top - :colspan 2 - :width 20. - (param (cadr (car drest)))) - (td :align 'left :width 80. - (caddr (car drest)))))) - (do (map (lambda (f) - (tr :bg *prgm-skribe-color* - (td :align 'left - :valign 'top - :width 10. - (param (car f))) - (td :align 'left - :valign 'top - :width 20. - (opt-engine-support (car f))) - (td :align 'left :width 70. (cadr f)))) - doptions)) - (so (map (lambda (x) - (let ((s (symbol->string x))) - (list - (ref :mark s :text (code s)) - " "))) - see-also))) - (table :border (if (engine-format? "latex") 1 0) - :width (if (engine-format? "latex") #f *prgm-width*) - `(,(tr :class 'api-table-prototype - (th :colspan 3 :align 'left :width *prgm-width* - "prototype")) - ,@(map (lambda (p) - (tr :bg *prgm-skribe-color* - (td :colspan 3 :width *prgm-width* - :align 'left p))) - p+) - ,@(if (pair? do) - `(,(tr :class 'api-table-header - (th :align 'left "option" - :width 10.) - (th :align 'center "engines" - :width 20.) - (th "description")) - ,@do) - '()) - ,@(if (or (pair? df) dr) - `(,(tr :class 'api-table-header - (th :colspan 2 - :align 'left - :width 30. - "argument") - (th "description")) - ,@(if (pair? df) df '()) - ,@(if dr (list dr) '())) - '()) - ,@(if (pair? so) - `(,(tr :class 'api-table-header - (th :colspan 3 :align 'left - (it "See also"))) - ,(tr :bg *prgm-skribe-color* - (td :colspan 3 :align 'left so))) - '()))))) - ;; doc enumerate - (define (doc-markup.latex) - (let ((df (map (lambda (f) - (item :key (param (car f)) (cadr f))) - dformals)) - (dr (if (pair? drest) - (list (item :key (param (cadr (car drest))) - (caddr (car drest)))) - '())) - (do (map (lambda (f) - (item :key (param (car f)) - (list (opt-engine-support (car f)) - (cadr f)))) - doptions)) - (so (map (lambda (x) - (let ((s (symbol->string x))) - (list - (ref :mark s :page #t - :text [,(code s), p.]) - " "))) - see-also))) - (list (center - (frame :margin 5 :border 0 :width *prgm-width* - (color :class 'api-table-prototype - :margin 5 :width 100. :bg "#ccccff" - p+))) - (when (pair? do) - (subsubsection :title "Options" :number #f :toc #f - (description do))) - (when (or (pair? df) (pair? dr)) - (subsubsection :title "Parameters" :number #f :toc #f - (description (append df dr)))) - (when (pair? so) - (subsubsection :title "See also" :number #f :toc #f - (p so) - (! "\\noindent")))))) - ;; check all the descriptions - (doc-check-arguments id formals dformals) - (doc-check-arguments id options doptions) - (if (and (pair? drest) (not (define-markup-rest d))) - (skribe-error 'doc-markup "No rest argument for" id) - options) - (list (mark :class "public-definition" (symbol->string id)) - (map (lambda (i) (mark (symbol->string i))) others) - (map (lambda (i) - (let ((is (symbol->string i))) - (index (if (string? idx-suffix) - (string-append is idx-suffix) - is) - :index idx - :note idx-note))) - (cons id others)) - (cond - ((engine-format? "latex") - (doc-markup.latex)) - (else - (center (doc-markup.html))))))))) - -;*---------------------------------------------------------------------*/ -;* doc-engine ... */ -;*---------------------------------------------------------------------*/ -(define-markup (doc-engine id args - #!rest - opts - #!key - (idx *custom-index*) - source - (def #f)) - (cond - ((and def source) - (skribe-error 'doc-engine "source and def both specified" id)) - ((and (not def) (not source)) - (skribe-error 'doc-engine "source or def must be specified" id)) - (else - (let* ((d (or def (api-search-definition id source make-engine?))) - (c (make-engine-custom d))) - (doc-check-arguments id c args) - (cond - ((engine-format? "latex") - #f) - (else - (center - (apply table - :width *prgm-width* - (tr :class 'api-table-header - (th :align 'left :width 20. "custom") - (th :width 10. "default") - (th "description")) - (map (lambda (r) - (tr :bg *prgm-skribe-color* - (td :align 'left :valign 'top - (list (index (symbol->string (car r)) - :index idx - :note (format "~a custom" id)) - (symbol->string (car r)))) - (let ((def (assq (car r) c))) - (td :valign 'top - (code (exp->skribe (cadr def))))) - (td :align 'left :valign 'top (cadr r)))) - (filter cadr args)))))))))) - diff --git a/doc/skr/env.skr b/doc/skr/env.skr deleted file mode 100644 index 09d5146..0000000 --- a/doc/skr/env.skr +++ /dev/null @@ -1,32 +0,0 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/skr/env.skr */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Mon Sep 1 10:22:42 2003 */ -;* Last change : Thu Jan 29 06:48:54 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The environment variables for the documentation. */ -;*=====================================================================*/ - -(define *serrano-url* "http://www.inria.fr/mimosa/Manuel.Serrano") -(define *serrano-mail* "Manuel.Serrano@sophia.inria.fr") -(define *html-url* "http://www.w3.org/TR/html4") -(define *html-form* "interact/forms.html") -(define *emacs-url* "http://www.gnu.org/software/emacs") -(define *xemacs-url* "http://www.xemacs.org") -(define *texinfo-url* "http://www.texinfo.org") -(define *r5rs-url* "http://www.inria.fr/mimosa/fp/Bigloo/doc/r5rs.html") -(define *bigloo-url* "http://www.inria.fr/mimosa/fp/Bigloo") -(define *skribe-user-doc-url* (string-append (skribe-doc-dir) "/user.html")) -(define *skribe-dir-doc-url* (string-append (skribe-doc-dir) "/dir.html")) - -(define *prgm-width* 97.) -(define *prgm-skribe-color* "#ffffcc") -(define *prgm-default-color* "#ffffcc") -(define *prgm-xml-color* "#ffcccc") -(define *prgm-example-color* "#ccccff") -(define *disp-color* "#ccffcc") -(define *header-color* "#cccccc") - -(define *api-engines* (map find-engine '(html latex xml))) diff --git a/doc/skr/extension.skr b/doc/skr/extension.skr deleted file mode 100644 index ce10ce7..0000000 --- a/doc/skr/extension.skr +++ /dev/null @@ -1,95 +0,0 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/skr/extension.skr */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Tue Dec 23 07:18:36 2003 */ -;* Last change : Fri Jan 2 21:25:49 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe package for documenting extensions */ -;*=====================================================================*/ - -;*---------------------------------------------------------------------*/ -;* extension */ -;*---------------------------------------------------------------------*/ -(define-markup (extension #!rest opt - #!key (ident (symbol->string (gensym 'extension))) - (class "extension") - title html-title ending author description - (env '())) - (new document - (markup 'extension) - (ident ident) - (class class) - (options (the-options opt)) - (body (the-body opt)) - (env (append env - (list (list 'example-counter 0) (list 'example-env '()) - (list 'chapter-counter 0) (list 'chapter-env '()) - (list 'section-counter 0) (list 'section-env '()) - (list 'footnote-counter 0) (list 'footnote-env '()) - (list 'figure-counter 0) (list 'figure-env '())))))) - -;*---------------------------------------------------------------------*/ -;* html engine */ -;*---------------------------------------------------------------------*/ -(let ((he (find-engine 'html))) - (engine-custom-set! he 'web-book-main-browsing-extra - (lambda (n e) - (let ((i (let ((m (find-markup-ident "Index"))) - (and (pair? m) (car m))))) - (if (not i) - (table :width 100. :border 0 :cellspacing 0 :cellpadding 0 - (tr (td :align 'left :valign 'top (bold "Skribe: ")) - (td :align 'right :valign 'top - (ref :url *skribe-dir-doc-url* - :text "Directory"))) - (tr (td) - (td :align 'right :valign 'top - (ref :url *skribe-user-doc-url* - :text "User Manual")))) - (table :width 100. :border 0 :cellspacing 0 :cellpadding 0 - (tr (td :align 'left :valign 'top (bold "index:")) - (td :align 'right (ref :handle (handle i)))) - (tr (td :align 'left :valign 'top (bold "Skribe: ")) - (td :align 'right :valign 'top - (ref :url *skribe-dir-doc-url* - :text "Directory"))) - (tr (td) - (td :align 'right :valign 'top - (ref :url *skribe-user-doc-url* - :text "User Manual")))))))) - (default-engine-set! he)) - -;*---------------------------------------------------------------------*/ -;* extension-sui ... */ -;*---------------------------------------------------------------------*/ -(define (extension-sui n e) - (define (sui) - (display "(sui \"") - (skribe-eval (markup-option n :title) html-title-engine) - (display "\"\n") - (printf " :file ~s\n" (sui-referenced-file n e)) - (printf " :description ~s\n" (markup-option n :description)) - (sui-marks n e) - (display " )\n")) - (if (string? *skribe-dest*) - (let ((f (format "~a.sui" (prefix *skribe-dest*)))) - (with-output-to-file f sui)) - (sui))) - -;*---------------------------------------------------------------------*/ -;* project ... */ -;*---------------------------------------------------------------------*/ -(markup-writer 'extension - :options '(:title :html-title :ending :author :description) - :action (lambda (n e) - (output n e (markup-writer-get 'document he))) - :after (lambda (n e) - (if (engine-custom e 'emit-sui) - (extension-sui n e)))) - -;*---------------------------------------------------------------------*/ -;* Restore the base engine */ -;*---------------------------------------------------------------------*/ -(default-engine-set! (find-engine 'base)) diff --git a/doc/skr/manual.skr b/doc/skr/manual.skr deleted file mode 100644 index 1982237..0000000 --- a/doc/skr/manual.skr +++ /dev/null @@ -1,281 +0,0 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/skr/manual.skr */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Mon Sep 1 11:24:19 2003 */ -;* Last change : Mon Sep 13 19:18:48 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe manuals and documentation pages style */ -;*=====================================================================*/ - -;*---------------------------------------------------------------------*/ -;* Base configuration */ -;*---------------------------------------------------------------------*/ -(let ((be (find-engine 'base))) - (markup-writer 'example be - :options '(:legend :number) - :action (lambda (n e) - (let ((ident (markup-ident n)) - (number (markup-option n :number)) - (legend (markup-option n :legend))) - (skribe-eval (mark ident) e) - (skribe-eval (center - (markup-body n) - (if number (bold (format "Ex. ~a: " number))) - legend) - e))))) - -;*---------------------------------------------------------------------*/ -;* html-browsing-extra ... */ -;*---------------------------------------------------------------------*/ -(define (html-browsing-extra n e) - (let ((i1 (let ((m (find-markup-ident "Index"))) - (and (pair? m) (car m)))) - (i2 (let ((m (find-markup-ident "markups-index"))) - (and (pair? m) (car m))))) - (cond - ((not i1) - (skribe-error 'left-margin "Can't find section" "Index")) - ((not i2) - (skribe-error 'left-margin "Can't find chapter" "Standard Markups")) - (else - (table :width 100. - :border 0 - :cellspacing 0 :cellpadding 0 - (tr (td :align 'left :valign 'top (bold "index:")) - (td :align 'right (ref :handle (handle i1) :text "Global"))) - (tr (td :align 'left :valign 'top (bold "markups:")) - (td :align 'right (ref :handle (handle i2) :text "Index"))) - (tr (td :align 'left :valign 'top (bold "extensions:")) - (td :align 'right (ref :url *skribe-dir-doc-url* - :text "Directory")))))))) - -;*---------------------------------------------------------------------*/ -;* Html configuration */ -;*---------------------------------------------------------------------*/ -(let* ((he (find-engine 'html)) - (bd (markup-writer-get 'bold he))) - (markup-writer 'bold he - :class 'api-proto-ident - :before "" - :action (lambda (n e) (output n e bd)) - :after "") - (engine-custom-set! he 'web-book-main-browsing-extra html-browsing-extra) - (engine-custom-set! he 'favicon "lambda.gif")) - -;*---------------------------------------------------------------------*/ -;* LaTeX */ -;*---------------------------------------------------------------------*/ -(let* ((le (find-engine 'latex)) - (opckg (engine-custom le 'usepackage)) - (lpckg "\\usepackage{fullpage}\n\\usepackage{eurosym}\n") - (npckg (if (string? opckg) - (string-append lpckg opckg) - lpckg))) - (engine-custom-set! le 'documentclass "\\documentclass{book}") - (engine-custom-set! le 'usepackage npckg)) - -;*---------------------------------------------------------------------*/ -;* prgm ... */ -;*---------------------------------------------------------------------*/ -(define-markup (prgm #!rest opts #!key (language skribe) (line #f) (file #f) (definition #f)) - (let* ((c (cond - ((eq? language skribe) *prgm-skribe-color*) - ((eq? language xml) *prgm-xml-color*) - (else *prgm-default-color*))) - (sc (cond - ((and file definition) - (source :language language :file file :definition definition)) - (file - (source :language language :file file)) - (else - (source :language language (the-body opts))))) - (pr (cond - (line - (prog :line line sc)) - (else - (pre sc))))) - (center - (frame :margin 5 :border 0 :width *prgm-width* - (color :margin 5 :width 100. :bg c pr))))) - -;*---------------------------------------------------------------------*/ -;* disp ... */ -;*---------------------------------------------------------------------*/ -(define-markup (disp #!rest opts #!key (verb #f) (line #f) (bg *disp-color*)) - (if (engine-format? "latex") - (if verb - (pre (the-body opts)) - (the-body opts)) - (center - (frame :margin 5 :border 0 :width *prgm-width* - (color :margin 5 :width 100. :bg bg - (if verb - (pre (the-body opts)) - (the-body opts))))))) - -;*---------------------------------------------------------------------*/ -;* keyword ... */ -;*---------------------------------------------------------------------*/ -(define-markup (keyword arg) - (new markup - (markup '&source-key) - (body (cond - ((keyword? arg) - (keyword->string arg)) - ((symbol? arg) - (string-append ":" (symbol->string arg))) - (else - arg))))) - -;*---------------------------------------------------------------------*/ -;* param ... */ -;*---------------------------------------------------------------------*/ -(define-markup (param arg) - (cond - ((keyword? arg) - (keyword arg)) - ((symbol? arg) - (code (symbol->string arg))) - (else - arg))) - -;*---------------------------------------------------------------------*/ -;* example ... */ -;*---------------------------------------------------------------------*/ -(define-markup (example #!rest opts #!key legend class) - (new container - (markup 'example) - (ident (symbol->string (gensym 'example))) - (class class) - (required-options '(:legend :number)) - (options `((:number - ,(new unresolved - (proc (lambda (n e env) - (resolve-counter n env 'example #t))))) - ,@(the-options opts :ident :class))) - (body (the-body opts)))) - -;*---------------------------------------------------------------------*/ -;* example-produce ... */ -;*---------------------------------------------------------------------*/ -(define-markup (example-produce example . produce) - (list (it "Example:") - example - (if (pair? produce) - (list (paragraph "Produces:") (car produce))))) - -;*---------------------------------------------------------------------*/ -;* markup-ref ... */ -;*---------------------------------------------------------------------*/ -(define-markup (markup-ref mk) - (ref :mark mk :text (code mk))) - -;*---------------------------------------------------------------------*/ -;* &the-index ... */ -;*---------------------------------------------------------------------*/ -(markup-writer '&the-index - :class 'markup-index - :options '(:column) - :before (lambda (n e) - (output (markup-option n 'header) e)) - :action (lambda (n e) - (define (make-mark-entry n fst) - (let ((l (tr :class 'index-mark-entry - (td :colspan 2 :align 'left - (bold (it (sf n))))))) - (if fst - (list l) - (list (tr (td :colspan 2)) l)))) - (define (make-primary-entry n p) - (let* ((note (markup-option n :note)) - (b (markup-body n))) - (when p - (markup-option-add! b :text - (list (markup-option b :text) - ", p.")) - (markup-option-add! b :page #t)) - (tr :class 'index-primary-entry - (td :colspan 2 :valign 'top :align 'left b)))) - (define (make-column ie p) - (let loop ((ie ie) - (f #t)) - (cond - ((null? ie) - '()) - ((not (pair? (car ie))) - (append (make-mark-entry (car ie) f) - (loop (cdr ie) #f))) - (else - (cons (make-primary-entry (caar ie) p) - (loop (cdr ie) #f)))))) - (define (make-sub-tables ie nc p) - (define (split-list l num) - (let loop ((l l) - (i 0) - (acc '()) - (res '())) - (cond - ((null? l) - (reverse! (cons (reverse! acc) res))) - ((= i num) - (loop l - 0 - '() - (cons (reverse! acc) res))) - (else - (loop (cdr l) - (+ i 1) - (cons (car l) acc) - res))))) - (let* ((l (length ie)) - (w (/ 100. nc)) - (iepc (let ((d (/ l nc))) - (if (integer? d) - (inexact->exact d) - (+ 1 (inexact->exact (truncate d)))))) - (split (split-list ie iepc))) - (tr (map (lambda (ies) - (td :valign 'top :width w - (if (pair? ies) - (table :width 100. (make-column ies p)) - ""))) - split)))) - (let* ((ie (markup-body n)) - (nc (markup-option n :column)) - (pref (eq? (engine-custom e 'index-page-ref) #t)) - (loc (ast-loc n)) - (t (cond - ((null? ie) - "") - ((or (not (integer? nc)) (= nc 1)) - (table :width 100. :&skribe-eval-location loc - (make-column ie pref))) - (else - (table :width 100. :&skribe-eval-location loc - (make-sub-tables ie nc pref)))))) - (output (skribe-eval t e) e)))) - -;*---------------------------------------------------------------------*/ -;* compiler-command ... */ -;*---------------------------------------------------------------------*/ -(define-markup (compiler-command bin . opts) - (disp :verb #t - (color :fg "red" (bold bin)) - (map (lambda (o) - (list " [" (it o) "]")) - opts) - "...")) - -;*---------------------------------------------------------------------*/ -;* compiler-options ... */ -;*---------------------------------------------------------------------*/ -(define-markup (compiler-options bin) - (skribe-message " [executing: ~a --options]\n" bin) - (let ((port (open-input-file (format "| ~a --options" bin)))) - (let ((opts (read port))) - (close-input-port port) - (apply description (map (lambda (opt) (item :key (bold (car opt)) - (cadr opt) ".")) - opts))))) diff --git a/doc/user/.arch-inventory b/doc/user/.arch-inventory new file mode 100644 index 0000000..c91230c --- /dev/null +++ b/doc/user/.arch-inventory @@ -0,0 +1,4 @@ +# Skribilo-generated files. +precious ^(user(-[0-9]+)?\.(html|ps|pdf|li|lout|lout\.ld)|doc-config\.scm|(bsd|linux|lambda|pie-.*|eq-.*)\.(png|eps))$ + +# arch-tag: 827d1e94-1b36-474e-bcdb-a4235b4af848 diff --git a/doc/user/Makefile.am b/doc/user/Makefile.am new file mode 100644 index 0000000..3b67dea --- /dev/null +++ b/doc/user/Makefile.am @@ -0,0 +1,42 @@ +SUBDIRS = src + +EXTRA_DIST = bib.skb char.skb colframe.skb document.skb emacs.skb \ + engine.skb enumeration.skb eq.skb examples.skb figure.skb \ + font.skb footnote.skb htmle.skb image.skb index.skb \ + justify.skb latexe.skb lib.skb line.skb links.skb \ + markup.skb ornament.skb package.skb pie.skb prgm.skb sectioning.skb \ + skribe-config.skb skribec.skb skribeinfo.skb slide.skb start.skb \ + syntax.skb table.skb toc.skb user.skb xmle.skb + +BUILT_SOURCES = doc-config.scm +html_DATA = user.html + +skribilo = $(top_builddir)/src/skribilo +load_path = $(top_srcdir)/src/guile:$(top_srcdir)/src/guile/skribilo/package:$(top_builddir)/src/guile:$(top_srcdir)/doc/modules + + +%.html: %.skb + GUILE_LOAD_PATH=$(load_path):$$GUILE_LOAD_PATH \ + $(skribilo) --target html -I ../ -P ../img -o $@ $< + +if HAVE_LOUT + +ps_DATA = user.ps + +%.lout: %.skb + GUILE_LOAD_PATH=$(load_path):$$GUILE_LOAD_PATH \ + $(skribilo) --target lout -I ../ -P ../img -o $@ $< + +%.ps: %.lout + $(LOUT) -c $(<:%.lout=%) -o $@ $< + +endif + +if HAVE_PLOTICUS +doc-config.scm: + -echo "(define %have-ploticus? #t)" > $@ + -echo "(define %ploticus-path \"$(PLOTICUS)\")" >> $@ +else +doc-config.scm: + -echo "(define %have-ploticus? #f) (define %ploticus-path #f)" > $@ +endif diff --git a/doc/user/bib.skb b/doc/user/bib.skb index a006a9b..5b26417 100644 --- a/doc/user/bib.skb +++ b/doc/user/bib.skb @@ -1,15 +1,24 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/bib.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Sun Dec 2 10:02:56 2001 */ -;* Last change : Tue Oct 26 21:41:19 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe index */ -;*=====================================================================*/ - -(bibliography "user/src/bib1.sbib") +;;; bib.skb -- The Skribe index +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +(bibliography "src/bib1.sbib") ;*---------------------------------------------------------------------*/ ;* Index */ @@ -51,7 +60,8 @@ if its argument is a bibliography table as returned by :see-also '(make-bib-table default-bib-table bibliography the-bibliography) :force-engines *api-engines* :common-args '() - :source "../src/bigloo/bib.bgl") + :source #f ;;"skribilo/biblio.scm" + :def '(define-markup (bib-table? obj) ...)) (p [The function ,(code "default-bib-table") returns a global, pre-existing bibliography-table:]) @@ -60,7 +70,8 @@ bibliography-table:]) :see-also '(bib-table? make-bib-table bibliography the-bibliography) :force-engines *api-engines* :common-args '() - :source "../src/bigloo/bib.bgl") + :source #f + :def '(define-markup (default-bib-table) ...)) (p [The function ,(code "make-bib-table") constructs a new bibliography-table:]) @@ -69,7 +80,8 @@ bibliography-table:]) :see-also '(bib-table? default-bib-table bibliography the-bibliography) :force-engines *api-engines* :common-args '() - :source "../src/bigloo/bib.bgl")) + :source #f + :def '(define-markup (make-bib-table ident) ...))) ;*---------------------------------------------------------------------*/ ;* bibliography ... @label bibliography@ */ @@ -81,7 +93,7 @@ into the Skribe memory. An ,(emph "entry") is either a list representing one entry (such as an article or book reference) or a string which denotes a file name that contains several entries. All the entries loaded in memory are available for the function -,(ref :ident "ref" :node "references"). A bibliography database must be loaded +,(ref :ident "ref" :text "references"). A bibliography database must be loaded ,(emph "before") any reference is introduced. It is advised to place the ,(code "bibliography") Skribe function call before the call to the ,(markup-ref "document") function call.]) @@ -204,7 +216,7 @@ pre-existing functions for sorting entries:]) (doc-markup 'bib-sort/authors '((l [The list of entries.])) :force-engines *api-engines* - :source "../src/common/bib.scm" + :source "skribilo/biblio.scm" :others '(bib-sort/idents bib-sort/dates) :common-args '()) @@ -214,7 +226,8 @@ entries identifier. The last one sorts according to entries date.]) (example-produce (example :legend "Sorting bibliography entries" - (prgm :file "src/common/bib.scm" :definition 'bib-sort/idents))))) + (prgm :file "skribilo/biblio.scm" + :definition 'bib-sort/idents))))) ;*---------------------------------------------------------------------*/ ;* skribebibtex */ @@ -226,9 +239,9 @@ entries identifier. The last one sorts according to entries date.]) In this section we present the Skribebibtex translator that compiles Bibtex source files into a Skribe bibliography.]) -;; Synopsis -(subsection :title "SYNOPSIS" :number #f - (compiler-command *skribebibtex-bin* "options" "input")) +;; Synopsis (FIXME) +;;(subsection :title "SYNOPSIS" :number #f +;; (compiler-command *skribebibtex-bin* "options" "input")) ;; Description (subsection :title "DESCRIPTION" :number #f [ @@ -246,7 +259,9 @@ These suffixes are: ,(description (item :key (it ".bib") [a ,(bold "Bibtex") source file.]))]) -;; Options -(subsection :title "OPTIONS" :number #f -(compiler-options *skribebibtex-bin*)))) +;; Options (FIXME) +;;(subsection :title "OPTIONS" :number #f +;;(compiler-options *skribebibtex-bin*)) + + )) diff --git a/doc/user/char.skb b/doc/user/char.skb index 85409f0..16c4625 100644 --- a/doc/user/char.skb +++ b/doc/user/char.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/char.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Sat Sep 6 16:07:08 2003 */ -;* Last change : Mon Feb 2 11:16:57 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Characters, strings and symbols */ -;*=====================================================================*/ +;;; char.skb -- Characters, strings and symbols +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Footnote ... */ @@ -49,9 +58,12 @@ without any transformation from the engine.]) (p [The sequences ,(code "$1"), ,(code "$2"), ... in the ,(param 'format) are replaced with the actual values of the arguments ,(param 'node).]) -(example-produce - (example :legend "Some characters" (prgm :file "src/api20.skb")) - (disp (include "src/api20.skb")))) +(let ((file (if (engine-format? "lout") + "src/api20-lout.skb" + "src/api20-html.skb"))) + (example-produce + (example :legend "Some characters" (prgm :file file)) + (disp (include file))))) ;*--- Symbols ---------------------------------------------------------*/ (subsection :title "Symbols" diff --git a/doc/user/colframe.skb b/doc/user/colframe.skb index 79b32f9..307b95c 100644 --- a/doc/user/colframe.skb +++ b/doc/user/colframe.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/colframe.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Mon Apr 5 11:51:08 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe color and frame */ -;*=====================================================================*/ +;;; colframe.skb -- Skribe color and frame +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Frame and color */ diff --git a/doc/user/document.skb b/doc/user/document.skb index 09f8cb3..b5c3461 100644 --- a/doc/user/document.skb +++ b/doc/user/document.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/document.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Tue Sep 2 11:39:07 2003 */ -;* Last change : Wed Feb 4 14:51:12 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Document and author */ -;*=====================================================================*/ +;;; document.skb -- Document and author +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* dummy-document-output ... */ @@ -19,7 +28,7 @@ (b (markup-body n)) (ta (table (tr (map (lambda (n) (td :valign 'top :align 'center n)) - a))))) + (if (list? a) a (list a))))))) (skribe-eval (center (bold t)) e) (skribe-eval (center ta) e) (output b e)))) @@ -39,6 +48,10 @@ (:html-title "The title of window of the HTML browser.") (:author "The authors of the document.") (:ending "An ending text.") + (:keywords "A list of keywords which may be plain strings +or markups. The keywords will not appear in the final document but only +as meta-information (e.g., using the HTML `meta' tag) if the engine used +supports it.") (:env "A counter environment.") (#!rest node... "The document nodes.")) :see-also '(author chapter toc)) diff --git a/doc/user/emacs.skb b/doc/user/emacs.skb index 742fa87..1255dec 100644 --- a/doc/user/emacs.skb +++ b/doc/user/emacs.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/emacs.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Nov 30 13:36:44 2001 */ -;* Last change : Sun Feb 29 16:12:32 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Editing Skribe programs */ -;*=====================================================================*/ +;;; emacs.skb -- Editing Skribe programs +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Editing Skribe programs */ @@ -52,7 +61,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/engine.skb b/doc/user/engine.skb index 06be3c4..30b8fd2 100644 --- a/doc/user/engine.skb +++ b/doc/user/engine.skb @@ -1,16 +1,28 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/engine.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 11:19:21 2003 */ -;* Last change : Mon Nov 8 15:07:35 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The description of the Skribe engines */ -;*=====================================================================*/ -;; @indent: (put 'doc-markup 'skribe-indent 'skribe-indent-function)@ +;;; engine.skb -- The description of the Skribe engines +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + (cond-expand + (guile + (define *engine-src* "skribilo/engine.scm") + (define *types-src* #f)) (bigloo (define *engine-src* "../src/bigloo/engine.scm") (define *types-src* "../src/bigloo/types.scm")) @@ -55,6 +67,7 @@ given below:]) (:custom [The engine custom list.]) (:info [Miscellaneous.])) :common-args '() + :skribe-source? #f :source *engine-src* :idx *function-index*) @@ -68,6 +81,7 @@ given below:]) (:symbol-table [The engine symbol table.]) (:custom [The engine custom list.])) :common-args '() + :skribe-source? #f :source *engine-src* :idx *function-index*)) @@ -80,6 +94,7 @@ on failure.]) '((id [The name (a symbol) of the engine to be searched.]) (:version [An optional version number for the searched engine.])) :common-args '() + :skribe-source? #f :source *engine-src* :idx *function-index*)) @@ -91,7 +106,8 @@ argument is an engine. Otherwise, it returns ,(code "#f"). In other words, (doc-markup 'engine? '((obj [The checked object.])) :common-args '() - :source *types-src* + :skribe-source? #f + :source *engine-src* :idx *function-index*) (p [The following functions return information about engines.]) @@ -100,7 +116,8 @@ argument is an engine. Otherwise, it returns ,(code "#f"). In other words, '((obj [The engine.])) :common-args '() :others '(engine-format engine-customs engine-filter engine-symbol-table) - :source *types-src* + :skribe-source? #f + :source *engine-src* :idx *function-index*)) (subsection :title "Engine customs" @@ -117,6 +134,7 @@ a custom.]) ,(ref :mark "find-engine" :text (code "find-engine"))).]) (id [The name of the custom.])) :common-args '() + :skribe-source? #f :source *engine-src* :idx *function-index*) @@ -126,6 +144,7 @@ a custom.]) (id [The name of the custom.]) (val [The new value of the custom.])) :common-args '() + :skribe-source? #f :source *engine-src* :idx *function-index*))) diff --git a/doc/user/enumeration.skb b/doc/user/enumeration.skb index 01155e2..5f19c3a 100644 --- a/doc/user/enumeration.skb +++ b/doc/user/enumeration.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/enumeration.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Fri Sep 12 15:31:37 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe enumerations */ -;*=====================================================================*/ +;;; enumeration.skb -- Skribe enumerations +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Justification */ diff --git a/doc/user/eq.skb b/doc/user/eq.skb new file mode 100644 index 0000000..a611f88 --- /dev/null +++ b/doc/user/eq.skb @@ -0,0 +1,79 @@ +;;; eq.skb -- Equation formatting. +;;; +;;; Copyright 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +;;; FIXME: This is a stub and must be completed! + +(chapter :title [Equation Formatting] + + (p [Skribilo comes with an equation formatting package. This package +may be loaded by adding the following form at the top of your document:] + + (disp (prog (source :language scheme + [(use-modules (skribilo package eq))]))) + + [It allows the inclusion of (complex) equations in your documents, +such as, for example, the following:] + + (disp (eq :renderer (if (engine-format? "html") 'lout #f) + :ident "eq-disponibilite" + `(= (apply A D) + (sum :from (= i b) :to (* S b) + (* (script :sup (* S b) :sub i C) + (* (expt mu i) + (expt (- 1 mu) + (- (* S b) i)))))))) + + [This chapter will describe the syntactic facilities available to +describe equations, as well as the rendering options.]) + + (section :title [Syntax] + + (p [To start with, let's have a look at a concrete example. ] + + (example-produce + (example :legend "Example of a simple equation using the verbose syntax" + (prgm :file "src/eq1.skb")) + (disp (include "src/eq1.skb"))) + + [In this example, the ,(tt [eq:]) sub-markups are used pretty +much like any other kind of markup. However, the resulting syntax +is very verbose and hard to read.]) + + (p [Fortunately, the ,(tt [eq]) package allows for the use of a +much simple syntax. ] + + (example-produce + (example :legend "Example of a simple equation" + (prgm :file "src/eq2.skb")) + (disp (include "src/eq2.skb"))) + + [Readers familiar with the Lisp family of programming languages +may have already recognized its ,(emph [prefix notation]). Note that, +unlike in the previous example, the equation itself if ,(emph [quoted]), +that is, preceded by the ,(tt [']) sign. Additionally, when referring +to a symbol (such as the Greek letter ,(symbol "phi")), you no longer +need to use the ,(tt [symbol]) markup (,(ref :text [see subsection] +:subsection "Symbols")).])) + + (section :title [Rendering]) + + ) + +;;; arch-tag: e9c83c13-205f-4f68-9100-b445c21b959c diff --git a/doc/user/examples.skb b/doc/user/examples.skb index a37ece4..7aa8f59 100644 --- a/doc/user/examples.skb +++ b/doc/user/examples.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/examples.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 13:35:34 2003 */ -;* Last change : Tue Feb 3 14:52:33 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The list of examples */ -;*=====================================================================*/ +;;; examples.skb -- The list of examples +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Examples */ diff --git a/doc/user/figure.skb b/doc/user/figure.skb index 08fbdd5..5998986 100644 --- a/doc/user/figure.skb +++ b/doc/user/figure.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/figure.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Fri Sep 12 15:31:48 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe figures */ -;*=====================================================================*/ +;;; figure.skb -- Skribe figures +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Figure ... @label figure@ */ @@ -32,9 +41,10 @@ :see-also '(ref document)) -(example-produce + ;; Note: We can't use `example-produce' because the Lout engine, for + ;; instance, forbids the occurrence of `figure' within a table. (example :legend "The figure markup" (prgm :file "src/api14.skb")) - (disp (include "src/api14.skb"))) + (include "src/api14.skb") ;*--- List of figures -------------------------------------------------*/ (subsection :title "List of figures" @@ -51,8 +61,3 @@ shows how to display the list of figures of a document.]) (example :legend "The figure markup" (prgm :file "src/api15.skb")) (disp (include "src/api15.skb"))))) - - - - - diff --git a/doc/user/font.skb b/doc/user/font.skb index df0bfed..cd9ec88 100644 --- a/doc/user/font.skb +++ b/doc/user/font.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/font.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Fri Sep 12 15:31:25 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe font */ -;*=====================================================================*/ +;;; font.skb -- Skribe font +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Font */ diff --git a/doc/user/footnote.skb b/doc/user/footnote.skb index 96101f3..2326a30 100644 --- a/doc/user/footnote.skb +++ b/doc/user/footnote.skb @@ -1,13 +1,23 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/footnote.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Sat Sep 6 15:43:24 2003 */ -;* Last change : Fri Sep 12 15:32:13 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe footnotes. */ -;*=====================================================================*/ +;;; footnote.skb -- Footnotes. +;;; +;;; Copyright 2003 Manuel Serrano +;;; Copyright 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Footnote ... */ @@ -18,7 +28,10 @@ the reference to the footnote.]) (doc-markup 'footnote - `((:number [The number of the footnote.]) + `((:label [This may be either a boolean (i.e., ,(code "#f") +or ,(code "#t")) indicating whether a footnote label should +automatically be produced, a string specifying a label to use (e.g., +,(code ["*"])), or a number.]) (#!rest text... [The text of the footnote.])) :see-also '(document chapter section)) diff --git a/doc/user/htmle.skb b/doc/user/htmle.skb index b5d0b0e..b28d7a0 100644 --- a/doc/user/htmle.skb +++ b/doc/user/htmle.skb @@ -1,14 +1,23 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/htmle.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 11:20:49 2003 */ -;* Last change : Wed Oct 27 12:05:53 2004 (eg) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The documentation of the html engine */ -;*=====================================================================*/ -;; @indent: (put 'doc-engine 'skribe-indent 'skribe-indent-function)@ +;;; htmle.skb -- The documentation of the html engine +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + ;*---------------------------------------------------------------------*/ ;* Document */ @@ -65,6 +74,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 @@ -106,6 +118,6 @@ the document.]) (source-bracket-color "The source bracket color.") (source-type-color "The source type color.") (image-format "The image formats for this engine.")) - :source "skr/html.skr"))) + :source "skribilo/engine/html.scm"))) diff --git a/doc/user/image.skb b/doc/user/image.skb index d08ad18..f74da22 100644 --- a/doc/user/image.skb +++ b/doc/user/image.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/image.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Sat Jan 17 18:08:15 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe images */ -;*=====================================================================*/ +;;; image.skb -- Skribe images +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Image ... @label image@ */ @@ -73,7 +82,9 @@ returns the name of the new converted image. On failure, it returns searched in the ,(ref :mark "skribe-image-path" :text "image path").]) (formats [A list of formats into which images are converted to.])) :common-args '() - :source "../src/bigloo/lib.bgl" + :skribe-source? #f + :source #f ;;"skribilo/runtime.scm" + :def '(define-markup (convert-image file formats) ...) :see-also '(skribe-image-path) :idx *function-index*))) diff --git a/doc/user/index.skb b/doc/user/index.skb index dd5e8fa..1a0d893 100644 --- a/doc/user/index.skb +++ b/doc/user/index.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/index.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Sun Dec 2 10:02:56 2001 */ -;* Last change : Mon Feb 23 18:59:00 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe indexes */ -;*=====================================================================*/ +;;; index.skb -- Skribe indexes +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Index */ @@ -50,7 +59,7 @@ that pre-exists to all execution.]) (doc-markup 'default-index '() :common-args '() - :source "src/common/index.scm")) + :source "skribilo/index.scm")) ;*---------------------------------------------------------------------*/ ;* Index ... @label index@ */ diff --git a/doc/user/justify.skb b/doc/user/justify.skb index 94db7d5..9246e59 100644 --- a/doc/user/justify.skb +++ b/doc/user/justify.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/justify.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 11:53:32 2003 */ -;* Last change : Fri Sep 12 15:31:31 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe justification */ -;*=====================================================================*/ +;;; justify.skb -- Skribe justification +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Justification */ diff --git a/doc/user/latexe.skb b/doc/user/latexe.skb index f53737b..feca728 100644 --- a/doc/user/latexe.skb +++ b/doc/user/latexe.skb @@ -1,14 +1,23 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/latexe.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 11:20:49 2003 */ -;* Last change : Tue Apr 6 06:28:59 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The documentation of the html engine */ -;*=====================================================================*/ -;; @indent: (put 'doc-engine 'skribe-indent 'skribe-indent-function)@ +;;; latexe.skb -- The documentation of the html engine +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + ;*---------------------------------------------------------------------*/ ;* Document */ @@ -45,7 +54,7 @@ (hyperref-usepackage "The LaTeX package for hyperref.") (image-format "The image formats for this engine.") (index-page-ref "Indexes use page references.")) - :source "skr/latex.skr")) + :source "skribilo/engine/latex.scm")) (subsection :title "LaTeX documentclass" diff --git a/doc/user/lib.skb b/doc/user/lib.skb index 499ca61..0cdfe80 100644 --- a/doc/user/lib.skb +++ b/doc/user/lib.skb @@ -1,11 +1,22 @@ -;;;; -;;;; Standard Library -;;;; -;;;; -;;;; Author: Erick Gallesio [eg@essi.fr] -;;;; Creation date: 21-Nov-2003 07:20 (eg) -;;;; Last file update: 21-Nov-2003 10:17 (eg) - +;;; lib.skb -- Standard library. +;;; +;;; Copyright 2003 Erick Gallesio +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. (chapter :title "Standard Library" @@ -34,24 +45,30 @@ Skribe document (the expressions placed before the ,(markup-ref "document") call) contains several ,(code "skribe-load"). The file is search in the ,(ref :mark "skribe-path" :text "Skribe path").]) - (doc-markup 'skribe-load + (doc-markup 'load-document `((file [The file containing the expressions to be loaded.]) (:engine [The engine used to evaluate the expressions.]) (:path ,[The optional path where to find the file. The default path is ,(markup-ref "skribe-path").]) (#!rest opt... [Additional user options.])) - :source "../src/bigloo/eval.scm" + ;;:skribe-source? #f + ;;:source "skribilo/evaluator.scm" + :source #f + :def '(define (load-document file #!rest opt #!key engine path) ...) :common-args '() :see-also '(skribe-load-options skribe-path skribe-path-set!) :idx *function-index*) (p [Returns the user of options of the last call to ,(markup-ref "skribe-load")]) - (doc-markup 'skribe-load-options + (doc-markup '*load-options* '() - :source "../src/bigloo/eval.scm" + :skribe-source? #f- + ;;:source "skribilo/evaluator.scm" + :source #f + :def '(define (*load-options* #!optional opt) ...) :common-args '() - :see-also '(skribe-load) + :see-also '(load-document) :idx *function-index*) (p [Skribe provides functions for dealing with paths. These functions @@ -59,21 +76,31 @@ are related to the path that can be specified on the command line, when the Skribe compiler is invoked (see Chapter ,(ref :chapter "Skribe compiler").)]) - (doc-markup 'skribe-path + (doc-markup '*document-path* '() - :source "../src/bigloo/eval.scm" + ;;:skribe-source? #f + ;;:source "skribilo/parameters.scm" + :source #f + :def '(define (*document-path* #!optional opt) ...) :common-args '() - :others '(skribe-image-path skribe-bib-path skribe-source-path) - :see-also '(include skribe-load image source bibliography skribe-path-set! skribe-image-path-set! skribe-bib-path-set! skribe-source-path-set!) + :others '() ;;'(*image-path* *bib-path* *source-path*) + :see-also '(include-document load-document image source +bibliography) :idx *function-index*) - (p [The function ,(code "skribe-path-set!") sets a new path.]) + (p [,(tt [*document-path*]) is a procedure as returned by SRFI-39 +,(tt [make-parameter]). As such, ,(tt [(*document-path*)]) returns the +current document path, while ,(tt [(*document-path* '("." +"/some/path"))]) changes the value of the current path. An equivalent +way to achieve this is by using ,(tt [skribe-path-set!]):]) + (doc-markup 'skribe-path-set! '((path [A list of strings which is the new Skribe search path.])) - :source "../src/bigloo/eval.scm" + :skribe-source? #f + :source "skribilo/utils/compat.scm" :common-args '() - :others '(skribe-image-path-set! skribe-bib-path-set! skribe-source-path-set!) - :see-also '(skribe-path skribe-image-path skribe-bib-path skribe-source-path) + :others '() + :see-also '(*document-path*) :idx *function-index*)) ;;; Misc @@ -99,10 +126,10 @@ Skribe configuration. It can be used to ,(emph "get") or ,(emph "check") the configuration.]) (doc-markup 'skribe-configure - '((opt... [Optional arguments.])) + '((#!rest opt... [Optional arguments.])) :common-args '() :source #f - :def '(define (skribe-configure . opt...) ...) + :def '(define (skribe-configure #!rest opt...) ...) :idx *function-index*) (p [The function ,(code "skribe-configure") can be used in three distinct @@ -146,10 +173,10 @@ arguments if the same as that of ,(code "skribe-configure") when invoked with several arguments.]) (doc-markup 'skribe-enforce-configure - '((opt... [Optional arguments.])) + '((#!rest opt... [Optional arguments.])) :common-args '() :source #f - :def '(define (skribe-enforce-configure . opt...) ...) + :def '(define (skribe-enforce-configure #!rest opt...) ...) :idx *function-index*)) diff --git a/doc/user/line.skb b/doc/user/line.skb index 85f84dd..3f9dab3 100644 --- a/doc/user/line.skb +++ b/doc/user/line.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/line.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 4 10:08:08 2003 */ -;* Last change : Thu Sep 4 13:29:49 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Line breaks */ -;*=====================================================================*/ +;;; line.skb -- Line breaks +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Line breaks */ diff --git a/doc/user/links.skb b/doc/user/links.skb index b454f28..ae7301c 100644 --- a/doc/user/links.skb +++ b/doc/user/links.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/links.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Thu Sep 11 06:10:44 2003 */ -;* Last change : Thu Feb 26 20:56:48 2004 (eg) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe links */ -;*=====================================================================*/ +;;; links.skb -- Skribe links +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Links and references */ @@ -76,13 +85,13 @@ section, to bibliographic entries, to source code line number, etc.]) (:mark [A string that is the name of a mark. That mark has been introduced by a ,(markup-ref "mark") markup.]) (:handle [A Skribe node ,(markup-ref "handle").]) - (:ident [A reference to a node who has been specified - an ,(param :ident) value.]) - (:figure [The name of a ,(markup-ref "figure").]) - (:chapter [The name of a ,(markup-ref "chapter").]) - (:section [The name of a ,(markup-ref "section").]) - (:subsection [The name of a ,(markup-ref "subsection").]) - (:subsubsection [The name of a ,(markup-ref "subsubsection").]) + (:ident [The identifier of a node (which was specified + as an ,(param :ident) value).]) + (:figure [The identifier of a ,(markup-ref "figure").]) + (:chapter [The title of a ,(markup-ref "chapter").]) + (:section [The title of a ,(markup-ref "section").]) + (:subsection [The title of a ,(markup-ref "subsection").]) + (:subsubsection [The title of a ,(markup-ref "subsubsection").]) (:page [A boolean enabling/disabling page reference.]) (:bib ,[A name or a list of names of ,(ref :chapter "Bibliographies" :text "bibliographic") entry.]) diff --git a/doc/user/markup.skb b/doc/user/markup.skb index 272bfbe..3607053 100644 --- a/doc/user/markup.skb +++ b/doc/user/markup.skb @@ -1,18 +1,27 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/markup.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Tue Sep 2 06:09:18 2003 */ -;* Last change : Wed Feb 4 06:11:45 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe standard markups */ -;*=====================================================================*/ +;;; markup.skb -- The Skribe standard markups +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* API */ ;*---------------------------------------------------------------------*/ -(chapter :title "Standard Markups" [ +(chapter :title "Standard Markups" :ident "std-markups" [ This chapter describes the forms composing Skribe texts. In XML/HTML these forms are called ,(emph "markups"). In LaTeX they are called diff --git a/doc/user/ornament.skb b/doc/user/ornament.skb index e65b9d1..5fc2832 100644 --- a/doc/user/ornament.skb +++ b/doc/user/ornament.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/ornament.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 14:00:52 2003 */ -;* Last change : Fri Sep 12 15:31:19 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The skribe ornaments */ -;*=====================================================================*/ +;;; ornament.skb -- The skribe ornaments +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Ornaments */ diff --git a/doc/user/package.skb b/doc/user/package.skb index ad989d0..c81dacb 100644 --- a/doc/user/package.skb +++ b/doc/user/package.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/package.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Sat Feb 21 08:26:44 2004 */ -;* Last change : Fri Jun 3 16:51:30 2005 (serrano) */ -;* Copyright : 2004-05 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Packages */ -;*=====================================================================*/ +;;; package.skb -- Packages +;;; +;;; Copyright 2004, 2005 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Standard packages */ @@ -25,7 +34,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.] @@ -43,11 +52,12 @@ markup ,(code "abstract"):]) (doc-markup 'abstract `((:class "The node class.") (:postscript [The URL of the PostScript version of the paper.])) + :ident "abstract(acmproc)" :common-args '() :idx-note "acmproc" :idx-suffix " (acmproc)" :force-engines *api-engines* - :source "../skr/acmproc.skr")) + :source "skribilo/package/acmproc.scm")) (subsection :title (tt "jfp.skr") :ident "jfp" (index :index *package-index* "jfp.skr" :note "package") @@ -57,11 +67,12 @@ This package enables producing LaTeX documents conforming to the markup ,(code "abstract"):]) (doc-markup 'abstract `((:postscript [The URL of the PostScript version of the paper.])) + :ident "abstract(jfp)" :common-args '() :idx-note "jfp" :idx-suffix " (jfp)" :force-engines *api-engines* - :source "../skr/jfp.skr")) + :source "skribilo/package/jfp.scm")) (subsection :title (tt "lncs.skr") :ident "lncs" (index :index *package-index* "lncs.skr" :note "package") @@ -75,7 +86,7 @@ markup ,(code "abstract"):]) :idx-note "lncs" :idx-suffix " (lncs)" :force-engines *api-engines* - :source "../skr/lncs.skr"))) + :source "skribilo/package/lncs.scm"))) ;*---------------------------------------------------------------------*/ ;* french */ @@ -102,7 +113,7 @@ This package is to be used to authoring simple letters. It redefines the :idx-note "letter" :idx-suffix " (letter)" :force-engines *api-engines* - :source "../skr/letter.skr")) + :source "skribilo/package/letter.scm")) ;*---------------------------------------------------------------------*/ ;* Web */ diff --git a/doc/user/pie.skb b/doc/user/pie.skb new file mode 100644 index 0000000..ace37f2 --- /dev/null +++ b/doc/user/pie.skb @@ -0,0 +1,71 @@ +;;; pie.skb -- Pie charts. +;;; +;;; Copyright 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + +;;; FIXME: This is a stub and must be completed! + +(chapter :title [Pie Charts] :ident "pie-charts" + + (p [Skribilo contains a pie-chart formatting package, located in the +,(tt [(skribilo package pie)]) module. It allows users to produces +represent numeric data as pie charts as in the following example:] + + (disp (pie :title [Use of Document Formatting Systems] + :fingers? #t :labels 'outside + :initial-angle 90 + :ident "pie-skribilo-rulez" + (slice :weight 10 :color "red" :detach? #t + (bold [Skribilo])) + (slice :weight 6 :color "green" "Skribe") + (slice :weight 6 :color "blue" "Lout") + (slice :weight 4 :color "lightgrey" "LaTeX") + (slice :weight 2 :color "yellow" "Docbook") + (slice :weight 1 :color "black" "others")))) + + (p [A default implementation, which uses ,(ref :text [Ploticus] :url +"http://ploticus.sf.net") as an external program, is available for all +engines. There is also a specific implementation for the Lout engine +which relies on Lout's own pie-chart package. In the latter case, you +don't need to have Ploticus installed, but you need it in the former.]) + (p [Currently it only supports slice-coloring, but support for +textures (particularly useful for black & white printouts) could be +added in the future.]) + + (section :title [Syntax] + + (p [Let us start with a simple example:] + + (example-produce + (example :legend "Example of a pie chart" + (prgm :file "src/pie1.skb")) + (disp (include "src/pie1.skb")))) + + (p [This illustrates the three markups provided by the ,(tt [pie]) +package, namely ,(tt [pie]), ,(tt [slice]), and ,(tt [sliceweight]). +This last markup returns the weight of the slice it is used in, be it as +a percentage or an absolute value. Note that the ,(tt [:total]) option +of ,(tt [pie]) can be used to create pie charts no entirely filled.]) + (p [Various options allow the pie layout to be controlled:] + + (example-produce + (example :legend "Specifying the layout of a pie chart" + (prgm :file "src/pie2.skb")) + (disp (include "src/pie2.skb")))))) + +;;; arch-tag: 60382016-3a63-4466-83e0-46a259cb39ab diff --git a/doc/user/prgm.skb b/doc/user/prgm.skb index c894614..6fb44c9 100644 --- a/doc/user/prgm.skb +++ b/doc/user/prgm.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/prgm.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Nov 30 09:21:11 2001 */ -;* Last change : Wed Sep 22 02:11:49 2004 (serrano) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Computer programs */ -;*=====================================================================*/ +;;; prgm.skb -- Computer programs +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* fib ... */ diff --git a/doc/user/sectioning.skb b/doc/user/sectioning.skb index 48bbc45..860821d 100644 --- a/doc/user/sectioning.skb +++ b/doc/user/sectioning.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/sectioning.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 12:27:03 2003 */ -;* Last change : Tue Apr 6 06:45:28 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Sectioning markups */ -;*=====================================================================*/ +;;; sectioning.skb -- Sectioning markups +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* dummy-section-output ... */ @@ -101,7 +110,7 @@ paragraphs.]) (p [The function ,(code "p") is an alias for ,(code "paragraph").]) (doc-markup 'p '((#!rest node... "The nodes of the paragraph.")) - :source "../skr/skribe.skr" + :source "skribilo/package/base.scm" :see-also '(document chapter section paragraph))) ;*--- blockquote -----------------------------------------------------*/ diff --git a/doc/user/skribe-config.skb b/doc/user/skribe-config.skb index 956af63..7c5e4bb 100644 --- a/doc/user/skribe-config.skb +++ b/doc/user/skribe-config.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/skribe-config.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Jan 2 21:12:24 2004 */ -;* Last change : Thu Sep 23 17:11:53 2004 (eg) */ -;* Copyright : 2004 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The skribe-config tool */ -;*=====================================================================*/ +;;; skribe-config.skb -- The skribe-config tool +;;; +;;; Copyright 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* The skribe-config tool */ @@ -29,16 +38,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..9ea2fad 100644 --- a/doc/user/skribec.skb +++ b/doc/user/skribec.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/skribec.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Nov 30 13:43:50 2001 */ -;* Last change : Thu Feb 26 20:58:26 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe compiler */ -;*=====================================================================*/ +;;; skribec.skb -- The Skribe compiler +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* The Skribe compiler */ @@ -43,10 +52,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/skribeinfo.skb b/doc/user/skribeinfo.skb index 502cc73..6ce8f73 100644 --- a/doc/user/skribeinfo.skb +++ b/doc/user/skribeinfo.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/skribeinfo.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Nov 30 13:43:50 2001 */ -;* Last change : Mon Dec 15 13:22:08 2003 (serrano) */ -;* Copyright : 2001-03 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribeinfo compiler */ -;*=====================================================================*/ +;;; skribeinfo.skb -- The Skribeinfo compiler +;;; +;;; Copyright 2001, 2002, 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* The Skribeinfo compiler */ diff --git a/doc/user/slide.skb b/doc/user/slide.skb index c1111ee..3e903ad 100644 --- a/doc/user/slide.skb +++ b/doc/user/slide.skb @@ -1,19 +1,64 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/slide.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Jan 9 06:37:47 2004 */ -;* Last change : Thu Feb 26 21:00:04 2004 (eg) */ -;* Copyright : 2004 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Slides */ -;*=====================================================================*/ -(skribe-load "slide.skr") +;;; slide.skb -- Slides +;;; +;;; Copyright 2004 Manuel Serrano +;;; Copyright 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + + +;*---------------------------------------------------------------------*/ +;* dummy-slide-set-output ... */ +;*---------------------------------------------------------------------*/ +(define dummy-slide-set-output + (lambda (n e) + (let* ((a (markup-option n :author)) + (t (markup-option n :title)) + (b (markup-body n)) + (ta (table (tr (map (lambda (n) + (td :valign 'top :align 'center n)) + (if (list? a) a (list a))))))) + (skribe-eval (center (bold t)) e) + (skribe-eval (center ta) e) + (output b e)))) + +(define dummy-slide-output + (lambda (n e) + (let* ((t (markup-option n :title)) + (b (markup-body n))) + (skribe-eval (bold t) e) + (output b e)))) + +(define dummy-slide-vspace-output + (lambda (n e) + (skribe-eval (linebreak) e) + (skribe-eval (center (tt "[vspace]")) e) + (skribe-eval (linebreak) e))) + +(define dummy-slide-embed-output + (lambda (n e) + (skribe-eval (linebreak) e) + (skribe-eval (tt (or (markup-option n :alt) + (markup-option n :command))) + e))) ;*---------------------------------------------------------------------*/ ;* Computer programs */ ;*---------------------------------------------------------------------*/ -(chapter :title "Slide Package" +(chapter :title "Slide Package" (p [ This chapter describes the facilities Skribe offers authoring slides. @@ -27,7 +72,7 @@ second one tells Skribe to generate slides for the LaTeX prosper package.]) ;*---------------------------------------------------------------------*/ ;* slide ... @label slide@ */ ;*---------------------------------------------------------------------*/ -(section :title "Slide" +(section :title "Slides and Slide Topics" (p [A ,(code "slide") function call creates a slide.]) @@ -44,7 +89,33 @@ the vertical space size between the title and the body of the slide.]) list ,(code "(split blinds box wipe dissolve glitter)").]) (:bg [The background color of the slide.]) (:image [The background image of the slide.])) - :source "../skr/slide.skr")) + :source "skribilo/package/slide.scm") + + (p [Optionally, one may group slides into ,(emph [topics]) and +,(emph [subtopics]). Topics and subtopics are just logical grouping +under a given title that are meant to provide structure to a set of +slides. With their ,(code [:outline?]) option, these two markups can be +used to automatically produce an outline at the beginning of each new +(sub)topic, so that the audience knows what the talk is heading to.]) + + (doc-markup 'slide-topic + `((:title [The title of a topic.]) + (:outline? [A boolean (i.e., ,(code [#t]) or ,(code +[#f])) telling whether an outline should be produced at the beginning of +this topic. The outline will typically list the titles of the different +topics, as well as the titles of the slides under the current topic.])) + :source "skribilo/package/slide.scm") + + (p [The ,(code [slide-subtopic]) markup is similar:]) + + (doc-markup 'slide-subtopic + `((:title [The title of a subtopic.]) + (:outline? [A boolean (i.e., ,(code [#t]) or ,(code +[#f])) telling whether an outline should be produced at the beginning of +this subtopic. The outline will typically list the titles of the +different subtopics, as well as the titles of the slides under the +current subtopic.])) + :source "skribilo/package/slide.scm")) ;*---------------------------------------------------------------------*/ ;* slide-pause */ @@ -52,12 +123,12 @@ list ,(code "(split blinds box wipe dissolve glitter)").]) (section :title "Pause" (p [A ,(code "slide-pause") function call introduces a pause in the slide -projection.]) +projection. This may not be supported by all engines.]) (doc-markup 'slide-pause '() :common-args '() - :source "../skr/slide.skr")) + :source "skribilo/package/slide.scm")) ;*---------------------------------------------------------------------*/ ;* slide-vspace ... */ @@ -70,7 +141,7 @@ projection.]) '((:unit [The unit of the space.]) (#!rest val [The size of the vertical space.])) :common-args '() - :source "../skr/slide.skr")) + :source "skribilo/package/slide.scm")) ;*---------------------------------------------------------------------*/ ;* slide-embed ... */ @@ -92,7 +163,7 @@ to the embedded application.]) (:alt [An alternative Skribe expression to be used if the output format does not support embedded application.])) :common-args '() - :source "../skr/slide.skr")) + :source "skribilo/package/slide.scm")) ;*---------------------------------------------------------------------*/ ;* Example */ @@ -101,14 +172,29 @@ 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" + (example :legend "Example of Skribilo slides" (prgm :file "src/slides.skb")) - (disp (include "src/slides.skb"))) + (disp + (processor :combinator + (lambda (e1 e2) + (let ((e (copy-engine 'document-engine e2))) + (markup-writer 'document e + :options '(:title :author :ending) + :action dummy-slide-set-output) + (markup-writer 'slide e + :options '(:title :ident + :number :toc :vspace) + :action dummy-slide-output) + (markup-writer 'slide-vspace + :action dummy-slide-vspace-output) + (markup-writer 'slide-embed + :action dummy-slide-embed-output) + e)) + (include "src/slides.skb")))) ;; Show only the example (i.e. don't produce a document in a document) (example :legend "Example of Skribe slides" (prgm :file "src/slides.skb"))))) - - diff --git a/doc/user/src/Makefile.am b/doc/user/src/Makefile.am new file mode 100644 index 0000000..6c61a1f --- /dev/null +++ b/doc/user/src/Makefile.am @@ -0,0 +1,11 @@ +EXTRA_DIST = api1.skb api10.skb api11.skb api12.skb api13.skb \ + api14.skb api15.skb api16.skb api17.skb api18.skb \ + api19.skb api2.skb api20-html.skb api20-lout.skb api3.skb \ + api4.skb api5.skb api6.skb api7.skb api8.skb \ + api9.skb bib1.sbib bib2.skb bib3.skb bib4.skb \ + bib5.skb bib6.skb eq1.skb eq2.skb index1.skb \ + index2.skb index3.skb links1.skb links2.skb pie1.skb pie2.skb \ + prgm1.skb prgm2.skb prgm3.skb slides.skb \ + start1.skb start2.skb start3.skb start4.skb start5.skb + +## arch-tag: 9614a784-cac2-4399-bd61-18c9172f48a8 diff --git a/doc/user/src/api14.skb b/doc/user/src/api14.skb index a3ede40..e9dd370 100644 --- a/doc/user/src/api14.skb +++ b/doc/user/src/api14.skb @@ -6,4 +6,4 @@ (center (figure :legend "The great Penguin" - (image :file "linux.gif"))) + (image :file "linux.png"))) diff --git a/doc/user/src/api16.skb b/doc/user/src/api16.skb index a9d5705..6be4283 100644 --- a/doc/user/src/api16.skb +++ b/doc/user/src/api16.skb @@ -1,5 +1,5 @@ -(image :file "linux.gif" "A first image") -(image :height 50 :file "linux.gif" "A smaller one") -(image :file "bsd.gif" "A second image") -(image :width 50 :file "bsd.gif") -(image :width 200 :height 40 :file "bsd.gif") +(image :file "linux.png" "A first image") +(image :height 50 :file "linux.png" "A smaller one") +(image :file "bsd.png" "A second image") +(image :width 50 :file "bsd.png") +(image :width 200 :height 40 :file "bsd.png") diff --git a/doc/user/src/api2.skb b/doc/user/src/api2.skb index 2c20965..4a89705 100644 --- a/doc/user/src/api2.skb +++ b/doc/user/src/api2.skb @@ -1,4 +1,4 @@ -(document :title "This is a Scribe document" +(document :title "This is a Skribilo document" :author (list (author :name "Foo" :email (mailto "foo@nowhere.org")) (author :name "Bar" :email (mailto "bar@anywhere.org")) (author :name "Gee" :email (mailto "gee@nowhere.org"))) diff --git a/doc/user/src/api20-html.skb b/doc/user/src/api20-html.skb new file mode 100644 index 0000000..686efcb --- /dev/null +++ b/doc/user/src/api20-html.skb @@ -0,0 +1,2 @@ +[A simple ,(! "string"). A more annoying one ,(! "string"). +A last one with arguments ,(! "$1 $2" (bold 1) (it 2)).] diff --git a/doc/user/src/api20-lout.skb b/doc/user/src/api20-lout.skb new file mode 100644 index 0000000..89fb961 --- /dev/null +++ b/doc/user/src/api20-lout.skb @@ -0,0 +1,2 @@ +[A simple ,(! "string"). A more annoying one ,(! "@B { string }"). +A last one with arguments ,(! "@Underline { $1 $2 }" (bold 1) (it 2)).] diff --git a/doc/user/src/api20.skb b/doc/user/src/api20.skb deleted file mode 100644 index 686efcb..0000000 --- a/doc/user/src/api20.skb +++ /dev/null @@ -1,2 +0,0 @@ -[A simple ,(! "string"). A more annoying one ,(! "string"). -A last one with arguments ,(! "$1 $2" (bold 1) (it 2)).] diff --git a/doc/user/src/bib1.sbib b/doc/user/src/bib1.sbib index 3f1c04f..6afff71 100644 --- a/doc/user/src/bib1.sbib +++ b/doc/user/src/bib1.sbib @@ -12,6 +12,8 @@ (year "1991")) (misc bigloo + (author "Manuel Serrano") + (year "2006") (url "http://www.inria.fr/mimosa/fp/Bigloo")) (misc scheme:r4rs diff --git a/doc/user/src/eq1.skb b/doc/user/src/eq1.skb new file mode 100644 index 0000000..bbd0742 --- /dev/null +++ b/doc/user/src/eq1.skb @@ -0,0 +1,6 @@ +;; The golden ratio, phi. +(eq (eq:= (symbol "phi") + (eq:/ (eq:+ 1 (eq:sqrt 5)) + 2))) + + diff --git a/doc/user/src/eq2.skb b/doc/user/src/eq2.skb new file mode 100644 index 0000000..199fd7d --- /dev/null +++ b/doc/user/src/eq2.skb @@ -0,0 +1,3 @@ +;; The golden ratio, phi. +(eq '(= phi (/ (+ 1 (sqrt 5)) 2))) + diff --git a/doc/user/src/links1.skb b/doc/user/src/links1.skb index e0ce61c..e0b393b 100644 --- a/doc/user/src/links1.skb +++ b/doc/user/src/links1.skb @@ -1,6 +1,6 @@ [This hyperlink points to the ,(ref :figure "The great Penguin" :text "figure") of the chapter ,(ref :chapter "Standard Markups") (or also, the -,(ref :ident "Standard Markups" :text "chapter") about markups). +,(ref :ident "std-markups" :text "chapter") about markups). In the second example of reference, no ,(code ":text") option is specified: ,(ref :figure "The great Penguin"). One may use the ,(param ":ident") field when specified such as: ,(ref :ident "fig1") or ,(ref :figure "fig1"). diff --git a/doc/user/src/pie1.skb b/doc/user/src/pie1.skb new file mode 100644 index 0000000..0d0fd0b --- /dev/null +++ b/doc/user/src/pie1.skb @@ -0,0 +1,13 @@ +;; A sad pie chart. +;; + +(pie :title [Casualties in the Israel-Lebanon 2006 Conflict (source: +English Wikipedia page, 2006-07-23)] + :total 450 ;; to show the uncertainty on figures + :ident "pie-lebanon-2006" + :labels 'outside :fingers? #t + + (slice :weight 8 :color "black" [Hezbollah militants]) + (slice :weight 42 :color "blue" [soldiers]) + (slice :weight 317 :color "red" :detach? #t + [civilians (,(sliceweight :percentage? #t)%)])) diff --git a/doc/user/src/pie2.skb b/doc/user/src/pie2.skb new file mode 100644 index 0000000..84b5394 --- /dev/null +++ b/doc/user/src/pie2.skb @@ -0,0 +1,14 @@ +;; Another sad pie chart. +;; + +(pie :title [Casualties of the Conflict in Iraq since 2003 (source: +English Wikipedia page, 2006-07-23)] + :ident "pie-iraq-2006" + :fingers? #f + :labels 'inside + :initial-angle 45 + :radius 2 + + (slice :weight 100000 :color "red" :detach? #t + [civilians (,(sliceweight :percentage? #t)%)]) + (slice :weight (+ 2555 229) :color #xeeeeee [soldiers])) diff --git a/doc/user/src/slides.skb b/doc/user/src/slides.skb index ac584d1..e5e6896 100644 --- a/doc/user/src/slides.skb +++ b/doc/user/src/slides.skb @@ -6,22 +6,28 @@ :address (ref :url "http://www.inria.fr/mimosa/Manuel.Serrano")) (if (engine-format? "html") - (slide :title "Table of contents" :number #f :toc #f - (toc :chapter #f :section #f :subsection #f :subsubsection #f - :slide #t))) + (slide :title "Table of Contents" :number #f :toc #f + (toc :chapter #f :section #f :subsection #f :subsubsection #f))) +;;; :slide #t))) + + (slide :title "Introduction" :vspace 0.3 + + (p [This is a simple slide, not grouped in any topic.])) - (slide :title "X11 client" :toc #t :vspace 0.3 + (slide-topic :title "Interactive Features" :outline? #t - (itemize - (item "xlock") - (item "xeyes") - (item "xterm"))) + (slide :title "X11 client" :toc #t :vspace 0.3 - (slide :title "Xclock" :toc #t :vspace 0.3 + (itemize + (item "xlock") + (item "xeyes") + (item "xterm"))) - (center (sf (underline "The Unix xclock client"))) - (slide-vspace 0.3) + (slide :title "Xclock" :toc #t :vspace 0.3 - (slide-pause) - (slide-embed :command "xlock" - :alt (frame "Can't run embedded application")))) + (center (sf (underline "The Unix xclock client"))) + (slide-vspace 0.3) + + (slide-pause) + (slide-embed :command "xlock" + :alt (frame "Can't run embedded application"))))) diff --git a/doc/user/src/start3.skb b/doc/user/src/start3.skb index 0705966..65fa738 100644 --- a/doc/user/src/start3.skb +++ b/doc/user/src/start3.skb @@ -1,9 +1,9 @@ (document :title [Hello World!] -(section :title [A first Section] [ +(chapter :title [A first Section] [ This is a ,(bold [very]) ,(it [simple]) ,(color :fg [red] [text]).]) -(section :title [A second Section] [ +(chapter :title [A second Section] [ That section contains an ,(bold itemize) construction: ,(itemize (item [first item]) (item [second item]) diff --git a/doc/user/src/start4.skb b/doc/user/src/start4.skb index 3311925..31fba0c 100644 --- a/doc/user/src/start4.skb +++ b/doc/user/src/start4.skb @@ -1,13 +1,13 @@ -(document :title [Various links] [ +(document :title [Various links] -(section :title "A Section" [ + (chapter :title "A Section" [ The first link points to an external web page. Here we point to a ,(ref :url [http://slashdot.org/] [Slashdot]) web page. The second one points to the second ,(ref :section [A second Section] [Section]) of that document.]) -(section :title [A second Section] [ + (chapter :title [A second Section] [ The last links points to the first ,(ref :scribe [user.scr] :figure [A simple web page] [Figure]) -of the Scribe User Manual.])]) +of the Scribe User Manual.])) diff --git a/doc/user/src/start5.skb b/doc/user/src/start5.skb index 9e6b877..6977608 100644 --- a/doc/user/src/start5.skb +++ b/doc/user/src/start5.skb @@ -6,4 +6,4 @@ (itemize (map (lambda (x) (item (it (markup-option x :title)))) - sects))))) \ No newline at end of file + sects))))) diff --git a/doc/user/start.skb b/doc/user/start.skb index f3c1e28..0835b31 100644 --- a/doc/user/start.skb +++ b/doc/user/start.skb @@ -1,26 +1,34 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/start.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Mon Sep 1 11:22:25 2003 */ -;* Last change : Sun Feb 29 16:14:21 2004 (eg) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Getting started with Skribe */ -;*=====================================================================*/ +;;; start.skb -- Getting started with Skribe +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Getting started */ ;*---------------------------------------------------------------------*/ (chapter :title "Getting Started" -(p [ -In this chapter, the syntax of a Skribe text is presented ,(emph "informally"). -In particular, the Skribe syntax is compared to the HTML syntax. Then, -it is presented how one can use Skribe to make dynamic text -(i.e texts which are generated by the system rather than entered-in by hand. -Finally, It is also -presented how Skribe source files can be processed.]) +(p [ In this chapter, the syntax of a Skribe text is presented ,(emph +"informally"). In particular, the Skribe syntax is compared to the HTML +syntax. Then, it is presented how one can use Skribe to make dynamic +text (i.e texts which are generated by the system rather than entered-in +by hand). Finally, It is also presented how Skribe source files can be +processed.]) ;*--- Hello world -----------------------------------------------------*/ (section :title "Hello World!" [ @@ -148,7 +156,8 @@ often need to generate some repetitive text. Skribe programming skills can be used to ease the construction of such documents as illustrated below. ,(disp (itemize - (map (lambda (x) (item [The square of ,(bold x) is ,(bold (* x x))])) + (map (lambda (x) + (item [The square of ,(bold x) is ,(bold (* x x))])) '(1 2 3 4 5 6 7 8 9)))) This text has been generated with the following piece of code ,(prgm :language skribe [ @@ -192,6 +201,5 @@ In order to compile to various formats one must type in:]) ,(disp :verb #t [ $ skribe file.skb -o file.html ,(char 35) ,(it "This produces an HTML file.") $ skribe file.skb -o file.tex ,(char 35) ,(it "This produces a TeX file.") -$ skribe file.skb -o file.man ,(char 35) ,(it "This produces a man page.") $ skribe file.skb -o file.info ,(char 35) ,(it "This produces an info page.") $ skribe file.skb -o file.mgp ,(char 35) ,(it "This produces a MagicPoint document")])])) diff --git a/doc/user/syntax.skb b/doc/user/syntax.skb index de60bd9..4b18d33 100644 --- a/doc/user/syntax.skb +++ b/doc/user/syntax.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/syntax.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Nov 30 11:55:24 2001 */ -;* Last change : Sun Feb 29 16:14:53 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The syntax of Skribe */ -;*=====================================================================*/ +;;; syntax.skb -- The syntax of Skribe +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* The Skribe syntax */ diff --git a/doc/user/table.skb b/doc/user/table.skb index c726d44..0408778 100644 --- a/doc/user/table.skb +++ b/doc/user/table.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/table.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Fri Sep 5 13:45:18 2003 */ -;* Last change : Wed Oct 27 12:09:01 2004 (eg) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Skribe tables */ -;*=====================================================================*/ +;;; table.skb -- Skribe tables +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Table ... */ @@ -66,6 +75,7 @@ attribute is only supported by HTML engines supporting (:valign [The vertical alignment of the cell. The value can be ,(code "top"), ,(code "center"), ,(code "bottom").]) (:colspan [The number of columns that the cell expands to.]) + (:rowspan [The number of columns that the cell spans over.]) (#!rest node [The value of the cell.])) :writer-id 'tc :ignore-args '(m) diff --git a/doc/user/toc.skb b/doc/user/toc.skb index aa6c0dc..9650951 100644 --- a/doc/user/toc.skb +++ b/doc/user/toc.skb @@ -1,13 +1,22 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/toc.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 13:01:03 2003 */ -;* Last change : Fri Sep 12 15:31:14 2003 (serrano) */ -;* Copyright : 2003 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* Table of contents */ -;*=====================================================================*/ +;;; toc.skb -- Table of contents +;;; +;;; Copyright 2003 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. ;*---------------------------------------------------------------------*/ ;* Sectioning */ @@ -21,6 +30,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 07a6e03..5cfe209 100644 --- a/doc/user/user.skb +++ b/doc/user/user.skb @@ -1,21 +1,43 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/user.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Nov 28 10:37:39 2001 */ -;* Last change : Thu Feb 26 21:02:00 2004 (eg) */ -;* Copyright : 2001-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The Skribe user manual */ -;*=====================================================================*/ - +;;; user.skb -- The Skribilo user manual. +;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano +;;; Copyright 2005, 2006 Ludovic Courtès +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + ;*---------------------------------------------------------------------*/ ;* The Skribe documentation style */ ;*---------------------------------------------------------------------*/ -(skribe-load "web-book.skr") -(skribe-load "skr/env.skr") -(skribe-load "skr/manual.skr") -(skribe-load "skr/api.skr") +(use-modules (skribilo package web-book) + (skribilo documentation env) + (skribilo documentation manual) + (skribilo documentation api)) + + +;*---------------------------------------------------------------------*/ +;* Packages */ +;*---------------------------------------------------------------------*/ +(use-modules (skribilo package eq) + (skribilo package pie)) + +;; Load the compile-time configuration file. +(load "doc-config.scm") + +(if %have-ploticus? (set! %ploticus-program %ploticus-path)) ;*---------------------------------------------------------------------*/ ;* HTML custom */ @@ -26,40 +48,36 @@ (engine-custom-set! he 'body-width 100.)) ;*---------------------------------------------------------------------*/ -;* The various indexes */ +;* Lout custom */ ;*---------------------------------------------------------------------*/ -(define *markup-index* (make-index "markup")) -(define *custom-index* (make-index "custom")) -(define *function-index* (make-index "function")) -(define *package-index* (make-index "package")) +(let ((le (find-engine 'lout))) + (engine-custom-set! le 'document-type 'doc)) + ;*---------------------------------------------------------------------*/ ;* The document */ ;*---------------------------------------------------------------------*/ -(document :title "Skribe User Manual" +(document :title "Skribilo User Manual" + :keywords '("Skribilo" "Skribe" "User Manual" "text processing" + "HTML" "LaTeX" "Lout" "PostScript" "PDF") :env '((example-counter 0) (example-env ())) :author (list (author :name "Erick Gallesio" :affiliation "Université de Nice - Sophia Antipolis" - :address '("930 route des Colles, BP 145" - "F-06903 Sophia Antipolis, Cedex" - "France") :email (mailto "eg@essi.fr")) (author :name "Manuel Serrano" :affiliation "Inria Sophia-Antipolis" - :address `("2004 route des Lucioles - BP 93" - "F-06902 Sophia Antipolis, Cedex" - "France") - :url (ref :url *serrano-url*) - :email (mailto *serrano-mail*))) + :email (mailto *serrano-mail*)) + (author :name "Ludovic Courtès" + :email (mailto *courtes-mail*))) - (linebreak 1) - (center (frame (bold (font :size 1. [ -This is the documentation for Skribe version -,(color :fg "red" (skribe-release)).])))) - (linebreak 1) +(p :class "welcome" + [Welcome to the User Manual for Skribilo version ,(skribe-release). +If you are new to Skribilo, please read the ,(ref :ident "intro" +:text [introduction]) first.]) + ;;; Introduction -(section :title "Introduction" :number #f :toc #f [ +(chapter :title "Introduction" :ident "intro" :number #f :toc #t :file #f [ Skribe is a programming language designed for implementing electronic documents. It is mainly designed for the writing of technical documents such as the documentation of computer programs. With Skribe these @@ -68,13 +86,15 @@ instance, a Skribe document can be ,(emph "compiled") to an HTML file that suits Web browser, it can be compiled to a TeX file in order to produce a high-quality printed document, and so on.] - (subsection :title "Who may use Skribe?" :number #f [ + (section :title "Who may use Skribe?" :number #f [ Everyone needing to design web pages, info documents, man pages or Postscript files can use Skribe. In particular, there is ,(bold "no need") for programming skills in order to use Skribe. Skribe can be used as -any text description languages such as TeX, LaTeX or HTML.]) +any text description languages such as ,(ref :text [LaTeX] :url +"http://latex-project.org/"), ,(ref :text [Lout] :url +"http://lout.sf.net/") or HTML.]) - (subsection :title "Why using Skribe?" :number #f [ + (section :title "Why using Skribe?" :number #f [ There are three main reasons for using Skribe:] (itemize @@ -122,6 +142,12 @@ as HTML, Info pages, man pages, Postscript, etc.])))) ;;; Computer programs (include "prgm.skb") +;;; Equations +(include "eq.skb") + +;;; Pie charts +(if %have-ploticus? (include "pie.skb")) + ;;; Standard Library (include "lib.skb") @@ -151,12 +177,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 + (chapter :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/doc/user/xmle.skb b/doc/user/xmle.skb index 4a1ee78..bd01db3 100644 --- a/doc/user/xmle.skb +++ b/doc/user/xmle.skb @@ -1,25 +1,34 @@ -;*=====================================================================*/ -;* serrano/prgm/project/skribe/doc/user/xmle.skb */ -;* ------------------------------------------------------------- */ -;* Author : Manuel Serrano */ -;* Creation : Wed Sep 3 11:20:49 2003 */ -;* Last change : Tue Apr 6 06:27:51 2004 (serrano) */ -;* Copyright : 2003-04 Manuel Serrano */ -;* ------------------------------------------------------------- */ -;* The documentation of the XML engine */ -;*=====================================================================*/ -;; @indent: (put 'doc-engine 'skribe-indent 'skribe-indent-function)@ +;;; xmle.skb -- The documentation of the XML engine +;;; +;;; Copyright 2003, 2004 Manuel Serrano +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +;;; USA. + ;*---------------------------------------------------------------------*/ ;* Document */ ;*---------------------------------------------------------------------*/ -(section :title "Xml engine" :file #t +(section :title "XML engine" :file #t (mark "xml-engine") - (index "Xml" :note "Engine") - (p [The Xml engine...]) + (index "XML" :note "Engine") + (p [The XML engine...]) - (subsection :title "The Xml customization" + (subsection :title "The XML customization" (doc-engine 'xml `() - :source "skr/xml.skr"))) + :source "skribilo/engine/xml.scm"))) -- cgit v1.2.3 From 8704dcc76f1419fe915b53d574bf2f8e72a28be8 Mon Sep 17 00:00:00 2001 From: Ludovic Court`es Date: Thu, 12 Oct 2006 16:08:38 +0000 Subject: doc: Fixed the Fibonacci example in ``Computer Programs''. * doc/user/prgm.skb: Use title case for the chapter title. * doc/user/src/prgm2.skb: Fixed the line numbers for `fib'. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-4 --- doc/user/prgm.skb | 2 +- doc/user/src/prgm2.skb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/doc/user/prgm.skb b/doc/user/prgm.skb index 6fb44c9..1007268 100644 --- a/doc/user/prgm.skb +++ b/doc/user/prgm.skb @@ -29,7 +29,7 @@ ;*---------------------------------------------------------------------*/ ;* Computer programs */ ;*---------------------------------------------------------------------*/ -(chapter :title "Computer programs" +(chapter :title "Computer Programs" (p [It is common that some parts of a Skribe text represent other texts. For instance, for a document describing a computer programming diff --git a/doc/user/src/prgm2.skb b/doc/user/src/prgm2.skb index 5b5644b..2996cc8 100644 --- a/doc/user/src/prgm2.skb +++ b/doc/user/src/prgm2.skb @@ -5,8 +5,8 @@ ;!start (frame :width 100. - (prog :line 11 :mark #f - (source :language skribe :file "prgm.skb" :start 11 :stop 24))) + (prog :line 21 :mark #f + (source :language skribe :file "prgm.skb" :start 20 :stop 27))) ;!stop (p [Here is the source of the frame above:]) -- cgit v1.2.3 From 243aa4a26a7c087f4216eb3b537f355bc31a6d19 Mon Sep 17 00:00:00 2001 From: Ludovic Court`es Date: Mon, 23 Oct 2006 17:25:00 +0000 Subject: Added a `:arguments' keyword to `slide-embed'. * src/guile/skribilo/package/slide.scm (slide-embed): Added an `arguments' keyword. * doc/user/slide.skb: Updated the markup documentation. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-7 --- doc/user/slide.skb | 3 +++ src/guile/skribilo/package/slide.scm | 1 + 2 files changed, 4 insertions(+) (limited to 'doc') diff --git a/doc/user/slide.skb b/doc/user/slide.skb index 3e903ad..f937a75 100644 --- a/doc/user/slide.skb +++ b/doc/user/slide.skb @@ -153,6 +153,8 @@ projection. This may not be supported by all engines.]) (doc-markup 'slide-embed `((:command [The binary file for running the embedded application.]) + (:arguments [Additional arguments to be passed to the +application (a list of strings).]) (:geometry-opt [The name of the geometry option to be sent to the embedded application.]) (:geometry [The geometry value to be sent.]) @@ -192,6 +194,7 @@ output format does not support embedded application.])) (markup-writer 'slide-vspace :action dummy-slide-vspace-output) (markup-writer 'slide-embed + :options '(:command :arguments :alt) :action dummy-slide-embed-output) e)) (include "src/slides.skb")))) diff --git a/src/guile/skribilo/package/slide.scm b/src/guile/skribilo/package/slide.scm index 7f731e3..c0a8473 100644 --- a/src/guile/skribilo/package/slide.scm +++ b/src/guile/skribilo/package/slide.scm @@ -146,6 +146,7 @@ (define-markup (slide-embed #!rest opt #!key command + (arguments '()) (geometry-opt "-geometry") (geometry #f) (rgeometry #f) (transient #f) (transient-opt #f) -- cgit v1.2.3 From b0e202992a38753888465fa8fb1331ac31f838ec Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sat, 25 Nov 2006 17:41:44 +0000 Subject: doc: Documented `numref'. * doc/user/links.skb (Reference): Added identifier `refs'. [ref](page): Explain that this option is hardcopy-specific. [numref]: New. * doc/user/src/links1.skb: Show `numref' usage. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-20 --- doc/user/links.skb | 24 +++++++++++++++++++----- doc/user/src/links1.skb | 4 ++++ 2 files changed, 23 insertions(+), 5 deletions(-) (limited to 'doc') diff --git a/doc/user/links.skb b/doc/user/links.skb index ae7301c..c6e37a0 100644 --- a/doc/user/links.skb +++ b/doc/user/links.skb @@ -71,9 +71,9 @@ automatically sets a mark whose value is the legend of the figure.])) ;*---------------------------------------------------------------------*/ ;* ref ... @label ref@ */ ;*---------------------------------------------------------------------*/ -(section :title "Reference" +(section :title "Reference" :ident "refs" -(p [Skribe proposes only one single function for all the references. +(p [Skribilo proposes a single function that can be used for most references. This same ,(code "ref") function is used for introducing references to section, to bibliographic entries, to source code line number, etc.]) @@ -92,7 +92,8 @@ section, to bibliographic entries, to source code line number, etc.]) (:section [The title of a ,(markup-ref "section").]) (:subsection [The title of a ,(markup-ref "subsection").]) (:subsubsection [The title of a ,(markup-ref "subsubsection").]) - (:page [A boolean enabling/disabling page reference.]) + (:page [A boolean enabling/disabling page reference (for + hard copies as produced by the Lout and LaTeX engines).]) (:bib ,[A name or a list of names of ,(ref :chapter "Bibliographies" :text "bibliographic") entry.]) (:bib-table ,[The @@ -108,8 +109,21 @@ section, to bibliographic entries, to source code line number, etc.]) a ,(tt "mark") located in the Skribe document described by the ,(var "file") ,(sc "sui").])) :force-args '(:url :bib :line :skribe) - :see-also '(index)) - + :see-also '(index numref)) + +(p [Sometimes, it is useful to produce phrases that refer a section by +its number, as in ``See Section 2.3''. This is especially useful on +printed documents, as produced by the Lout and LaTeX engines. The +,(code "numref") markup is provided to that end:]) + +(doc-markup 'numref + `((:text [Text preceding the reference number.]) + (:ident [The identifier of the node (a chapter, section, + subsection, etc.) being referenced.]) + (:page [A boolean enabling/disabling page reference (for + hard copies as produced by the Lout and LaTeX engines).]) + (:separator [The separator between numbers.])) + :see-also '(ref)) (example-produce (example :legend "Some references" (prgm :file "src/links1.skb")) diff --git a/doc/user/src/links1.skb b/doc/user/src/links1.skb index e0b393b..bfe6f86 100644 --- a/doc/user/src/links1.skb +++ b/doc/user/src/links1.skb @@ -10,6 +10,10 @@ That other one points to a well known ,(ref :url "http://slashdot.org/" :text "url"). The same without ,(code ":text"): ,(ref :url "http://slashdot.org/"). +,(linebreak) +And one can also refer to sections by number, as in ``see ,(numref :text +[Wonderful Section] :ident "refs")''. + ,(linebreak) With more complex tricks that are explained in Section ,(ref :section "Resolve"), it is also possible use, for the text of the -- cgit v1.2.3 From 80b757fc4bf93f59edde426b9fca4dcca15509c3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sat, 25 Nov 2006 17:42:18 +0000 Subject: Cleaned up `(skribilo biblio)' a bit. * doc/user/bib.skb: Replaced `default-bib-table' with `*bib-table*'. * src/guile/skribilo/biblio.scm: Clean up. (skribe-open-bib-file): Renamed to `open-bib-file'. * src/guile/skribilo/package/base.scm: Use `*bib-table*' instead of `default-bib-table'. * src/guile/skribilo/utils/compat.scm: Autoload `biblio'. (default-bib-table): New. (skribe-open-bib-file): New. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-21 --- doc/user/bib.skb | 20 ++++--- src/guile/skribilo/biblio.scm | 103 +++++++++++++----------------------- src/guile/skribilo/package/base.scm | 8 +-- src/guile/skribilo/utils/compat.scm | 13 +++++ 4 files changed, 67 insertions(+), 77 deletions(-) (limited to 'doc') diff --git a/doc/user/bib.skb b/doc/user/bib.skb index 5b26417..e7b5b77 100644 --- a/doc/user/bib.skb +++ b/doc/user/bib.skb @@ -52,32 +52,36 @@ tables.]) (p [The predicate ,(code "bib-table?") returns ,(code "#t") if and only if its argument is a bibliography table as returned by -,(markup-ref "make-bib-table") or ,(markup-ref "default-bib-table"). Otherwise +,(markup-ref "make-bib-table") or ,(markup-ref "*bib-table*"). Otherwise ,(code "bib-table?") returns ,(code "#f").]) (doc-markup 'bib-table? '((obj [The value to be tested])) - :see-also '(make-bib-table default-bib-table bibliography the-bibliography) + :see-also '(make-bib-table *bib-table* bibliography the-bibliography) :force-engines *api-engines* :common-args '() :source #f ;;"skribilo/biblio.scm" :def '(define-markup (bib-table? obj) ...)) - (p [The function ,(code "default-bib-table") returns a global, pre-existing + (p [The function ,(code "*bib-table*") returns a global, pre-existing bibliography-table:]) - (doc-markup 'default-bib-table + (doc-markup '*bib-table* '() :see-also '(bib-table? make-bib-table bibliography the-bibliography) :force-engines *api-engines* :common-args '() :source #f - :def '(define-markup (default-bib-table) ...)) + :def '(define-markup (*bib-table*) ...)) + (p [Technically, ,(code "*bib-table*") is actually an ,(ref :text +[SRFI-39] :url "http://srfi.schemers.org/srfi-39/srfi-39.html") +parameter object, so it can be queried and modified like any other +parameter object.]) (p [The function ,(code "make-bib-table") constructs a new bibliography-table:]) (doc-markup 'make-bib-table '((ident [The name of the bibliography table.])) - :see-also '(bib-table? default-bib-table bibliography the-bibliography) + :see-also '(bib-table? *bib-table* bibliography the-bibliography) :force-engines *api-engines* :common-args '() :source #f @@ -109,7 +113,7 @@ the ,(code "bibliography") Skribe function call before the call to the :text "bibliograph path")). Otherwise, it is a list described by the ,(ref :subsection "Bibliography syntax" :text "syntax") below.])) - :see-also '(bib-table? make-bib-table default-bib-table the-bibliography) + :see-also '(bib-table? make-bib-table *bib-table* the-bibliography) :force-engines *api-engines* :common-args '()) @@ -161,7 +165,7 @@ Here is an example of a simple Skribe database.]) filtered in by ,(param :pred). The value ,(code "full") tells Skribe to count all entries, event those filtered out by ,(param :pred).])) - :see-also '(bib-table? make-bib-table default-bib-table bibliography) + :see-also '(bib-table? make-bib-table *bib-table* bibliography) :force-engines *api-engines* :common-args '()) diff --git a/src/guile/skribilo/biblio.scm b/src/guile/skribilo/biblio.scm index 1fb4b78..55f2ea9 100644 --- a/src/guile/skribilo/biblio.scm +++ b/src/guile/skribilo/biblio.scm @@ -1,5 +1,6 @@ ;;; biblio.scm -- Bibliography functions. ;;; +;;; Copyright 2001, 2002, 2003, 2004 Manuel Serrano ;;; Copyright 2003, 2004 Erick Gallesio - I3S-CNRS/ESSI ;;; Copyright 2005, 2006 Ludovic Courtès ;;; @@ -24,9 +25,10 @@ :use-module (skribilo utils strings) :use-module (skribilo utils syntax) ;; `when', `unless' + :use-module (srfi srfi-1) :autoload (srfi srfi-34) (raise) :use-module (srfi srfi-35) - :use-module (srfi srfi-1) + :use-module (srfi srfi-39) :autoload (skribilo condition) (&file-search-error) :autoload (skribilo reader) (%default-reader) @@ -36,9 +38,9 @@ :use-module (ice-9 optargs) :use-module (oop goops) - :export (bib-table? make-bib-table default-bib-table + :export (bib-table? make-bib-table *bib-table* bib-add! bib-duplicate bib-for-each bib-map - skribe-open-bib-file parse-bib + open-bib-file parse-bib bib-load! resolve-bib resolve-the-bib make-bib-entry @@ -52,27 +54,15 @@ ;;; Provides the bibliography data type and basic bibliography handling, ;;; including simple procedures to sort bibliography entries. ;;; -;;; FIXME: This module need cleanup! -;;; ;;; Code: (fluid-set! current-reader %skribilo-module-reader) - -;; FIXME: Should be a fluid? -(define *bib-table* #f) - -;; Forward declarations -(define skribe-open-bib-file #f) -(define parse-bib #f) - -;;; ====================================================================== ;;; -;;; Utilities +;;; Accessors. ;;; -;;; ====================================================================== (define (make-bib-table ident) (make-hash-table)) @@ -80,10 +70,9 @@ (define (bib-table? obj) (hash-table? obj)) -(define (default-bib-table) - (unless *bib-table* - (set! *bib-table* (make-bib-table "default-bib-table"))) - *bib-table*) +;; The current bib table. +(define *bib-table* + (make-parameter (make-bib-table "default-bib-table"))) (define (%bib-error who entry) (let ((msg "bibliography syntax error on entry")) @@ -91,22 +80,34 @@ (skribe-line-error (%epair-file entry) (%epair-line entry) who msg entry) (skribe-error who msg entry)))) -(define* (bib-for-each proc :optional (table (default-bib-table))) +(define (bib-add! table . entries) + (if (not (bib-table? table)) + (skribe-error 'bib-add! "Illegal bibliography table" table) + (for-each (lambda (entry) + (cond + ((and (list? entry) (> (length entry) 2)) + (let* ((kind (car entry)) + (key (format #f "~A" (cadr entry))) + (fields (cddr entry)) + (old (hash-ref table key))) + (if old + (bib-duplicate key #f old) + (hash-set! table key + (make-bib-entry kind key fields #f))))) + (else + (%bib-error 'bib-add! entry)))) + entries))) + +(define* (bib-for-each proc :optional (table (*bib-table*))) (hash-for-each (lambda (ident entry) (proc ident entry)) table)) -(define* (bib-map proc :optional (table (default-bib-table))) +(define* (bib-map proc :optional (table (*bib-table*))) (hash-map->list (lambda (ident entry) (proc ident entry)) table)) - -;;; ====================================================================== -;;; -;;; BIB-DUPLICATE -;;; -;;; ====================================================================== (define (bib-duplicate ident from old) (let ((ofrom (markup-option old 'from))) (skribe-warning 2 @@ -120,11 +121,11 @@ " ignoring redefinition.")))) -;;; ====================================================================== + ;;; -;;; PARSE-BIB +;;; Parsing. ;;; -;;; ====================================================================== + (define (parse-bib table port) (let ((read %default-reader)) ;; FIXME: We should use a fluid (if (not (bib-table? table)) @@ -146,43 +147,15 @@ (else (%bib-error 'bib-parse entry))))))))) - -;;; ====================================================================== -;;; -;;; BIB-ADD! -;;; -;;; ====================================================================== -(define (bib-add! table . entries) - (if (not (bib-table? table)) - (skribe-error 'bib-add! "Illegal bibliography table" table) - (for-each (lambda (entry) - (cond - ((and (list? entry) (> (length entry) 2)) - (let* ((kind (car entry)) - (key (format #f "~A" (cadr entry))) - (fields (cddr entry)) - (old (hash-ref table key))) - (if old - (bib-duplicate key #f old) - (hash-set! table key - (make-bib-entry kind key fields #f))))) - (else - (%bib-error 'bib-add! entry)))) - entries))) - - -;;; ====================================================================== -;;; -;;; SKRIBE-OPEN-BIB-FILE -;;; -;;; ====================================================================== -;; FIXME: Factoriser -(define (skribe-open-bib-file file command) +(define* (open-bib-file file :optional (command #f)) (let ((path (search-path (*bib-path*) file))) (if (string? path) (begin (when (> (*verbose*) 0) - (format (current-error-port) " [loading bibliography: ~S]\n" path)) + (format (current-error-port) + " [loading bibliography: ~S]\n" path)) + ;; FIXME: The following `open-input-file' won't work with actual + ;; commands. We need to use `(ice-9 popen)'. (open-input-file (if (string? command) (string-append "| " (format #f command path)) @@ -209,7 +182,7 @@ (if (not (bib-table? table)) (skribe-error 'bib-load "Illegal bibliography table" table) ;; read the file - (let ((p (skribe-open-bib-file filename command))) + (let ((p (open-bib-file filename command))) (if (not (input-port? p)) (skribe-error 'bib-load "Can't open data base" filename) (unwind-protect diff --git a/src/guile/skribilo/package/base.scm b/src/guile/skribilo/package/base.scm index 4c9e84c..01e8667 100644 --- a/src/guile/skribilo/package/base.scm +++ b/src/guile/skribilo/package/base.scm @@ -33,7 +33,7 @@ :autoload (skribilo engine) (engine?) ;; optional ``sub-packages'' - :autoload (skribilo biblio) (default-bib-table resolve-bib + :autoload (skribilo biblio) (*bib-table* resolve-bib bib-load! bib-add!) :autoload (skribilo color) (skribe-use-color!) :autoload (skribilo source) (language? source-read-lines source-fontify) @@ -1015,7 +1015,7 @@ (subsection #f) (subsubsection #f) (bib #f) - (bib-table (default-bib-table)) + (bib-table (*bib-table*)) (url #f) (figure #f) (mark #f) @@ -1245,7 +1245,7 @@ ;*---------------------------------------------------------------------*/ (define-markup (bibliography #!rest files #!key - (command #f) (bib-table (default-bib-table))) + (command #f) (bib-table (*bib-table*))) (for-each (lambda (f) (cond ((string? f) @@ -1267,7 +1267,7 @@ (define-markup (the-bibliography #!rest opts #!key pred - (bib-table (default-bib-table)) + (bib-table (*bib-table*)) (sort bib-sort/authors) (count 'partial)) (if (not (memq count '(partial full))) diff --git a/src/guile/skribilo/utils/compat.scm b/src/guile/skribilo/utils/compat.scm index 118f294..4905cef 100644 --- a/src/guile/skribilo/utils/compat.scm +++ b/src/guile/skribilo/utils/compat.scm @@ -35,6 +35,7 @@ :autoload (skribilo lib) (type-name) :autoload (skribilo resolve) (*document-being-resolved*) :autoload (skribilo output) (*document-being-output*) + :autoload (skribilo biblio) (*bib-table* open-bib-file) :use-module (skribilo debug) :re-export (file-size) ;; re-exported from `(skribilo utils files)' @@ -207,6 +208,18 @@ (or (find-markups ident) '())) + +;;; +;;; Bibliography. +;;; + +(define-public (default-bib-table) + (*bib-table*)) + +(define-public (skribe-open-bib-file file command) + (open-bib-file file command)) + + ;;; ;;; Debugging facilities. -- cgit v1.2.3 From 9d5dfa5b32e1dcf98cb4878322d00150477a8225 Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sat, 2 Dec 2006 10:41:59 +0000 Subject: doc: Documented `eq' and the `:div-style' option. * doc/user/char.skb (Symbols): Added an ident. * doc/user/eq.skb (Equation Formatting)[Summary]: New section. Use `doc-markup' as should have already been the case and document `:div-style'. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-23 --- doc/user/char.skb | 1 + doc/user/eq.skb | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/doc/user/char.skb b/doc/user/char.skb index 16c4625..b2f94e2 100644 --- a/doc/user/char.skb +++ b/doc/user/char.skb @@ -67,6 +67,7 @@ are replaced with the actual values of the arguments ,(param 'node).]) ;*--- Symbols ---------------------------------------------------------*/ (subsection :title "Symbols" + :ident "symbols" (p [The function ,(code "symbol") introduces special symbols in the produced file. Note that the rendering of symbols is unportable. It depends diff --git a/doc/user/eq.skb b/doc/user/eq.skb index a611f88..455832b 100644 --- a/doc/user/eq.skb +++ b/doc/user/eq.skb @@ -57,7 +57,7 @@ much like any other kind of markup. However, the resulting syntax is very verbose and hard to read.]) (p [Fortunately, the ,(tt [eq]) package allows for the use of a -much simple syntax. ] +much simpler syntax. ] (example-produce (example :legend "Example of a simple equation" @@ -69,10 +69,30 @@ may have already recognized its ,(emph [prefix notation]). Note that, unlike in the previous example, the equation itself if ,(emph [quoted]), that is, preceded by the ,(tt [']) sign. Additionally, when referring to a symbol (such as the Greek letter ,(symbol "phi")), you no longer -need to use the ,(tt [symbol]) markup (,(ref :text [see subsection] -:subsection "Symbols")).])) +need to use the ,(tt [symbol]) markup (,(numref :text [see Section] +:ident "symbols")).])) + ;; FIXME: Write this. (section :title [Rendering]) + + (section :title [Summary] + + (p [The options available for the top-level ,(code [eq]) markup +are summarized here:]) + + (doc-markup 'eq + `((:inline? [A boolean indicating whether the equation +is to appear "inline", i.e., within a paragraph. If the engine supports +it, it may adjust various parameters such as in-equation spacing +accordingly.]) + (:renderer [The engine that should be used to render +the equation. This allows, for instance, to use the Lout engine to +render equations in HTML.]) + (:div-style [A symbol denoting the default style for +divisions. This should be one of ,(code [over]), ,(code [fraction]), +,(code [div]) and ,(code [slash]). Per-,(code [eq:/]) ,(code +[:div-style]) options override this setting.])) + :source "skribilo/package/eq.scm")) ) -- cgit v1.2.3 From 67142b1e7b350765ce68cb0b89668d5b3abc034b Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sat, 2 Dec 2006 10:45:56 +0000 Subject: doc: Augmented the `eq' doc, documented `eq-display'. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-27 --- doc/user/eq.skb | 25 +++++++++++++++++++++++-- doc/user/src/eq3.skb | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 doc/user/src/eq3.skb (limited to 'doc') diff --git a/doc/user/eq.skb b/doc/user/eq.skb index 455832b..1ef0208 100644 --- a/doc/user/eq.skb +++ b/doc/user/eq.skb @@ -70,7 +70,16 @@ unlike in the previous example, the equation itself if ,(emph [quoted]), that is, preceded by the ,(tt [']) sign. Additionally, when referring to a symbol (such as the Greek letter ,(symbol "phi")), you no longer need to use the ,(tt [symbol]) markup (,(numref :text [see Section] -:ident "symbols")).])) +:ident "symbols")).]) + + (p [It is possible to create ,(emph [equation display blocks]), +where several equations are displayed and aligned according to a +particular operator. ] + + (example-produce + (example :legend "Inlined, displayed, and aligned equations" + (prgm :file "src/eq3.skb")) + (disp (include "src/eq3.skb"))))) ;; FIXME: Write this. (section :title [Rendering]) @@ -91,7 +100,19 @@ render equations in HTML.]) (:div-style [A symbol denoting the default style for divisions. This should be one of ,(code [over]), ,(code [fraction]), ,(code [div]) and ,(code [slash]). Per-,(code [eq:/]) ,(code -[:div-style]) options override this setting.])) +[:div-style]) options override this setting.]) + (:align-with [Within a ,(code [eq-display]) block, +this should be a symbol specifying according to which operator equations +are to be aligned with one another.])) + :source "skribilo/package/eq.scm") + + (p [Equation display blocks can be defined using ,(code +[eq-display]). Display blocks define the scope of the alignment among +equations as specified by the ,(code [:align-with]) options of ,(code +[eq]).]) + + (doc-markup 'eq-display + `() :source "skribilo/package/eq.scm")) ) diff --git a/doc/user/src/eq3.skb b/doc/user/src/eq3.skb new file mode 100644 index 0000000..e229b6c --- /dev/null +++ b/doc/user/src/eq3.skb @@ -0,0 +1,38 @@ +(p [This paragraph contains this equation: ,(eq :inline? #t '(/ alpha +beta)). This is actually an ,(emph [inline]) equation, meaning that it +occurs within a paragraph. Typesetting has to be adjusted +accordingly.]) + +(eq-display + + (p [This is an equation display block, within which equations can be +aligned with one another.]) + + (eq :ident "eq-limit-b-over-l" + :renderer 'lout + :align-with '= + '(= (limit (/ lambda beta) 0 + (apply IPL n k)) + + ;; non-simplified + (/ (expt (+ alpha beta) k) + (* beta + (sum :from (= x 0) + :to (- k 1) + (* (combinations k x) + (expt beta (- k 1 x)) + (expt alpha x))))))) + + [This equation can be simplified as follows:] + + (eq :ident "eq-limit-b-over-l-simplified" + :renderer 'lout + :align-with '= + '(= ;; simplified + (/ (expt (+ alpha beta) k) + (- (expt (+ alpha beta) k) + (expt alpha k))) + + (limit (/ lambda beta) 0 + (apply IPL n k))))) + -- cgit v1.2.3 From fedce06edf8768b927ca91fb22ade620ac77ec2a Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Sun, 3 Dec 2006 21:54:14 +0000 Subject: doc: Updated the `eq' markup documentation. * doc/user/eq.skb: Updated documentation of `eq': the `inline?' parameter and the `:mul-style' parameter. git-archimport-id: skribilo@sv.gnu.org--2006/skribilo--devo--1.2--patch-33 --- ChangeLog | 14 ++++++++++++++ doc/user/eq.skb | 11 ++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'doc') diff --git a/ChangeLog b/ChangeLog index 4a740d7..52f6d53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,20 @@ # arch-tag: automatic-ChangeLog--lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2 # +2006-12-03 20:02:17 GMT Ludovic Courtes patch-91 + + Summary: + doc: Updated the `eq' markup documentation. + Revision: + skribilo--devel--1.2--patch-91 + + * doc/user/eq.skb: Updated documentation of `eq': the `inline?' + parameter and the `:mul-style' parameter. + + modified files: + ChangeLog doc/user/eq.skb + + 2006-12-03 19:59:46 GMT Ludovic Courtes patch-90 Summary: diff --git a/doc/user/eq.skb b/doc/user/eq.skb index 1ef0208..fb8c3ef 100644 --- a/doc/user/eq.skb +++ b/doc/user/eq.skb @@ -90,13 +90,18 @@ particular operator. ] are summarized here:]) (doc-markup 'eq - `((:inline? [A boolean indicating whether the equation -is to appear "inline", i.e., within a paragraph. If the engine supports -it, it may adjust various parameters such as in-equation spacing + `((:inline? [If ,(code [auto]), Skribilo will +automatically determine whether the equation is to be "in-line". +Otherwise, it should be a boolean indicating whether the equation is to +appear "in-line", i.e., within a paragraph. If the engine supports it, +it may adjust various parameters such as in-equation spacing accordingly.]) (:renderer [The engine that should be used to render the equation. This allows, for instance, to use the Lout engine to render equations in HTML.]) + (:mul-style [A symbol denoting the default style for +multiplications. This should be one of ,(code [space]), ,(code +[cross]), ,(code [asterisk]) or ,(code [dot]).]) (:div-style [A symbol denoting the default style for divisions. This should be one of ,(code [over]), ,(code [fraction]), ,(code [div]) and ,(code [slash]). Per-,(code [eq:/]) ,(code -- cgit v1.2.3