首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示科学符号

显示科学符号
EN

Stack Overflow用户
提问于 2022-03-09 10:23:59
回答 2查看 71关注 0票数 2

代码块中有一个很大的数字:

代码语言:javascript
复制
a <-  1.234 * 10^36

然后,我在我的文档中内联地打印:

代码语言:javascript
复制
What does this look like when knitted: `r a`

在一个标准的.Rmd中编织这个过程会产生预期的1.234 x 10^36

但是,在papaja模板中编织可以使用1.234e+36生成“计算格式”。

是否有自动格式化的方法,而不必求助于像solution given here这样的自定义函数?

EN

回答 2

Stack Overflow用户

发布于 2022-06-03 19:43:08

您可以使用函数papaja::apa_num()

代码语言:javascript
复制
> papaja::apa_num(1.234 * 10^36, format = "e")
[1] "$1.23 \\times 10^{36}$"
票数 1
EN

Stack Overflow用户

发布于 2022-03-09 13:22:33

可以使用knitr强制格式化。

代码语言:javascript
复制
knitr::knit_hooks$set(inline = function(x) {
  knitr:::format_sci(x, 'md')
})

这将将外观格式化为如下所示(使用了上面描述的代码)。

我不喜欢x空间的不均匀分布,所以我发现捕获了函数(和支持函数),并能够获得:

对于前者,我用的是你所说的。不过,这并不是第二个选项所使用的。

代码语言:javascript
复制
`r a`

您不需要调用hooks$set,但是您需要调用修改后的函数并用$封装调用。

代码语言:javascript
复制
$`r format_sci(a)`$

下面是经过稍微修改的knitr函数,产生了第二个选项:

代码语言:javascript
复制
```{r doAsISay}

TeX、HTML和reST的科学表示法

format_sci_one =函数(

x,format =‘胶乳’,times =getOption(‘针织品.inline.time’,‘\倍')

){

如果(!(class(x)1 ==‘数值’)\x is.na(x) \x == 0)返回(as.character(X))

if (is.infinite(x)) {

代码语言:javascript
复制
return(
代码语言:javascript
复制
  switch(format, latex = {
代码语言:javascript
复制
    sprintf("%s\\infty{}", ifelse(x < 0, "-", ""))
代码语言:javascript
复制
  }, html = {
代码语言:javascript
复制
    sprintf("%s&infin;", ifelse(x < 0, "-", ""))
代码语言:javascript
复制
  }, as.character(x)))

}

if (abs(lx ) <- floor(log10(abs(X)< getOption('scipen') +4L

代码语言:javascript
复制
return(round_digits(x)) # no need sci notation

B= round_digits(x / 10^lx)

bb %,% c(1,-1) = '‘

开关(格式,latex ={

代码语言:javascript
复制
sci_notation('%s%s10^{%s}', b, times, lx)

},

html =sci_notation(‘’%s%S10%s ',b,‘×’,lx),

md = sci_notation('%s%s10^%s^',b,'×',lx),

rst ={

代码语言:javascript
复制
# if AsIs, use the :math: directive
代码语言:javascript
复制
if (inherits(x, 'AsIs')) {
代码语言:javascript
复制
  s = sci_notation('%s%s10^{%s}', b, times, lx)
代码语言:javascript
复制
  sprintf(':math:`%s`', s)
代码语言:javascript
复制
} else {
代码语言:javascript
复制
  # This needs the following line at the top of the file to define |times|
代码语言:javascript
复制
  # .. include <isonum.txt>
代码语言:javascript
复制
  sci_notation('%s%s10 :sup:`%s`', b, ' |times| ', lx)
代码语言:javascript
复制
}

},as.character(x))

}

format_sci_one()的矢量化版本

format_sci =函数(x,.){

如果(继承(x,'roman'))返回(as.character(X))

vapply(x,format_sci_one,字符(1L),.,USE.NAMES = FALSE)

}

sci_notation =函数(格式、基、时间、幂){

sprintf(格式,基,如果是(基== '','',时间),功率)

}

round_digits =函数(X){

if (getOption(‘针织品.Digs.signif’,FALSE))格式(X)format{

代码语言:javascript
复制
as.character(round(x, getOption('digits')))

}

}

代码语言:javascript
复制

或者,您可以在您下载的编织品包中更改此选项。(我以前对下载的软件包做过修改,而不是knitr。)

FYI,这是测试和图像是从针织RMD使用输出集为output: papaja::apa6_pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71407795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档