You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@incubator.apache.org by jm...@apache.org on 2022/09/20 08:00:41 UTC

[incubator] 15/46: - Updated all plugins to their latest versions - Updated the asciidoctor-maven-plugin from 2.0.0-RC1 to 2.2.0 - Updated revealjs-asciidoctor from 3.1.0 to 4.0.1

This is an automated email from the ASF dual-hosted git repository.

jmclean pushed a commit to branch ApacheConSlides
in repository https://gitbox.apache.org/repos/asf/incubator.git

commit bac64cc61622f3bd34e1e5d5d1422f7ffd6b4866
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Mar 24 13:15:03 2021 +0100

    - Updated all plugins to their latest versions
    - Updated the asciidoctor-maven-plugin from 2.0.0-RC1 to 2.2.0
    - Updated revealjs-asciidoctor from 3.1.0 to 4.0.1
---
 content/ApacheCon/pom.xml                          |   2 +-
 tools/content-parent-pom/pom.xml                   | 806 +++++++++++----------
 .../src/main/resources/document.html.slim          | 383 +++++-----
 3 files changed, 610 insertions(+), 581 deletions(-)

diff --git a/content/ApacheCon/pom.xml b/content/ApacheCon/pom.xml
index 89cfcceb..374e7bd0 100644
--- a/content/ApacheCon/pom.xml
+++ b/content/ApacheCon/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.training</groupId>
     <artifactId>content-parent-pom</artifactId>
-    <version>1.0.0</version>
+    <version>1.1.0-SNAPSHOT</version>
     <relativePath/>
   </parent>
 
diff --git a/tools/content-parent-pom/pom.xml b/tools/content-parent-pom/pom.xml
index 6a3216e9..bdf3f5b6 100644
--- a/tools/content-parent-pom/pom.xml
+++ b/tools/content-parent-pom/pom.xml
@@ -17,426 +17,438 @@
   limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-  <parent>
-    <groupId>org.apache.training</groupId>
-    <artifactId>training-tools</artifactId>
+    <parent>
+        <groupId>org.apache.training</groupId>
+        <artifactId>training-tools</artifactId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>content-parent-pom</artifactId>
     <version>1.1.0-SNAPSHOT</version>
-  </parent>
+    <packaging>pom</packaging>
 
-  <artifactId>content-parent-pom</artifactId>
-  <version>1.1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
+    <name>Training: Tools: Content Master Pom</name>
+    <description>
+        Parent pom containing all the configuration for building presentations
+        with the training template.
+    </description>
 
-  <name>Training: Tools: Content Master Pom</name>
-  <description>
-    Parent pom containing all the configuration for building presentations
-    with the training template.
-  </description>
+    <properties>
+        <project.main.contentfile>index</project.main.contentfile>
+        <!-- Put your custom theme files in src/main/theme and reference the name (without ".css") here. -->
+        <project.main.theme>apache</project.main.theme>
+        <project.slides.directory>${project.build.directory}/generated-slides</project.slides.directory>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
-  <properties>
-    <project.main.contentfile>index</project.main.contentfile>
-    <!-- Put your custom theme files in src/main/theme and reference the name (without ".css") here. -->
-    <project.main.theme>apache</project.main.theme>
-    <project.slides.directory>${project.build.directory}/generated-slides</project.slides.directory>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
 
-    <java.version>1.8</java.version>
+        <asciidoctorj.version>2.2.0</asciidoctorj.version>
+        <asciidoctorj-revealjs.version>4.0.1</asciidoctorj-revealjs.version>
+        <asciidoctorj.diagram.version>2.1.0</asciidoctorj.diagram.version>
+        <asciidoctorj.extensions-lab.version>1.0.0</asciidoctorj.extensions-lab.version>
 
-    <asciidoctor.maven.plugin.version>2.0.0-RC.1</asciidoctor.maven.plugin.version>
-    <asciidoctorj.version>2.2.0</asciidoctorj.version>
-    <asciidoctorj.diagram.version>2.0.0</asciidoctorj.diagram.version>
-    <asciidoctorj.extensions-lab.version>1.0.0</asciidoctorj.extensions-lab.version>
-    <revealjs.version>3.9.2</revealjs.version>
-    <asciidoctor-revealjs.version>3.1.0</asciidoctor-revealjs.version>
+        <revealjs.version>3.9.2</revealjs.version>
+        <asciidoctor-revealjs.version>3.1.0</asciidoctor-revealjs.version>
 
-    <copy-rename-maven-plugin.version>1.0.1</copy-rename-maven-plugin.version>
-    <download-maven-plugin.version>1.6.0</download-maven-plugin.version>
-    <jetty-maven-plugin.version>9.4.30.v20200611</jetty-maven-plugin.version>
-    <maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
-    <maven-war-plugin.version>3.2.2</maven-war-plugin.version>
-  </properties>
+        <asciidoctor-maven-plugin.version>2.1.0</asciidoctor-maven-plugin.version>
+        <copy-rename-maven-plugin.version>1.0.1</copy-rename-maven-plugin.version>
+        <download-maven-plugin.version>1.6.1</download-maven-plugin.version>
+        <groovy-maven-plugin.version>2.1.1</groovy-maven-plugin.version>
+        <jetty-maven-plugin.version>9.4.30.v20200611</jetty-maven-plugin.version>
+        <maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
+        <maven-war-plugin.version>3.2.2</maven-war-plugin.version>
+        <maven-dependency-plugin.version>3.1.2</maven-dependency-plugin.version>
+    </properties>
 
-  <dependencies>
-    <!-- Just to ensure this is built first as we need this to exist in order to unpack it -->
-    <dependency>
-      <groupId>org.apache.training</groupId>
-      <artifactId>content-parent-resources</artifactId>
-      <version>1.1.0-SNAPSHOT</version>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
+    <dependencies>
+        <!-- Just to ensure this is built first as we need this to exist in order to unpack it -->
+        <dependency>
+            <groupId>org.apache.training</groupId>
+            <artifactId>content-parent-resources</artifactId>
+            <version>1.1.0-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj-revealjs</artifactId>
+            <version>${asciidoctorj-revealjs.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
 
-  <build>
-    <plugins>
-      <!-- Check if all source files have the required apache license headers -->
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>license-check</id>
-            <phase>verify</phase>
-            <goals>
-              <goal>check</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <consoleOutput>true</consoleOutput>
-          <excludes>
-            <!-- TODO: This is a modified version of an asciidoctor file ... nor sure we can stick an Apache Header on it -->
-            <exclude>libs/docinfo-hack/document.html.slim</exclude>
-            <!-- Exclude everything downloaded by the install-deps scripts -->
-            <exclude>libs/third-party/**</exclude>
-            <!-- Maven related files -->
-            <exclude>**/target/**</exclude>
+    <build>
+        <plugins>
+            <!-- Check if all source files have the required apache license headers -->
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>license-check</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <consoleOutput>true</consoleOutput>
+                    <excludes>
+                        <!-- TODO: This is a modified version of an asciidoctor file ... nor sure we can stick an Apache Header on it -->
+                        <exclude>libs/docinfo-hack/document.html.slim</exclude>
+                        <!-- Exclude everything downloaded by the install-deps scripts -->
+                        <exclude>libs/third-party/**</exclude>
+                        <!-- Maven related files -->
+                        <exclude>**/target/**</exclude>
 
-            <!-- Eclipse related files -->
-            <exclude>**/.project</exclude>
-            <exclude>**/.settings/**</exclude>
-            <exclude>**/.classpath</exclude>
+                        <!-- Eclipse related files -->
+                        <exclude>**/.project</exclude>
+                        <exclude>**/.settings/**</exclude>
+                        <exclude>**/.classpath</exclude>
 
-            <!-- IntelliJ related files -->
-            <exclude>**/.idea/**</exclude>
-            <exclude>**/*.iml</exclude>
+                        <!-- IntelliJ related files -->
+                        <exclude>**/.idea/**</exclude>
+                        <exclude>**/*.iml</exclude>
 
-            <!-- Asciidoctor generated files -->
-            <exclude>**/.asciidoctor/**</exclude>
+                        <!-- Asciidoctor generated files -->
+                        <exclude>**/.asciidoctor/**</exclude>
 
-            <!-- JSON doesn't like comments -->
-            <exclude>**/*.json</exclude>
-            <!-- Mermaid does't like comments -->
-            <exclude>**/*.mmd</exclude>
+                        <!-- JSON doesn't like comments -->
+                        <exclude>**/*.json</exclude>
+                        <!-- Mermaid does't like comments -->
+                        <exclude>**/*.mmd</exclude>
 
-            <!-- Output of the profiler maven extension -->
-            <exclude>**/.profiler/**</exclude>
+                        <!-- Output of the profiler maven extension -->
+                        <exclude>**/.profiler/**</exclude>
 
-            <exclude>licenses/**</exclude>
-            <exclude>README.md</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
+                        <exclude>licenses/**</exclude>
+                        <exclude>README.md</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
 
-      <!-- Download all the tools needed to generate the output -->
-      <plugin>
-        <groupId>com.googlecode.maven-download-plugin</groupId>
-        <artifactId>download-maven-plugin</artifactId>
-        <version>${download-maven-plugin.version}</version>
-        <executions>
-          <!-- Get the asciidoctor revealjs module -->
-          <execution>
-            <id>install-asciidoctor-revealjs</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>wget</goal>
-            </goals>
-            <configuration>
-              <url>
-                https://github.com/asciidoctor/asciidoctor-reveal.js/archive/v${asciidoctor-revealjs.version}.zip
-              </url>
-              <unpack>true</unpack>
-              <outputFileName>asciidoctor-reveal.js-${asciidoctor-revealjs.version}.zip</outputFileName>
-              <outputDirectory>${project.build.directory}</outputDirectory>
-            </configuration>
-          </execution>
-          <!-- Get the reveal js sources -->
-          <execution>
-            <id>install-revealjs</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>wget</goal>
-            </goals>
-            <configuration>
-              <url>https://github.com/hakimel/reveal.js/archive/${revealjs.version}.zip</url>
-              <unpack>true</unpack>
-              <outputFileName>reveal.js-${revealjs.version}.zip</outputFileName>
-              <outputDirectory>${project.slides.directory}</outputDirectory>
-            </configuration>
-          </execution>
-          <!-- Download the C3 and D3 libraries -->
-          <execution>
-            <id>download-c3-css</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>wget</goal>
-            </goals>
-            <configuration>
-              <url>https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.12/c3.min.css</url>
-              <outputDirectory>${project.slides.directory}/css</outputDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>download-c3-js</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>wget</goal>
-            </goals>
-            <configuration>
-              <url>https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.12/c3.min.js</url>
-              <outputDirectory>${project.slides.directory}/js</outputDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>download-d3-js</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>wget</goal>
-            </goals>
-            <configuration>
-              <url>https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js</url>
-              <outputDirectory>${project.slides.directory}/js</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
+            <!-- Download all the tools needed to generate the output -->
+            <plugin>
+                <groupId>com.googlecode.maven-download-plugin</groupId>
+                <artifactId>download-maven-plugin</artifactId>
+                <version>${download-maven-plugin.version}</version>
+                <executions>
+                    <!-- Get the reveal js sources -->
+                    <execution>
+                        <id>install-revealjs</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://github.com/hakimel/reveal.js/archive/${revealjs.version}.zip</url>
+                            <unpack>true</unpack>
+                            <outputFileName>reveal.js-${revealjs.version}.zip</outputFileName>
+                            <outputDirectory>${project.slides.directory}</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <!-- Download the C3 and D3 libraries -->
+                    <execution>
+                        <id>download-c3-css</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.12/c3.min.css</url>
+                            <outputDirectory>${project.slides.directory}/css</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>download-c3-js</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://cdnjs.cloudflare.com/ajax/libs/c3/0.6.12/c3.min.js</url>
+                            <outputDirectory>${project.slides.directory}/js</outputDirectory>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>download-d3-js</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>wget</goal>
+                        </goals>
+                        <configuration>
+                            <url>https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js</url>
+                            <outputDirectory>${project.slides.directory}/js</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-      <!--
-          Make sure the filtered resources are output to the slides directory and
-          theme content is output to the themes directory of reveal js.
-      -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>${maven-resources-plugin.version}</version>
-        <executions>
-          <execution>
-            <id>copy-resources</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.directory}</outputDirectory>
-              <resources>
-                <!-- Copy the normal resources into the root of the slides directory -->
-                <resource>
-                  <directory>src/main/resources</directory>
-                  <targetPath>${project.slides.directory}</targetPath>
-                </resource>
-                <!-- Copy our css-theme to the reveal.js theme directory -->
-                <resource>
-                  <directory>src/main/theme</directory>
-                  <filtering>true</filtering>
-                  <targetPath>${project.slides.directory}/reveal.js-${revealjs.version}/css/theme</targetPath>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
+            <!--
+                Make sure the filtered resources are output to the slides directory and
+                theme content is output to the themes directory of reveal js.
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <version>${maven-resources-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}</outputDirectory>
+                            <resources>
+                                <!-- Copy the normal resources into the root of the slides directory -->
+                                <resource>
+                                    <directory>src/main/resources</directory>
+                                    <targetPath>${project.slides.directory}</targetPath>
+                                </resource>
+                                <!-- Copy our css-theme to the reveal.js theme directory -->
+                                <resource>
+                                    <directory>src/main/theme</directory>
+                                    <filtering>true</filtering>
+                                    <targetPath>${project.slides.directory}/reveal.js-${revealjs.version}/css/theme</targetPath>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-      <!-- Get some static Apache resources shared throughout all presentations -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>3.1.1</version>
-        <executions>
-          <execution>
-            <id>copy-training-asciidoc-resources</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.apache.training</groupId>
-                  <artifactId>content-parent-resources</artifactId>
-                  <type>jar</type>
-                  <overWrite>true</overWrite>
-                  <outputDirectory>
-                    ${project.build.directory}/asciidoctor-reveal.js-${asciidoctor-revealjs.version}/templates
-                  </outputDirectory>
-                  <includes>*.slim</includes>
-                </artifactItem>
-              </artifactItems>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-training-presentation-themes</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.apache.training</groupId>
-                  <artifactId>content-parent-resources</artifactId>
-                  <type>jar</type>
-                  <outputDirectory>${project.slides.directory}/reveal.js-${revealjs.version}/css/theme
-                  </outputDirectory>
-                  <includes>*.css</includes>
-                </artifactItem>
-              </artifactItems>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-training-presentation-resources</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>unpack</goal>
-            </goals>
-            <configuration>
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.apache.training</groupId>
-                  <artifactId>content-parent-resources</artifactId>
-                  <type>jar</type>
-                  <outputDirectory>${project.slides.directory}/images</outputDirectory>
-                  <excludes>*.slim,*.css,META-INF/**</excludes>
-                </artifactItem>
-              </artifactItems>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
+            <!-- Get some static Apache resources shared throughout all presentations -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>${maven-dependency-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>copy-asciidoctor-revealjs-remplates</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.asciidoctor</groupId>
+                                    <artifactId>asciidoctorj-revealjs</artifactId>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}/asciidoctorj-revealjs-${asciidoctorj-revealjs.version}</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <!-- Update the document.html.slim with an updated one as currently the docinfo part seems to not work -->
+                    <execution>
+                        <id>copy-asciidoctor-apache-training-resources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.training</groupId>
+                                    <artifactId>content-parent-resources</artifactId>
+                                    <type>jar</type>
+                                    <overWrite>true</overWrite>
+                                    <outputDirectory>${project.build.directory}/asciidoctorj-revealjs-${asciidoctorj-revealjs.version}/gems/asciidoctor-revealjs-${asciidoctorj-revealjs.version}/templates</outputDirectory>
+                                    <includes>*.slim</includes>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-training-presentation-themes</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.training</groupId>
+                                    <artifactId>content-parent-resources</artifactId>
+                                    <type>jar</type>
+                                    <outputDirectory>${project.slides.directory}/reveal.js-${revealjs.version}/css/theme
+                                    </outputDirectory>
+                                    <includes>*.css</includes>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-training-presentation-resources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.apache.training</groupId>
+                                    <artifactId>content-parent-resources</artifactId>
+                                    <type>jar</type>
+                                    <outputDirectory>${project.slides.directory}/images</outputDirectory>
+                                    <excludes>*.slim,*.css,META-INF/**</excludes>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-      <!-- Configure the asciidoctor generation -->
-      <plugin>
-        <groupId>org.asciidoctor</groupId>
-        <artifactId>asciidoctor-maven-plugin</artifactId>
-        <version>${asciidoctor.maven.plugin.version}</version>
-        <executions>
-          <execution>
-            <id>generate-slides</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>process-asciidoc</goal>
-            </goals>
-            <configuration>
-              <!-- Tell asciidoctor to use the reveal.js backend and not the default html -->
-              <backend>revealjs</backend>
-              <!-- Configure where are all the asciidoc source files located -->
-              <sourceDirectory>src/main/asciidoc</sourceDirectory>
-              <!-- Configure the target director to where will the output be generated -->
-              <outputDirectory>${project.slides.directory}</outputDirectory>
-              <!-- Enable optional modules for generating diagrams and charts -->
-              <requires>
-                <require>asciidoctor-diagram</require>
-                <!--require>chart-block-macro</require-->
-              </requires>
-              <!-- This has to point to the asciidoctor-revealjs directory which contains all the "slim" files -->
-              <templateDir>
-                ${project.build.directory}/asciidoctor-reveal.js-${asciidoctor-revealjs.version}/templates
-              </templateDir>
-              <attributes>
-                <!--imagesdir></imagesdir-->
-                <!--
-                    Tell the system the relative path to the reveal.js files
-                    inside the generated-slides directory.
-                -->
-                <revealjsdir>reveal.js-${revealjs.version}</revealjsdir>
-                <!--
-                    Use our custom theme, which is defined by src/main/theme/apache.css
-                    and copied inside the reveal.js installation by the resources plugin a few lines
-                    up inside this pom.
-                -->
-                <revealjs_theme>${project.main.theme}</revealjs_theme>
-                <!-- Some basic settings -->
-                <revealjs_transition>linear</revealjs_transition>
-                <project-version>${project.version}</project-version>
-                <source-highlighter>highlightjs</source-highlighter>
-                <!--highlightjs-theme>https://raw.githubusercontent.com/isagalaev/highlight.js/master/src/styles/arduino-light.css</highlightjs-theme-->
-                <erd>${basedir}/libs/third-party/erd/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/erd/erd</erd>
-                <!--convert>${basedir}/libs/third-party/ImageMagick-7.0.8/bin/convert</convert>
-                <identify>${basedir}/libs/third-party/ImageMagick-7.0.8/bin/identify</identify-->
-                <mermaid>${basedir}/libs/third-party/node_modules/.bin/mmdc</mermaid>
-                <phantomjs>${basedir}/libs/third-party/phantomjs-2.1.1-macosx/bin/phantomjs</phantomjs>
-                <svgbob>${basedir}/libs/third-party/svgbob/bin/svgbob</svgbob>
-                <vg2svg>${basedir}/libs/third-party/node_modules/.bin/vg2svg</vg2svg>
-              </attributes>
-            </configuration>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.asciidoctor</groupId>
-            <artifactId>asciidoctorj</artifactId>
-            <version>${asciidoctorj.version}</version>
-          </dependency>
-          <dependency>
-            <groupId>org.asciidoctor</groupId>
-            <artifactId>asciidoctorj-diagram</artifactId>
-            <version>${asciidoctorj.diagram.version}</version>
-          </dependency>
-        </dependencies>
-      </plugin>
+            <!-- Configure the asciidoctor generation -->
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>${asciidoctor-maven-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-slides</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>revealjs</backend>
+                            <requires>
+                                <require>asciidoctor-revealjs</require>
+                                <require>asciidoctor-diagram</require>
+                            </requires>
+                            <!-- Configure where are all the asciidoc source files located -->
+                            <sourceDirectory>src/main/asciidoc</sourceDirectory>
+                            <!-- Configure the target director to where will the output be generated -->
+                            <outputDirectory>${project.slides.directory}</outputDirectory>
+                            <templateDirs>
+                                <templateDir>${project.build.directory}/asciidoctorj-revealjs-${asciidoctorj-revealjs.version}/gems/asciidoctor-revealjs-${asciidoctorj-revealjs.version}/templates</templateDir>
+                            </templateDirs>
+                            <attributes>
+                                <revealjsdir>reveal.js-${revealjs.version}</revealjsdir>
+                                <!-- All image resources will be located in this directory -->
+                                <imagesdir>images</imagesdir>
+                                <docinfodir>${project.basedir}/src/main/asciidoc</docinfodir>
+                                <!--
+                                    Use our custom theme, which is defined by src/main/theme/apache.css
+                                    and copied inside the reveal.js installation by the resources plugin a few lines
+                                    up inside this pom.
+                                -->
+                                <revealjs_theme>${project.main.theme}</revealjs_theme>
+                                <!-- Some basic settings -->
+                                <revealjs_transition>linear</revealjs_transition>
+                                <project-version>${project.version}</project-version>
+                                <source-highlighter>highlightjs</source-highlighter>
+                                <!--highlightjs-theme>https://raw.githubusercontent.com/isagalaev/highlight.js/master/src/styles/arduino-light.css</highlightjs-theme-->
+                                <erd>${basedir}/libs/third-party/erd/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/erd/erd</erd>
+                                <!--convert>${basedir}/libs/third-party/ImageMagick-7.0.8/bin/convert</convert>
+                                <identify>${basedir}/libs/third-party/ImageMagick-7.0.8/bin/identify</identify-->
+                                <mermaid>${basedir}/libs/third-party/node_modules/.bin/mmdc</mermaid>
+                                <phantomjs>${basedir}/libs/third-party/phantomjs-2.1.1-macosx/bin/phantomjs</phantomjs>
+                                <svgbob>${basedir}/libs/third-party/svgbob/bin/svgbob</svgbob>
+                                <vg2svg>${basedir}/libs/third-party/node_modules/.bin/vg2svg</vg2svg>
+                            </attributes>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj</artifactId>
+                        <version>${asciidoctorj.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-revealjs</artifactId>
+                        <version>${asciidoctorj-revealjs.version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-diagram</artifactId>
+                        <version>${asciidoctorj.diagram.version}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
 
-      <!--
-          As it's the "revealjs" output, asciidoctor will name the file with an ending "revealjs".
-          Here we rename that file back to "html".
-      -->
-      <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
-        <artifactId>groovy-maven-plugin</artifactId>
-        <version>2.1.1</version>
-        <executions>
-          <!-- Set some dynamic variables which are useful for the site generation -->
-          <execution>
-            <id>rename-revealjs-files</id>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>execute</goal>
-            </goals>
-            <configuration>
-              <source>
-                import static groovy.io.FileType.FILES
+            <!--
+                As it's the "revealjs" output, asciidoctor will name the file with an ending "revealjs".
+                Here we rename that file back to "html".
+            -->
+            <plugin>
+                <groupId>org.codehaus.gmaven</groupId>
+                <artifactId>groovy-maven-plugin</artifactId>
+                <version>${groovy-maven-plugin.version}</version>
+                <executions>
+                    <!-- Set some dynamic variables which are useful for the site generation -->
+                    <execution>
+                        <id>rename-revealjs-files</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <source>
+                                import static groovy.io.FileType.FILES
 
-                println "\nRenaming output files:"
-                def baseDirectory = project.model.pomFile.parent
-                def slideOutputDirectory = new File(baseDirectory, "target/generated-slides")
-                if (slideOutputDirectory.exists()) {
-                  slideOutputDirectory.eachFileRecurse(FILES) {
-                    if (it.name.endsWith('.revealjs')) {
-                      def oldFileName = it.name
-                      def newFileName = oldFileName.substring(0, oldFileName.lastIndexOf(".")) + ".html"
-                      it.renameTo(new File(it.parent, newFileName))
-                      println "Renaming " + oldFileName + " to " + newFileName
-                    }
-                  }
-                  println ""
-                }
-              </source>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
+                                println "\nRenaming output files:"
+                                def baseDirectory = project.model.pomFile.parent
+                                def slideOutputDirectory = new File(baseDirectory, "target/generated-slides")
+                                if (slideOutputDirectory.exists()) {
+                                    slideOutputDirectory.eachFileRecurse(FILES) {
+                                        if (it.name.endsWith('.revealjs')) {
+                                            def oldFileName = it.name
+                                            def newFileName = oldFileName.substring(0, oldFileName.lastIndexOf(".")) + ".html"
+                                            it.renameTo(new File(it.parent, newFileName))
+                                            println "Renaming " + oldFileName + " to " + newFileName
+                                        }
+                                    }
+                                    println ""
+                                }
+                            </source>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
 
-      <!-- If the packaging is se to "war", pack the slides into a war file -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-war-plugin</artifactId>
-        <version>3.2.2</version>
-        <configuration>
-          <failOnMissingWebXml>false</failOnMissingWebXml>
-          <warSourceDirectory>${project.slides.directory}</warSourceDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
+            <!-- If the packaging is se to "war", pack the slides into a war file -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>${maven-war-plugin.version}</version>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                    <warSourceDirectory>${project.slides.directory}</warSourceDirectory>
+                </configuration>
+            </plugin>
+        </plugins>
 
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <source>${java.version}</source>
-            <target>${java.version}</target>
-            <testSource>${java.version}</testSource>
-            <testTarget>${java.version}</testTarget>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.eclipse.jetty</groupId>
-          <artifactId>jetty-maven-plugin</artifactId>
-          <version>${jetty-maven-plugin.version}</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <configuration>
+                        <source>${java.version}</source>
+                        <target>${java.version}</target>
+                        <testSource>${java.version}</testSource>
+                        <testTarget>${java.version}</testTarget>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.eclipse.jetty</groupId>
+                    <artifactId>jetty-maven-plugin</artifactId>
+                    <version>${jetty-maven-plugin.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
 
 </project>
diff --git a/tools/content-parent-resources/src/main/resources/document.html.slim b/tools/content-parent-resources/src/main/resources/document.html.slim
index 11329bbf..878bd763 100644
--- a/tools/content-parent-resources/src/main/resources/document.html.slim
+++ b/tools/content-parent-resources/src/main/resources/document.html.slim
@@ -2,6 +2,10 @@ doctype 5
 html lang=(attr :lang, 'en' unless attr? :nolang)
   head
     meta charset="utf-8"
+    meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"
+
+    title=(doctitle sanitize: true, use_fallback: true)
+
     - if RUBY_ENGINE == 'opal' && JAVASCRIPT_PLATFORM == 'node'
       - revealjsdir = (attr :revealjsdir, 'node_modules/reveal.js')
     - else
@@ -13,11 +17,9 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
       - if attr? key
         meta name=key content=(attr key)
     - linkcss = (attr? 'linkcss')
-    title=(doctitle sanitize: true, use_fallback: true)
-    meta content="yes" name="apple-mobile-web-app-capable"
-    meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"
-    meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" name="viewport"
-    link href="#{revealjsdir}/css/reveal.css" rel="stylesheet"
+    link rel="stylesheet" href="#{revealjsdir}/css/reset.css"
+    link rel="stylesheet" href="#{revealjsdir}/css/reveal.css"
+
     / START ADDED For Apache Training
     / Start adding c3, d3
     link href="css/c3.min.css" rel="stylesheet"
@@ -25,23 +27,29 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
     script src="js/c3.min.js"
     / End adding c3, d3
     / END ADDED For Apache Training
+
     / Default theme required even when using custom theme
-    - if attr? :revealjs_customtheme
-      link rel='stylesheet' href=(attr :revealjs_customtheme) id='theme'
-    - else
-      link rel='stylesheet' href='#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css' id='theme'
-    include asciidoctor_revealjs.css.slim
+    link rel='stylesheet' href=(attr :revealjs_customtheme, %(#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css)) id='theme'
+    /! This CSS is generated by the Asciidoctor reveal.js converter to further integrate AsciiDoc's existing semantic with reveal.js
+    style type="text/css"
+      include asciidoctor-compatibility.css
     - if attr? :icons, 'font'
       / iconfont-remote is implicitly set by Asciidoctor core. See https://github.com/asciidoctor/asciidoctor.org/issues/361
       - if attr? 'iconfont-remote'
-        link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/5.12.0-1/css/all.min.css))
-        link rel='stylesheet' href=(attr 'iconfont-cdn', %(#{cdn_base}/font-awesome/5.12.0-1/css/v4-shims.min.css))
+        - if (iconfont_cdn = (attr 'iconfont-cdn'))
+          link rel='stylesheet' href=iconfont_cdn
+        - else
+          / default icon font is Font Awesome
+          - font_awesome_version = (attr 'font-awesome-version', '5.15.1')
+          link rel='stylesheet' href=%(#{cdn_base}/font-awesome/#{font_awesome_version}/css/all.min.css)
+          link rel='stylesheet' href=%(#{cdn_base}/font-awesome/#{font_awesome_version}/css/v4-shims.min.css)
       - else
         link rel='stylesheet' href=(normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false)
     - if attr? :stem
       - eqnums_val = (attr 'eqnums', 'none')
       - eqnums_val = 'AMS' if eqnums_val == ''
       - eqnums_opt = %( equationNumbers: { autoNumber: "#{eqnums_val}" } )
+      - mathjaxdir = (attr 'mathjaxdir', "#{cdn_base}/mathjax/2.7.6")
       script type='text/x-mathjax-config'
         | MathJax.Hub.Config({
           tex2jax: {
@@ -55,24 +63,24 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
           },
           TeX: {#{eqnums_opt}}
           });
-      script src='#{cdn_base}/mathjax/2.4.0/MathJax.js?config=TeX-MML-AM_HTMLorMML'
+      script src='#{mathjaxdir}/MathJax.js?config=TeX-MML-AM_HTMLorMML'
 
     - syntax_hl = self.syntax_highlighter
     - if syntax_hl && (syntax_hl.docinfo? :head)
       =syntax_hl.docinfo :head, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/'
-    / If the query includes 'print-pdf', use the PDF print sheet
+
+    /! Printing and PDF exports
     javascript:
-      var link = document.createElement( 'link' );
-      link.rel = 'stylesheet';
-      link.type = 'text/css';
-      link.href = window.location.search.match( /print-pdf/gi ) ? "#{revealjsdir}/css/print/pdf.css" : "#{revealjsdir}/css/print/paper.css";
-      document.getElementsByTagName( 'head' )[0].appendChild( link );
-    /[if lt IE 9]
-      <script src="#{revealjsdir}/lib/js/html5shiv.js"></script>
-    - unless (docinfo_content = docinfo :header, '.html').empty?
-      =docinfo_content
+        var link = document.createElement( 'link' );
+        link.rel = 'stylesheet';
+        link.type = 'text/css';
+        link.href = window.location.search.match( /print-pdf/gi ) ? "#{revealjsdir}/css/print/pdf.css" : "#{revealjsdir}/css/print/paper.css";
+        document.getElementsByTagName( 'head' )[0].appendChild( link );
+
     - if attr? :customcss
       link rel='stylesheet' href=((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss)
+    - unless (_docinfo = docinfo :head, '-revealjs.html').empty?
+      =_docinfo
   body
     / START ADDED For Apache Training
     .header
@@ -82,181 +90,190 @@ html lang=(attr :lang, 'en' unless attr? :nolang)
     .reveal
       / Any section element inside of this container is displayed as a slide
       .slides
-        - unless notitle || !has_header?
-          - bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil
-          - bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil
-          section.title(class = role
-            data-state='title'
-            data-transition=(attr 'title-slide-transition')
-            data-transition-speed=(attr 'title-slide-transition-speed')
-            data-background=(attr 'title-slide-background')
-            data-background-size=(attr 'title-slide-background-size')
-            data-background-image=bg_image
-            data-background-video=bg_video
-            data-background-video-loop=(attr 'title-slide-background-video-loop')
-            data-background-video-muted=(attr 'title-slide-background-video-muted')
-            data-background-opacity=(attr "background-opacity")
-            data-background-iframe=(attr 'title-slide-background-iframe')
-            data-background-color=(attr 'title-slide-background-color')
-            data-background-repeat=(attr 'title-slide-background-repeat')
-            data-background-position=(attr 'title-slide-background-position')
-            data-background-transition=(attr 'title-slide-background-transition'))
-            - if (_title_obj = doctitle partition: true, use_fallback: true).subtitle?
-              h1=slice_text _title_obj.title, (_slice = header.option? :slice)
-              h2=slice_text _title_obj.subtitle, _slice
-            - else
-              h1=@header.title
-            - preamble = @document.find_by context: :preamble
-            - unless preamble.nil? or preamble.length == 0
-              div.preamble=preamble.pop.content
-            - unless author.nil?
-              p.author: small=author
-        =content
+        - unless noheader
+          - unless (_docinfo = docinfo :header, '-revealjs.html').empty?
+            = _docinfo
+          - if header?
+            include title_slide.html.slim
+        = content
+        - unless (_docinfo = docinfo :footer, '-revealjs.html').empty?
+          = _docinfo
     / START ADDED For Apache Training
     .footer
       .left
       .right
     / END ADDED For Apache Training
-    script src="#{revealjsdir}/lib/js/head.min.js"
     script src="#{revealjsdir}/js/reveal.js"
+    / Supports easy AsciiDoc syntax for background color
     javascript:
-      Array.prototype.slice.call(document.querySelectorAll('.slides section')).forEach(function(slide) {
-        if (slide.getAttribute('data-background-color')) return;
-        // user needs to explicitly say he wants CSS color to override otherwise we might break custom css or theme (#226)
-        if (!(slide.classList.contains('canvas') || slide.classList.contains('background'))) return;
-        var bgColor = getComputedStyle(slide).backgroundColor;
-        if (bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') {
-          slide.setAttribute('data-background-color', bgColor);
-          slide.style.backgroundColor = 'transparent';
-        }
-      })
+        Array.prototype.slice.call(document.querySelectorAll('.slides section')).forEach(function(slide) {
+            if (slide.getAttribute('data-background-color')) return;
+            // user needs to explicitly say he wants CSS color to override otherwise we might break custom css or theme (#226)
+            if (!(slide.classList.contains('canvas') || slide.classList.contains('background'))) return;
+            var bgColor = getComputedStyle(slide).backgroundColor;
+            if (bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') {
+                slide.setAttribute('data-background-color', bgColor);
+                slide.style.backgroundColor = 'transparent';
+            }
+        });
+
+        // More info about config & dependencies:
+        // - https://github.com/hakimel/reveal.js#configuration
+        // - https://github.com/hakimel/reveal.js#dependencies
+        Reveal.initialize({
+            // Display presentation control arrows
+            controls: #{to_boolean(attr 'revealjs_controls', true)},
+            // Help the user learn the controls by providing hints, for example by
+            // bouncing the down arrow when they first encounter a vertical slide
+            controlsTutorial: #{to_boolean(attr 'revealjs_controlstutorial', true)},
+            // Determines where controls appear, "edges" or "bottom-right"
+            controlsLayout: '#{attr 'revealjs_controlslayout', 'bottom-right'}',
+            // Visibility rule for backwards navigation arrows; "faded", "hidden"
+            // or "visible"
+            controlsBackArrows: '#{attr 'revealjs_controlsbackarrows', 'faded'}',
+            // Display a presentation progress bar
+            progress: #{to_boolean(attr 'revealjs_progress', true)},
+            // Display the page number of the current slide
+            slideNumber: #{to_valid_slidenumber(attr 'revealjs_slidenumber', false)},
+            // Control which views the slide number displays on
+            showSlideNumber: '#{attr 'revealjs_showslidenumber', 'all'}',
+            // Add the current slide number to the URL hash so that reloading the
+            // page/copying the URL will return you to the same slide
+            hash: #{to_boolean(attr 'revealjs_hash', false)},
+            // Push each slide change to the browser history. Implies `hash: true`
+            history: #{to_boolean(attr 'revealjs_history', false)},
+            // Enable keyboard shortcuts for navigation
+            keyboard: #{to_boolean(attr 'revealjs_keyboard', true)},
+            // Enable the slide overview mode
+            overview: #{to_boolean(attr 'revealjs_overview', true)},
+            // Disables the default reveal.js slide layout so that you can use custom CSS layout
+            disableLayout: #{to_boolean(attr 'revealjs_disablelayout', false)},
+            // Vertical centering of slides
+            center: #{to_boolean(attr 'revealjs_center', true)},
+            // Enables touch navigation on devices with touch input
+            touch: #{to_boolean(attr 'revealjs_touch', true)},
+            // Loop the presentation
+            loop: #{to_boolean(attr 'revealjs_loop', false)},
+            // Change the presentation direction to be RTL
+            rtl: #{to_boolean(attr 'revealjs_rtl', false)},
+            // See https://github.com/hakimel/reveal.js/#navigation-mode
+            navigationMode: '#{attr 'revealjs_navigationmode', 'default'}',
+            // Randomizes the order of slides each time the presentation loads
+            shuffle: #{to_boolean(attr 'revealjs_shuffle', false)},
+            // Turns fragments on and off globally
+            fragments: #{to_boolean(attr 'revealjs_fragments', true)},
+            // Flags whether to include the current fragment in the URL,
+            // so that reloading brings you to the same fragment position
+            fragmentInURL: #{to_boolean(attr 'revealjs_fragmentinurl', false)},
+            // Flags if the presentation is running in an embedded mode,
+            // i.e. contained within a limited portion of the screen
+            embedded: #{to_boolean(attr 'revealjs_embedded', false)},
+            // Flags if we should show a help overlay when the questionmark
+            // key is pressed
+            help: #{to_boolean(attr 'revealjs_help', true)},
+            // Flags if speaker notes should be visible to all viewers
+            showNotes: #{to_boolean(attr 'revealjs_shownotes', false)},
+            // Global override for autolaying embedded media (video/audio/iframe)
+            // - null: Media will only autoplay if data-autoplay is present
+            // - true: All media will autoplay, regardless of individual setting
+            // - false: No media will autoplay, regardless of individual setting
+            autoPlayMedia: #{attr 'revealjs_autoplaymedia', 'null'},
+            // Global override for preloading lazy-loaded iframes
+            // - null: Iframes with data-src AND data-preload will be loaded when within
+            //   the viewDistance, iframes with only data-src will be loaded when visible
+            // - true: All iframes with data-src will be loaded when within the viewDistance
+            // - false: All iframes with data-src will be loaded only when visible
+            preloadIframes: #{attr 'revealjs_preloadiframes', 'null'},
+            // Number of milliseconds between automatically proceeding to the
+            // next slide, disabled when set to 0, this value can be overwritten
+            // by using a data-autoslide attribute on your slides
+            autoSlide: #{attr 'revealjs_autoslide', 0},
+            // Stop auto-sliding after user input
+            autoSlideStoppable: #{to_boolean(attr 'revealjs_autoslidestoppable', true)},
+            // Use this method for navigation when auto-sliding
+            autoSlideMethod: #{attr 'revealjs_autoslidemethod', 'Reveal.navigateNext'},
+            // Specify the average time in seconds that you think you will spend
+            // presenting each slide. This is used to show a pacing timer in the
+            // speaker view
+            defaultTiming: #{attr 'revealjs_defaulttiming', 120},
+            // Specify the total time in seconds that is available to
+            // present.  If this is set to a nonzero value, the pacing
+            // timer will work out the time available for each slide,
+            // instead of using the defaultTiming value
+            totalTime: #{attr 'revealjs_totaltime', 0},
+            // Specify the minimum amount of time you want to allot to
+            // each slide, if using the totalTime calculation method.  If
+            // the automated time allocation causes slide pacing to fall
+            // below this threshold, then you will see an alert in the
+            // speaker notes window
+            minimumTimePerSlide: #{attr 'revealjs_minimumtimeperslide', 0},
+            // Enable slide navigation via mouse wheel
+            mouseWheel: #{to_boolean(attr 'revealjs_mousewheel', false)},
+            // Hide cursor if inactive
+            hideInactiveCursor: #{to_boolean(attr 'revealjs_hideinactivecursor', true)},
+            // Time before the cursor is hidden (in ms)
+            hideCursorTime: #{attr 'revealjs_hidecursortime', 5000},
+            // Hides the address bar on mobile devices
+            hideAddressBar: #{to_boolean(attr 'revealjs_hideaddressbar', true)},
+            // Opens links in an iframe preview overlay
+            // Add `data-preview-link` and `data-preview-link="false"` to customise each link
+            // individually
+            previewLinks: #{to_boolean(attr 'revealjs_previewlinks', false)},
+            // Transition style (e.g., none, fade, slide, convex, concave, zoom)
+            transition: '#{attr 'revealjs_transition', 'slide'}',
+            // Transition speed (e.g., default, fast, slow)
+            transitionSpeed: '#{attr 'revealjs_transitionspeed', 'default'}',
+            // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom)
+            backgroundTransition: '#{attr 'revealjs_backgroundtransition', 'fade'}',
+            // Number of slides away from the current that are visible
+            viewDistance: #{attr 'revealjs_viewdistance', 3},
+            // Number of slides away from the current that are visible on mobile
+            // devices. It is advisable to set this to a lower number than
+            // viewDistance in order to save resources.
+            mobileViewDistance: #{attr 'revealjs_mobileviewdistance', 3},
+            // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'")
+            parallaxBackgroundImage: '#{attr 'revealjs_parallaxbackgroundimage', ''}',
+            // Parallax background size in CSS syntax (e.g., "2100px 900px")
+            parallaxBackgroundSize: '#{attr 'revealjs_parallaxbackgroundsize', ''}',
+            // Number of pixels to move the parallax background per slide
+            // - Calculated automatically unless specified
+            // - Set to 0 to disable movement along an axis
+            parallaxBackgroundHorizontal: #{attr 'revealjs_parallaxbackgroundhorizontal', 'null'},
+            parallaxBackgroundVertical: #{attr 'revealjs_parallaxbackgroundvertical', 'null'},
+            // The display mode that will be used to show slides
+            display: '#{attr 'revealjs_display', 'block'}',
 
-      // See https://github.com/hakimel/reveal.js#configuration for a full list of configuration options
-      Reveal.initialize({
-        // Display presentation control arrows
-        controls: #{to_boolean(attr 'revealjs_controls', true)},
-        // Help the user learn the controls by providing hints, for example by
-        // bouncing the down arrow when they first encounter a vertical slide
-        controlsTutorial: #{to_boolean(attr 'revealjs_controlstutorial', true)},
-        // Determines where controls appear, "edges" or "bottom-right"
-        controlsLayout: '#{attr 'revealjs_controlslayout', 'bottom-right'}',
-        // Visibility rule for backwards navigation arrows; "faded", "hidden"
-        // or "visible"
-        controlsBackArrows: '#{attr 'revealjs_controlsbackarrows', 'faded'}',
-        // Display a presentation progress bar
-        progress: #{to_boolean(attr 'revealjs_progress', true)},
-        // Display the page number of the current slide
-        slideNumber: #{to_valid_slidenumber(attr 'revealjs_slidenumber', false)},
-        // Control which views the slide number displays on
-        showSlideNumber: '#{attr 'revealjs_showslidenumber', 'all'}',
-        // Push each slide change to the browser history
-        history: #{to_boolean(attr 'revealjs_history', false)},
-        // Enable keyboard shortcuts for navigation
-        keyboard: #{to_boolean(attr 'revealjs_keyboard', true)},
-        // Enable the slide overview mode
-        overview: #{to_boolean(attr 'revealjs_overview', true)},
-        // Vertical centering of slides
-        center: #{to_boolean(attr 'revealjs_center', true)},
-        // Enables touch navigation on devices with touch input
-        touch: #{to_boolean(attr 'revealjs_touch', true)},
-        // Loop the presentation
-        loop: #{to_boolean(attr 'revealjs_loop', false)},
-        // Change the presentation direction to be RTL
-        rtl: #{to_boolean(attr 'revealjs_rtl', false)},
-        // Randomizes the order of slides each time the presentation loads
-        shuffle: #{to_boolean(attr 'revealjs_shuffle', false)},
-        // Turns fragments on and off globally
-        fragments: #{to_boolean(attr 'revealjs_fragments', true)},
-        // Flags whether to include the current fragment in the URL,
-        // so that reloading brings you to the same fragment position
-        fragmentInURL: #{to_boolean(attr 'revealjs_fragmentinurl', false)},
-        // Flags if the presentation is running in an embedded mode,
-        // i.e. contained within a limited portion of the screen
-        embedded: #{to_boolean(attr 'revealjs_embedded', false)},
-        // Flags if we should show a help overlay when the questionmark
-        // key is pressed
-        help: #{to_boolean(attr 'revealjs_help', true)},
-        // Flags if speaker notes should be visible to all viewers
-        showNotes: #{to_boolean(attr 'revealjs_shownotes', false)},
-        // Global override for autolaying embedded media (video/audio/iframe)
-        // - null: Media will only autoplay if data-autoplay is present
-        // - true: All media will autoplay, regardless of individual setting
-        // - false: No media will autoplay, regardless of individual setting
-        autoPlayMedia: #{attr 'revealjs_autoplaymedia', 'null'},
-        // Number of milliseconds between automatically proceeding to the
-        // next slide, disabled when set to 0, this value can be overwritten
-        // by using a data-autoslide attribute on your slides
-        autoSlide: #{attr 'revealjs_autoslide', 0},
-        // Stop auto-sliding after user input
-        autoSlideStoppable: #{to_boolean(attr 'revealjs_autoslidestoppable', true)},
-        // Use this method for navigation when auto-sliding
-        autoSlideMethod: #{attr 'revealjs_autoslidemethod', 'Reveal.navigateNext'},
-        // Specify the average time in seconds that you think you will spend
-        // presenting each slide. This is used to show a pacing timer in the
-        // speaker view
-        defaultTiming: #{attr 'revealjs_defaulttiming', 120},
-        // Enable slide navigation via mouse wheel
-        mouseWheel: #{to_boolean(attr 'revealjs_mousewheel', false)},
-        // Hides the address bar on mobile devices
-        hideAddressBar: #{to_boolean(attr 'revealjs_hideaddressbar', true)},
-        // Opens links in an iframe preview overlay
-        // Add `data-preview-link` and `data-preview-link="false"` to customise each link
-        // individually
-        previewLinks: #{to_boolean(attr 'revealjs_previewlinks', false)},
-        // Transition style (e.g., none, fade, slide, convex, concave, zoom)
-        transition: '#{attr 'revealjs_transition', 'slide'}',
-        // Transition speed (e.g., default, fast, slow)
-        transitionSpeed: '#{attr 'revealjs_transitionspeed', 'default'}',
-        // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom)
-        backgroundTransition: '#{attr 'revealjs_backgroundtransition', 'fade'}',
-        // Number of slides away from the current that are visible
-        viewDistance: #{attr 'revealjs_viewdistance', 3},
-        // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'")
-        parallaxBackgroundImage: '#{attr 'revealjs_parallaxbackgroundimage', ''}',
-        // Parallax background size in CSS syntax (e.g., "2100px 900px")
-        parallaxBackgroundSize: '#{attr 'revealjs_parallaxbackgroundsize', ''}',
-        // Number of pixels to move the parallax background per slide
-        // - Calculated automatically unless specified
-        // - Set to 0 to disable movement along an axis
-        parallaxBackgroundHorizontal: #{attr 'revealjs_parallaxbackgroundhorizontal', 'null'},
-        parallaxBackgroundVertical: #{attr 'revealjs_parallaxbackgroundvertical', 'null'},
-        // The display mode that will be used to show slides
-        display: '#{attr 'revealjs_display', 'block'}',
+            // The "normal" size of the presentation, aspect ratio will be preserved
+            // when the presentation is scaled to fit different resolutions. Can be
+            // specified using percentage units.
+            width: #{attr 'revealjs_width', 960},
+            height: #{attr 'revealjs_height', 700},
 
-        // The "normal" size of the presentation, aspect ratio will be preserved
-        // when the presentation is scaled to fit different resolutions. Can be
-        // specified using percentage units.
-        width: #{attr 'revealjs_width', 960},
-        height: #{attr 'revealjs_height', 700},
+            // Factor of the display size that should remain empty around the content
+            margin: #{attr 'revealjs_margin', 0.1},
 
-        // Factor of the display size that should remain empty around the content
-        margin: #{attr 'revealjs_margin', 0.1},
+            // Bounds for smallest/largest possible scale to apply to content
+            minScale: #{attr 'revealjs_minscale', 0.2},
+            maxScale: #{attr 'revealjs_maxscale', 1.5},
 
-        // Bounds for smallest/largest possible scale to apply to content
-        minScale: #{attr 'revealjs_minscale', 0.2},
-        maxScale: #{attr 'revealjs_maxscale', 1.5},
+            // PDF Export Options
+            // Put each fragment on a separate page
+            pdfSeparateFragments: #{to_boolean(attr 'revealjs_pdfseparatefragments', true)},
+            // For slides that do not fit on a page, max number of pages
+            pdfMaxPagesPerSlide: #{attr 'revealjs_pdfmaxpagesperslide', 1},
 
-        // PDF Export Options
-        // Put each fragment on a separate page
-        pdfSeparateFragments: #{to_boolean(attr 'revealjs_pdfseparatefragments', true)},
-        // For slides that do not fit on a page, max number of pages
-        pdfMaxPagesPerSlide: #{attr 'revealjs_pdfmaxpagesperslide', 1},
+            // Optional libraries used to extend on reveal.js
+            dependencies: [
+                #{revealjs_dependencies(document, self, revealjsdir)}
+            ],
 
-        // Optional libraries used to extend on reveal.js
-        dependencies: [
-            { src: '#{revealjsdir}/lib/js/classList.js', condition: function() { return !document.body.classList; } },
-            #{(document.attr? 'source-highlighter', 'highlightjs') ? "{ src: '#{revealjsdir}/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }," : nil}
-            #{(attr? 'revealjs_plugin_zoom', 'disabled') ? "" :  "{ src: '#{revealjsdir}/plugin/zoom-js/zoom.js', async: true }," }
-            #{(attr? 'revealjs_plugin_notes', 'disabled') ? "" :  "{ src: '#{revealjsdir}/plugin/notes/notes.js', async: true }," }
-            #{(attr? 'revealjs_plugin_marked', 'enabled') ? "{ src: '#{revealjsdir}/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }," : "" }
-            #{(attr? 'revealjs_plugin_markdown', 'enabled') ? "{ src: '#{revealjsdir}/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }," : "" }
-            #{(attr? 'revealjs_plugin_pdf', 'enabled') ? "{ src: '#{revealjsdir}/plugin/print-pdf/print-pdf.js', async: true }," :  "" }
-            #{(attr? 'revealjs_plugins') ? File.read(attr('revealjs_plugins', '')) : ""}
-        ],
+            #{(attr? 'revealjs_plugins_configuration') ? File.read(attr('revealjs_plugins_configuration', '')) : ""}
 
-        #{(attr? 'revealjs_plugins_configuration') ? File.read(attr('revealjs_plugins_configuration', '')) : ""}
+        });
+    / Workaround the "Only direct descendants of a slide section can be stretched" limitation in reveal.js
+    / https://github.com/hakimel/reveal.js/issues/2584
+    include stretch_nested_elements.js.slim
 
-      });
     - if syntax_hl && (syntax_hl.docinfo? :footer)
       =syntax_hl.docinfo :footer, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/'
 


---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org