67 lines
2.2 KiB
Racket
67 lines
2.2 KiB
Racket
#lang at-exp racket/base
|
|
|
|
(require scribble/base
|
|
scribble/core
|
|
scriblib/autobib)
|
|
(provide exercise exref
|
|
generate-bibliography ~cite citet
|
|
amb1 amb2 Hanford)
|
|
|
|
(define i 0)
|
|
(define (exercise [id #f])
|
|
(set! i (+ i 1))
|
|
(when id (hash-set! ex-ids id i))
|
|
(element (style 'bold '())
|
|
(format "Exercise ~a" i)))
|
|
(define ex-ids (make-hash))
|
|
(define (exref id) (format "~a" (hash-ref ex-ids id)))
|
|
|
|
(define (book-chapter-location
|
|
#:title title
|
|
#:author [author #f]
|
|
#:edition [edition #f]
|
|
#:publisher [publisher #f])
|
|
(let* ([s @italic{@(string-titlecase title)}]
|
|
[s (if edition
|
|
@elem{@|s| @(string-titlecase edition) edition}
|
|
s)]
|
|
[s (if author
|
|
@elem{@|s| by @|author|}
|
|
s)]
|
|
[s (if publisher
|
|
(if s
|
|
@elem{@|s|. @|publisher|}
|
|
publisher)
|
|
s)])
|
|
(unless s
|
|
(error 'book-chapter-location "no arguments"))
|
|
@elem{In @|s|}))
|
|
|
|
(define-cite ~cite citet generate-bibliography)
|
|
(define amb1
|
|
(make-bib #:title "A Basis for a Mathematical Theory of Computation"
|
|
#:author "John McCarthy"
|
|
#:location
|
|
(book-chapter-location #:title "Computer Programming and Formal Systems"
|
|
#:author (editor (authors "P. Braffort" "D. Hirschberg")))
|
|
#:date 1963))
|
|
(define amb2
|
|
(make-bib #:title "Non-deterministic Lisp with dependency-directed backtracking"
|
|
#:author (authors "Ramin Zabih"
|
|
"David McAllester"
|
|
"David Chapman")
|
|
#:location (proceedings-location "Proceedings of the Sixth National Conference on Artificial Intelligence"
|
|
#:pages '(59 64))
|
|
#:date 1987))
|
|
|
|
(define ibm-sys "IBM Systems Journal")
|
|
(define Hanford
|
|
(make-bib
|
|
#:author (authors "Kenneth V. Hanford")
|
|
#:title "Automatic generation of test cases"
|
|
#:location (journal-location ibm-sys
|
|
#:volume 9
|
|
#:number "4"
|
|
#:pages '(244 257))
|
|
#:date "1970"))
|