aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/templates/default.revealjs198
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs50
2 files changed, 120 insertions, 128 deletions
diff --git a/data/templates/default.revealjs b/data/templates/default.revealjs
index 8a77674dd..203983522 100644
--- a/data/templates/default.revealjs
+++ b/data/templates/default.revealjs
@@ -90,256 +90,198 @@ $endif$
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
-$if(center)$
- // Determines whether slide content should be vertically centered
- center: $center$,
-$endif$
-$if(controls)$
// Display controls in the bottom right corner
controls: $controls$,
-$endif$
-$if(controlsTutorial)$
+
// Help the user learn the controls by providing hints, for example by
// bouncing the down arrow when they first encounter a vertical slide
controlsTutorial: $controlsTutorial$,
-$endif$
-$if(controlsLayout)$
+
// Determines where controls appear, "edges" or "bottom-right"
controlsLayout: '$controlsLayout$',
-$endif$
-$if(controlsBackArrows)$
+
// Visibility rule for backwards navigation arrows; "faded", "hidden"
// or "visible"
controlsBackArrows: '$controlsBackArrows$',
-$endif$
-$if(progress)$
+
// Display a presentation progress bar
progress: $progress$,
-$endif$
-$if(slideNumber)$
+
// Display the page number of the current slide
slideNumber: $slideNumber$,
-$endif$
-$if(showSlideNumber)$
+
// 'all', 'print', or 'speaker'
showSlideNumber: '$showSlideNumber$',
-$endif$
+
// 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: $if(hash)$$hash$$else$true$endif$,
-$if(hashOneBasedIndex)$
+ hash: $hash$,
+
// Start with 1 for the hash rather than 0
hashOneBasedIndex: $hashOneBasedIndex$,
-$endif$
-$if(history)$
+
+ // Flags if we should monitor the hash and change slides accordingly
+ respondToHashChanges: $respondToHashChanges$,
+
// Push each slide change to the browser history
history: $history$,
-$endif$
-$if(keyboard)$
+
// Enable keyboard shortcuts for navigation
keyboard: $keyboard$,
-$endif$
-$if(overview)$
+
// Enable the slide overview mode
overview: $overview$,
-$endif$
-$if(center)$
+
+ // Disables the default reveal.js slide layout (scaling and centering)
+ // so that you can use custom CSS layout
+ disableLayout: false,
+
// Vertical centering of slides
center: $center$,
-$endif$
-$if(touch)$
+
// Enables touch navigation on devices with touch input
touch: $touch$,
-$endif$
-$if(loop)$
+
// Loop the presentation
loop: $loop$,
-$endif$
-$if(rtl)$
+
// Change the presentation direction to be RTL
rtl: $rtl$,
-$endif$
-$if(navigationMode)$
+
// see https://revealjs.com/vertical-slides/#navigation-mode
navigationMode: '$navigationMode$',
-$endif$
-$if(shuffle)$
+
// Randomizes the order of slides each time the presentation loads
shuffle: $shuffle$,
-$endif$
-$if(fragments)$
+
// Turns fragments on and off globally
fragments: $fragments$,
-$endif$
-$if(fragmentInURL)$
+
// Flags whether to include the current fragment in the URL,
// so that reloading brings you to the same fragment position
fragmentInURL: $fragmentInURL$,
-$endif$
-$if(embedded)$
+
// Flags if the presentation is running in an embedded mode,
// i.e. contained within a limited portion of the screen
embedded: $embedded$,
-$endif$
-$if(help)$
+
// Flags if we should show a help overlay when the questionmark
// key is pressed
help: $help$,
-$endif$
-$if(pause)$
- // Flags if it should be possible to pause the presentation (blackout)
- pause: $pause$,
-$endif$
-$if(showNotes)$
+
+ // Flags if it should be possible to pause the presentation (blackout)
+ pause: $pause$,
+
// Flags if speaker notes should be visible to all viewers
showNotes: $showNotes$,
-$endif$
-$if(autoPlayMedia)$
- // Global override for autoplaying 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
+
+ // Global override for autoplaying embedded media (null/true/false)
autoPlayMedia: $autoPlayMedia$,
-$endif$
-$if(preloadIframes)$
- // 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
+
+ // Global override for preloading lazy-loaded iframes (null/true/false)
preloadIframes: $preloadIframes$,
-$endif$
-$if(autoSlide)$
+
// 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: $autoSlide$,
-$endif$
-$if(autoSlideStoppable)$
+
// Stop auto-sliding after user input
autoSlideStoppable: $autoSlideStoppable$,
-$endif$
-$if(autoSlideMethod)$
+
// Use this method for navigation when auto-sliding
autoSlideMethod: $autoSlideMethod$,
-$endif$
-$if(defaultTiming)$
+
// 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: $defaultTiming$,
-$endif$
-$if(totalTime)$
- // 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: $totalTime$,
-$endif$
-$if(minimumTimePerSlide)$
- // 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: $minimumTimePerSlide$,
-$endif$
-$if(mouseWheel)$
+
// Enable slide navigation via mouse wheel
mouseWheel: $mouseWheel$,
-$endif$
-$if(rollingLinks)$
- // Apply a 3D roll to links on hover
- rollingLinks: $rollingLinks$,
-$endif$
-$if(hideInactiveCursor)$
+
+ // The display mode that will be used to show slides
+ display: '$display$',
+
// Hide cursor if inactive
hideInactiveCursor: $hideInactiveCursor$,
-$endif$
-$if(hideCursorTime)$
+
// Time before the cursor is hidden (in ms)
hideCursorTime: $hideCursorTime$,
-$endif$
-$if(hideAddressBar)$
- // Hides the address bar on mobile devices
- hideAddressBar: $hideAddressBar$,
-$endif$
-$if(previewLinks)$
+
// Opens links in an iframe preview overlay
previewLinks: $previewLinks$,
-$endif$
-$if(transition)$
- // Transition style
- transition: '$transition$', // none/fade/slide/convex/concave/zoom
-$endif$
-$if(transitionSpeed)$
- // Transition speed
- transitionSpeed: '$transitionSpeed$', // default/fast/slow
-$endif$
-$if(backgroundTransition)$
+
+ // Transition style (none/fade/slide/convex/concave/zoom)
+ transition: '$transition$',
+
+ // Transition speed (default/fast/slow)
+ transitionSpeed: '$transitionSpeed$',
+
// Transition style for full page slide backgrounds
- backgroundTransition: '$backgroundTransition$', // none/fade/slide/convex/concave/zoom
-$endif$
-$if(viewDistance)$
+ // (none/fade/slide/convex/concave/zoom)
+ backgroundTransition: '$backgroundTransition$',
+
// Number of slides away from the current that are visible
viewDistance: $viewDistance$,
-$endif$
-$if(mobileViewDistance)$
+
// 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: $mobileViewDistance$,
-$endif$
$if(parallaxBackgroundImage)$
+
// Parallax background image
parallaxBackgroundImage: '$parallaxBackgroundImage$', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
$else$
$if(background-image)$
+
// Parallax background image
parallaxBackgroundImage: '$background-image$', // e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
$endif$
$endif$
$if(parallaxBackgroundSize)$
+
// Parallax background size
parallaxBackgroundSize: '$parallaxBackgroundSize$', // CSS syntax, e.g. "2100px 900px"
$endif$
$if(parallaxBackgroundHorizontal)$
+
// Amount to move parallax background (horizontal and vertical) on slide change
// Number, e.g. 100
parallaxBackgroundHorizontal: $parallaxBackgroundHorizontal$,
$endif$
$if(parallaxBackgroundVertical)$
+
parallaxBackgroundVertical: $parallaxBackgroundVertical$,
$endif$
$if(width)$
+
// 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: $width$,
$endif$
$if(height)$
+
height: $height$,
$endif$
$if(margin)$
+
// Factor of the display size that should remain empty around the content
margin: $margin$,
$endif$
$if(minScale)$
+
// Bounds for smallest/largest possible scale to apply to content
minScale: $minScale$,
$endif$
$if(maxScale)$
+
maxScale: $maxScale$,
$endif$
-$if(zoomKey)$
- // Modifier key used to click-zoom to part of the slide
- zoomKey: '$zoomKey$',
-$endif$
-$if(display)$
- // The display mode that will be used to show slides
- display: '$display$',
-$endif$
$if(mathjax)$
+
math: {
mathjax: '$mathjaxurl$',
config: 'TeX-AMS_HTML-full',
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index b1dd9a659..4d513df3b 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -317,6 +317,10 @@ pandocToHtml opts (Pandoc meta blocks) = do
| otherwise -> mempty
Nothing -> mempty
let mCss :: Maybe [Text] = lookupContext "css" metadata
+ let true :: Text
+ true = "true"
+ let false :: Text
+ false = "false"
let context = (if stHighlighting st
then case writerHighlightStyle opts of
Just sty -> defField "highlighting-css"
@@ -344,6 +348,52 @@ pandocToHtml opts (Pandoc meta blocks) = do
PlainMath -> defField "displaymath-css" True
WebTeX _ -> defField "displaymath-css" True
_ -> id) .
+ (if slideVariant == RevealJsSlides
+ then -- set boolean options explicitly, since
+ -- template can't distinguish False/undefined
+ defField "controls" true .
+ defField "controlsTutorial" true .
+ defField "controlsLayout" ("bottom-right" :: Text) .
+ defField "controlsBackArrows" ("faded" :: Text) .
+ defField "progress" true .
+ defField "slideNumber" false .
+ defField "showSlideNumber" ("all" :: Text) .
+ defField "hashOneBasedIndex" false .
+ defField "hash" false .
+ defField "respondToHashChanges" true .
+ defField "history" false .
+ defField "keyboard" true .
+ defField "overview" true .
+ defField "disableLayout" false .
+ defField "center" true .
+ defField "touch" true .
+ defField "loop" false .
+ defField "rtl" false .
+ defField "navigationMode" ("default" :: Text) .
+ defField "shuffle" false .
+ defField "fragments" true .
+ defField "fragmentInURL" true .
+ defField "embedded" false .
+ defField "help" true .
+ defField "pause" true .
+ defField "showNotes" false .
+ defField "autoPlayMedia" ("null" :: Text) .
+ defField "preloadIframes" ("null" :: Text) .
+ defField "autoSlide" ("0" :: Text) .
+ defField "autoSlideStoppable" true .
+ defField "autoSlideMethod" ("null" :: Text) .
+ defField "defaultTiming" ("null" :: Text) .
+ defField "mouseWheel" false .
+ defField "display" ("block" :: Text) .
+ defField "hideInactiveCursor" true .
+ defField "hideCursorTime" ("5000" :: Text) .
+ defField "previewLinks" false .
+ defField "transition" ("slide" :: Text) .
+ defField "transitionSpeed" ("default" :: Text) .
+ defField "backgroundTransition" ("fade" :: Text) .
+ defField "viewDistance" ("3" :: Text) .
+ defField "mobileViewDistance" ("2" :: Text)
+ else id) .
defField "document-css" (isNothing mCss && slideVariant == NoSlides) .
defField "quotes" (stQuotes st) .
-- for backwards compatibility we populate toc