我无法在
knitr::kable
Rmarkdown 文档中的 bookdown
函数生成的表格标题中包含“%”符号。例如下面的代码:
---
title: "Test of table caption with percent symbol"
output:
bookdown::pdf_document2: default
pdf_document: default
---
```{r}
df = data.frame(id=1:3,names=letters[1:3])
knitr::kable(df,caption="This captions has a % symbol",booktabs=TRUE)
```
产生以下结果:
但是,如果我从标题中删除“%”符号或使用
pdf_document
而不是 bookdown::pdf_document2
,则输出格式正确。
能够在图形标题中包含“%”和 LaTeX 特有的其他符号的最佳解决方案是什么?另外,我需要一个适用于多种输出格式(例如,除了 PDF 之外,DOC 和 HTML)的解决方案。
我为自己的问题找到了两种解决方案。一种是使用标题参考:
---
title: "Test of table caption with percent symbol"
output:
bookdown::pdf_document2: default
pdf_document: default
---
(ref:mycap) This captions has a % symbol
```{r}
df = data.frame(id=1:3,names=letters[1:3])
knitr::kable(df,caption="(ref:mycap)",booktabs=TRUE)
```
另一种是在
format="pandoc"
中设置knitr::kable
:
---
title: "Test of table caption with percent symbol"
output:
bookdown::word_document2: default
bookdown::pdf_document2: default
pdf_document: default
---
```{r}
df = data.frame(id=1:3,names=letters[1:3])
knitr::kable(df,caption="This captions has a % symbol",booktabs=TRUE,format="pandoc")
```
这些解决方案会在页面上产生一些不同的表格位置,如果从
bookdown::pdf_document2
切换到 pdf_document
,标题参考解决方案将不起作用,但否则输出是相同的。
对我来说,唯一对
format=latex
有用的是:
knitr::kable(df,
caption='This and that with 1\\char"25\\, of total.', format = "latex")
说明:
在内部,
%
符号是\char"25
。
bookdown首先会生成一个.tex文件,所以需要在
\
前面添加一个\char"25
才能转义它。
这会“吃掉”
%
之后的空间。所以我加了一个空格(\,
),但当然也逃脱了(\\,
)