在RMarkdown表格列名中使用Latex数学表达式

6

我希望在我的Markdown文档中显示一个表格,并将列名设置为LaTeX数学公式,例如$\dot(m)_1$。

我尝试了以下代码:

knitr::kable(my.df[, c("Time", "MassFlowRate")],
             row.names = FALSE,
             col.names = c("Time", "$\dot{m}_1$"))

但它不起作用。

最终我生成的不是PDF,而是Word文档。因此,直接编写Latex表格不是一个选项。

2个回答

9

在R代码中,需要转义\,所以\dots应该写成\\dots

```{r}
my.df <- data.frame(Time=rnorm(10), MassFlowRate = rnorm(10))
knitr::kable(my.df[, c("Time", "MassFlowRate")],
             row.names = FALSE,
             col.names = c("Time", "$\\dot{m}_1$"))
```

有什么想法为什么我无法在add_header_above中使其工作?我正在编写PDF,我的代码类似于add_header_above(c('5% $\\leq$'=2 - c.custer
这是一个旧答案,我不知道...你应该提出一个新问题,展示你输出的哪些地方有问题(我猜测是 \\ 被渲染成了 \textbacklash{})。 - scoa

8
为了让当前答案正常工作,您需要在 kable() 中添加 , escape = FALSE
另外,我更喜欢使用tibble而不是data.frame。这样我可以直接在列名中指定 LaTeX 代码,无需使用col.names
```{r}
library(tibble)
my_df <- tibble(Time=rnorm(10), `$\\dot{m}_1$` = rnorm(10))
knitr::kable(my_df, escape = FALSE)
```

2
非常感谢您,这帮助我解决了我的问题。话虽如此,没有必要使用tibble,因为一些帖子警告不要使用它。基本的R data.frame同样有效 - 只需要指定check.names = FALSE,以避免发生强制转换。 - tchevrier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接