kableExtra乳胶代码不适用于粗体

问题描述 投票:2回答:1

我正在尝试使用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:我可以创建表格并将其导出为图像,但质量非常差,而且它包括桌子两侧的白色条带作为图像的一部分,因此使其不切实际。

r latex kable kableextra
1个回答
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}
© www.soinside.com 2019 - 2024. All rights reserved.