#lang scribble/doc @(require "common.ss" scribble/struct) @title[#:style '((css "extras.css") (tex "extras.tex")) ]{Scribble: Closing the Book on Ad Hoc Documentation Tools} @html-author[(link "http://www.cs.utah.edu/~mflatt/" "Matthew Flatt") (link "http://www.barzilay.org" "Eli Barzilay") (link "http://www.eecs.northwestern.edu/~robby" "Robert Bruce Findler")] @abstract{Scribble is a system for writing library documentation, user guides, and tutorials. It builds on PLT Scheme's technology for language extension, and at its heart is a new approach to connecting prose references with library bindings. Besides the base system, we have built Scribble libraries for JavaDoc-style API documentation, literate programming, and conference papers. We have used Scribble to produce thousands of pages of documentation for PLT Scheme; the new documentation is more complete, more accessible, and better organized, thanks in large part to Scribble's flexibility and the ease with which we cross-reference information across levels. This paper reports on the use of Scribble and on its design as both an extension and an extensible part of PLT Scheme.} @categories+terms[] @include-section["intro.scrbl"] @include-section["prose.scrbl"] @include-section["code.scrbl"] @include-section["at-sign.scrbl"] @include-section["modules.scrbl"] @include-section["foundations.scrbl"] @include-section["struct.scrbl"] @include-section["extensions.scrbl"] @include-section["build.scrbl"] @include-section["experience.scrbl"] @include-section["related.scrbl"] @include-section["conclusion.scrbl"] @include-section["trying.scrbl"] @generate-bib[]