     (header :recto)
     (header :verso)
 
-    [:fo:flow {:flow-name "xsl-region-body"}
-     (toc items)
-     (mapcat #(format-sexp items %) (order (keys items)))]]])
+    (if (= (count items) 1)
+      ;; if we have only one format we assume a slightly different output is wanted
+      (binding [*heading-attrs* {:h1 {:break-before "odd-page" :font-size "26pt" :role "H1"}
+                                 :h2 {:break-before "odd-page" :font-size "26pt" :role "H1"}
+                                 :h3 {:font-size "21" :role "H2"}}]
+        (let [fmt (first (keys items))
+              subitems (fmt items)]
+          [:fo:flow {:flow-name "xsl-region-body"}
+           (toc subitems [fmt] 3 :heading? true)
+           (mapcat #(genre-sexp subitems fmt %) (order (keys subitems)))]))
+      ;; otherwise we use the default output that lists all formats
+      [:fo:flow {:flow-name "xsl-region-body"}
+       (toc items [] 1 :heading? true)
+       (mapcat #(format-sexp items %) (order (keys items)))])]])
 
 (defn document [items & args]
   (-> items


(defn format-sexp [items fmt]
  (when-let [items (fmt items)]
    [(h1 fmt)
     (toc items [fmt] 3)
     (set-marker (layout/translations fmt))
     (case fmt


(defn genre-sexp [items fmt genre]
  (when-let [items (genre items)]
    [(heading :h2 genre [fmt genre])
     (set-marker (layout/translations genre))
     (cond
       (#{:kinder-und-jugendbücher} genre) (subgenres-sexp items fmt genre)
