RMarkdown 表中的科学格式、下标和上标(docx 输出)

Erw*_*ATP 6 r ms-word r-markdown huxtable

假设我有以下 rmd:

\n
---\ntitle: "Table won\'t work"\nauthor: "Exhausted student"\ndate: "2022/01/28"\noutput: \n  bookdown::word_document2\n---\n\n```{r table, echo=F, warning=F, message=F}\nlibrary(tidyverse)\na <- tibble(\n  constants = c("c", "NA", "h", "e", "H2O"),\n  values = c(2.998e8, 6.022e23, 6.626e-34, -1.602e-19, 18.02)\n)\n\nknitr::kable(a, digits = 35)\n```\n
Run Code Online (Sandbox Code Playgroud)\n

它在 Word 中生成此表格

\n

问题

\n

我需要科学格式来使用上标和乘号(即 2.998 \xc3\x97 10 8),并且某些单元格需要下标(例如 N A和 H 2 O)。

\n

决赛桌应该是这样的。我怎样才能做到这一点?

\n

我尝试过/永远不会尝试的

\n
    \n
  1. huxtable包及其markdown()功能:我设法将一些内容格式化为H~2~O,然后启用跨表降价huxtable(a) %>% `markdown<-`(TRUE)据作者称,它无法识别语法,并且在可预见的将来显然不会起作用。
  2. \n
  3. flextableas_sub():产生正确的格式。我将标签传递到flextable::compose(),标签类似于as_paragraph(list_values = list("H", as_sub("2"), "O")。代码显然太长了;另外我必须一一操作细胞。技术上仍然可行,但我确实有包含 100 多个单元格的表格需要格式化。
  4. \n
  5. 先输出,后在Word中格式化:同样,需要逐一操作。如果它能自动解决所有问题,那将是一个选择。
  6. \n
  7. 说服学校官员接受html/pdf/latex 作为输出:这永远是一个不可能的选择。
  8. \n
  9. 格式化外部Word,然后将格式化的表格导出为图像:在报告中严格禁止。
  10. \n
\n
\n

编辑:该表现在可以工作了!非常感谢Ma\xc3\xabl\ 的回答,但请检查我自己的发现以查看我的最终结果:

\n

格式良好的表格

\n

Maë*_*aël 3

您可以使用波形符 ( ~) 来输入下标,使用脱字符 ( ^) 来输入上标;并用于sprintf获取预期的数字格式:

---
title: "Table won't work"
author: "Exhausted student"
date: "2022/01/28"
output: 
  bookdown::word_document2
---

```{r table, echo=F, warning=F, message=F}
library(tidyverse)

expSup <- function(x, digits=3) {
  sprintf(paste0("%05.", digits, "f x 10^%d^"), x/10^floor(log10(abs(x))), floor(log10(abs(x))))
}

a <- tibble(
  constants = c("c", "N~A~", "h", "e", "H~2~0"),
  values = expSup(c(2.998e8, 6.022e-23, 6.626e-34, -1.602e-19, 18.02))
)

knitr::kable(a)
```
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述