【问题标题】:Adding cross reference in html in Rmarkdown在 Rmarkdown 中的 html 中添加交叉引用
【发布时间】:2021-12-23 12:37:18
【问题描述】:

我正在编写带有 bookdown 包的 Rmarkdown 书。在某些时候,我正在使用 R 块来创建一些 HTML 代码(在块头中使用选项“asis”)。在那个 HTML 中,我想添加对本书其他部分中的一个块的引用。请注意,这部分是由 pandoc 在单独的 html 文件中创建的。

生成 HTML 的函数运行良好,HTML 按预期呈现,但使用 @ref(chunkid) 添加的引用未转换为链接。它们只是 HTML 中的纯文本。

我尝试添加函数cat 来打印 HTML 代码,但如果我这样做了,HTML 不会呈现并显示为纯文本。

这是我目前拥有的:

```{r results = 'asis'}
"<h2>An html title</h2>
<div>\\@ref(titi22)</div>
"
```\

这将在编织书籍但未创建 div 中的链接时呈现预期的 HTML。 @ref(titi22) 写在div里。

在真实情况下,这就是我得到的

如果我添加猫:

```{r results = 'asis'}
cat("<h2>An html title</h2>
<div>\\@ref(titi22)</div>
")
```\

HTML 未呈现,也未呈现引用。

如何呈现引用和 HTML?

谢谢

【问题讨论】:

    标签: html r r-markdown bookdown cross-reference


    【解决方案1】:

    我找到了问题所在。

    我使用的 html 代码是使用库 htmltools 生成的,并使用函数 doRenderTags 转换为文本。这个函数做得很好,但是 pandoc 没有像预期的那样读取缩进(见这里:R markdown asis breaks valid html code)。所以解决方案就是在doRenderTags中使用参数indent = FALSE。之后,HTML 代码没有像 pandoc 预期的那样缩进和呈现。

    【讨论】:

      【解决方案2】:

      在书本中:

      output:
        bookdown::html_document2:
      

      ...它工作正常:

      <h2>An html title</h2>
      <div> Here is my first table: \@ref(tab:tab1) <div>
      

      标签:

      ```{r tab1}
      
      #any tab
      
      ```
      

      【讨论】:

      • 感谢您的回答,我尝试在yml中从gitbook切换到html2。它改变了很多文档的样式,并没有解决问题。当 HTML 代码带有参数 results = "asis" 的 R 块中生成时,交叉引用未格式化。在您的示例中,HTML 代码直接写在 markdown 中。你有别的想法吗?
      • @jérémyGelb 你应该告诉过你,你在 gitbook 中工作。你有哪个版本的bookdown?
      • @jérémyGelb 看那里:stackoverflow.com/questions/59635579/…
      • 感谢您提供的链接,它帮助我找到了真正的问题。我还在下面发布了答案。
      • @jérémyGelb 祝你好运和“+1” ;)
      猜你喜欢
      • 1970-01-01
      • 2020-01-05
      • 2023-02-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2021-12-07
      相关资源
      最近更新 更多