在乳胶文档中添加随机生成的数字,以防止考试作弊

在乳胶文档中添加随机生成的数字,以防止考试作弊

我试图减少课堂考试中的一种作弊行为。有些学生会拍下考试的照片(而我正在看其他地方),然后上传到 Chegg。然后,稍后再回头查看“导师”发布的解决方案。我通过各种方式减少了这种情况,但这种情况仍然会发生。

我使用 LaTeX 生成考试。我想在每个 LaTeX 文档中嵌入一个唯一的编号,这样如果有人拍了照片,我就能将该编号与某个人联系起来(通过查看他们提交的考试)。

我设想的方式是使用 LaTeX 代码中的简单标签,例如

\randomnumber{seed}

我可以编译

latex doc.tex -option=seed

然后我会写一个脚本来对 100 场考试进行同样的操作,只需要一个循环

for i=0,n
latex doc-i.tex option=seed+i

(或者其他的东西)。

有人有办法做到这一点吗?或者有更好的方法来实现我想要的?

答案1

所有 tex 引擎都内置有随机数生成器。您可以简单地使用它:

\documentclass{article}
\usepackage{xfp}
\begin{document}
\fpeval{randint(10000,99999)}

\end{document}

第一次编译: 在此处输入图片描述

下一个编译 在此处输入图片描述

种子通常来自系统时间,但您也可以根据需要设置它。

答案2

编辑:现在无法真正上传屏幕截图,但它是根据每个问题的(问题的)高度和 ID 宽度在每个问题的 3 个地方使用 tikz 添加水印。

你可以用乳胶代码来回答你的问题,例如:

\xdef\DocID{12345678901234567890}
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\newsavebox\QuestionBox
\newsavebox\IDBox
\savebox{\IDBox}{\hbox{\DocID}}
\newlength\QuestionHeight
\newlength\QuestionWidth
\newlength\IDWidth
\newcounter{QuestionCounter}
\newcommand{\Question}[2]{\stepcounter{QuestionCounter}
\def\QNum{\the\value{QuestionCounter}}
\savebox{\QuestionBox}{\vbox{\noindent{\begin{tikzpicture}[overlay,remember picture]\coordinate(A\QNum);\end{tikzpicture}\bfseries #1} #2\hfill\begin{tikzpicture}[overlay,remember picture]\coordinate (B\QNum);\end{tikzpicture}}}
\setlength{\QuestionHeight}{\ht\QuestionBox}
\setlength{\QuestionWidth}{\wd\QuestionBox}
\setlength{\IDWidth}{\wd\IDBox}
\usebox{\QuestionBox}
\begin{tikzpicture}[overlay,remember picture]
\pgfmathsetmacro\angleATan{atan(\QuestionHeight/\IDWidth)}
\node[opacity=0.4] at ($(A\QNum)!0.5!(B\QNum) - ({0.3*\QuestionWidth},0)$) {\rotatebox{\angleATan}{\usebox{\IDBox}}};
\node[opacity=0.4] at ($(A\QNum)!0.5!(B\QNum)$) {\rotatebox{\angleATan}{\usebox{\IDBox}}};
\node[opacity=0.4] at ($(A\QNum)!0.5!(B\QNum)+({0.3*\QuestionWidth},0)$) {\rotatebox{\angleATan}{\usebox{\IDBox}}};
\end{tikzpicture}
}

\begin{document}

\Question{Question 1}{Here is a first short question}

\Question{Question 2}{Here is a longer question that will last at least two lines with an equation \[F(x)=3\cdot x\] to be solved for \(F(x)=0\)}

\end{document}

然后可以为每个 ID 创建一个文档(使用简单的 C - 或任何代码 - 替换每个学生的第一行 - 如果您认为需要帮助可以向我索取 - 然后如果他/她将带有他/她 ID 的照片上传到某处...您可以轻松找到...但如果 - 像他们中的许多人一样 - 有一个导师并通过电子邮件或其他方式向他发送私人信息 - 您当然找不到他/她)

相关内容