首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R Markdown ioslides目录

R Markdown ioslides目录
EN

Stack Overflow用户
提问于 2017-09-08 04:22:46
回答 1查看 1.2K关注 0票数 2

如何在呈现为ioslides_presentation时在R Markdown演示文稿中添加目录

如下所示,但在ioslides中:

代码语言:javascript
复制
---
title: ""
author: ""
date: ""
output:
  html_document:
    df_print: paged
    number_sections: yes
    theme: united
    toc: yes
    toc_float:
      collapsed: yes
      smooth_scroll: yes
---

对于包含输出ioslides的文档:

代码语言:javascript
复制
---
title: ""
author: ""
date: ""
output:
  ioslides_presentation: null
  beamer_presentation: default
  slidy_presentation: default
---
EN

回答 1

Stack Overflow用户

发布于 2018-05-28 23:48:11

由于RM arkdown ioslides中不支持toc子选项,请参见例如here我们必须采取解决方法。

@ShKlinkenberg提供了一个解决方案here。关键是使用JavaScript脚本添加此功能。

下面的独立.Rmd示例使用了@ShKlinkenberg的脚本:

代码语言:javascript
复制
---
title: "ToC in IOslides"
output: ioslides_presentation
---

<!-- Script for adding ToC !-->
<script>
document.addEventListener('DOMContentLoaded', function() {
  TableOfContents();
}
);                        

function TableOfContents(container, output) {

var output = output || '#toc';

// Get all elements with class: section or subsection
idfromclass = document.querySelectorAll('.section, .subsection');

    // Create the list element:
    var list = document.createElement('ul');

    // Iterate through all found elements
    for(var i = 0; i < idfromclass.length; i++) {

        // Create the list item:
        var item = document.createElement('li');

        // Set its contents:
        var id = idfromclass[i].id

        // Replace - in id with whitespace
        var titleText = id.replace(/-/gi, " ");

        // Add text to list element
        item.appendChild(document.createTextNode(titleText));

        // Add subsection class
        item.className = idfromclass[i].className

        // Add it to the list:
        list.appendChild(item);
    }

// Return generated HTML to toc div in slide
document.querySelector(output).innerHTML = list.innerHTML;

// Generate instruction message if no classes are defined
if (idfromclass.length == 0) { document.querySelector(output).innerHTML = "Add {.section} or {.subsection} to slide name to generate TOC"; }  

};
</script>

## Table of content

<div id="toc"></div>

# Section 1 {.section}

## Subsection A {.subsection}

# Section 2 {.section}

这将呈现目录,如下所示:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46104530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档