slide timing: per-speaker timing comments activate speaker view pacing
Port the Google-Docs slide workflow convention: timing comments like
<!-- JD 00:30 --> (speaker code plus MM:SS/HH:MM:SS/seconds duration, or
just <!-- 00:30 --> for single-speaker talks) are converted into
data-timing attributes on the rendered slides' <section> elements, and
the calculated grand total is passed to reveal.js as the totalTime
config value, activating the pacing timer in the speaker view. A
document-supplied totalTime or defaultTiming takes precedence.
A per-speaker time summary is printed during rendering; the new
slide_timing() function computes slide, speaker, and grand totals
directly from an .Rmd source file without rendering it.
Change-Id: I89d37baab06c6ee8be7ab777a70b9b21295c8780
diff --git a/README.Rmd b/README.Rmd
index 089e48a..be3d9f4 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -113,6 +113,45 @@
Pressing `Esc` exits all of these modes.
+## Slide Timing
+
+You can plan the time budget of a talk by adding timing comments to your slides: a comment with an optional speaker code and the expected duration (`MM:SS`, `HH:MM:SS`, or plain seconds), ported from the old Google-Docs-based slide workflow:
+
+``` markdown
+## My slide title
+
+Some content
+
+<!-- JD 00:30 -->
+```
+
+This means John Doe will need 30 seconds for that slide. For talks presented by a single speaker, the speaker code can be omitted:
+
+``` markdown
+## My slide title
+
+Some content
+
+<!-- 00:30 -->
+```
+
+Typically you start from a known total time budget and adjust the individual slides to it. You can set this budget yourself with the `totalTime` option (in seconds):
+
+``` yaml
+output:
+ revealjs.ids::revealjs_presentation:
+ reveal_options:
+ totalTime: 3600 # one hour
+```
+
+When rendering, the comments are converted into [`data-timing` attributes](https://revealjs.com/speaker-view/) on the slides, and the calculated grand total is passed to reveal.js as the `totalTime` config value (unless you set `totalTime` yourself). This activates the pacing timer in the [speaker view](https://revealjs.com/speaker-view/) (press `s`), showing how you are doing relative to your plan. Several speakers per slide are supported, and a summary with the total time per speaker is printed:
+
+```
+Slide timing -- JD: 0:30, AB: 1:00 -- total 1:30
+```
+
+To compute the time budget without rendering the presentation, you can call `slide_timing()` directly on the `.Rmd` source file.
+
## Incremental Bullets
You can render bullets incrementally by adding the `incremental` option: