使用pandoc在reveal.js中滑动1级和2级

问题描述 投票:17回答:4

我在markdown中生成幻灯片,通过pandoc转换为html(使用pandoc -s -S -t revealjs test.md -o test.html)。

reveal.js框架允许2D设置:在幻灯片子集内“垂直”分组幻灯片,并水平分组幻灯片子集。在降价时,它可以像这样实现:

# Head1

## Below 1

text below 1

## Below 2

text below 2

# Head 2

这会生成预期的输出。结果有四张幻灯片,排列如下:

[  Head 1 ] [ Head 2 ]
[ Below 1 ]
[ Below 2 ]

不过,我想在“Head 1”幻灯片中有更多内容。这在reveal.js中是可能的,但pandoc未正确处理以下markdown:

# Head1

Head text 1

## Below 1

text below 1

## Below 2

text below 2

# Head 2

因为slide level变为1而不是2,而不是4个幻灯片,我得到两个(每个1级标题一个)。我可以使用pandoc选项强制滑动级别为2:

pandoc -s -S -t revealjs test.md -o test.html --slide-level 2

但后来我再次得到第一个安排 - 放弃直接在“Head 1”下面的任何内容。

有什么想法吗?

pandoc reveal.js
4个回答
15
投票

Pandoc 2.7(2019年3月):

幻灯片放映格式行为更改:标题小于幻灯片级别下的内容不再被忽略,但包含在标题幻灯片中(对于HTML幻灯片放映)或标题幻灯片后的幻灯片(对于投影仪)。此更改使得2D reveal.js幻灯片显示在每个堆栈的顶部幻灯片中具有内容(#4317#5237)。

给定此输入test.md文件:

# Head1

Head text 1

## Below 1

text below 1

## Below 2

text below 2

# Head 2

运行:

pandoc -s -t revealjs test.md -o test.html --slide-level 2

将生成reveal.js幻灯片,其中第一张幻灯片包含:

<h1>Head1</h1>
<p>Head text 1</p>

在Pandoc 2.7之前,如果要将幻灯片嵌套到级别2,则无法将内容置于级别1标题下。这个limitation是设计的。根据开发人员John MacFarlane的说法,in June 2015

Pandoc有一种将内容刻录到幻灯片中的方法(在用户指南中描述),所有幻灯片格式的工作方式相同,因此您可以使用相同的来源进行reveal.js和beamer。这就是推动现有系统的动力,尽管我对更好的方式持开放态度,只要它与所有格式统一运作。


2
投票

更新

pandoc 2.7

幻灯片放映格式行为更改:标题小于幻灯片级别下的内容不再被忽略,但包含在标题幻灯片中(对于HTML幻灯片放映)或标题幻灯片后的幻灯片(对于投影仪)。此更改使2D reveal.js幻灯片显示在每个堆栈的顶部幻灯片中具有内容(#4317,#5237)。

(重点补充)。我还没有测试过它。

以前的答案

这对我来说适用于当前的pandoc版本

# That presentation

## dummy slide

<!--javascript to remove dummy slide-->
<script>
document.getElementById("dummy-slide").remove();
</script>

<!--end dummy slide-->
</section>

<section>
<section class="titleslide slide level1">
<h1>Head 1<h1>
Head text 1

<!-- dummy-slide creates it's section end tag -->
<!-- </section> -->

## Below 1

text below 1

## Below 2

text below 2

</section>

<!-- need extra end tag before next section -->
</section>

<section class="titleslide slide level1">
<h1>Head 2<h1>
Head text 1
</section>

# Head 3

它有点消除了降价的想法,可能不适用于Pandoc的某些先前或更高版本。我在使用Rmarkdown时仍然觉得它很有用。以上是用

---
title: "That presentation"
output: 
  revealjs::revealjs_presentation:
    keep_md: TRUE
---

## dummy slide

<!--javascript to remove dummy slide-->
<script>
document.getElementById("dummy-slide").remove();
</script>

<!--end dummy slide-->
</section>

<section>
<section class="titleslide slide level1">
<h1>Head 1<h1>
Head text 1

<!-- dummy-slide creates it's section end tag -->
<!-- </section> -->

## Below 1

text below 1

## Below 2

text below 2

</section>

<!-- need extra end tag before next section -->
</section>

<section class="titleslide slide level1">
<h1>Head 2<h1>
Head text 1
</section>

# Head 3

0
投票

如果我理解正确,以下应该可以解决问题:

# Head1

---

Head text 1

## Below 1

text below 1

## Below 2

text below 2

# Head 2

使用您提到的第一个命令编译:

pandoc -s -S -t revealjs test.md -o test.html

-1
投票

这里有一个解决方法(https://github.com/rstudio/revealjs/issues/40),它建议以下(对我来说没问题):

---
title    : Title
date     : Dec 22, 2016
output   : 
    revealjs::revealjs_presentation
---

<section class="titleslide level1">
<h1>TOP SLIDE</h1>

Some blabla

## SUBSLIDE

Some sub-blabla
</section>

# Next section slide

## Next subslide

Text as per standard layout
© www.soinside.com 2019 - 2024. All rights reserved.