【问题标题】:Change bits of text specification / fontface (bold, italic,...) in a kableExtra table cell更改 kableExtra 表格单元格中的文本规范/字体(粗体、斜体、...)位
【发布时间】:2019-09-28 10:54:34
【问题描述】:

我正在尝试在 rmakrdown 的 kableExtra 表中格式化单个文本位,例如下面的示例:

---
output: pdf_document
---
```{r, echo=FALSE}
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
             num = c(1,2,3)))
```

但是,如果我使用 kableExtra

```{r, echo=FALSE}
library(kableExtra)
knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
             num = c(1,2,3)))
```

我会得到:

我知道有 cell_spec, row_spec and column_spec 来格式化整行的列和单元格,但这不是我想要的。

我想仅格式化某个单元格中的部分文本,但保留 kableExtra 的所有功能 用于设计我的表格。还有text_spec(),但我没有找到任何关于如何在表格中使用它的示例。

附:我不是那么先进,因此更喜欢工作示例。

【问题讨论】:

    标签: r text formatting r-markdown kableextra


    【解决方案1】:

    解决此问题的方法是告诉kable() 生成一个 Markdown 表:

    ---
    output: pdf_document
    ---
    ```{r, echo=FALSE}
    library(kableExtra)
    knitr::kable(data.frame(char = c('Hey *italics*','Hello **bold**', 'Hi ~~strikethrough~~~'),
                 num = c(1,2,3)), format="markdown")
    ```
    

    format="pandoc" 也可以,但format="latex"(我认为这是涉及kableExtra 时的默认设置)不起作用。

    但是,正如评论中指出的那样,kableExtra 不支持markdown,因此您无法添加该软件包中的所有不错的功能。如果您愿意,唯一的解决方案可能是使用 LaTeX 标记而不是 Markdown 标记。也就是把输入改成这样:

    ---
    output: pdf_document
    header-includes:  \usepackage{soul}
    ---
    ```{r, echo=FALSE}
    library(kableExtra)
    knitr::kable(data.frame(char = c('Hey \\textit{italics}','Hello \\textbf{bold}', 
                                     'Hi \\st{strikethrough}'),
                 num = c(1,2,3)), escape = FALSE)
    ```
    

    您需要escape = FALSE 告诉kable 不要将 LaTeX 标记显示为文本,而是将其留在那里以供 LaTeX 解释。

    【讨论】:

    • 这行得通,但我失去了 kableExtra 的所有功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多