This uses rmarkdown::pandoc_convert()
to render HTML from a markdown file.
We've specified pandoc extensions that align with the features desired in the
Carpentries such as markdown_in_html_blocks
, tex_math_dollars
, and
native_divs
.
Examples
if (rmarkdown::pandoc_available("2.11")) {
# first example---markdown to HTML
tmp <- tempfile()
ex <- c("# Markdown",
"",
"::: challenge",
"",
"How do you write markdown divs?",
"",
":::"
)
writeLines(ex, tmp)
cat(sandpaper:::render_html(tmp))
# adding a lua filter
lua <- tempfile()
lu <- c("Str = function (elem)",
" if elem.text == 'markdown' then",
" return pandoc.Emph {pandoc.Str 'mowdrank'}",
" end",
"end")
writeLines(lu, lua)
lf <- paste0("--lua-filter=", lua)
cat(sandpaper:::render_html(tmp, lf))
}
#> <div id="markdown" class="section level1">
#> <h1>Markdown</h1>
#> <div id="discussion1" class="callout discussion">
#> <div class="callout-square">
#> <i class='callout-icon' data-feather='message-circle'></i>
#> </div>
#> <div class="section level3 callout-title callout-inner">
#> <h3 class="callout-title">Challenge</h3>
#> <div class="callout-content">
#> <p>How do you write markdown divs?</p>
#> </div>
#> </div>
#> </div>
#> </div><div id="markdown" class="section level1">
#> <h1>Markdown</h1>
#> <div id="discussion1" class="callout discussion">
#> <div class="callout-square">
#> <i class='callout-icon' data-feather='message-circle'></i>
#> </div>
#> <div class="section level3 callout-title callout-inner">
#> <h3 class="callout-title">Challenge</h3>
#> <div class="callout-content">
#> <p>How do you write <em>mowdrank</em> divs?</p>
#> </div>
#> </div>
#> </div>
#> </div>