我正在尝试使用 R/exams 并使用函数 exams2canvas()
设置考试。我的问题包含需要使用一些包的 LaTeX 代码(特别是 tikz
和 tikz-qtree
以及其他一些 tikz
库),但我不能弄清楚如何导入它们。
为了创建 pdf,我手动修改了 R 的 exams 包中的 tex 模板 (plain.tex
),添加了以下两行:
\usepackage{tikz}
\usepackage{tikz-qtree}
我可以用类似的方式修改 Canvas 文件吗?还有其他方法可以在 exams2canvas()
中使用 LaTeX 包吗?
最小示例:
\begin{question}
\Tree[.S [.NP [.D the ] [.N children ] ] [.VP [.V study ] ] [.NP [.N books ] ] ]
\begin{answerlist}
\item 0.7
\item 0.2
\item 0.1
\end{answerlist}
\end{question}
\begin{solution}
\begin{answerlist}
\item False
\item False
\item True
\end{answerlist}
\end{solution}
\exname{Trees}
\extype{schoice}
\exsolution{001}
最佳答案
问题在于,对于 Canvas 输出,就像其他基于 HTML 的格式一样,LaTeX 代码需要转换为 HTML。我们使用的 HTML 转换器(tth
和 pandoc
)都只支持基本 LaTeX 发行版之外的有限数量的 LaTeX 命令。
因此,您需要在 LaTeX 中编译 tikz
图形,然后将其转换为 HTML 支持的图形格式,例如 SVG 矢量图形或栅格图形(如 PNG 或 JPG)。此功能由 R/exams 中的 include_tikz()
函数提供。
我修改了您的练习,以便 tikz
代码仅作为 exams2pdf()
和 exams2nops()
的 LaTeX 包含 - 然后需要调整以加载 tikz
和 tikz-qtree
。否则,tikz
代码将呈现为 SVG,并使用 magick
和 pdf2svg
。或者,您也可以渲染为 PNG,例如。
所以你可以这样做:
exams2html("tikz_tree.Rnw")
或
exams2nops("tikz_tree.Rnw", usepackage = c("tikz", "tikz-qtree"))
等等
exams2canvas()
的工作方式与 exams2html()
类似。修改后的 tikz_tree.Rnw
文件包含在帖子末尾。一些进一步的指示和细节(包括练习的 R/Markdown 版本)可在 R-Forge 上的 R/exams 论坛的讨论中找到:https://R-Forge.R-project.org/forum/forum.php?thread_id=33909&forum_id=4377&group_id=1337
R/exams 网页上提供了一些类似但更详细的练习模板:
http://www.R-exams.org/templates/automaton/
http://www.R-exams.org/templates/logic/
tikz_tree.Rnw
<<echo=FALSE, results=hide>>=
## determine the output type depending on exams2xyz interface:
## - plain .tex for exams2pdf, exams2nops which then need to use packages tikz and tikz-qtree
## - .svg for other HTML-based interfaces
typ <- if(match_exams_call() %in% c("exams2pdf", "exams2nops")) "tex" else "svg"
## TikZ code (note that backslashes need to be escaped"
tikz_tree <- "\\Tree[.S [.NP [.D the ] [.N children ] ] [.VP [.V study ] ] [.NP [.N books ] ] ]"
@
\begin{question}
<<echo=FALSE, results=tex>>=
include_tikz(tikz_tree, name = "tik_tree", format = typ,
packages = "tikz-qtree", width = "5cm")
@
\begin{answerlist}
\item 0.4
\item 0.2
\item 0.9
\end{answerlist}
\end{question}
\begin{solution}
\begin{answerlist}
\item False
\item False
\item True
\end{answerlist}
\end{solution}
\exname{Tree}
\extype{schoice}
\exsolution{001}
关于canvas - 有没有办法在 R/exams 的 exams2canvas 中使用 LaTeX 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61039920/