由于更新,knitr中存在不必要的消毒(溢出)

由于更新,knitr中存在不必要的消毒(溢出),r,latex,escaping,r-markdown,knitr,R,Latex,Escaping,R Markdown,Knitr,去年春天,我使用了类似于我下面的最小工作示例MWE的代码来实现这一点: 根据knitr文档,表代码不应经过消毒。然而,如果你编织MWE,你会看到有几个角色确实被消毒了。例如,\有时会变成\text反斜杠{}。所以,当代码被清理时,一些包更新似乎发生了变化。如果您只需从下面复制RMD表代码并将其粘贴到TeX输出中,它就可以很好地编译 我试着回到去年的许多方案,但都没有效果 --- title: "MWE" output: pdf_document: keep_tex: yes ---

去年春天,我使用了类似于我下面的最小工作示例MWE的代码来实现这一点:

根据knitr文档,表代码不应经过消毒。然而,如果你编织MWE,你会看到有几个角色确实被消毒了。例如,\有时会变成\text反斜杠{}。所以,当代码被清理时,一些包更新似乎发生了变化。如果您只需从下面复制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块的一部分。您可以尝试一下,并找到相同的问题。]

这是一个已知的问题,解决方案是将原始属性添加到pandoc,以确保块内的内容不会转义

1添加md_扩展:+raw_属性 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("```")
```
注意:此功能需要pandoc 2.0.0版