bog*_*ton 2 latex r knitr r-markdown kable
我最近学会了如何使用包含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)
Run Code Online (Sandbox Code Playgroud)
我现在想把它自动渲染成PDF,但是当我把这个确切的代码粘贴到一个RMarkdown文件集中编织成PDF时,这让我陷入长达一小时的试图调试与unicode角色相关的乳胶错误的兔子洞在表中,颜色规范中的数字符号引起问题,脚注,错误! Misplaced \noalign.表明我还没有找出来源等.
我将在此末尾包含完整Rmd文件的文本.我在Mac上,如果这有所作为.使用BasicTex和tlmgr安装缺少的乳胶包.
有没有(1)一种方法来保存我的kableExtra表,它看起来在RStudio中呈现时我想要的是一个可扩展的PDF文件,它不涉及RMarkdown?我write2pdf()今天玩了这个功能,但又遇到了unicode问题.我也尝试将它编织成html并通过调用转换它pandoc,但这删除了我需要的大部分表格式.
也许我错过了一些简单的解决方案,但是......或者(2)是否有人能够告诉我哪些更改会使这个Rmd代码正确地将我的图表呈现为PDF?R代码本身工作正常.我想这是某种乳胶问题.
非常感谢您的帮助.
---
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
```
Run Code Online (Sandbox Code Playgroud)
有一些问题.
cell_spec将要插入原始HTML代码,除非您要求它插入LaTeX代码.使用format = "latex"这样做.
您需要在LaTeX代码中指定符号,而不是HTML标记. xelatex应该支持类似"\\symbol{9650}"的东西"▲",但我无法得到任何东西:也许我没有安装字体.相反,你可以使用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
Run Code Online (Sandbox Code Playgroud)