我正在尝试在使用“r-exams/sweave”创建的问题中显示逗号作为小数分隔符。但是,我无法加载 siunitx 包或进行任何其他允许此更改的配置。我打算使用函数exams2moodle 将问题导出到moodle。
最佳答案
通过 LaTeX 包
像 siunitx
这样的 LaTeX 包或 icomma
只能在通过 LaTeX 生成输出时使用(例如,exams2pdf
等)。但是,当 LaTeX 代码转换为 HTML 时(例如,在 exams2moodle
中),我不知道将带小数点的数字转换为小数点逗号的一般解决方案。
通过options(OutDec = ",")
在 R 中
不过比较简单的是设置options(OutDec = ",")
在 R 内。这项工作提供了:
r ...
动态生成或 \Sexpr{...}
,分别为 exsolution
在 num
练习仍然使用小数点。 例如,考虑
schoice
运动 deriv2 .它满足以上两项:1.所有数字都是从R动态插入的,2.它不是num
锻炼。library("exams")
options(OutDec = ",")
exams2html("deriv2.Rmd")
这同样适用于练习的 Rnw 版本。
如果练习应始终生成带逗号的数字,您还可以包括
options(OutDec = ",")
在练习文件开头的第一个代码块中并恢复为options(OutDec = ".")
在最后的代码块中。使用
num
运动 deriv也是可能的。但为了确保第 2 项,您要么需要写 fmt(res, decimal.mark = ".")
而不仅仅是 fmt(res)
在 exsolution
或者恢复为 options(OutDec = ".")
在添加元信息之前。通过
fmt(..., decimal.mark = "{,}")
在 R 中上述方法的一个小缺点是关注细节的观众可能会注意到在 LaTeX 数学模式下
$...$
逗号后插入一个小空格。有关示例,请参见上面的屏幕截图。如果你想避免这种情况,那么
{,}
需要用作小数点分隔符。不幸的是,options(OutDec)
不支持这一点,因为它需要是长度为 1 的字符串。另外,OutDec
可能还不够,因为数学模式中的数字需要 {,}
而纯文本中的数字只需要 ,
.在这种情况下,最简单的解决方案是离开
options(OutDec)
在系统默认。而是使用 fmt(..., decimal.mark = "{,}")
对于数学模式中的数字和 fmt(..., decimal.mark = ",")
纯文本。为了减少打字,您还可以添加两个便利功能,例如:cfmt <- function(x, ...) fmt(x, ..., decimal.mark = ",")
mfmt <- function(x, ...) fmt(x, ..., decimal.mark = "{,}")
而不是在 exams::fmt()
上构建函数你也可以使用函数base::format(..., decimal.mark = ...)
如果您想自己处理任何舍入。要求
请注意,传递
decimal.mark
至fmt()
至少需要 2.4-0 版的 R/exams。在撰写本文时,这是 R-Forge 提供的当前开发版本,但很快将发布到 CRAN。
关于sweave - 如何将 r-exams 问题中的小数点分隔符更改为逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64027171/