【问题标题】:kableExtra latex code not working for bold facekableExtra 乳胶代码不适用于粗体
【发布时间】:2019-04-22 10:48:42
【问题描述】:

我正在尝试使用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")

问题在于粗体。如果我把它放在一个 markdown 中并编织它,它工作正常,但如果我尝试导出 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】:

    也许你会在没有dplyr 的情况下这样做。您还需要在 cell_spec 中包含 format="latex",否则它会格式化 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}
    

    【讨论】:

    • 谢谢,太好了! dplyr 不是问题;这是 cell_speck 中缺少的format="latex"
    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多