Латексный код kableExtra не работает для жирного лица - PullRequest
2 голосов
/ 22 апреля 2019

Я пытаюсь создать несколько таблиц с 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: я мог бы создать таблицу и экспортировать ее в виде изображения, но качество довольно низкое, кроме того, он включает в себя белые полосы с обеих сторон стола как часть изображения, что делает его непрактичным.

1 Ответ

1 голос
/ 22 апреля 2019

Может быть, вы просто сделаете это без 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}
...