Нежелательная дезинфекция (выход) в knitr из-за обновления - PullRequest
2 голосов
/ 15 апреля 2020

Прошлой весной я использовал код, подобный моему минимальному рабочему примеру (MWE) ниже, чтобы сделать это: https://cdn.advocacy.sba.gov/wp-content/uploads/2019/04/23142650/2019-Small-Business-Profiles-MA.pdf

Согласно документации knitr, код таблицы не должен получаться продезинфицировать. Однако, если вы свяжете MWE, вы увидите, что несколько персонажей очищаются (убегают). Например, \ иногда превращается в \textbackslash{}. Таким образом, кажется, что некоторые обновления пакета изменились, когда код очищается. Если вы просто скопируете код таблицы RMD снизу и вставите его в вывод TeX, он прекрасно скомпилируется.

Я попытался вернуться ко многим прошлогодним пакетам, но безрезультатно.

---
title: "MWE"
output:
  pdf_document:
    keep_tex: yes
---
\begin{tabular}{@{}lll}
\begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
&
 \begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
&
\begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
\end{tabular}

* [В моем исходном коде это было частью фрагмента "asis". Вы можете попробовать это и найти ту же проблему.]

1 Ответ

4 голосов
/ 15 апреля 2020

Это известная проблема, и решение состоит в том, чтобы добавить raw attributes к pando c, который гарантирует, что содержимое внутри блока не будет экранировано.

1) Добавить md_extensions: +raw_attribute
2 ) Добавьте блок латекса

Для ваших примеров это работает следующим образом:

---
title: "MWE"
output:
  pdf_document:
    md_extensions: +raw_attribute
    keep_tex: yes
---

```{=latex}
\begin{tabular}{@{}lll}
\begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
&
 \begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
&
\begin{tabular}{ll}
A & B \\
A & B \\
\end{tabular}
\end{tabular}
```

или при использовании его внутри фрагмента кода:

```{r, results = "asis"}
cat("```{=latex}")
// your latex code
cat("```")
```

PS: pando * Для этой функции требуется 1016 * версия 2.0.0

...