#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 new system for writing library documentation, user guides, and tutorials. Scribble builds on PLT Scheme's technology for language extension, and at its heart is a new approach to connecting prose references with library bindings. We have built Scribble libraries that support standalone documentation and papers, JavaDoc-style API documentation, and literate programming. Thanks in large part to Scribble's flexibility and the ease with which we can cross-reference information across different levels, the documentation that is distributed with PLT Scheme now runs into the thousands of pages. This paper reports on the use of Scribble and on its design as both an extension and extensible part of PLT Scheme.} @include-section["intro.scrbl"] @include-section["prose.scrbl"] @include-section["code.scrbl"] @include-section["at-sign.scrbl"] @include-section["modules.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[]