5

パッケージ試験を使用して問題を生成する場合、特殊文字を使用しても英語で問題なく実行できます。たとえば、試験パッケージでコンパイルできる 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}

たとえば、必要な場合は \c{c} などを使用します。しかし、Rnw ファイルの代わりに Rmarkdown を使用しようとしています。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

アクセントを正しく表示する RStudio でコンパイルできます。

RStudioでコンパイル

しかし、私がしようとすると:

exams2pdf('file.Rmd', encoding = 'utf8')

うまくいきません。

関数 Exams() を使用したコンパイル

誰かがこの問題について私を助けてくれますか?

4

2 に答える 2

3

@MartinDabbelJuSmelter に、何が起こっているかを本質的に捉えた返信をありがとう。ただし、これにはもっと簡単な解決策があります。最も簡単なのは次のとおりです。

exams2pdf("file.Rmd", encoding = "UTF-8", template = "plain8")

これにより、目的の出力が得られます。では、なぜこれがこれほど複雑で、文書化されていないのでしょうか?

examsパッケージのモジュール構造のため複雑です。さまざまなビルディング ブロックを組み合わせるには非常に多くの方法があるため、このような簡単なものには 2 つの引数が必要です。file.Rmdまず、がencodingUTF-8であることを宣言する必要があります。次に、templateUTF-8 をサポートする を使用する必要があります。このexamsパッケージには、plainUTF-8 が有効になっている単純なテンプレートが付属しています。

ほとんどすべてのユーザーがとにかく独自のカスタム テンプレートを使用したいと考えているため、さまざまなエンコーディングなどの LaTeX テンプレートはこれ以上ありません。たとえば、大学やコースの名前を表示したり、特定のスタイル/フォント/などを使用したりします。

単一選択 ( schoice) または複数選択 ( mchoice) の質問しかない場合exams2nopsは、標準化された形式を提供するものもあり、使用がはるかに簡単です (ただし、カスタマイズは少なくなります)。インプレッションについては、次を参照してください。

exams2nops(c("anova.Rmd", "tstat2.Rmd"),
  language = "pt", encoding = "UTF-8")

numしたがって、これに質問を使用することはできませんfile.Rmd。しかし、それを質問に変えた場合の大きな利点は、 のschoice自動スキャンと評価が得られることですexams2nops

では、アキレス腱について: ドキュメントが貧弱です。私の弁護ではvignette("exams2", package = "exams")、エンコードの問題のセクション 2.3 (最初の試験の作成) で簡単に説明されており、これがexams_skeleton()どのように機能するかを確認するために出力を確認することをお勧めします。だからあなたの場合

exams_skeleton(markup = "markdown", encoding = "UTF-8")

いくつかの有用な例を提供する必要がありました。

しかし、間違いなく、これは見つけやすいはずです。より良いドキュメンテーション Web ページexamsが私のウィッシュ リストの上位にあります (特に新規参入者をガイドするため)。しかし、この夏は必要な時間が見つかりませんでした。願わくば来年…

PS: Rmd ファイルの先頭にある次の行は完全に不要であり、によって無視されexamsます。

---
output: pdf_document
---

各演習がレンダリングされる出力は、演習ファイル自体ではなく、exams2xyz関数によって決定されます。例えば:

exams2html("foo.Rmd", encoding = "UTF-8", template = "plain8")

関数 (Rmd ファイルではなく) がこれを決定する理由は単純です。ユーザーは通常、問題の大きなプールを作成したいと考えており、同じ問題を PDF ファイル (筆記試験用) または Moodle 用に使用する場合があります。またはARSnovaなどを介したライブ投票用。このために毎回質問プールを変更する(またはコピーを保持する)必要がある場合、それはかなり面倒です。

于 2016-09-09T14:51:18.233 に答える