创建专用\Sexpr函数版本
我正在使用创建专用\Sexpr函数版本,r,sweave,r-exams,R,Sweave,R Exams,我正在使用考试包生成一些考试(工程)。我的源文件是Rnw格式,因此底层引擎是swave 在R端,我使用units包(检查维度的正确性)并创建了一个函数(称为units2tex)来将一个量值从单位转换为等价物。因此,当我计算一个变量时,我必须为LaTeX创建一个副本: <<>>= R = set_units(1,ohm) I = set_units(1,A) V = R*I R_tex = units2tex(R) I_tex = units2tex(I) #V_tex
考试
包生成一些考试(工程)。我的源文件是Rnw
格式,因此底层引擎是swave
在R端,我使用units
包(检查维度的正确性)并创建了一个函数(称为units2tex
)来将一个量值从单位转换为等价物。因此,当我计算一个变量时,我必须为LaTeX创建一个副本:
<<>>=
R = set_units(1,ohm)
I = set_units(1,A)
V = R*I
R_tex = units2tex(R)
I_tex = units2tex(I)
#V_tex = units2tex(V)
@
For $R = \Sexpr{R_tex}$, the answer is \Sexpr{units2tex(V)}.
并编制:
library(exams)
exams2html(c("question1.Rnw"), encoding="utf-8",template='plain8.html',mathjax = TRUE)
要减少污染,请执行以下操作:
a <- list(t=function(x){units2tex(x)},d=function(x){units2tex(x,digits=2)})
Rnw练习中的
a通过显式调用as.character()
将\Sexpr{}
的内容转换为字符。由于这是一个通用函数,您可以轻松定义自己的方法
as.character.units <- function(x, ...) units2tex(x, ...)
然后需要分别将其称为\Sexpr{u2t(V)}
和`r u2t(V)`
。如果您包含一个简单的示例输入,可以用来测试和验证可能的解决方案,这将更容易帮助您。您好@jamarier,您觉得下面的答案之一足以解决您的问题吗?如果是,请单击旁边的复选标记(计票下方)接受。然后在StackOverflow上相应地标记该问题。这解决了第一个问题(种类):使用\Sexpr时类型的个性化。但第二个问题还没有得到回答:定义Sexpr的变体来表达数据中的变体。谢谢。据我所知,您的理想解决方案是不可能的(自定义\Sexpr
)。因此,您只能将上述思想结合起来:不同的(子)类与不同的as.character()
方法或不同的短函数。
a <- list(t=function(x){units2tex(x)},d=function(x){units2tex(x,digits=2)})
as.character.units <- function(x, ...) units2tex(x, ...)
u2t <- function(x, ...) units2tex(x, ...)