67 lines
1.9 KiB
Racket
67 lines
1.9 KiB
Racket
#lang scheme/base
|
|
(require setup/collects
|
|
scribble/core
|
|
(except-in scribble/base author)
|
|
scribble/decode
|
|
scribble/html-properties
|
|
scribble/latex-properties
|
|
(for-syntax scheme/base))
|
|
|
|
(provide abstract include-abstract
|
|
author author/short
|
|
affiliation affiliation-mark affiliation-sep)
|
|
|
|
(define jfp-extras
|
|
(let ([abs (lambda (s)
|
|
(path->collects-relative
|
|
(collection-file-path s "scribble" "jfp")))])
|
|
(list
|
|
(make-css-addition (abs "jfp.css"))
|
|
(make-tex-addition (abs "jfp.tex")))))
|
|
|
|
;; ----------------------------------------
|
|
;; Abstracts:
|
|
|
|
(define abstract-style (make-style "abstract" jfp-extras))
|
|
|
|
(define (abstract . strs)
|
|
(make-nested-flow
|
|
abstract-style
|
|
(decode-flow strs)))
|
|
|
|
(define (extract-abstract p)
|
|
(unless (part? p)
|
|
(error 'include-abstract "doc binding is not a part: ~e" p))
|
|
(unless (null? (part-parts p))
|
|
(error 'include-abstract "abstract part has sub-parts: ~e" (part-parts p)))
|
|
(when (part-title-content p)
|
|
(error 'include-abstract "abstract part has title content: ~e" (part-title-content p)))
|
|
(part-blocks p))
|
|
|
|
(define-syntax-rule (include-abstract mp)
|
|
(begin
|
|
(require (only-in mp [doc abstract-doc]))
|
|
(make-nested-flow abstract-style (extract-abstract abstract-doc))))
|
|
|
|
;; ----------------------------------------
|
|
;; Author
|
|
|
|
(define (author . long)
|
|
(apply (apply author/short long) long))
|
|
|
|
(define ((author/short . short) . long)
|
|
(make-paragraph
|
|
(make-style 'author jfp-extras)
|
|
(list
|
|
(make-multiarg-element "JFPAuthor" (list (decode-content short)
|
|
(decode-content long))))))
|
|
|
|
(define (affiliation . txt)
|
|
(make-element (make-style "Affiliation" jfp-extras) (decode-content txt)))
|
|
|
|
(define (affiliation-mark . txt)
|
|
(make-element (make-style "MarkSuperscript" jfp-extras) (decode-content txt)))
|
|
|
|
(define (affiliation-sep)
|
|
(hspace 2))
|