Изменить биты спецификации текста / шрифта (полужирный, курсив, ...) в ячейке таблицы kableExtra - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь отформатировать отдельные биты текста в таблице kableExtra в rmakrdown, например, в следующем примере:

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

enter image description here

Однако, если я использую kableExtra

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

, я получу:

enter image description here

Я знаю, что cell_spec, row_spec and column_spec для форматированияцелые строки столбцы и ячейки, но это не то, что я хочу.

Я хочу отформатировать только часть текста в определенной ячейке, но оставить все функции из kableExtra для разработки моей таблицы.Существует также text_spec(), но я не нашел ни одного примера того, как использовать его в таблице.

PS Я не настолько продвинут, и поэтому предпочел бы рабочие примеры.

1 Ответ

0 голосов
/ 28 сентября 2019

Исправление для этого - указать kable() на создание таблицы уценки:

---
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...