如何解决如何将r-exams问题中的小数点分隔符更改为逗号? 通过LaTeX软件包通过R中的options(OutDec = ",") 通过R中的options(OutDec = ".") 要求
在我使用“ r-exams / sweave”创建的问题中,我试图显示逗号作为小数点分隔符。但是,我无法加载siunitx软件包或进行任何其他允许此更改的配置。我打算使用功能testss2moodle将问题导出到moodle。
解决方法
通过LaTeX软件包
诸如siunitx
或icomma
之类的LaTeX软件包仅在通过LaTeX产生输出(例如exams2pdf
等)时才能使用。但是,当LaTeX代码转换为HTML时(例如,在exams2moodle
中),我不知道将带小数点的数字转换为小数逗号的一般解决方案。
通过R中的options(OutDec = ",")
但是,相对简单的是在R中设置options(OutDec = ",")
。只要满足以下条件,该方法就可以起作用:
- 所有相关数字要么用逗号硬编码在文本中,要么分别用
r ...
或\Sexpr{...}
动态生成。 - 可以肯定,
exsolution
练习中的num
仍使用小数点。
作为示例,请考虑schoice
练习deriv2。它同时满足上述两项:1.所有数字都是从R动态插入的; 2.它不是num
练习。
library("exams")
options(OutDec = ",")
exams2html("deriv2.Rmd")
Rnw版本的练习也一样。
如果练习应该总是用逗号生成数字,则还可以在练习文件开头的第一个代码块中包含options(OutDec = ",")
并还原为{{1 }}放在最后的代码块中。
也可以使用options(OutDec = ".")
练习deriv。但是为了保证第2项,您可能需要在添加元信息之前在num
中写fmt(res,decimal.mark = ".")
而不是只写fmt(res)
,或者恢复到exsolution
。>
通过R中的options(OutDec = ".")
上述方法的一个小缺点是,注重细节的查看者可能会注意到,在LaTeX数学模式fmt(...,decimal.mark = "{,}")
中,逗号后会插入一个小空格。有关示例,请参见上面的屏幕截图。
如果要避免这种情况,则需要使用$...$
作为十进制分隔符。不幸的是,{,}
不支持此操作,因为它必须是长度为1的字符串。而且,options(OutDec)
可能还不够,因为数学模式下的数字需要OutDec
而纯文本的数字需要只是{,}
。
在这种情况下,最简单的解决方案是将,
保留为系统默认值。取而代之的是在数学模式下将options(OutDec)
用于数字,将fmt(...,}")
用于纯文本。为了减少打字,您还可以添加两个便捷功能,例如:
fmt(...,decimal.mark = ",")
如果您想自己处理任何舍入,也可以使用函数cfmt <- function(x,...) fmt(x,...,")
mfmt <- function(x,}")
来代替exams::fmt()
函数。
要求
请注意,将base::format(...,decimal.mark = ...)
传递到decimal.mark
至少需要R / exams 2.4-0版本。在撰写本文时,这是R-Forge提供的当前开发版本,但很快将发布到CRAN。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。