#lang scribble/doc
@(require "common.ss"
scribble/struct)
@title{Scribble: Documentation with an Extensible Language}
@(make-element
"HTMLnote"
(list
@italic{
Note: The HTML output doesn't render citations correctly, because the
paper submission relies directly on @|latex| support to use the
@tt{natbib} style (instead of the style we have implemented within
Scribble).
}))
@abstract{An extensible programming language offers special challenges
and opportunities for documentation. The central challenge is that
bindings---even seemingly core bindings like
@schemeidfont{lambda}---can mean different things in contexts that use
different language extensions. At the same time, rich extensibility
confers the opportunity to write documentation itself in a language
that is adapted to the needs of writing prose, specifying language
constructs, showing examples, and cross-referencing extensively---and
if more facilities are needed, then the documentation language itself
is extensible. In this paper, we describe Scribble, which is a tool
and an extensible language that is used to document libraries and
languages with PLT Scheme.}
@include-section["intro.scrbl"]
@include-section["overview.scrbl"]
@include-section["struct.scrbl"]
@include-section["at-sign.scrbl"]
@include-section["decode.scrbl"]
@include-section["scheme.scrbl"]
@include-section["extensions.scrbl"]
@include-section["build.scrbl"]
@include-section["experience.scrbl"]
@include-section["related.scrbl"]
@include-section["conclusion.scrbl"]