Полагаю, мне здесь не хватает чего-то очевидного, но какое-то время я был в тупике. У меня есть настройка файла .Rmd, и почти все хорошо сочетается с Markdown_strict и latex_fragment (с небольшой предварительной обработкой на этом), но пока неважно.
Вот файл sample.Rmd, который у меня на входе. Я не мог понять, как вкладывать обратные кавычки, поэтому на данный момент это псевдо-экранирование.
---
title: "Sample"
output:
md_document:
preserve_yaml: yes
variant: markdown_strict+raw_html+all_symbols_escapable
latex_fragment: default
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile, encoding = encoding,
output_dir = ".", output_format = "all") })
---
\`\`\`{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
sqlcode <- function(sql, code = "") {
if (knitr::is_latex_output()) {
return(paste0('\n```{=sql}\n',sql,'\n```\n'))
} else if (!knitr::is_html_output(excludes = "markdown")) {
if (length(code)>0) {
code = paste0(" ", code," ")
} else {
code = " "
}
pre <- paste0("{{< sql",code,">}}\n")
post <- "\n{{< /sql >}}"
return(knitr::raw_html(paste0(pre,sql,post)))
}
}
\`\`\`
This is a sample.
\`\`\`{r echo=FALSE}
sqlcode("SELECT *
FROM TABLE", "sample")
\`\`\`
Фрагмент LaTeX, который мне нужен:
This is a sample.
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{SELECT} \OperatorTok{*}
\KeywordTok{FROM}\NormalTok{ TABLE}
\end{Highlighting}
\end{Shaded}
Я получаю:
This is a sample.
\begin{verbatim}
## [1] "\n```{=sql}\nSELECT *\nFROM TABLE\n```\n"
\end{verbatim}
Что касается MD, я действительно получаю то, что хочу, а именно:
---
title: "Sample"
output:
md_document:
preserve_yaml: yes
variant: markdown_strict+raw_html+all_symbols_escapable
latex_fragment: default
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile, encoding = encoding,
output_dir = ".", output_format = "all") })
---
This is a sample.
{{< sql sample >}}
SELECT *
FROM TABLE
{{< /sql >}}
Для тех, кто знаком с Hu go, это специальные шорткоды, которые я использую для Hu go -сгенерированный сайт. Отсутствие идентификатора кода SQL намеренно, затем выделяется с помощью hu go.
Во всяком случае, как мне получить sqlcode (...) для вывода изолированного блока, который pando c будет правильно выделять в LaTeX, или, альтернативно, какую часть pdf_document.R мне следует настроить по порядку чтобы добиться этого? Я пробовал различные функции knitr, которые отмечают выходные данные, и я могу получить промежуточный MD-файл, который я мог бы обработать для удаления некоторых маркеров, но мне не удалось обработать этот промежуточный MD-файл до того, как knitr отправит его в Pando c.