我想根据标题级别缩进TOC。
我的示例文档如下所示:
# Tutorial
## Start a new project
### Project structure
### Analysis code
我正在使用以下代码编译Rmd
文档。
rmarkdown::render("foo.Rmd",
output_options = HTMLlook,
output_file = "foo.html")
HTMLlook <- list(toc = TRUE,
toc_depth = 5,
toc_float = list(collapsed = FALSE,
smooth_scroll = TRUE))
这会产生带有TOC的文件
但是,我希望缩进TOC(缩进等效于标题级别)。 通缉结果应如下所示:
是否可以在render
中设置此选项,或者可以将css参数传递给它?
答案 0 :(得分:10)
我不知道内置的解决方案。但这里有一点调整:
<script>
$(document).ready(function() {
$items = $('div#TOC li');
$items.each(function(idx) {
num_ul = $(this).parentsUntil('#TOC').length;
$(this).css({'text-indent': num_ul * 10, 'padding-left': 0});
});
});
</script>
标题的深度实际上映射在TOC
内。对于每个级别,您都会创建一个新的ul
元素。这就是我们在这里使用的内容。详细说明:
文档加载完成后($(document).ready(....
):
TOC
TOC
的元素。这是ul
元素的数量。您可以通过使用text-indent
和padding-left
的两个参数来调整间距。
<强> MRE:强>
---
title: "Habits"
author: Martin Schmelzer
date: September 14, 2017
output:
html_document:
toc: true
toc_depth: 5
toc_float:
collapsed: false
smooth_scroll: true
---
<script>
$(document).ready(function() {
$items = $('div#TOC li');
$items.each(function(idx) {
num_ul = $(this).parentsUntil('#TOC').length;
$(this).css({'text-indent': num_ul * 10, 'padding-left': 0});
});
});
</script>
# In the morning
## Waking up
### Getting up
#### Take a shower
##### Make coffee
# In the evening
## Make dinner
结果如下: