这是我的代码示例,我想将“Sepal.Length”列分成两行。
---
title: "Unbreakable Line"
format: pdf
editor: visual
---
{r}
#| label: load-packages
#| include: false
library(tidyverse)
library(magrittr)
library(tinytex)
library(gt)
{r}
iris %>%
head(10) %>%
gt() %>%
cols_label(
Sepal.Length = md("Sepal<br>Length")
)
当我预览块时它工作正常,但是当我渲染时,我收到此错误:
“警告:发现 HTML 标签,它们将被删除。* 设置
options(gt.html_tag_check = FALSE)
以禁用此检查。”
我尝试取出 md() 并使用“ “,但这只是给了我一个空间。有关如何在此处换行的任何提示吗?
首先,当您渲染为 pdf 时,HTML 标签将不起作用,并且会被丢弃,正如警告所告诉您的那样。相反,您必须使用 LaTex 添加换行符,例如你可以使用
\\\\
。然而,这也不起作用,因为在生成的 LaTeX 代码中,反斜杠会被转义并替换为 \\textbackslash{}
。
为了防止转义,其他包(如
knits::kable
或 gtsummary::as_kable_extra
)中的函数提供了 escape=
参数,可以将其设置为 FALSE
。然而,gt::as_latex
的情况并非如此。
解决此问题的一种可能的解决方法是使用自定义
knit_print
方法来覆盖 knit_print
提供的 gt
方法。这样做可以将 \\textbackslash{}
添加的 gt::as_latex
替换为所需的 \\
。基本上,例如在引擎盖下完成了相同的操作gtsummary::as_kable_extra
。
注意:您必须在加载 ´gt
knit_print
gt` 默认值后定义或添加自定义 , otherwise it gets overridden by the
方法。
---
title: "Unbreakable Line"
format: pdf
editor: visual
---
```{r}
#| label: load-packages
#| include: false
library(tidyverse)
library(tinytex)
library(gt)
```
```{r echo=FALSE}
knit_print.gt_tbl <- function(x, ...) {
if (knitr::is_latex_output()) {
res <- gt::as_latex(x)
res[[1]] <- gsub(
"\\textbackslash{}",
"\\",
res[[1]],
fixed = TRUE
)
return(res)
}
gt:::knit_print.gt_tbl(x)
}
registerS3method(
"knit_print", "gt_tbl", knit_print.gt_tbl,
envir = asNamespace("knitr")
)
```
```{r echo=FALSE}
iris %>%
head(10) %>%
gt() %>%
cols_label(
Sepal.Length = "Sepal\\\\Length"
)
```