[quarto] data-qmd content should be escaped at least on double quotes
---
title: "Test"
format: html
keep-md: true
---
```{r}
library(gt)
data.frame(A = "Text", B = '<em class="special">Text</em>') |>
gt() |>
fmt_markdown(B)
```
This will lead to
because gt does not handle the double quotes in the column and produce this
<div data-qmd="<em class="special">Text</em>">
This was found in the context of
- https://github.com/quarto-dev/quarto-cli/discussions/7493
And maybe there should be a fmt_raw_html() function to mark the column content as HTML. I don't think data-qmd attributes is needed in that case.
Though it would be a wrapper or alias for fmt_passthrough() with escaping opt-out
This works fine.
---
title: "Test"
format: html
keep-md: true
---
```{r}
library(gt)
data.frame(A = "Text", B = '<em class="special">Text</em>') |>
gt() |>
fmt_passthrough(B, escape = FALSE)
```
So this is really about fmt_markdown usage maybe
Requires latest 1.4 pre-release
@rich-iannone I do think there is a related issue mentioned in quarto-dev/quarto-cli#3340 with \QuartoMarkdownBase64{ as raw LaTeX in a cell, and gt not escaping it.
Currently fmt_passthrough with escape = FALSE seems to be the solution. Though I am wondering if this should be by cell and not column.
This makes me think about some tricks we using in knitr where using I() is a way to mark some content as not to be touched.
Like
tibble::tribble(
~Thing, ~Citation,
1234, I("\\QuartoMarkdownBase64{QGVxLW1hdGg=}"),
5678, "\\QuartoMarkdownBase64{QExvdmVsYWNlMTg0Mg==}"
) |>
gt()
The first one would go through the processing of text but not be escape_latex(), while the second would be escaped.
Anyhow, maybe not really gt-like and a latex() should work with md() or html().
To be discussed. Do you want another issue specific for LaTeX ? Or should would make this one generic about how to pass some raw content in cells ?
Note to self: this should be fixed by using base-64 encoding of the text.