#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"]