在 Rnw 中使用同位素乳胶包(r-exams)

Use isotope latex-package inside 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 渲染。

如何正确加载和使用?

这个简短的回答是:没有办法(据我所知)使用 MathML 或 MathJax 呈现 \isotope 命令。另请参阅此讨论:

有两种可能的解决方法:

选项 1

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

优点是可以使用习惯的isotope包。但是,也有一些缺点: 渲染速度相当慢,尤其是如果您需要很多这样的 images.The 图形缩放可能与文本缩放不匹配,尤其是在放大 HTML 时。您需要的图形类型取决于输出类型(HTML 与 PDF)等

选项 2

与其使用专门的包,不如使用标准的 LaTeX 命令模拟输出。在这种情况下,使用来自 amsmath\sideset 命令将是一种选择,因为 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}