1

我们考虑通过可填写的PDF 表格分发开卷考试exams2nops。这个想法是学生不打印 PDF 并用笔标记他们的答案,而是在他们的 PDF 中以电子方式填写他们的答案(例如使用 Acrobat Reader),然后将该 PDF 发回给我们(或通过 Moodle 上传)。然后,PDF 被“扫描”/从 PDF 中提取答案。

目前,MC/SC 答案的复选框不可点击;自由文本答案的文本字段也可以是可填写的文本输入字段。当前的 PDF 导出不这样做。

有人已经这样做了吗?如果我想实现这一点,一个好的起点在哪里?也许nops.tex?

(我们知道导出到 Moodle 中的交互式测验是另一种选择)。

4

2 回答 2

1

TL;博士

  • exams2nops()不支持这一点,也不会向这个方向扩展,因为它的重点是生成用于打印/扫描/等的 PDF 考试。
  • exams2pdf()可以自定义使用不同的 LaTeX 模板,您可以尝试使用该{hyperref}包设置合适的模板。
  • PDF 查看器对生成的 PDF 表单的支持差异很大,通常只有 Acrobat Reader 是唯一一个支持得体的。
  • 我对学生系统的异构性以及通过电子邮件发送解决方案的个人经验是,这不是一个非常可靠的解决方案,但会成为很多问题的根源。就个人而言,我会避免走这条路。
  • 如果您的大学拥有 Moodle 系统,我建议您通过exams2moodle(). 至少系统稳定性的责任在于大学。

细节:

通过使用该{hyperref}包,您可以使用带有 、 等命令的环境{Form}。此处给出了简要概述:https ://tex.stackexchange.com/questions/14842/creating-fillable-pdfs\CheckBox{}\TextEntry{}

更详细的工作示例可在以下网址获得:https ://martin-thoma.com/creating-pdf-forms-with-latex/

基于这些,我调整了exam.texR/exams 包中提供的模板并设置了一个form.tex模板。完整的 LaTeX 代码包含在下面。这会尝试执行以下操作:

  • 设置完成后可以通过电子邮件提交的表单。
  • 该表格由姓名和学生 ID 的“固定”字段组成。
  • 然后它设置命令\exnum,\exstringexmchoice可供exams2pdf(). 详见第 3 节vignette("exams", package = "exams")。因此,对于给定的检查,这些命令会根据需要重复多次。
  • 最后有“提交”或“清除”表格的按钮。

为了说明,请尝试:

exams2pdf(
  c("deriv.Rmd", "swisscapital.Rmd", "boxplots.Rmd", "ttest.Rmd", "function.Rmd", "lm.Rmd"),
  template = "form.tex"
)

form.tex下面需要在您当前的工作目录中。

结果form1.pdf会自动显示在您的默认 PDF 查看器中(请参阅 参考资料options(pdfviewer = ...))。或者,您还可以添加一个参数dir = "."以将文件存储在当前工作目录中。

对我来说,使用 TeXLive 的 Debian GNU/Linux 可以工作并生成一个 PDF 文件,可以使用 Evince PDF 查看器查看和填写。但是,“提交”和“清除”都不起作用。

当我在 Windows 10 中的 Acrobat Reader 下打开同一个文件时,只有名称/ID 的 TextEntry 字段有效,其他字段无效。复选框有效,但 (a) 的所有复选框都已链接,所有 (b) 等也是如此。

我的印象是,{Form}像这样即时撰写对 Acrobat Reader 不起作用。但我会很感激如何解决这个问题的指针。另一种方法是准确编码特定考试所需的表格,并name在所有表格元素等中使用唯一标签。

奖金说明:

下面的模板还激活了{attachfile}LaTeX 包,该包可用于将文件(例如,数据集)嵌入到 PDF 中。这对我有用,但仅在 Acrobat Reader 下有效。为了自动将所有\url{}命令(如为lm练习创建的,上面使用的)转换为\attachfile{}命令,开发版本exams2pdf()获得了一个attachfile = FALSE可以设置为TRUE. 有关更多详细信息,请参阅 R-Forge 上的 R/exams 论坛中的此线程: https ://R-Forge.R-project.org/forum/forum.php?thread_id=32091&forum_id=4377&group_id=1337

乳胶模板: form.tex

\documentclass[10pt,a4paper]{article}

%% packages
\usepackage[utf8]{inputenc}
\usepackage{a4wide,color,verbatim,Sweave,url,xargs,amsmath,booktabs,longtable,eurosym}

%%% %% optionally: two-column layout for exercise form
%%% \usepackage{multicol}

%% embed supplementary data files etc.
\usepackage{attachfile}
\attachfilesetup{color=0.5 0 0}

%% support PDF forms
\usepackage{hyperref}

%% new environments
\newenvironment{question}{\item}{}
\newenvironment{solution}{\comment}{\endcomment}
\newenvironment{answerlist}{\renewcommand{\labelenumi}{(\alph{enumi})}\begin{enumerate}}{\end{enumerate}}

%% paragraphs
\setlength{\parskip}{0.7ex plus0.1ex minus0.1ex}
\setlength{\parindent}{0em}

%% compatibility with pandoc
\providecommand{\tightlist}{\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setkeys{Gin}{keepaspectratio}

%% fonts: Helvetica
\usepackage{helvet}
\IfFileExists{sfmath.sty}{
  \RequirePackage[helvet]{sfmath}
}{}
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{phv}

\newcommandx{\exmchoice}[9][2=-,3=-,4=-,5=-,6=-,7=-,8=-,9=-]{%
                \CheckBox[name=a, width=1em]{(a)}~~%
  \if #2- \else \CheckBox[name=b, width=1em]{(b)}~~ \fi%
  \if #3- \else \CheckBox[name=c, width=1em]{(c)}~~ \fi%
  \if #4- \else \CheckBox[name=d, width=1em]{(d)}~~ \fi%
  \if #5- \else \CheckBox[name=e, width=1em]{(e)}~~ \fi%
  \if #6- \else \CheckBox[name=f, width=1em]{(f)}~~ \fi%
  \if #7- \else \CheckBox[name=g, width=1em]{(g)}~~ \fi%
  \if #8- \else \CheckBox[name=h, width=1em]{(h)}~~ \fi%
  \if #9- \else \CheckBox[name=i, width=1em]{(i)}~~ \fi%
}
\newcommandx{\exclozechoice}[9][2=-,3=-,4=-,5=-,6=-,7=-,8=-,9=-]{\setcounter{enumiii}{1}%
                \CheckBox[name=ca, width=1em]{\roman{enumiii}.} \stepcounter{enumiii}%
  \if #2- \else \CheckBox[name=cb, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #3- \else \CheckBox[name=cc, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #4- \else \CheckBox[name=cd, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #5- \else \CheckBox[name=ce, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #6- \else \CheckBox[name=cf, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #7- \else \CheckBox[name=cg, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #8- \else \CheckBox[name=ch, width=1em]{\roman{enumiii}.} \stepcounter{enumiii} \fi%
  \if #9- \else \CheckBox[name=ci, width=1em]{\roman{enumiii}.}  \fi%
}
\newcommand{\exnum}[9]{\TextField[name=num, width=4cm]{}}
\newcommand{\exstring}[1]{\TextField[name=string, width=4cm]{}}

%% new commands
\makeatletter
\newcommand{\ID}[1]{\def\@ID{#1}}
\newcommand{\Date}[1]{\def\@Date{#1}}
\ID{00001}
\Date{YYYY-MM-DD}

%% \exinput{header}

\newcommand{\myID}{\@ID}
\newcommand{\myDate}{\@Date}
\makeatother

%% headings
\markboth{\textnormal{\bf \large Statistics Exam: \myID}}%
{\textnormal{\bf \large Statistics Exam: \myID}}
\pagestyle{myheadings}

\begin{document}

%% title page
\thispagestyle{empty}
{\sf
\textbf{\LARGE{R University}}

\textbf{\large{Statistics Exam \myDate \hfill Exam ID \myID}}

\vspace*{2cm}

\begin{Form}[action=mailto:info@example.com,encoding=html,method=post]
\begin{tabular}{ll}
\textbf{Name}       & \TextField[name=Name, width=10cm]{}\\
\textbf{Student ID} & \TextField[name=ID, width=10cm]{}\\
\end{tabular}

\vspace*{1cm}

%%% \begin{multicols}{2}

%% \exinput{questionnaire}

%%% \end{multicols}

\Submit{Submit} ~~ \Reset{Clear}

\end{Form}
}
\newpage

\begin{enumerate}

%% \exinput{exercises}

\end{enumerate}

\end{document}
于 2020-06-16T17:37:37.627 回答
1

我们将这样安排考试:

  • 学生下载使用exams2nops创建的pdf
  • 学生使用 Adob​​e Acrobat Reader DC(免费:https ://get.adobe.com/de/reader/?promoid=P79NQR4R&mv=other )打开 pdf,并通过“符号”选项用 X 标记框
  • 学生将填写好的第一页考试上传回来(通过打印到 pdf)。这样做的好处是不能再更改设置的十字架。
  • 考试的正常评估过程开始......
于 2021-01-25T17:13:46.927 回答