Fla*_*ros 5 latex r r-markdown r-exams
当我使用包考试来产生问题时,即使使用特殊字符,我也可以用英语完美地完成.例如,我可以使用exams包编译的Rnw问题:
<<echo=FALSE, results=hide>>=
## DATA GENERATION
P <- round(runif(n = 1, min = 1000, max = 2000), digits = 2)
S <- round(runif(n = 1, min = P + 500, max = 3000), digits = 2)
## QUESTION/ANSWER GENERATION
i <- round((S - P)/P, digits = 2)*100
@
\begin{question}
Qual \'e a taxa de juros simples obtida por uma aplica\c{c}\~ao de \textdollar $\Sexpr{P}$ que, ap\'os um ano, produz um montante de \textdollar$\Sexpr{S}$?
\end{question}
\begin{solution}
Os juros s\~ao calculados por:
\begin{equation}
S = P(1+i \times n) \Rightarrow S = P + Pin \Rightarrow
\end{equation}
\begin{equation}
Pin = S - P \Rightarrow
i = \frac{S-P}{Pn} \Rightarrow i = \frac{S-P}{P}
\end{equation}
O valor absotulo dos juros \'e $\Sexpr{i}$\%.
\end{solution}
%% META-INFORMATION
%% \extype{num}
%% \exsolution{\Sexpr{fmt(abs(tstat), 3)}}
%% \exname{t statistic}
%% \extol{0.01}
Run Code Online (Sandbox Code Playgroud)
例如,当我需要ç时,我只使用\ c {c}等等.但是,我一直在尝试使用Rmarkdown而不是Rnw文件.在Rmd中的相同示例:
---
output: pdf_document
---
```{r data generation, echo = FALSE, results = "hide"}
P <- round(runif(n = 1, min = 1000, max = 2000), digits = 2)
S <- round(runif(n = 1, min = P + 500, max = 3000), digits = 2)
i <- round((S - P)/P, digits = 2)*100
```
Question
========
Qual é a taxa de juros simples obtida por uma aplicação de $`r P`
Solution
========
Os juros são calculados por:
\begin{equation}
S = P(1+i \times n) \Rightarrow S = P + Pin \Rightarrow
\end{equation}
\begin{equation}
Pin = S - P \Rightarrow
i = \frac{S-P}{Pn} \Rightarrow i = \frac{S-P}{P}
\end{equation}
O valor absotulo dos juros é `r i`%.
Meta-information
================
extype: num
exsolution: `r round(i, digits = 3)`
exname: Euclidean distance
extol: 0.01
Run Code Online (Sandbox Code Playgroud)
我可以用RStudio编译正确显示重音:
但是当我尝试:
exams2pdf('file.Rmd', encoding = 'utf8')
Run Code Online (Sandbox Code Playgroud)
它不起作用.
有人可以帮我解决这个问题吗?
我试图与参数不同的方法header
和inputs
的exams2pdf()
,但这些都不给我正确的输出.通过YAML标头(header-includes
)添加LaTeX命令也不起作用.所以我用"艰难的方式"做到了:
转到您的R库,找到保存包裹考试的位置.在里面导航到tex文件夹.在那里,您将找到考试使用的不同模板.创建默认模板的副本plain.tex并称之为重复plain_pt.tex.在你添加的文件里面
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[portuguese]{babel}
Run Code Online (Sandbox Code Playgroud)
到序言.保存文件.
我的OSX机器上的完整路径:
/Library/Frameworks/R.framework/Versions/3.3/Resources/library/exams/tex
Run Code Online (Sandbox Code Playgroud)
在Linux中可以是:
~/R/x86_64-pc-linux-gnu-library/3.3/Resources/library/exams/tex
Run Code Online (Sandbox Code Playgroud)
现在,在通话时,exams2pdf
您可以选择新模板template = 'plain_pt'
.
通过添加适当的LaTeX命令,这也适用于其他语言.
感谢@MartinDabbelJuSmelter 的回复,他基本上抓住了正在发生的事情。然而,对此有更简单的解决方案。最简单的是:
exams2pdf("file.Rmd", encoding = "UTF-8", template = "plain8")
Run Code Online (Sandbox Code Playgroud)
这会导致所需的输出。为什么这如此复杂,为什么它的记录如此之少?
由于exams
封装的模块化结构,它很复杂。有很多不同的方法可以组合不同的构建块,像这样简单的事情需要两个参数。首先,您必须声明该文件file.Rmd
采用encoding
UTF-8 格式。其次,你必须使用template
支持UTF-8的。该exams
软件包附带一个启用了 UTF-8 的简单plain
模板。
没有更多不同编码等的 LaTeX 模板,因为我们预计几乎所有用户无论如何都希望使用自己的自定义模板。例如,显示他们的大学或课程的名称或使用特定的样式/字体/等。
如果您只有单选 ( schoice
) 或多项选择 ( mchoice
) 问题,那么还有exams2nops
提供标准化格式的问题,使用起来更加简单(但自定义也较少)。对于印象,请参阅:
exams2nops(c("anova.Rmd", "tstat2.Rmd"),
language = "pt", encoding = "UTF-8")
Run Code Online (Sandbox Code Playgroud)
所以你不能用你的num
问题file.Rmd
来做这个。但如果你把它变成一个schoice
问题,最大的好处是你可以自动扫描和评估exams2nops
.
现在来说说致命弱点:糟糕的文档。在我的辩护中,我不得不说,在第 2.3 节(创建第一个考试)中,vignette("exams2", package = "exams")
简要讨论了编码问题,建议查看 的输出exams_skeleton()
以了解其工作原理。所以在你的情况下
exams_skeleton(markup = "markdown", encoding = "UTF-8")
Run Code Online (Sandbox Code Playgroud)
应该提供一些有用的例子。
但可以说这应该更容易找到。一个更好的文档网页exams
在我的愿望清单中名列前茅 - 特别是对于指导新人 - 但今年夏天我没有找到必要的时间。希望明年...
PS:Rmd 文件开头的以下几行是完全不必要的,会被忽略exams
:
---
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)
每个练习呈现的输出由exams2
xyz函数决定,而不是练习文件本身。例如:
exams2html("foo.Rmd", encoding = "UTF-8", template = "plain8")
Run Code Online (Sandbox Code Playgroud)
函数(而不是 Rmd 文件)决定这一点的原因很简单:用户通常希望构建大量问题,然后可能希望在 PDF 文件(用于笔试)或 Moodle 中使用相同的问题或者通过 ARSnova 等进行实时投票。如果您每次都必须为此修改问题池(或保留副本),那就相当麻烦了。