如何在 R/exams 练习中包含 TikZ 图像?

2023-11-29

R/exams 包支持使用其功能包含 TikZ 图形include_tikz(),例如,如图所示自动机 and logic练习随包装一起提供。

得到后include_tikz()进行这些练习(参见:为什么 TikZ 图形是用 exams2pdf 渲染的,而不是用 exams2moodle 渲染的?)我尝试创建自己的练习。然而,到目前为止这还不起作用。我的代码是:

```{r datos1, echo = FALSE, results = "hide"}
options(tinytex.verbose = TRUE)
options(scipen=999)
knitr::opts_chunk$set(echo = TRUE)
##opts_chunk$set(fig.cap="")
library(exams)
library(magick)

  questions<-solutions<-explanations<-NULL
  questions[1]<-paste("Graph 1.")
  solutions[1]<-TRUE
  explanations[1]<-"."

 questions[2]<-paste("Graph 2.")
 solutions[2]<-FALSE
 explanations[2]<-"."

 questions[3]<-paste("Graph 3.")
 solutions[3]<-FALSE
 explanations[3]<-"."

 questions[4]<-paste("Graph 4.")
 solutions[4]<-FALSE
 explanations[4]<-"."

 orden<-sample(1:4)
 questions<-questions[orden]
 solutions<-solutions[orden]
 explanations<-explanations[orden]

 graf01<-'
 \\definecolor{uuuuuu}{rgb}{0.26,0.26,0.26};
 \\definecolor{zzttqq}{rgb}{0.6,0.2,0};
 \\definecolor{ududff}{rgb}{0.30,0.30,1};
 \\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm]
 \\clip(-0.1,-0.1) rectangle (5,5);
 \\fill[line width=2pt,color=zzttqq,fill=zzttqq,fill opacity=0.10] (0,0) -- (4.68,-0.02) -- 
  (4.7,4.66) -- (0.02,4.68) -- cycle;
 \\draw (0.99,3.80) node[anchor=north west] {\\textbf{49}};
 \\draw (3.44,3.80) node[anchor=north west] {\\textbf{12}};
 \\draw (2.22,1.74) node[anchor=north west] {\\textbf{14}};
 \\draw (2.22,3.00) node[anchor=north west] {\\textbf{5}};
 \\draw (2.22,3.96) node[anchor=north west] {\\textbf{6}};
 \\draw (1.40,2.53) node[anchor=north west] {\\textbf{8}};
 \\draw (3.00,2.53) node[anchor=north west] {\\textbf{9}};
 \\draw (3.85,1.39) node[anchor=north west] {\\textbf{}};
 \\draw (0.35,4.57) node[anchor=north west] {\\textbf{DH}};
 \\draw (3.97,4.57) node[anchor=north west] {\\textbf{CA}};
 \\draw (2.31,0.72) node[anchor=north west] {\\textbf{R}};
 \\draw [line width=2pt] (1.76,3.08) circle (1.3cm);
 \\draw [line width=2pt] (3.05,3.13) circle (1.3cm);
 \\draw [line width=2pt] (2.45,1.98) circle (1.3cm);
 \\draw [line width=2pt,color=zzttqq] (0,0)-- (4.68,-0.02);
 \\draw [line width=2pt,color=zzttqq] (4.68,-0.02)-- (4.7,4.66);
 \\draw [line width=2pt,color=zzttqq] (4.7,4.66)-- (0.02,4.68);
 \\draw [line width=2pt,color=zzttqq] (0.02,4.68)-- (0,0);
 \\begin{scriptsize}
 \\draw [fill=ududff] (0,0) circle (2.5pt);
 \\draw [fill=ududff] (4.68,-0.02) circle (2.5pt);
 \\draw [fill=uuuuuu] (4.7,4.66) circle (2.5pt);
 \\draw [fill=uuuuuu] (0.02,4.68) circle (2.5pt);
 \\end{scriptsize}
 \\end{tikzpicture}
'
```

Question
========
An auto dealer sold 53 cars in a month; 33 of them had hydraulic steering (DH); 21 were 
automatic gearboxes (CA); and 38 had radius (R); 4 had hydraulic steering, automatic gears 
and radio; 3 had power steering and automatic shifts, but they had no radio; 13 had 
automatic gears and radio, but did not have hydraulics and, 15 had hydraulics and radio, but 
did not have automatic gears.

The graph that represents the information of the sale in the agency is

Graph 1:

```{r, echo = FALSE, results = "asis"}
include_tikz(graf01, name = "graf01", markup = "markdown",library = c("arrows"))
```

```{r questionlist, echo = FALSE, results = "asis"}
library(exams)
answerlist(questions, markup = "markdown")
```

在其他练习中,我包含了在中创建的该图像的源代码TikZ,但在 R 块之外(来自\begin{tikzpicture} to \end{tikzpicture})以便它可以与exams2pdf() (截屏)。但我无法让它工作exams2moodle().


本质上你的代码是有效的,我不需要做很多修改。我做了什么:

  • 省略在初始 R 代码块开头设置不必要的选项。
  • 省略常规 LaTeX 命令末尾不必要的分号graf01之前{tikzpicture}.
  • 添加呼叫至match_exams_device()这样 TikZ 创建的图形类型可以与 R/Markdown 代码块创建的图形格式相同(PNG、PDF、SVG)。
  • 改善include_tikz()使用前一项的图形类型并包含固定的参数width.

随后我做的最大的改变就是修改了Question部分,以便它是关于单个图形并添加相应的Meta-information部分。这样做的练习是独立的,并且文件的完整源代码cardealer.Rmd包含在本文的末尾。有了这个,以下三个命令都可以工作:

  • exams2pdf("cardealer.Rmd")它将 TikZ 图形渲染为 PDF 格式。
  • exams2html("cardealer.Rmd")它将 TikZ 图形渲染为 PNG 格式。
  • exams2html("cardealer.Rmd", svg = TRUE)它将 TikZ 图形渲染为 SVG 格式。

鉴于此exams2html()作品包含在exams2moodle()也会起作用,因为这在内部也会生成相同类型的 HTML 代码。在所有版本中,输出看起来都是这样的:

HTML output of exams2html("cardealer.Rmd") rendered in a browser.

的源代码cardealer.Rmd:



```{r tikzsource, echo = FALSE, results = "hide"}
typ <- match_exams_device()

graf01 <- '
\\definecolor{uuuuuu}{rgb}{0.26,0.26,0.26}
\\definecolor{zzttqq}{rgb}{0.6,0.2,0}
\\definecolor{ududff}{rgb}{0.30,0.30,1}
\\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm]
\\clip(-0.1,-0.1) rectangle (5,5);
\\fill[line width=2pt,color=zzttqq,fill=zzttqq,fill opacity=0.10] (0,0) -- (4.68,-0.02) -- (4.7,4.66) -- (0.02,4.68) -- cycle;
\\draw (0.99,3.80) node[anchor=north west] {\\textbf{49}};
\\draw (3.44,3.80) node[anchor=north west] {\\textbf{12}};
\\draw (2.22,1.74) node[anchor=north west] {\\textbf{14}};
\\draw (2.22,3.00) node[anchor=north west] {\\textbf{5}};
\\draw (2.22,3.96) node[anchor=north west] {\\textbf{6}};
\\draw (1.40,2.53) node[anchor=north west] {\\textbf{8}};
\\draw (3.00,2.53) node[anchor=north west] {\\textbf{9}};
\\draw (3.85,1.39) node[anchor=north west] {\\textbf{}};
\\draw (0.35,4.57) node[anchor=north west] {\\textbf{DH}};
\\draw (3.97,4.57) node[anchor=north west] {\\textbf{CA}};
\\draw (2.31,0.72) node[anchor=north west] {\\textbf{R}};
\\draw [line width=2pt] (1.76,3.08) circle (1.3cm);
\\draw [line width=2pt] (3.05,3.13) circle (1.3cm);
\\draw [line width=2pt] (2.45,1.98) circle (1.3cm);
\\draw [line width=2pt,color=zzttqq] (0,0)-- (4.68,-0.02);
\\draw [line width=2pt,color=zzttqq] (4.68,-0.02)-- (4.7,4.66);
\\draw [line width=2pt,color=zzttqq] (4.7,4.66)-- (0.02,4.68);
\\draw [line width=2pt,color=zzttqq] (0.02,4.68)-- (0,0);
\\begin{scriptsize}
\\draw [fill=ududff] (0,0) circle (2.5pt);
\\draw [fill=ududff] (4.68,-0.02) circle (2.5pt);
\\draw [fill=uuuuuu] (4.7,4.66) circle (2.5pt);
\\draw [fill=uuuuuu] (0.02,4.68) circle (2.5pt);
\\end{scriptsize}
\\end{tikzpicture}
'
```

Question
========
An auto dealer sold 103 cars in a month that had at least one of the following features:
hydraulic steering (DH), automatic gearbox (CA), radio (R). The following graph displays
how many cars had which combination of features:

```{r, echo = FALSE, results = "asis"}
include_tikz(graf01, name = "graf", format = typ, markup = "markdown",
  library = "arrows", width = "5cm")
```

How many cars had all three features?


Meta-information
================
exname: car dealer
extype: num
exsolution: 5
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R/exams 练习中包含 TikZ 图像? 的相关文章

  • 无法禁用 gridExtra 的 R markdown 输出(附加注释)

    在我的 r markdown 报告中 我使用了 2 个块 First r include FALSE echo FALSE results asis 我在其中加载所有包并进行计算 第二个 r fig margin TRUE fig widt
  • 如何在 rmarkdown Rmd 文件中包含摘要

    In a Rmd文件的标题如下 我想包含一个摘要 所以我尝试了标准的 LateX 文章形式 abstract This paper explores a variety of topics related to the question o
  • 表格太宽,无法容纳 Markdown 生成的 PDF

    我正在尝试使用 Rmarkdown 将 SQL 查询的表显示为 pdf 但是 我得到的表格太宽 不适合文档 有人建议我使用 Pander 包 因此我尝试使用 pandoc table 函数 该函数在控制台上运行良好 但由于某种原因 它阻止我
  • 在 RMarkdown 中使用图像作为表格?

    我知道我想做的事情听起来很愚蠢 但请耐心等待 我想将表格的现有图像 PNG 插入到将转换为 pdf 的 RMarkdown 文档中 有什么办法可以做到这一点并获得图像被视为一张桌子用于编号目的 也就是说 显然我可以做 A caption f
  • 更改四开中的标题大小和颜色(html 输出)

    我有一个带有 HTML 渲染的四开文件 我想更改标题的大小和颜色 我应该如何操作 最小的例子 title Cars format html MTCars r head mtcars 您可以使用css直接在您的代码中 指定 title仅将更改
  • 是否可以在四开本中创建对标注块的自定义交叉引用?

    Task 我在用着quarto写一本在线书籍 需要模仿出版书籍的环境和柜台 后者采用五个自定义框架环境 示例 练习 评论 定理 定义 以及一个联合计数器 在章节内 我正在考虑使用现成的标注块 https quarto org docs au
  • 更改 rmarkdown 生成的 PDF 中的字体

    我正在使用 rmarkdown 生成报告 编织 PDF 时 title Untitled output pdf document I would like to specify the font to be used in creating
  • 方程编号与 Rmarkdown 中的预览到 pdf?

    在 Rmarkdown 中 编织为 PDF 如果我写一个等式 begin equation y x 2 end equation 然后我在 PDF 输出中得到一个编号方程 如果我写一个等式 y x 3 那么方程就没有编号 我喜欢能够控制哪些
  • 如何调整包含plotly的div以绘制尺寸,使其不与文档重叠

    我正在使用plotly 在 RMarkdown 中生成一个图 但是 由于它嵌入在 div 中 因此它与以下文本重叠 我认为这是因为情节大小和 div 之间的冲突 title TITLE author AUTHOR date 1 1 2000
  • 将多个帧选项传递到 rmarkdown::beamer_presentation 中的单个帧

    如何将多个框架选项传递给特定框架rmarkdown beamer presentation 在下面的 MWE 中 第二帧应包含与前一帧相同的表 只是多了几行 Thus 理想情况下 两个框架的页码相同 gt noframenumbering
  • RMarkdown 中子文档之间的链接

    我正在用 R Markdown 写博士论文 我想添加一个子文档 简介 的链接 允许读者跳转到另一个子文档 其中一篇论文 这是我的主要文件 output pdf document latex engine pdflatex r setup i
  • RMarkdown PDF 输出中未显示某些 Unicode 字符

    我正在尝试将一些课程笔记整理为 PDF 但无法正确显示某些 Unicode 字符 使用xelatex https en wikipedia org wiki XeTeXLatex 引擎对于渲染文档是必需的 使用默认引擎会因无法识别的字符而导
  • Rmarkdown 图像跳过文本

    我正在将 Rmarkdown PDF 文档与以下 YAML 设置放在一起 output pdf document fig caption true fig crop true toc depth 3 header includes usep
  • 缩放电缆表以适合页面宽度

    如何使用 kable 函数格式化 pdf 中的表格 因为我的输出表格宽度超过了pdf的宽度 这是一个例子 output pdf document r df lt cbind mtcars 1 5 mtcars 1 5 knitr kable
  • 如何在电子邮件正文中发送 R Markdown 报告?

    更新 布兰登 贝特尔森的回答 布兰登的答案产生以下输出 它不会像 Rstudio 那样生成漂亮的表格或突出显示代码 并且它会在某些带有 unicode 的 html 文件上崩溃 因此我没有使用它来自动化我的电子邮件报告 我目前的做法是用Rs
  • 在 R Markdown 文件中嵌入 pdf 并调整分页

    我即将完成博士学位 我需要在 R Markdown 文本中间的某个位置嵌入一些论文 pdf 格式 将 R Markdown 转换为 PDF 时 我希望将这些 PDF 论文嵌入到转换中 但是 我希望这些 PDF 论文也根据 Markdown
  • 仅在 RMarkdown 中引用作者/在文本引用中添加所有格

    我想引用 RMarkdown 中的一位作者在他的名字中添加所有格 的内容 但是 我找不到在没有出版年份的情况下引用作者或直接添加所有格的方法 s 它应该看起来像这样 在芬纳 2012 的书中 最小工作示例 对于 R 笔记本 title R
  • 在 xampp 中安装后,moodle 页面无法正确重定向

    我在 xampp 服务器上安装 Moodle 安装正确 但是当我尝试注销或任何其他活动时 Firefox 显示错误 页面未正确重定向 我清除了浏览器的cookie 但没有用 我重新安装了 Moodle 但遇到了同样的问题 我该如何解决这个问
  • 更改 RMarkdown 中的块背景颜色

    我希望某个代码块以不同的颜色 例如红色 突出显示 以表明这是不好的做法 如果我使用的是 Rnw 我可以添加块选项background red 并得到我想要的 但这似乎不起作用 Rmd 我的猜测是 我需要制作一个自定义 css 样式表 尽管我
  • 自动化 RStudio 处理 RMarkdown?

    我有一个 RMarkdown 文件 用于生成漂亮的 HTML 报告 问题是 我希望能够自动化它 以便它可以在无头服务器上运行 因此 不会有人启动 Rstudio 并按下 knithtml 按钮 而且 Rstudio 似乎正在做很多额外的魔法

随机推荐