目录未显示在 Blogdown 帖子中雨果主题甚至

问题描述

我在我的网站上添加了一篇使用 blogdown 制作的新帖子。尽管我的 YAML 中存在 toc: yes,但目录并未显示在呈现的网页上。我也试过添加

output:
  blogdown::html_page:
    toc: yes

这也不能解决问题。我目前正在使用 Even 主题 (Hugo),并且在 .config 文件中,我也有 toc: yes 存在。

我检查了 this post,但找不到它们引用的文件,也找不到那些特定的代码行。另外我的问题是新帖子,而不是主页。

有人知道可能是什么问题吗?

编辑:我可以在我的 index.html 文件(从 index.Rmd 生成)中看到 toc 的代码存在。出于某种原因,它没有在页面上呈现?

解决方法

TL;DR 解决方案:要在 Even 主题中显示目录,您的帖子必须呈现为 .markdown 格式而不是 .html 格式。为了实现这一点,您只需在创建帖子时使用 .Rmarkdown 文件扩展名而不是 .Rmd。现在,当您使用 blogdown::serve_site() 时,您的帖子将使用输出格式 .markdown 而不是 .html。您的帖子现在将呈现一个漂亮的目录。

给 Latex 数学模式用户的注意事项:在您的 .Rmarkdown 文档中输入时,您现在必须转义 $\。例如,$\le 0.2$ 必须输入为 \$\\le 0.2\$

我希望这个过于复杂的问题和解决方案对某人有帮助!


我想出了一个解决方法。

首先,我不确定如何在此上下文中提供可重现的示例,但我可以说,如果您打开一个 RStudio 项目,运行 blogdown::new_site(theme = "olOwOlo/hugo-theme-even"),使用 Addin 下拉菜单添加一个新帖子,添加为您的帖子添加一些标题,制作 toc:true,使用 Addin 菜单中的 Serve Site。您会看到您的帖子在各个方面都运行良好 - 只是它会缺少目录。

解决方法: 我不知道为什么,但如果我保留 .md 格式的帖子副本并删除 .html 文档,目录似乎会显示。默认行为似乎使用 .html 文档(如果存在);如果失败,它将使用 .md 文档。

要保留 .md 格式的帖子副本,请在 .Rmd 文档的 YAML 中使用以下代码:

output:
  blogdown::html_page:
    keep_md: yes

为网站提供服务,删除 .html 文档(但保留 .md 文档),目录就会显示出它的所有荣耀(您可能必须实际编织文件才能获得 .md)。>

我不知道为什么会这样...我在其他地方看到过(虽然我似乎再也找不到帖子了)有些 Hugo 主题不能很好地与 .html 文件配合使用,而更喜欢 .md文件,而 Even theme 似乎就是这种情况。

总而言之:我现在的解决方法是处理我的帖子,当我完成后,用上面的选项编织文档,删除 .html 文件,然后继续。

警告: blogdown 似乎在使用 Serve Site 时会自动重新呈现所有旧帖子。根据 this stack answer,Serve Site 应仅呈现经过更改的文档。无论如何,旧帖子肯定会被重新渲染,即使在处理无关的帖子时也是如此。我不确定这种行为是否归因于 blogdown 本身,或 RStudio 项目。

我尝试转到工具 -> 项目选项 -> 构建工具,并取消选中“构建时预览站点”框,但该行为仍然存在。这意味着每次我对任何其他文件进行更改时,我都必须不断删除所有旧帖子的这些新 .html 文件。目前我只有一个帖子,所以没什么大不了的......还没有。

如果有人知道此警告的解决方案,我将不胜感激。如果我找到一个,我会编辑这个问题并添加它。

编辑:如果不存在 .html 文档,blogdown 似乎会重新呈现旧帖子。否则,它不会重新渲染它。

编辑 2:啊哈!根据此question的答案,只需将博客文章的文件扩展名从 .Rmd 更改为 .Rmarkdown 将生成 .markdown 文档而不是 .html 文档。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...