aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/guile/skribilo/engine/latex.scm2
-rw-r--r--src/guile/skribilo/package/acmproc.scm43
-rw-r--r--src/guile/skribilo/package/eq/lout.scm4
-rw-r--r--src/guile/skribilo/package/french.scm4
-rw-r--r--src/guile/skribilo/package/jfp.scm107
-rw-r--r--src/guile/skribilo/package/letter.scm37
-rw-r--r--src/guile/skribilo/package/lncs.scm37
-rw-r--r--src/guile/skribilo/package/pie/lout.scm6
-rw-r--r--src/guile/skribilo/package/scribe.scm86
-rw-r--r--src/guile/skribilo/package/sigplan.scm61
-rw-r--r--src/guile/skribilo/package/skribe.scm8
-rw-r--r--src/guile/skribilo/package/slide.scm28
-rw-r--r--src/guile/skribilo/package/slide/base.scm3
-rw-r--r--src/guile/skribilo/package/slide/html.scm3
-rw-r--r--src/guile/skribilo/package/slide/latex.scm106
-rw-r--r--src/guile/skribilo/package/slide/lout.scm8
16 files changed, 328 insertions, 215 deletions
diff --git a/src/guile/skribilo/engine/latex.scm b/src/guile/skribilo/engine/latex.scm
index 2d5e4b6..e69769b 100644
--- a/src/guile/skribilo/engine/latex.scm
+++ b/src/guile/skribilo/engine/latex.scm
@@ -442,7 +442,7 @@
;*---------------------------------------------------------------------*/
;* skribe-get-latex-color ... */
;*---------------------------------------------------------------------*/
-(define (skribe-get-latex-color spec)
+(define-public (skribe-get-latex-color spec)
(let ((c (and (hashtable? *skribe-latex-color-table*)
(hashtable-get *skribe-latex-color-table* spec))))
(if (not (string? c))
diff --git a/src/guile/skribilo/package/acmproc.scm b/src/guile/skribilo/package/acmproc.scm
index 61eafd5..5ca1288 100644
--- a/src/guile/skribilo/package/acmproc.scm
+++ b/src/guile/skribilo/package/acmproc.scm
@@ -1,6 +1,7 @@
;;; acmproc.scm -- The Skribe style for ACMPROC articles.
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,6 +19,28 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
+(define-module (skribilo package acmproc)
+ :use-module (skribilo ast)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :autoload (skribilo output) (output)
+ :autoload (skribilo package base) (chapter font flush
+ toc the-bibliography)
+ :autoload (skribilo utils keywords) (the-options the-body)
+ :autoload (skribilo evaluator) (evaluate-document)
+
+ :use-module (skribilo lib)
+ :use-module (skribilo utils syntax)
+
+ :use-module (ice-9 optargs)
+ :use-module (srfi srfi-13)
+
+ :export (abstract references))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
+
;*---------------------------------------------------------------------*/
;* LaTeX global customizations */
;*---------------------------------------------------------------------*/
@@ -29,7 +52,7 @@
(markup-writer '&latex-author le
:before (lambda (n e)
(let ((body (markup-body n)))
- (printf "\\numberofauthors{~a}\n\\author{\n"
+ (format #f "\\numberofauthors{~a}\n\\author{\n"
(if (pair? body) (length body) 1))))
:action (lambda (n e)
(let ((body (markup-body n)))
@@ -90,7 +113,7 @@
"#cccccc"))
(exp (p (center (color :bg bg :width 90.
(markup-body n))))))
- (skribe-eval exp e))))
+ (evaluate-document exp e))))
;; ACM category, terms, and keywords
(markup-writer '&acm-category :action #f)
(markup-writer '&acm-terms :action #f)
@@ -100,11 +123,12 @@
;*---------------------------------------------------------------------*/
;* abstract ... */
;*---------------------------------------------------------------------*/
-(define-markup (abstract #!rest opt #!key (class "abstract") postscript)
+(define-markup (abstract :rest opt :key (class "abstract") postscript)
(if (engine-format? "latex")
(section :number #f :title "ABSTRACT" (p (the-body opt)))
(let ((a (new markup
(markup '&html-acmproc-abstract)
+ (loc &invocation-location)
(body (the-body opt)))))
(list (if postscript
(section :number #f :toc #f :title "Postscript download"
@@ -116,36 +140,39 @@
;*---------------------------------------------------------------------*/
;* acm-category ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-category #!rest opt #!key index section subsection)
+(define-markup (acm-category :rest opt :key index section subsection)
(new markup
(markup '&acm-category)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-terms ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-terms #!rest opt)
+(define-markup (acm-terms :rest opt)
(new markup
(markup '&acm-terms)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-keywords ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-keywords #!rest opt)
+(define-markup (acm-keywords :rest opt)
(new markup
(markup '&acm-keywords)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-copyright ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-copyright #!rest opt #!key conference location year crdata)
+(define-markup (acm-copyright :rest opt :key conference location year crdata)
(let* ((le (find-engine 'latex))
- (cop (format "\\conferenceinfo{~a,} {~a}
+ (cop (format #f "\\conferenceinfo{~a,} {~a}
\\CopyrightYear{~a}
\\crdata{~a}\n" conference location year crdata))
(old (engine-custom le 'predocument)))
diff --git a/src/guile/skribilo/package/eq/lout.scm b/src/guile/skribilo/package/eq/lout.scm
index bb243f6..9b27a7e 100644
--- a/src/guile/skribilo/package/eq/lout.scm
+++ b/src/guile/skribilo/package/eq/lout.scm
@@ -26,9 +26,7 @@
:use-module (skribilo engine)
:use-module (skribilo lib)
:use-module (skribilo utils syntax)
- :use-module (skribilo utils keywords) ;; `the-options', etc.
- :use-module (srfi srfi-1)
- :use-module (ice-9 optargs))
+ :use-module (srfi srfi-1))
(fluid-set! current-reader %skribilo-module-reader)
diff --git a/src/guile/skribilo/package/french.scm b/src/guile/skribilo/package/french.scm
index a23d1da..e7281d7 100644
--- a/src/guile/skribilo/package/french.scm
+++ b/src/guile/skribilo/package/french.scm
@@ -1,6 +1,7 @@
;;; french.scm -- French Skribe style
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,7 +19,8 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package french))
+(define-module (skribilo package french)
+ :use-module (skribilo engine))
;*---------------------------------------------------------------------*/
;* LaTeX configuration */
diff --git a/src/guile/skribilo/package/jfp.scm b/src/guile/skribilo/package/jfp.scm
index 913b3e3..7360140 100644
--- a/src/guile/skribilo/package/jfp.scm
+++ b/src/guile/skribilo/package/jfp.scm
@@ -1,6 +1,7 @@
;;; jfp.scm -- The Skribe style for JFP articles.
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,7 +19,39 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package jfp))
+(define-module (skribilo package jfp)
+ :use-module (skribilo ast)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :autoload (skribilo output) (output)
+ :autoload (skribilo evaluator) (evaluate-document)
+ :autoload (skribilo lib) (skribe-error)
+ :autoload (skribilo biblio template) (output-bib-entry-template)
+ :autoload (skribilo utils keywords) (the-body)
+ :use-module (skribilo package base)
+ :use-module (srfi srfi-1)
+
+ :use-module (skribilo utils syntax)
+ :use-module (ice-9 optargs)
+ :autoload (ice-9 regex) (regexp-substitute/global)
+
+ :export (abstract references))
+
+;;; Author: Manuel Serrano, Ludovic Courtès
+;;;
+;;; Commentary:
+;;;
+;;; Tools for the Journal of Functional Programming (JFP).
+;;;
+;;; Code:
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+(define every? every)
+
+(define (pregexp-replace* regexp str1 str2)
+ (regexp-substitute/global #f regexp str1
+ 'pre str2 'post))
;*---------------------------------------------------------------------*/
;* LaTeX global customizations */
@@ -192,62 +225,8 @@
;; %bib-entry-body
(markup-writer '&bib-entry-body le
:action (lambda (n e)
- (define (output-fields descr)
- (display "\\item[")
- (let loop ((descr descr)
- (pending #f)
- (armed #f)
- (first #t))
- (cond
- ((null? descr)
- 'done)
- ((pair? (car descr))
- (if (eq? (caar descr) 'or)
- (let ((o1 (cadr (car descr))))
- (if (markup-option n o1)
- (loop (cons o1 (cdr descr))
- pending
- #t
- #f)
- (let ((o2 (caddr (car descr))))
- (loop (cons o2 (cdr descr))
- pending
- armed
- #f))))
- (let ((o (markup-option n (cadr (car descr)))))
- (if o
- (begin
- (if (and pending armed)
- (output pending e))
- (output (caar descr) e)
- (output o e)
- (if (pair? (cddr (car descr)))
- (output (caddr (car descr)) e))
- (loop (cdr descr) #f #t #f))
- (loop (cdr descr) pending armed #f)))))
- ((symbol? (car descr))
- (let ((o (markup-option n (car descr))))
- (if o
- (begin
- (if (and armed pending)
- (output pending e))
- (output o e)
- (if first
- (display "]"))
- (loop (cdr descr) #f #t #f))
- (loop (cdr descr) pending armed #f))))
- ((null? (cdr descr))
- (output (car descr) e))
- ((string? (car descr))
- (loop (cdr descr)
- (if pending pending (car descr))
- armed
- #f))
- (else
- (skribe-error 'output-bib-fields
- "Illegal description"
- (car descr))))))
- (output-fields
+ (output-bib-entry-template n e
+
(case (markup-option n 'kind)
((techreport)
`(author (" (" year ")") " " (or title url) ". "
@@ -297,15 +276,21 @@
(center (color :bg bg :width 90.
(it (markup-body n))))
(it (markup-body n))))))
- (skribe-eval exp e)))))
-
+ (evaluate-document exp e)))))
+
+
+;;;
+;;; Markup.
+;;;
+
;*---------------------------------------------------------------------*/
;* abstract ... */
;*---------------------------------------------------------------------*/
-(define-markup (abstract #!rest opt #!key postscript)
+(define-markup (abstract :rest opt :key postscript)
(if (engine-format? "latex")
(new markup
(markup 'jfp-abstract)
+ (loc &invocation-location)
(body (p (the-body opt))))
(let ((a (new markup
(markup '&html-jfp-abstract)
@@ -326,3 +311,5 @@
:number (not (engine-format? "latex"))
(font :size -1 (the-bibliography)))))
+
+;;; jfp.scm ends here
diff --git a/src/guile/skribilo/package/letter.scm b/src/guile/skribilo/package/letter.scm
index 91d45be..9036bd3 100644
--- a/src/guile/skribilo/package/letter.scm
+++ b/src/guile/skribilo/package/letter.scm
@@ -1,6 +1,7 @@
;;; letter.scm -- Skribe style for letters
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,29 +19,43 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package letter))
+(define-module (skribilo package letter)
+ :use-module (skribilo ast)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :use-module (skribilo lib)
+ :autoload (skribilo output) (output)
+ :autoload (skribilo utils keywords) (the-body the-options)
+ :use-module (skribilo package base)
+ :use-module (srfi srfi-1)
+ :use-module (skribilo utils syntax)
+ :use-module (ice-9 optargs))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
;*---------------------------------------------------------------------*/
;* document */
;*---------------------------------------------------------------------*/
(define %letter-document document)
-(define-markup (document #!rest opt
- #!key (ident #f) (class "letter")
+(define-markup (document :rest opt
+ :key (ident #f) (class "letter")
where date author
&skribe-eval-location)
(let* ((ubody (the-body opt))
(body (list (new markup
(markup '&letter-where)
- (loc &skribe-eval-location)
+ (loc &invocation-location)
(options `((:where ,where)
(:date ,date)
(:author ,author))))
ubody)))
(apply %letter-document
- :author #f :title #f
- (append (apply append
- (the-options opt :where :date :author :title))
+ :author #f :title #f
+ (append (concatenate
+ (the-options opt :where :date :author :title))
body))))
;*---------------------------------------------------------------------*/
@@ -94,11 +109,11 @@
;; url
(if url (row url)))))
;; emit the author
- (if a
+ (if a
(output a ne)
(output hd e))))
:after "\\end{raggedright}\n\\vspace{1cm}\n\n"))
-
+
;*---------------------------------------------------------------------*/
;* HTML configuration */
;*---------------------------------------------------------------------*/
@@ -149,9 +164,7 @@
;; url
(if url (row url)))))
;; emit the author
- (if a
+ (if a
(output a ne)
(output hd e))))
:after "</table>\n<hr>\n\n"))
-
-
diff --git a/src/guile/skribilo/package/lncs.scm b/src/guile/skribilo/package/lncs.scm
index e0c935b..39c4cc4 100644
--- a/src/guile/skribilo/package/lncs.scm
+++ b/src/guile/skribilo/package/lncs.scm
@@ -36,6 +36,7 @@
:use-module (skribilo utils syntax)
:use-module (ice-9 optargs)
+ :use-module (srfi srfi-1)
:use-module (srfi srfi-13)
:export (abstract references))
@@ -95,28 +96,29 @@
(cdr n))
(display "}\n"))
(let ((body (markup-body n)))
+ (define (institute=? n1 n2)
+ (let ((aff1 (markup-option n1 :affiliation))
+ (add1 (markup-option n1 :address))
+ (aff2 (markup-option n2 :affiliation))
+ (add2 (markup-option n2 :address)))
+ (and (equal? aff1 aff2) (equal? add1 add2))))
+ (define (search-institute n i j)
+ (cond
+ ((null? i)
+ #f)
+ ((institute=? n (car i))
+ j)
+ (else
+ (search-institute n (cdr i) (- j 1)))))
+
(cond
((is-markup? body 'author)
(markup-option-add! n 'inst 1)
(&latex-author-1 body)
(&latex-inst-n (list body)))
((and (list? body)
- (every? (lambda (b) (is-markup? b 'author))
- body))
- (define (institute=? n1 n2)
- (let ((aff1 (markup-option n1 :affiliation))
- (add1 (markup-option n1 :address))
- (aff2 (markup-option n2 :affiliation))
- (add2 (markup-option n2 :address)))
- (and (equal? aff1 aff2) (equal? add1 add2))))
- (define (search-institute n i j)
- (cond
- ((null? i)
- #f)
- ((institute=? n (car i))
- j)
- (else
- (search-institute n (cdr i) (- j 1)))))
+ (every (lambda (b) (is-markup? b 'author))
+ body))
(if (null? (cdr body))
(begin
(markup-option-add! (car body) 'inst 1)
@@ -155,7 +157,7 @@
(inst (markup-option n 'inst)))
(if name (output name e))
(if title (output title e))
- (if inst (printf "\\inst{~a}\n" inst)))))))
+ (if inst (format #t "\\inst{~a}\n" inst)))))))
;*---------------------------------------------------------------------*/
;* HTML global customizations */
@@ -178,6 +180,7 @@
(new markup
(markup 'lncs-abstract)
(options (the-options opt))
+ (loc &invocation-location)
(body (the-body opt)))
(let ((a (new markup
(markup '&html-lncs-abstract)
diff --git a/src/guile/skribilo/package/pie/lout.scm b/src/guile/skribilo/package/pie/lout.scm
index 61dbcb7..eb73729 100644
--- a/src/guile/skribilo/package/pie/lout.scm
+++ b/src/guile/skribilo/package/pie/lout.scm
@@ -1,6 +1,6 @@
;;; lout.scm -- Lout implementation of the `pie' package.
;;;
-;;; Copyright 2005, 2006 Ludovic Courtès <ludovic.courtes@laas.fr>
+;;; Copyright 2005, 2006, 2007 Ludovic Courtès <ludovic.courtes@laas.fr>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -26,9 +26,7 @@
:use-module (skribilo engine)
:use-module (skribilo lib)
:use-module (skribilo utils syntax)
- :use-module (skribilo utils keywords) ;; `the-options', etc.
- :autoload (skribilo engine lout) (lout-color-specification)
- :use-module (ice-9 optargs))
+ :autoload (skribilo engine lout) (lout-color-specification))
(fluid-set! current-reader %skribilo-module-reader)
diff --git a/src/guile/skribilo/package/scribe.scm b/src/guile/skribilo/package/scribe.scm
index 902cdb5..388ef56 100644
--- a/src/guile/skribilo/package/scribe.scm
+++ b/src/guile/skribilo/package/scribe.scm
@@ -1,6 +1,7 @@
;;; scribe.scm -- Scribe Compatibility kit
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,8 +19,42 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package scribe))
+(define-module (skribilo package scribe)
+ :use-module (skribilo engine)
+ :autoload (skribilo package base) (chapter font flush
+ toc the-bibliography)
+ :autoload (skribilo utils keywords) (the-options the-body)
+ :autoload (skribilo evaluator) (load-document)
+ :use-module (skribilo biblio)
+ :use-module (skribilo lib)
+ :use-module (skribilo utils syntax)
+
+ :use-module (ice-9 optargs)
+ :use-module (srfi srfi-1)
+ :use-module (srfi srfi-13)
+
+ :export (style chapter table-of-contents frame copyright sect euro
+ tab space print-bibliography linebreak ref make-index
+ print-index scribe-format? scribe-url prgm
+ *scribe-tex-predocument* latex-prelude html-prelude
+
+ *scribe-background* *scribe-foreground* *scribe-tbackground*
+ *scribe-tforeground* *scribe-title-font* *scribe-author-font*
+ *scribe-chapter-numbering* *scribe-footer* *scribe-prgm-color*))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+;;; Author: Manuel Serrano, Ludovic Courtès
+;;;
+;;; Commentary:
+;;;
+;;; Compatibility layer for Scribe, Skribe's predecessor. See
+;;; http://www-sop.inria.fr/mimosa/fp/Scribe/ for details.
+;;;
+;;; Code:
+
+
;*---------------------------------------------------------------------*/
;* style ... */
;*---------------------------------------------------------------------*/
@@ -30,7 +65,7 @@
style)
((symbol? style)
(string-append (symbol->string style) ".scr")))))
- (skribe-load name :engine *skribe-engine*)))
+ (load-document name)))
(for-each load-style styles))
;*---------------------------------------------------------------------*/
@@ -38,7 +73,7 @@
;*---------------------------------------------------------------------*/
(define skribe-chapter chapter)
-(define-markup (chapter #!rest opt #!key title subtitle split number toc file)
+(define-markup (chapter :rest opt :key title subtitle split number toc file)
(apply skribe-chapter
:title (or title subtitle)
:number number
@@ -49,7 +84,8 @@
;*---------------------------------------------------------------------*/
;* table-of-contents ... */
;*---------------------------------------------------------------------*/
-(define-markup (table-of-contents #!rest opts #!key chapter section subsection)
+(define* (table-of-contents :key chapter section subsection
+ :rest opts)
(apply toc opts))
;*---------------------------------------------------------------------*/
@@ -57,7 +93,7 @@
;*---------------------------------------------------------------------*/
(define skribe-frame frame)
-(define-markup (frame #!rest opt #!key width margin)
+(define-markup (frame :rest opt :key width margin)
(apply skribe-frame
:width (if (real? width) (* 100 width) width)
:margin margin
@@ -96,8 +132,8 @@
;*---------------------------------------------------------------------*/
;* print-bibliography ... */
;*---------------------------------------------------------------------*/
-(define-markup (print-bibliography #!rest opts
- #!key all (sort bib-sort/authors))
+(define-markup (print-bibliography :rest opts
+ :key all (sort bib-sort/authors))
(the-bibliography all sort))
;*---------------------------------------------------------------------*/
@@ -105,7 +141,7 @@
;*---------------------------------------------------------------------*/
(define skribe-linebreak linebreak)
-(define-markup (linebreak . lnum)
+(define (linebreak . lnum)
(cond
((null? lnum)
(skribe-linebreak))
@@ -119,12 +155,12 @@
;*---------------------------------------------------------------------*/
(define skribe-ref ref)
-(define-markup (ref #!rest opts
- #!key scribe url id page figure mark
- chapter section subsection subsubsection subsubsection
- bib bib+ number)
+(define* (ref :key scribe url id page figure mark
+ chapter section subsection subsubsection subsubsubsection
+ bib bib+ number
+ :rest opts)
(let ((bd (the-body opts))
- (args (apply append (the-options opts :id))))
+ (args (concatenate (the-options opts :id))))
(if id (set! args (cons* :mark id args)))
(if (pair? bd) (set! args (cons* :text bd args)))
(apply skribe-ref args)))
@@ -138,12 +174,12 @@
(define skribe-index index)
(define skribe-make-index make-index)
-(define-markup (make-index index)
+(define (make-index index)
(let ((i (skribe-make-index index)))
(set! *scribe-indexes* (cons (cons index i) *scribe-indexes*))
i))
-(define-markup (index #!rest opts #!key note index shape)
+(define* (index :key note index shape :rest opts)
(let ((i (if (not index)
"theindex"
(let ((i (assoc index *scribe-indexes*)))
@@ -152,8 +188,8 @@
(make-index index))))))
(apply skribe-index :note note :index i :shape shape (the-body opts))))
-(define-markup (print-index #!rest opts
- #!key split (char-offset 0) (header-limit 100))
+(define* (print-index :key split (char-offset 0) (header-limit 100)
+ :rest opts)
(apply the-index
:split split
:char-offset char-offset
@@ -173,7 +209,7 @@
;*---------------------------------------------------------------------*/
;* scribe-url ... */
;*---------------------------------------------------------------------*/
-(define (scribe-url) (skribe-url))
+(define (scribe-url) "http://www.nongnu.org/skribilo/")
;*---------------------------------------------------------------------*/
;* Various configurations */
@@ -191,8 +227,8 @@
;*---------------------------------------------------------------------*/
;* prgm ... */
;*---------------------------------------------------------------------*/
-(define-markup (prgm #!rest opts
- #!key lnum lnumwidth language bg frame (width 1.)
+(define-markup (prgm :rest opts
+ :key lnum lnumwidth language bg frame (width 1.)
colors (monospace #t))
(let* ((w (cond
((real? width) (* width 100.))
@@ -236,5 +272,11 @@
;*---------------------------------------------------------------------*/
;* prelude */
;*---------------------------------------------------------------------*/
-(let ((p (user-prelude)))
- (user-prelude-set! (lambda (e) (p e) (latex-prelude e))))
+;; FIXME: I (Ludovic) guess `user-prelude' was supposed to be defined by user
+;; documents. The issue is that the document's name space is not reachable
+;; from here.
+; (let ((p (user-prelude)))
+; (user-prelude-set! (lambda (e) (p e) (latex-prelude e))))
+
+
+;;; scribe.scm ends here
diff --git a/src/guile/skribilo/package/sigplan.scm b/src/guile/skribilo/package/sigplan.scm
index 28d4e83..e1db670 100644
--- a/src/guile/skribilo/package/sigplan.scm
+++ b/src/guile/skribilo/package/sigplan.scm
@@ -1,6 +1,7 @@
;;; sigplan.scm -- The Skribe style for ACMPROC articles.
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,8 +19,25 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package sigplan))
+(define-module (skribilo package sigplan)
+ :use-module (skribilo ast)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :autoload (skribilo output) (output)
+ :autoload (skribilo evaluator) (evaluate-document)
+ :autoload (skribilo lib) (skribe-error)
+ :autoload (skribilo utils keywords) (the-body)
+ :use-module (skribilo package base)
+ :use-module (srfi srfi-1)
+ :use-module (skribilo utils syntax)
+ :use-module (ice-9 optargs)
+
+ :export (abstract references))
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
;*---------------------------------------------------------------------*/
;* LaTeX global customizations */
;*---------------------------------------------------------------------*/
@@ -31,8 +49,8 @@
(markup-writer '&latex-author le
:before (lambda (n e)
(let ((body (markup-body n)))
- (printf "\\authorinfo{\n"
- (if (pair? body) (length body) 1))))
+ (display "\\authorinfo{\n")
+ (display (if (pair? body) (length body) 1))))
:action (lambda (n e)
(let ((body (markup-body n)))
(for-each (lambda (a)
@@ -43,8 +61,8 @@
;; author
(let ((old-author (markup-writer-get 'author le)))
(markup-writer 'author le
- :options (writer-options old-author)
- :action (writer-action old-author)))
+ :options (writer-options old-author)
+ :action (writer-action old-author)))
;; ACM category, terms, and keywords
(markup-writer '&acm-category le
:options '(:index :section :subsection)
@@ -86,27 +104,33 @@
(markup-writer '&html-acmproc-abstract he
:action (lambda (n e)
(let* ((ebg (engine-custom e 'abstract-background))
- (bg (or (and (string? ebg)
+ (bg (or (and (string? ebg)
(> (string-length ebg) 0))
ebg
"#cccccc"))
- (exp (p (center (color :bg bg :width 90.
+ (exp (p (center (color :bg bg :width 90.
(markup-body n))))))
- (skribe-eval exp e))))
+ (evaluate-document exp e))))
;; ACM category, terms, and keywords
(markup-writer '&acm-category :action #f)
(markup-writer '&acm-terms :action #f)
(markup-writer '&acm-keywords :action #f)
(markup-writer '&acm-copyright :action #f))
-
+
+
+;;;
+;;; Markup.
+;;;
+
;*---------------------------------------------------------------------*/
;* abstract ... */
;*---------------------------------------------------------------------*/
-(define-markup (abstract #!rest opt #!key postscript)
+(define-markup (abstract :rest opt :key postscript)
(if (engine-format? "latex")
(section :number #f :title "ABSTRACT" (p (the-body opt)))
(let ((a (new markup
(markup '&html-acmproc-abstract)
+ (loc &invocation-location)
(body (the-body opt)))))
(list (if postscript
(section :number #f :toc #f :title "Postscript download"
@@ -118,43 +142,46 @@
;*---------------------------------------------------------------------*/
;* acm-category ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-category #!rest opt #!key index section subsection)
+(define-markup (acm-category :rest opt :key index section subsection)
(new markup
(markup '&acm-category)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-terms ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-terms #!rest opt)
+(define-markup (acm-terms :rest opt)
(new markup
(markup '&acm-terms)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-keywords ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-keywords #!rest opt)
+(define-markup (acm-keywords :rest opt)
(new markup
(markup '&acm-keywords)
+ (loc &invocation-location)
(options (the-options opt))
(body (the-body opt))))
;*---------------------------------------------------------------------*/
;* acm-copyright ... */
;*---------------------------------------------------------------------*/
-(define-markup (acm-copyright #!rest opt #!key conference location year crdata)
+(define-markup (acm-copyright :rest opt :key conference location year crdata)
(let* ((le (find-engine 'latex))
- (cop (format "\\conferenceinfo{~a,} {~a}
+ (cop (format #f "\\conferenceinfo{~a,} {~a}
\\CopyrightYear{~a}
\\crdata{~a}\n" conference location year crdata))
(old (engine-custom le 'predocument)))
(if (string? old)
(engine-custom-set! le 'predocument (string-append cop old))
(engine-custom-set! le 'predocument cop))))
-
+
;*---------------------------------------------------------------------*/
;* references ... */
;*---------------------------------------------------------------------*/
@@ -163,4 +190,4 @@
(if (engine-format? "latex")
(font :size -1 (flush :side 'left (the-bibliography)))
(section :title "References"
- (font :size -1 (the-bibliography))))))
+ (font :size -1 (the-bibliography))))))
diff --git a/src/guile/skribilo/package/skribe.scm b/src/guile/skribilo/package/skribe.scm
index 86969aa..4968653 100644
--- a/src/guile/skribilo/package/skribe.scm
+++ b/src/guile/skribilo/package/skribe.scm
@@ -18,10 +18,12 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
+;;; FIXME: This must be moved to the base package!
+
;*---------------------------------------------------------------------*/
;* p ... */
;*---------------------------------------------------------------------*/
-(define-markup (p #!rest opt #!key ident (class #f) &skribe-eval-location)
+(define-markup (p :rest opt :key ident (class #f) &skribe-eval-location)
(paragraph :ident ident :class class :loc &skribe-eval-location
(the-body opt)))
@@ -45,7 +47,7 @@
;* produces: */
;* i) toto, ii) tutu, iii) titi. */
;*---------------------------------------------------------------------*/
-(define-markup (counter #!rest opts #!key (numbering 'roman))
+(define-markup (counter :rest opts :key (numbering 'roman))
(define items (if (eq? (car opts) :numbering) (cddr opts) opts))
(define vroman '#(- "i" "ii" "iii" "iv" "v" "vi" "vii" "viii" "ix" "x"))
(define (the-roman-number num)
@@ -77,7 +79,7 @@
;*---------------------------------------------------------------------*/
;* q */
;*---------------------------------------------------------------------*/
-(define-markup (q #!rest opt)
+(define-markup (q :rest opt)
(new markup
(markup 'q)
(options (the-options opt))
diff --git a/src/guile/skribilo/package/slide.scm b/src/guile/skribilo/package/slide.scm
index cb5edda..dd6519d 100644
--- a/src/guile/skribilo/package/slide.scm
+++ b/src/guile/skribilo/package/slide.scm
@@ -35,7 +35,7 @@
:use-module (srfi srfi-1)
:use-module (ice-9 optargs))
-(fluid-set! current-reader (make-reader 'skribe))
+(fluid-set! current-reader %skribilo-module-reader)
@@ -54,8 +54,8 @@
;*---------------------------------------------------------------------*/
;* slide ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide #!rest opt
- #!key
+(define-markup (slide :rest opt
+ :key
(ident #f) (class #f)
(toc #t)
title (number #t)
@@ -152,7 +152,7 @@
;*---------------------------------------------------------------------*/
;* slide-vspace ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-vspace #!rest opt #!key (unit 'cm))
+(define-markup (slide-vspace :rest opt :key (unit 'cm))
(new markup
(markup 'slide-vspace)
(loc &invocation-location)
@@ -162,8 +162,8 @@
;*---------------------------------------------------------------------*/
;* slide-embed ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-embed #!rest opt
- #!key
+(define-markup (slide-embed :rest opt
+ :key
command
(arguments '())
(geometry-opt "-geometry")
@@ -187,7 +187,7 @@
;*---------------------------------------------------------------------*/
;* slide-record ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-record #!rest opt #!key ident class tag (play #t))
+(define-markup (slide-record :rest opt :key ident class tag (play #t))
(if (not tag)
(skribe-error 'slide-record "Tag missing" tag)
(new markup
@@ -201,7 +201,7 @@
;*---------------------------------------------------------------------*/
;* slide-play ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-play #!rest opt #!key ident class tag color)
+(define-markup (slide-play :rest opt :key ident class tag color)
(if (not tag)
(skribe-error 'slide-play "Tag missing" tag)
(new markup
@@ -216,8 +216,8 @@
;*---------------------------------------------------------------------*/
;* slide-play* ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-play* #!rest opt
- #!key ident class color (scolor "#000000"))
+(define-markup (slide-play* :rest opt
+ :key ident class color (scolor "#000000"))
(let ((body (the-body opt)))
(for-each (lambda (lbl)
(match-case lbl
@@ -248,8 +248,8 @@
;*---------------------------------------------------------------------*/
;* slide-topic ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-topic #!rest opt
- #!key title (outline? #t)
+(define-markup (slide-topic :rest opt
+ :key title (outline? #t)
(ident #f) (class #f))
(new container
(markup 'slide-topic)
@@ -264,8 +264,8 @@
;*---------------------------------------------------------------------*/
;* slide-subtopic ... */
;*---------------------------------------------------------------------*/
-(define-markup (slide-subtopic #!rest opt
- #!key title (outline? #f)
+(define-markup (slide-subtopic :rest opt
+ :key title (outline? #f)
(ident #f) (class #f))
(new container
(markup 'slide-subtopic)
diff --git a/src/guile/skribilo/package/slide/base.scm b/src/guile/skribilo/package/slide/base.scm
index 1eeb25f..2532221 100644
--- a/src/guile/skribilo/package/slide/base.scm
+++ b/src/guile/skribilo/package/slide/base.scm
@@ -123,8 +123,7 @@
;; Produce an entry for `topic'. Colorize it based on the fact
;; that the current topic is `current-topic' (it may need to be
;; hightlighted).
- (let ((title (markup-option topic :title))
- (current? (eq? topic current-topic)))
+ (let ((current? (eq? topic current-topic)))
(color :fg (if current? "#000000" "#666666")
(apply (if current? bold (lambda (x) x))
(list (markup-option topic :title))))))
diff --git a/src/guile/skribilo/package/slide/html.scm b/src/guile/skribilo/package/slide/html.scm
index 024e1fd..e8da8fb 100644
--- a/src/guile/skribilo/package/slide/html.scm
+++ b/src/guile/skribilo/package/slide/html.scm
@@ -30,7 +30,7 @@
:autoload (skribilo engine html) (html-width html-title-authors)
:use-module (skribilo package slide)
- :use-module ((skribilo package base) :select (ref)))
+ :use-module (skribilo package base))
(fluid-set! current-reader %skribilo-module-reader)
@@ -145,7 +145,6 @@
:options '(:title :outline? :class :ident)
:action (lambda (n e)
(let ((title (markup-option n :title))
- (body (markup-body n))
(class (markup-class n)))
;; top-level class
(if class (format #t "\n<div class=\"~a\">" class))
diff --git a/src/guile/skribilo/package/slide/latex.scm b/src/guile/skribilo/package/slide/latex.scm
index e187d3c..f80aaee 100644
--- a/src/guile/skribilo/package/slide/latex.scm
+++ b/src/guile/skribilo/package/slide/latex.scm
@@ -1,6 +1,7 @@
;;; latex.scm -- LaTeX implementation of the `slide' package.
;;;
;;; Copyright 2003, 2004 Manuel Serrano
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -18,13 +19,33 @@
;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;; USA.
-(define-skribe-module (skribilo package slide latex)
- :use-module (skribilo package slide))
+(define-module (skribilo package slide latex)
+ :use-module (skribilo package slide)
+ :use-module (skribilo utils syntax)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :autoload (skribilo output) (output)
+ :use-module (skribilo ast)
+ :use-module (skribilo lib)
+ :autoload (skribilo evaluator) (evaluate-document)
+ :autoload (skribilo engine latex) (skribe-get-latex-color)
-(define-public %slide-latex-mode 'seminar)
+ :autoload (ice-9 regex) (string-match)
+ :use-module (ice-9 match)
+ :use-module (srfi srfi-11)
+ :use-module (srfi srfi-13)
+ :use-module (srfi srfi-39)
-(define-public (%slide-latex-initialize!)
+ :export (%slide-latex-mode %slide-latex-initialize! *slide-advi-scale*))
+
+
+(fluid-set! current-reader %skribilo-module-reader)
+
+
+(define %slide-latex-mode 'seminar)
+
+(define (%slide-latex-initialize!)
(skribe-message "LaTeX slides setup...\n")
(case %slide-latex-mode
((seminar)
@@ -36,7 +57,12 @@
(else
(skribe-error 'slide "Illegal latex mode" %slide-latex-mode))))
+(define string->integer string->number)
+(define *slide-advi-scale*
+ (make-parameter 1.0))
+
+
;*---------------------------------------------------------------------*/
;* &slide-seminar-predocument ... */
;*---------------------------------------------------------------------*/
@@ -92,7 +118,7 @@
:action (lambda (n e)
(display "\n\\vspace{")
(output (markup-body n) e)
- (printf " ~a}\n\n" (markup-option n :unit))))
+ (format #t " ~a}\n\n" (markup-option n :unit))))
;; slide-slide
(markup-writer 'slide le
:options '(:title :number :transition :vfill :toc :vspace :image)
@@ -136,14 +162,13 @@
;*---------------------------------------------------------------------*/
(define (%slide-seminar-setup!)
(skribe-message "Seminar slides setup...\n")
- (let ((le (find-engine 'latex))
- (be (find-engine 'base)))
+ (let ((le (find-engine 'latex)))
;; latex configuration
(define (seminar-slide n e)
(let ((nb (markup-option n :number))
(t (markup-option n :title)))
(display "\\begin{slide}\n")
- (if nb (printf "~a/~a -- " nb (slide-number)))
+ (if nb (format #t "~a/~a -- " nb (slide-number)))
(output t e)
(display "\\hrule\n"))
(output (markup-body n) e)
@@ -168,36 +193,29 @@
;*---------------------------------------------------------------------*/
(define (%slide-advi-setup!)
(skribe-message "Generating `Advi Seminar' slides...\n")
- (let ((le (find-engine 'latex))
- (be (find-engine 'base)))
+ (let ((le (find-engine 'latex)))
(define (advi-geometry geo)
- (let ((r (pregexp-match "([0-9]+)x([0-9]+)" geo)))
+ (let ((r (string-match "([0-9]+)x([0-9]+)" geo)))
(if (pair? r)
(let* ((w (cadr r))
- (w' (string->integer w))
- (w'' (number->string (/ w' *skribe-slide-advi-scale*)))
- (h (caddr r))
- (h' (string->integer h))
- (h'' (number->string (/ h' *skribe-slide-advi-scale*))))
+ (h (caddr r)))
(values "" (string-append w "x" h "+!x+!y")))
- (let ((r (pregexp-match "([0-9]+)x([0-9]+)[+](-?[0-9]+)[+](-?[0-9]+)" geo)))
+ (let ((r (string-match "([0-9]+)x([0-9]+)[+](-?[0-9]+)[+](-?[0-9]+)" geo)))
(if (pair? r)
(let ((w (number->string (/ (string->integer (cadr r))
- *skribe-slide-advi-scale*)))
+ (*slide-advi-scale*))))
(h (number->string (/ (string->integer (caddr r))
- *skribe-slide-advi-scale*)))
- (x (cadddr r))
- (y (car (cddddr r))))
+ (*slide-advi-scale*)))))
(values (string-append "width=" w "cm,height=" h "cm")
"!g"))
(values "" geo))))))
(define (advi-transition trans)
(cond
((string? trans)
- (printf "\\advitransition{~s}" trans))
+ (format #t "\\advitransition{~s}" trans))
((and (symbol? trans)
(memq trans '(wipe block slide)))
- (printf "\\advitransition{~s}" trans))
+ (format #t "\\advitransition{~s}" trans))
(else
#f)))
;; latex configuration
@@ -208,7 +226,7 @@
(lt (markup-option n :transition))
(gt (engine-custom e 'transition)))
(if (and i (engine-custom e 'advi))
- (printf "\\advibg[global]{image=~a}\n"
+ (format #t "\\advibg[global]{image=~a}\n"
(if (and (pair? i)
(null? (cdr i))
(string? (car i)))
@@ -216,7 +234,7 @@
i)))
(display "\\begin{slide}\n")
(advi-transition (or lt gt))
- (if n (printf "~a/~a -- " n (slide-number)))
+ (if n (format #t "~a/~a -- " n (slide-number)))
(output t e)
(display "\\hrule\n"))
(output (markup-body n) e)
@@ -226,7 +244,7 @@
(define (advi-record n e)
(display "\\advirecord")
(when (markup-option n :play) (display "[play]"))
- (printf "{~a}{" (markup-option n :tag))
+ (format #t "{~a}{" (markup-option n :tag))
(output (markup-body n) e)
(display "}"))
;; advi play
@@ -237,7 +255,7 @@
(display "[")
(display (skribe-get-latex-color c))
(display "]")))
- (printf "{~a}" (markup-option n :tag)))
+ (format #t "{~a}" (markup-option n :tag)))
;; advi play*
(define (advi-play* n e)
(let ((c (skribe-get-latex-color (markup-option n :color)))
@@ -247,21 +265,21 @@
(when last
(display "\\adviplay[")
(display d)
- (printf "]{~a}" last))
+ (format #t "]{~a}" last))
(when (pair? lbls)
(let ((lbl (car lbls)))
- (match-case lbl
- ((?id ?col)
+ (match lbl
+ ((id col)
(display "\\adviplay[")
(display (skribe-get-latex-color col))
- (printf "]{" ~a "}" id)
- (skribe-eval (slide-pause) e)
+ (display (string-append "]{" id "}"))
+ (evaluate-document (slide-pause) e)
(loop (cdr lbls) id))
(else
(display "\\adviplay[")
(display c)
- (printf "]{~a}" lbl)
- (skribe-eval (slide-pause) e)
+ (format #t "]{~a}" lbl)
+ (evaluate-document (slide-pause) e)
(loop (cdr lbls) lbl))))))))
(engine-custom-set! le 'documentclass
"\\documentclass{seminar}\n")
@@ -295,8 +313,8 @@
geometry-opt " "
geometry))
(rgeometry
- (multiple-value-bind (aopt dopt)
- (advi-geometry rgeometry)
+ (let-values (((aopt dopt)
+ (advi-geometry rgeometry)))
(set! a (string-append a "," aopt))
(string-append cmd " "
geometry-opt " "
@@ -306,7 +324,7 @@
(c (if (and transient transient-opt)
(string-append c " " transient-opt " !p")
c)))
- (printf "\\adviembed[~a]{~a}\n" a c)))))
+ (format #t "\\adviembed[~a]{~a}\n" a c)))))
(set! &latex-record advi-record)
(set! &latex-play advi-play)
(set! &latex-play* advi-play*)))
@@ -317,31 +335,29 @@
(define (%slide-prosper-setup!)
(skribe-message "Generating `Prosper' slides...\n")
(let ((le (find-engine 'latex))
- (be (find-engine 'base))
(overlay-count 0))
;; transitions
(define (prosper-transition trans)
(cond
((string? trans)
- (printf "[~s]" trans))
+ (format #t "[~s]" trans))
((eq? trans 'slide)
- (printf "[Blinds]"))
+ (display "[Blinds]"))
((and (symbol? trans)
(memq trans '(split blinds box wipe dissolve glitter)))
- (printf "[~s]"
+ (format #t "[~s]"
(string-upcase (symbol->string trans))))
(else
#f)))
;; latex configuration
(define (prosper-slide n e)
- (let* ((i (markup-option n :image))
- (t (markup-option n :title))
+ (let* ((t (markup-option n :title))
(lt (markup-option n :transition))
(gt (engine-custom e 'transition))
(pa (search-down (lambda (x) (is-markup? x 'slide-pause)) n))
(lpa (length pa)))
(set! overlay-count 1)
- (if (>= lpa 1) (printf "\\overlays{~a}{%\n" (+ 1 lpa)))
+ (if (>= lpa 1) (format #t "\\overlays{~a}{%\n" (+ 1 lpa)))
(display "\\begin{slide}")
(prosper-transition (or lt gt))
(display "{")
@@ -368,7 +384,7 @@
(set! &latex-pause
(lambda (n e)
(set! overlay-count (+ 1 overlay-count))
- (printf "\\FromSlide{~s}%\n" overlay-count)))))
+ (format #t "\\FromSlide{~s}%\n" overlay-count)))))
;*---------------------------------------------------------------------*/
;* Setup ... */
diff --git a/src/guile/skribilo/package/slide/lout.scm b/src/guile/skribilo/package/slide/lout.scm
index f3c9a61..c6e7f07 100644
--- a/src/guile/skribilo/package/slide/lout.scm
+++ b/src/guile/skribilo/package/slide/lout.scm
@@ -26,6 +26,7 @@
:use-module (skribilo writer)
:autoload (skribilo output) (output)
:use-module (skribilo ast)
+ :autoload (skribilo lib) (skribe-error)
:use-module (srfi srfi-13) ;; `string-join'
@@ -110,17 +111,16 @@
(args (markup-option n :arguments))
(alt (markup-option n :alt))
(geometry (markup-option n :geometry))
- (geometry-opt (markup-option n :geometry-opt))
- (filter (make-string-replace lout-verbatim-encoding)))
+ (geometry-opt (markup-option n :geometry-opt)))
(format #t "~%\"~a\" @SkribiloEmbed { "
(string-append command " "
(if (and geometry-opt geometry)
(string-append geometry-opt " "
geometry " ")
"")
- (string-join args " ")))
+ (string-join args)))
(output alt e)
- (format #t " }\n"))))
+ (display " }\n"))))
(markup-writer 'slide-pause le
;; FIXME: Use a `pdfmark' custom action and a PDF transition action.