在Rnw内使用同位素乳胶包装(r-检查)

时间:2020-05-13 10:06:10

标签: r latex moodle rnw r-exams

我想在.Rnw文件中加载和使用isotope package

\exname{foo}
\extype{schoice}
\exsolution{0001}
\usepackage{isotope}
\begin{question}
  Foo \isotope[A][Z]{H}\ bar
  \begin{answerlist}
    \item a
    \item b
    \item c
    \item d
  \end{answerlist}
\end{question}

但是,当我将其呈现为Moodle的XML(exams2moodle)时,\isotope消失并且仅出现Foo bar。我正在使用MathML渲染。

如何正确加载和使用?

1 个答案:

答案 0 :(得分:1)

这个简短的答案是:我无法使用MathML或MathJax渲染\isotope命令。另请参见以下讨论:How to use a LaTeX package with R/exams?

有两种可能的解决方法:

选项1

照常使用pdfLaTeX编译\isotope命令,提取图像(例如,在SVG矢量图形中),然后将其嵌入到练习中。所有这些都可以通过tex2image()函数方便地完成。

优点是您可以使用惯用的isotope软件包。但是,有许多缺点:渲染速度很慢,尤其是在需要许多此类图像的情况下。图形的缩放比例可能与文本的缩放比例不匹配,尤其是在放大HTML时。您需要的图形类型将取决于输出的类型(HTML与PDF)等。

选项2

使用标准LaTeX命令模拟输出,而不是使用专用软件包。在这种情况下,使用\sideset中的amsmath命令是一种选择,因为MathJax支持amsmath包(但MathML转换器不支持)。缺点:LaTeX代码比较麻烦。优点:非常快,可以在HTML中缩放,也可以在PDF中工作。因此,我建议选择方案2。

示例

以下是foo.Rnw文件的改编代码。可以通过以下方式将其呈现为HTML:

exams2html("foo.Rnw", converter = "pandoc-mathjax")

这与当前版本的R / exams在exams2moodle()中使用的转换器相同。

<<echo=FALSE, results=hide>>=
tex2image("\\isotope[A][Z]{H}", packages = "isotope",
  name = "iso_AZH", format = "svg", dir = ".")
@

\begin{question}
Option 1: \includegraphics{iso_AZH.svg}

Option 2: $\sideset{_Z^A}{}H$
\begin{answerlist}
  \item a
  \item b
  \item c
  \item d
\end{answerlist}
\end{question}

\exname{foo}
\extype{schoice}
\exsolution{0001}