3 Bibliographies
(require scriblib/autobib) | package: scribble-lib |
This library provides support for bibliography management in a Scribble document. The define-cite form is used to bind procedures that create in-line citations and generate the bibilography in the document.
Individual bibliography entries are created with the make-bib function. See below for an example.
#lang scribble/base @(require scriblib/autobib) @(define-cite ~cite citet generate-bibliography) @(define plt-tr1 (make-bib #:title "Reference: Racket" #:author (authors "Matthew Flatt" "PLT") #:date "2010" #:location (techrpt-location #:institution "PLT Inc." #:number "PLT-TR-2010-1") #:url "http://racket-lang.org/tr1/")) Racket is fun@~cite[plt-tr1]. @(generate-bibliography)
For citations that reference a page number or section, the in-bib function can be used. For example, the following snippet:
Racket has a contract library.@~cite[(in-bib plt-tr1 ", §8")]
includes a citation to section 8 of the Racket reference.
syntax
(define-cite ~cite-id citet-id generate-bibliography-id option ...)
option = #:style style-expr | #:disambiguate disambiguator-expr | #:spaces spaces-expr | #:render-date-in-bib render-date-expr | #:render-date-in-cite render-date-expr | #:date<? date-compare-expr | #:date=? date-compare-expr | #:cite-author cite-author-id | #:cite-year cite-year-id
style-expr : (or/c number-style author+date-style author+date-square-bracket-style)
spaces-expr : number?
disambiguator-expr : (or/c #f (-> exact-nonnegative-integer? element?))
render-date-expr : (or/c #f (-> date? element?))
date-compare-expr : (or/c #f (-> date? date? boolean?))
The function bound to ~cite-id produces a citation referring to one or more bibliography entries with a preceding non-breaking space, by default sorting the entries to match the bibliography order. It has the contract
The function bound to citet-id generates an element suitable
for use as a noun—
The function bound to generate-bibliography-id generates the section for the bibliography. It has the contract
If provided, the function bound to cite-author-id generates an element containing the authors of a paper.
If provided, the function bound to cite-year-id generates an element containing the year the paper was published in, or possibly multiple years if multiple papers are provided.
The functions bound to cite-author-id and cite-year-id make it possible to create possessive textual citations.
@citeauthor[scribble-cite]'s (@citeyear[scribble-cite]) autobib library is pretty nifty.
The default value for the #:tag argument is "doc-bibliography" and for #:sec-title is "Bibliography".
The optional spaces-expr determines the number of blank lines that appear between citations. The default number of lines is 1.
The optional style-expr determines the way that citations and the bibliography are rendered.Programmer-defined styles may be supported in the future. Currently, two built-in style are provided, and author+date-style is the default.
For author+date-style, if two citations’ references would render the same (as judged by equal authors and dates that are considered the same) but are different, the optionally provided function from disambiguator-expr is used to add an extra element after the date; the default disambiguator adds a, b, etc. until z, and anything more ambiguous raises an exception. Date comparison is controlled by date-compare-exprs. Dates in citations and dates in the bibliography may be rendered differently, as specified by the optionally given render-date-expr functions.
Changed in version 1.22 of package scribble-lib: Add optional ids for author-name and author-year
value
value
value
The author+date-square-bracket-style definition is the same as author+date-style, except that references to citations are enclosed in [] instead of ().
procedure
(make-bib #:title title [ #:author author #:is-book? is-book? #:location location #:date date #:url url #:note note]) → bib? title : any/c author : any/c = #f is-book? : any/c = #f location : any/c = #f date : (or/c #f date? exact-nonnegative-integer? string?) = #f url : string? = #f note : any/c = #f
Dates are internally represented as date values, so a date may be given, or a number or string that represent the year.
An element produced by a function like author-name tracks first, last names, and name suffixes separately, so that names can be ordered and rendered correctly. When a string is provided as an author name, the last non-empty sequence of alphabetic characters or - after a space is treated as the author name, and the rest is treated as the first name.
procedure
(proceedings-location location [ #:pages pages #:series series #:volume volume]) → element? location : any/c pages : (or (list/c any/c any/c) #f) = #f series : any/c = #f volume : any/c = #f
procedure
(journal-location title [ #:pages pages #:number number #:volume volume]) → element? title : any/c pages : (or (list/c any/c any/c) #f) = #f number : any/c = #f volume : any/c = #f
procedure
(book-location [ #:edition edition #:publisher publisher]) → element? edition : any/c = #f publisher : any/c = #f
procedure
(techrpt-location #:institution institution #:number number) → element? institution : any/c number : any/c
procedure
(dissertation-location #:institution institution [ #:degree degree]) → element? institution : any/c degree : any/c = "PhD"
procedure
(book-chapter-location title [ #:pages pages #:section section #:volume volume #:publisher publisher]) → element? title : any/c pages : (or (list/c any/c any/c) #f) = #f section : any/c = #f volume : any/c = #f publisher : any/c = #f
procedure
(author-name first last [#:suffix suffix]) → element?
first : any/c last : any/c suffix : any/c = #f
procedure
(org-author-name name) → element?
name : (or/c element? string?)
procedure
parameter
(abbreviate-given-names abbreviate?) → void? abbreviate? : any/c
Defaults to #f.
Added in version 1.5 of package scribble-lib.
parameter
(url-rendering) → (-> string? any)
(url-rendering rendering-function) → void? rendering-function : (-> string? any)
Defaults to (λ (url) (link url (make-element 'url (list url)))).
Added in version 1.39 of package scribble-lib.