我最近学习了如何使用包含 unicode 符号的 kableExtra 制作很棒的表格,以便它们可以用作我的绘图的解释表。
library(dplyr)
library(kableExtra)
data.frame(
Symbol = c("●", "●", "▲"),
Description = c("bla bla bla", "bla bla bla", "bla bla bla"),
Result = c("bla bla bla", "bla bla bla", "bla bla bla")
) %>%
mutate(
Symbol = cell_spec(Symbol, color = c("yellow", "pink", "pink"), escape = F)
) %>%
kable(escape = F, align = c("c", "l", "l")) %>%
kable_styling(full_width = F)
我现在想自动将其渲染成 PDF,但是当我将这段确切的代码粘贴到设置为编织成 PDF 的 RMarkdown 文件中时,这让我陷入了一个长达数小时的兔子洞,试图调试与相关的各种 latex 错误表中的 unicode 字符、导致问题的颜色规范中的数字符号、脚注、声明 的错误!错位的\noalign.
我还没有弄清楚来源等
我将在最后包含完整 Rmd 文件的文本。如果这有所作为,我正在使用 Mac。使用 BasicTex 和 tlmgr 安装缺少的 latex 包。
是否有 (1) 一种方法可以将我的 kableExtra 表保存到不涉及 RMarkdown 的可缩放 PDF 文件中,该表在 RStudio 中呈现时看起来完全符合我的要求?我今天尝试了 write2pdf()
函数,但又遇到了 unicode 问题。我还尝试将它编织成 html 并通过调用 pandoc
将其转换,但这删除了我需要的大部分表格格式。
也许我在那里缺少一些简单的解决方案,但是...或者 (2) 是否有人能够告诉我哪些更改会使此 Rmd 代码正确地将我的图表呈现为 PDF? R 代码本身工作正常。我猜这是某种 Latex 问题。
非常感谢您的帮助。
---
title: ""
output:
pdf_document:
latex_engine: xelatex
---
```{r, echo=FALSE, results="asis"}
# TODOREQ: add "much" grammars for acute levels
# TODOREQ: change "levels of concern" to the respective guideline name.
# TODO: Change to groupby/summarize
# TODO: Factor out package loading and global variables into a single setup file
# Packages
suppressMessages(library(ggplot2))
suppressMessages(library(extrafont))
suppressMessages(library(kableExtra))
suppressMessages(library(dplyr))
table_info <- data.frame(Symbol=c("▲", "◆", "૫"),
Name=c("Name1", "Name2", "Name3"),
Description=c("Description1", "Description2",
"Description3"),
Results=c("Bad", "Good", "Bad"),
Color=c("#ffde71", "#394f38",
"#09a2dd"))
ktable <- table_info %>%
mutate(Symbol = cell_spec(Symbol, color = Color, escape = FALSE)) %>%
select(-Color) %>%
kable(escape = FALSE, align = c("c", "l", "l")) %>%
kable_styling(full_width = FALSE)
ktable
```
最佳答案
有几个问题。
cell_spec
将插入原始 HTML 代码,除非您要求它插入 LaTeX 代码。使用format = "latex"
来做到这一点。您需要在 LaTeX 代码中指定符号,而不是 HTML 标记。
xelatex
应该支持"\\symbol{9650}"
for"▲"
,但我无法显示任何内容up: 也许我没有安装字体。相反,您可以使用 AMS 符号;实心圆是"$\\bullet$"
,向上的实心三角形是"$\\blacktriangle$"
。我没有查你的其他人,但如果你幸运的话,你会在 https://www.rpi.edu/dept/arc/training/latex/LaTeX_symbols.pdf 中找到他们.- 常规的
kable
表格在 LaTeX 中很难看;使用booktabs = TRUE
选项以获得更好的选项。
所以这就是您的 ktable
规范应该是这样的:
table_info <- data.frame(Symbol=c("$\\bullet$", "$\\bullet$", "$\\blacktriangle$"),
Name=c("Name1", "Name2", "Name3"),
Description=c("Description1", "Description2",
"Description3"),
Results=c("Bad", "Good", "Bad"),
Color=c("#ffde71", "#394f38",
"#09a2dd"))
ktable <- table_info %>%
mutate(Symbol = cell_spec(Symbol, color = Color, format = "latex",
escape = FALSE)) %>%
select(-Color) %>%
kable(escape = FALSE, align = c("c", "l", "l"), booktabs = TRUE) %>%
kable_styling(full_width = FALSE)
ktable
关于使用 RMarkdown 将带有颜色和 unicode 字符的 kableExtra 表渲染为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50670838/