いくつかのデータをロードし、いくつかのシンボルとカスタムの色と線を含む kableExtra テーブルを生成し、pdf に出力する Rmarkdown ファイルを作成しました。
Rmarkdown ファイルを開いてニットすると機能し、必要な正確な出力が生成されます。さまざまな理由から、この Rmarkdown ファイルを別の .R ファイルから呼び出す必要があります。
ただし、これを (rmarkdown::render 関数を使用して) 行うと、.Rmd ファイル内から直接編成した場合には発生しないエラーが発生します。具体的には、エラーは関数background
内の設定によって引き起こされます。cell_spec
この呼び出しを削除して背景色を設定すると、.Rmd ファイルを別のファイルから正常にレンダリングできます。エラーは次のとおりです。
! Illegal parameter number in definition of \reserved@a.
<to be read again>
f
l.111 ...; background-color: #ffe6e6;" >1</span>}}
\\
アドバイスをありがとうございました。問題を再現する完全な Rmd ファイルを次に示します。Rmd から直接編成した場合の出力は次のようになります。
これがコードです。
---
title: ""
always_allow_html: yes
output:
pdf_document:
latex_engine: xelatex
geometry: margin=0.3in
header-includes:
- \usepackage[T1]{fontenc}
- \usepackage{array}
- \usepackage{booktabs}
- \usepackage{xcolor}
- \usepackage{makecell}
- \usepackage{longtable}
- \usepackage{multirow}
- \usepackage{wrapfig}
- \usepackage{float}
- \usepackage{colortbl}
- \usepackage{pdflscape}
- \usepackage{tabu}
- \usepackage{threeparttable}
- \usepackage{threeparttablex}
- \usepackage[normalem]{ulem}
- \usepackage{hyperref}
- \setmainfont{Helvetica}
- \pagenumbering{gobble}
- \DeclareTextCommand{\nobreakspace}{TU}{\leavevmode\nobreak\ }
documentclass: article
classoption: a4paper
---
```{r, echo=FALSE, message = FALSE, warning = FALSE}
# Packages
suppressMessages(library(ggplot2))
suppressMessages(library(extrafont))
suppressMessages(library(dplyr))
suppressMessages(library(pander))
suppressMessages(library(kableExtra))
# Data
table_dat <- data.frame(latex_symbol = c("", "$\\blacktriangle$",
"$\\blacklozenge$", "$\\blacklozenge$",
"$\\bullet$", "+"),
color = c("#0c0000", "#ffde71", "#cb6f86",
"#0c0000", "#0c0000", "#0c0000"),
name = c("Thing 1", "Thing 2", "Thing 3",
"Thing 4", "Thing 5", "Thing 6"),
latex_font_size = c(14, 11, 8, 11, 16, 8),
value = c(1,"<0",3,4,5,6),
stringsAsFactors = FALSE)
fsize <- 12
bgcolor <- c(rep("#ffe6e6",2), rep("#ffffff", 4))
table_dat$value <- cell_spec(table_dat$value, background = bgcolor)
ktable <- table_dat %>%
rename(color_ = color) %>%
mutate(latex_symbol = cell_spec(latex_symbol, color = color_,
font_size = latex_font_size,
escape = FALSE,
format = "latex")) %>%
select(latex_symbol, name, value) %>%
kable(escape = FALSE, align = rep("l", 3),
booktabs = TRUE, format = "latex",
col.names = c("Symbol", "Name", "Value"),
linesep = "") %>%
row_spec(1:6, color = "darkgray") %>%
row_spec(0, bold = TRUE) %>%
column_spec(1, "5em") %>%
column_spec(2, "11em") %>%
column_spec(3, "4em") %>%
kable_styling(font_size = fsize) %>%
row_spec(1, bold = TRUE) %>%
row_spec(1:4, hline_after = TRUE)
```
```{r, echo=FALSE}
ktable
```
kable
注: 非常に多くのパッケージがヘッダーで明示的に引用されている理由は、レンダリング前にヘッダーに関連付けられているすべてのパッケージを引用することで解決された、これと同様の問題が過去にあったためです。しかし、今回はそれで問題が解決したようには見えませんでした。