簡體   English   中英

使用knitr markdown注入HTML行

[英]injecting HTML lines using knitr markdown

有沒有辦法將R代碼輸出注入到生成的文檔中,而沒有使用大量格式標記<pre><code class="r"><pre><code> 我問這個是因為我想使用.Rmd而不是.Rhmtl但同時注入一些額外的HTML行。 使用例如cat("HTML code")這樣做會失敗,因為輸出被<pre><code>包圍。

我嘗試運行下面的.Rmd文件(帶有其他HTML行)的示例,該文件無法正常工作:

<script type="text/javascript">
<!--
function toggle_visibility(id) {
  var e = document.getElementById(id);
  if(e.style.display == 'none')
    e.style.display = 'block';
  else
    e.style.display = 'none';
}
//-->
</script>  

```{r}
1:10
```

<a onclick="toggle_visibility('answer_1');"><b><u>Antwort anzeigen</b></u></a>
<div id="answer_1" style=display:none>
```{r}
1:10
```
</div>

你應該能夠用knitr的鈎子做到這一點。 您可能想要查看源代碼以查看render_markdown()的默認掛鈎:

> library(knitr)
> render_markdown()
> knit_hooks$get('echo')
NULL
> knit_hooks$get('message')
function (x, options) 
{
    if (strict) {
        str_c("\n\n", indent_block(x), "\n")
    }
    else str_c("\n\n```\n", x, "```\n\n")
}
<environment: 0x2a3f590>
> knit_hooks$get('output')
function (x, options) 
if (output_asis(x, options)) x else hook.t(x, options)
<environment: 0x2a3f590>
> knitr:::output_asis
function (x, options) 
{
    is_blank(x) || options$results == "asis"
}
<environment: namespace:knitr>

我不確定hook.t到底是什么,但檢查一下。

另外,你試過asis選項嗎? 我並不完全清楚你想要的格式化方式,但你可能能夠使用asis。

你可以用掛鈎做很多很酷的東西。

我現在做的是遵循darozcig的建議,我使用JS。 這個解決方案似乎很乏味。 整齊編織的東西更容易裝得更好! 在我的完整.Rmd腳本下面。

<script type="text/javascript">
<!--
function toggle_visibility(id) {
  var e = document.getElementById(id); 
  if(e.style.display == 'none')
    e.style.display = 'block';
  else
    e.style.display = 'none';
}

function answer_top(name){
  var injection1 = '<a onclick=toggle_visibility("' + name + '")><b><u>Show answer</b></u></a>\n'
  document.write(injection1 + "\n")
  var injection2 = '<div id="' + name + '"style=display:none>'
  document.write(injection2 + "\n")
}

function answer_bottom() {
  document.write("</div>" + "\n")
}
//-->
</script>  

```{r}
1:10
```

<script type="text/javascript">answer_top("answer1")</script>
```{r}
1:10
```
<script type="text/javascript">answer_bottom()</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM