Index: code-docs/crystalize.scrbl
==================================================================
--- code-docs/crystalize.scrbl
+++ code-docs/crystalize.scrbl
@@ -44,13 +44,13 @@
 I could have made it so the function is called automatically every time Pollen is run. But that
 would mean it gets run even when the target is not HTML, which is unnecessary.
 
 @defproc[(crystalize-article! [pagenode pagenode?] [doc txexpr?]) non-empty-string?]
 
-Returns a string containing the HTML of doc. @margin-note{This is one function that breaks my
-convention of using a prefix of @tt{html$-} for functions that return strings of HTML.} Privately,
-however, it does a lot of other work. The article is saved to the SQLite cache. If the article
+Returns a string containing the HTML of @racket[_doc]. @margin-note{This is one function that breaks
+my convention of using a prefix of @tt{html$-} for functions that return strings of HTML.}
+Privately, it does a lot of other work. The article is saved to the SQLite cache. If the article
 specifies a @racket['series] meta, information about that series is fetched and used in the
 rendering of the article. If there are @racket[note]s in the doc, they are parsed and saved
 individually to the SQLite cache. If any of the notes use the @code{#:disposition} attribute,
 information about the disposition is parsed out and used in the rendering of the article.
 

Index: code-docs/dust.scrbl
==================================================================
--- code-docs/dust.scrbl
+++ code-docs/dust.scrbl
@@ -43,12 +43,12 @@
               @defthing[series-path   path-string? #:value "series"])]
 
 The path of the folder that contains the Pollen source documents for Articles and Series
 respectively, relative to the project’s document root.
 
-@deftogether[(@defthing[articles-pagetree pagetree?]
-              @defthing[series-pagetree pagetree?])]
+@deftogether[(@defproc[(articles-pagetree) pagetree?]
+              @defproc[(series-pagetree) pagetree?])]
 
 These are project-wide pagetrees: @racket[articles-pagetree] contains a pagenode for every Pollen
 document contained in @racket[articles-path], and @racket[series-pagetree] contains a pagenode for
 every Pollen document in @racket[series-path]. The pagenodes themselves point to the rendered
 @tt{.html} targets of the source documents.
@@ -97,11 +97,11 @@
 
 @defproc[(first-words [txprs (listof txexpr?)] [n exact-nonnegative-integer?]) string?]
 
 Given a list of tagged X-expressions, returns a string containing the first @racket[_n] words found
 in the string elements of @racket[_txprs], or all of the words if there are less than @racket[_n]
-words available. Used by @racket[default_title].
+words available. Used by @racket[default-title].
 
 This function aims to be smart about punctuation, and equally fast no matter how large the list of
 elements that you send it.
 
 @examples[#:eval dust-eval

Index: code-docs/pollen.scrbl
==================================================================
--- code-docs/pollen.scrbl
+++ code-docs/pollen.scrbl
@@ -37,14 +37,14 @@
 functions in separate files that have separate places in the dependency chain. So if only the HTML
 tag functions have changed and not those for PDF, the makefile can ensure only the HTML files are
 rebuilt.
 
 @defproc[#:kind "syntax"
- (poly-branch-tag (tag symbol?))
+ (poly-branch-tag (tag-id symbol?))
  (-> txexpr?)]
 
-Defines a new function @racket[_tag] which will automatically pass all of its arguments to a
+Defines a new function @racket[_tag-id] which will automatically pass all of its arguments to a
 function whose name is the value returned by @racket[current-poly-target], followed by a hyphen,
 followed by @racket[_tag]. So whenever the current output format is @racket['html], the function
 defined by @racket[(poly-branch-tag _p)] will branch to a function named @racket[html-p]; when the
 current format is @racket['pdf], it will branch to @racket[pdf-p], and so forth.
 
@@ -61,11 +61,11 @@
 @margin-note{The thought behind having two macros so similar is that, by cutting out handling for keyword
 arguments, @racket[poly-branch-tag] could produce simpler and faster code. I have not verified if
 this intuition is meaningful or correct.}
 
 @defproc[#:kind "syntax"
-         (poly-branch-kwargs-tag (id symbol?))
+         (poly-branch-kwargs-tag (tag-id symbol?))
          (-> txexpr?)]
 
 Works just like @racket[poly-branch-tag], but uses Pollen’s @racket[define-tag-function] so that
 keyword arguments will automatically be parsed as X-expression attributes.
 

Index: code-docs/snippets-html.scrbl
==================================================================
--- code-docs/snippets-html.scrbl
+++ code-docs/snippets-html.scrbl
@@ -60,18 +60,17 @@
 @defproc[(html$-page-body-open) non-empty-string?]
 
 Returns the opening @tt{<body>} and @tt{<main>} tags and elements that immediately follow, such as
 site header, logo and navigation.
 
-@defproc[(html$-article-open [title? boolean?] [title-html-flow string?] [pubdate string?])
+@defproc[(html$-article-open [title-specified-in-doc? boolean?] [title txexpr?] [pubdate string?])
 non-empty-string?]
 
 Returns the opening @tt{<article>} tag and elements that immediately follow: permlink, publish date,
 and opening @tt{<section>} tag.
 
-This function could be smarter, but for now @racket[_title?] determines which HTML markup structure
-to use for the article regardless of whether @racket[_title-html-flow] is empty or not.
+The @racket[_title-specified-in-doc?] form changes the HTML markup structure used.
 
 @defproc[(html$-article-close [footertext string?]) non-empty-string?]
 
 Returns a string containing a closing @tt{<section>} tag, a @tt{<footer>} element containing
 @racket[_footertext], and a closing @tt{<article>} tag. If @racket[_footertext] is empty, the

Index: code-docs/sqlite-tools.scrbl
==================================================================
--- code-docs/sqlite-tools.scrbl
+++ code-docs/sqlite-tools.scrbl
@@ -9,18 +9,17 @@
 
 @(require "scribble-helpers.rkt"
           scribble/example)
 
 @(require (for-label "../pollen.rkt"
-                     "../dust.rkt"
                      racket/base
                      racket/contract
                      db
                      sugar/coerce))
 
 @(define my-eval (make-base-eval))
-@(my-eval '(require "sqlite-tools.rkt"))
+@(my-eval '(local-require "sqlite-tools.rkt"))
 
 @title{@filepath{sqlite-tools.rkt}}
 
 @defmodule["sqlite-tools.rkt" #:packages ()]