Rumah > Soal Jawab > teks badan
Saya mahu membina html secara dinamik dan menghasilkan html itu
Dalam kuarto.
Aplikasi sebenar melibatkan memasukkan iFrame,
Tetapi untuk menjadikannya mudah, mari buat teg <img>
sahaja.
Ini kod .qmd saya:
```{r} source("awash-functions.r") ``` How do you inject html text produced in an r function into a **quarto** document? In R markdown, I had the function `sprintf` a string. That doesn't seem to work here! Here is `awash-functions.r`: imageLink <- function(iUrl, iText) { sprintf("<img src = '%s' width='24'> %s", iUrl, iText) } let's call the function and see what appears: ```{r echo=FALSE} imageLink("https://www.united.com/8cd8323f017505df6908afc0b72b4925.svg", "united logo") ``` and now, here's what it's supposed to look like: <img src = 'https://www.united.com/8cd8323f017505df6908afc0b72b4925.svg'> united logo
Ia memaparkan dan fungsinya jelas dipanggil, Tetapi ia menunjukkan kod html dan bukannya imej:
Saya tahu ini mudah tetapi saya tidak dapat menemuinya. Terima kasih banyak-banyak!
P粉8839734812024-04-02 11:25:43
Ada dua perkara yang perlu diperhatikan:
Pertama sekali, Quarto membungkus sebarang output blok kod dalam tag. To get the output asis you need to use the chunk option
results: asis
.
Secondly, sprintf
(or even print
) returns output enclosed within quotes. So after using results: asis
, you would get the html tags but would also get the quotes. So you need to wrap the sprintf
with cat
to get intended results.
---
format: html
---
```{r}
#| echo: false
imageLink <- function(iUrl, iText) {
cat(sprintf(" %s", iUrl, iText))
}
```
```{r}
#| echo: false
#| results: asis
imageLink("https://www.united.com/8cd8323f017505df6908afc0b72b4925.svg", "united logo")
```
and now, here's what it's supposed to look like:
united logo
secara lalai