Код латекса kableExtra не работает для жирного лица

Я пытаюсь создать несколько таблиц с kableExtra, чтобы использовать их позже во внешнем латексном документе, поэтому я хотел бы экспортировать таблицу как документ .tex. Это отлично работает, за исключением случаев, когда я пытаюсь использовать полужирный шрифт в некоторых строках.

Это MWE кода, который я использую:

require(kableExtra)
require(dplyr)

bold_letters = c(1,0,1)
df = cbind.data.frame("Noms" = c("A", "B", "C"), "var1" = c(1,2,3))

df %>% 
  mutate(Noms = cell_spec(Noms, bold = ifelse(bold_letters==0,FALSE,TRUE))) %>%
  kable(format = "latex", escape = F, row.names = F, align = "c")

Проблема в жирном шрифте. Если я помещаю его в уценку и связываю, он работает нормально, но если я пытаюсь экспортировать код tex, я получаю что-то вроде:

\begin{tabular}{c|c}
\hline
Noms & var1\\
\hline
<span style=" font-weight: bold;    " >A</span> & 1\\
\hline
<span style="     " >B</span> & 2\\
\hline
<span style=" font-weight: bold;    " >C</span> & 3\\
\hline
\end{tabular}

Что, насколько мне известно, не является латексным кодом.

PS: Я мог бы создать таблицу и экспортировать ее как изображение, но качество довольно низкое, и, кроме того, белые полосы по обеим сторонам таблицы являются частью изображения, что делает его непрактичным.


person Eudald    schedule 22.04.2019    source источник


Ответы (1)


Может, ты просто обойдешься без dplyr. Вам также понадобится format="latex" в cell_spec, иначе он форматирует HTML.

library(kableExtra)
bold_letters <- c(1,0,1)
df <- cbind.data.frame(Noms=c("A", "B", "C"), var1=c(1, 2, 3))
df$Noms <- cell_spec(df$Noms, format="latex", 
                     bold=ifelse(bold_letters == 0, FALSE, TRUE))

kable(df, format="latex", escape=FALSE, row.names=FALSE, align="c")
# \begin{tabular}{c|c}
# \hline
# Noms & var1\\
# \hline
# \textbf{A} & 1\\
# \hline
# B & 2\\
# \hline
# \textbf{C} & 3\\
# \hline
# \end{tabular}
person jay.sf    schedule 22.04.2019
comment
Спасибо, отлично! dplyr не было проблемой; это был отсутствующий format="latex" в ячейке_спек. - person Eudald; 22.04.2019