diff --git a/collects/scribble/html-render.rkt b/collects/scribble/html-render.rkt
index 8b083f77..edd1ef00 100644
--- a/collects/scribble/html-render.rkt
+++ b/collects/scribble/html-render.rkt
@@ -566,7 +566,7 @@
                            blocks))
              (table-blockss table)))
           (define ps
-            ((if (nearly-top? d) values cdr)
+            ((if (nearly-top? d) values (lambda (p) (if (pair? p) (cdr p) null)))
              (let flatten ([d d] [prefixes null] [top? #t])
                (let ([prefixes (if (and (not top?) (part-tag-prefix d))
                                    (cons (part-tag-prefix d) prefixes)
diff --git a/collects/tests/scribble/docs.rkt b/collects/tests/scribble/docs.rkt
index d5eecf15..9cd61641 100644
--- a/collects/tests/scribble/docs.rkt
+++ b/collects/tests/scribble/docs.rkt
@@ -2,15 +2,22 @@
 
 ;; Use text renderer to check some Scribble functionality
 
-(require scribble/base-render (prefix-in text: scribble/text-render)
-         racket/file racket/class racket/runtime-path tests/eli-tester)
+(require scribble/base-render
+         (prefix-in text: scribble/text-render)
+         (prefix-in html: scribble/html-render)
+         (prefix-in latex: scribble/latex-render)
+         (prefix-in markdown: scribble/markdown-render)
+         racket/file 
+         racket/class
+         racket/runtime-path
+         tests/eli-tester)
 
 (define-runtime-path source-dir "docs")
 (define work-dir (build-path (find-system-path 'temp-dir)
                              "scribble-docs-tests"))
 
-(define (build-text-doc src-file dest-file)
-  (let* ([renderer (new (text:render-mixin render%) [dest-dir work-dir])]
+(define (build-doc render% src-file dest-file)
+  (let* ([renderer (new render% [dest-dir work-dir])]
          [docs     (list (dynamic-require src-file 'doc))]
          [fns      (list (build-path work-dir dest-file))]
          [fp       (send renderer traverse docs fns)]
@@ -19,6 +26,21 @@
     (send renderer render docs fns r-info)
     (send renderer get-undefined r-info)))
 
+(define (build-text-doc src-file dest-file)
+  (build-doc (text:render-mixin render%) src-file dest-file))
+
+(define (build-html-doc src-file dest-file)
+  (build-doc (html:render-mixin render%) src-file dest-file))
+
+(define (build-htmls-doc src-file dest-file)
+  (build-doc (html:render-multi-mixin (html:render-mixin render%)) src-file dest-file))
+
+(define (build-latex-doc src-file dest-file)
+  (build-doc (latex:render-mixin render%) src-file dest-file))
+
+(define (build-markdown-doc src-file dest-file)
+  (build-doc (markdown:render-mixin render%) src-file dest-file))
+
 (provide docs-tests)
 (module+ main (docs-tests))
 (define (docs-tests)
@@ -49,5 +71,11 @@
                 (format
                  "mismatch for: \"~a\", expected text in: \"~a\", got:\n~a"
                  scrbl txt (contents generated-file))
-                (string=? (contents expect-file) (contents generated-file))))))
+                (string=? (contents expect-file) (contents generated-file)))
+
+          ;; Make sure the document at least renders in other modes:
+          (void (build-html-doc src-file "gen.html"))
+          (void (build-htmls-doc src-file "gen"))
+          (void (build-latex-doc src-file "gen.tex"))
+          (void (build-markdown-doc src-file "gen.md")))))
     (λ() (delete-directory/files work-dir))))
diff --git a/collects/tests/scribble/docs/cond.scrbl b/collects/tests/scribble/docs/cond.scrbl
index fd8dea30..949b62b1 100644
--- a/collects/tests/scribble/docs/cond.scrbl
+++ b/collects/tests/scribble/docs/cond.scrbl
@@ -4,7 +4,8 @@
 @(cond-element
   [text "Text!"]
   [html "HTML!"]
-  [latex "Latex!"])
+  [latex "Latex!"]
+  [markdown "Markdown!"])
 
 @(cond-element
   [(or text html) "Text or HTML!"]
diff --git a/collects/tests/scribble/docs/empty-onthispage.scrbl b/collects/tests/scribble/docs/empty-onthispage.scrbl
new file mode 100644
index 00000000..b155cbf6
--- /dev/null
+++ b/collects/tests/scribble/docs/empty-onthispage.scrbl
@@ -0,0 +1,9 @@
+#lang scribble/manual
+
+@title[#:style '(unnumbered)]{Example}
+
+Content.
+
+@section[#:style '(toc unnumbered)]{X}
+
+@subsection[#:style '(toc-hidden unnumbered)]{A}
diff --git a/collects/tests/scribble/docs/empty-onthispage.txt b/collects/tests/scribble/docs/empty-onthispage.txt
new file mode 100644
index 00000000..d3b85c98
--- /dev/null
+++ b/collects/tests/scribble/docs/empty-onthispage.txt
@@ -0,0 +1,8 @@
+Example
+
+Content.
+
+X
+
+A
+