See https://docs.spring.io/spring-boot/docs/2.4.0-SNAPSHOT/reference/html/spring-boot-features.html#boot-features-email vs https://docs.spring.io/spring-boot/docs/2.4.0-SNAPSHOT/reference/htmlsingle/index.html#boot-features-email

Comment From: bclozel

It seems to be working on other pages on the multi-pages variant: https://docs.spring.io/spring-boot/docs/2.4.0-SNAPSHOT/reference/html/using-spring-boot.html#using-boot

This reminds me of a discussion with @wilkinsona where we found out that extensions were only applied to a subset of pages. In the end, overriding the asciidoctorj made it work. Does that ring a bell Andy?

Comment From: wilkinsona

It does indeed. IIRC, we tracked it down to AsciidoctorJ only including the extension on the first call to convert. Subsequent calls wouldn't use the extension. It doesn't show up with the single-page docs as there's only a single convert call under the covers. With the multi-page docs, the extension only runs once (on the first page that's converted) so you get the block selection tabs only on that first page.

Comment From: philwebb

I tried this, but it didn't work:

diff --git a/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java
index 503a83cf1c1..495493d0223 100644
--- a/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java
+++ b/buildSrc/src/main/java/org/springframework/boot/build/AsciidoctorConventions.java
@@ -69,9 +69,12 @@ import org.springframework.util.StringUtils;
  */
 class AsciidoctorConventions {

+       private static final String ASCIIDOCTORJ_VERSION = "2.4.1";
+
        void apply(Project project) {
                project.getPlugins().withType(AsciidoctorJPlugin.class, (asciidoctorPlugin) -> {
                        configureDocResourcesRepository(project);
+                       upgradeAsciidoctorJVersion(project);
                        makeAllWarningsFatal(project);
                        UnzipDocumentationResources unzipResources = createUnzipDocumentationResourcesTask(project);
                        project.getTasks().withType(AbstractAsciidoctorTask.class, (asciidoctorTask) -> {
@@ -106,6 +109,10 @@ class AsciidoctorConventions {
                });
        }

+       private void upgradeAsciidoctorJVersion(Project project) {
+               project.getExtensions().getByType(AsciidoctorJExtension.class).setVersion(ASCIIDOCTORJ_VERSION);
+       }
+
        private void makeAllWarningsFatal(Project project) {
                project.getExtensions().getByType(AsciidoctorJExtension.class).fatalWarnings(".*");
        }

Comment From: wilkinsona

That fix works for me.