使用 csv 数据源自动创建矢量数学问题

使用 csv 数据源自动创建矢量数学问题

我是一名教师,我希望使用向量代数自动创建一些家庭作业问题。我想使用 csv 文件(我可以对其进行预处理以输入到 tex),格式如下:

“问题...”,“答案提示”,“提示”,“向量1”,“向量2”,“结果”

“问题...”,“答案提示”,“提示”,“向量1”,“向量2”,“结果”

“问题...”,“答案提示”,“提示”,“向量1”,“向量2”,“结果”

...

并输出一组页面(或图像?)如下面的示例。我不确定从哪里开始,甚至不确定 TeX 是否是正确的选择,但我觉得它是正确的。也许是 python 和 TeX 的组合?是否有最新的库可以执行此操作?最佳实践 TeX 包?已经设置为从 csv 接收输入的 TeX 包? 示例输出

答案1

这些包提供了处理 CSV 的能力。

  • 数据工具
  • csvsimple
  • 解析

这些包或类提供了设置作业问题数据库的功能

  • 考試(課程)
  • 普罗布索恩
  • 练习

按照您的建议保留 CSV 的优点是,您可以在简单到像文本编辑器一样的工具中创建它,也可以在复杂到像关系或 UI 设计的数据库一样的工具中创建它。缺点可能是,您无法或很难建立仅基于更改 CSV 文件中的文本输入而动态显示数字的能力。

这是一个基本示例datatool。将其放在一个文件夹中。添加两个名为 fig1.pdf 和 fig2.pdf 的 .pdf 图像文件。编译 .tex 文件。

\documentclass{article}

% datatool does the database work
\usepackage{datatool}

% graphix does graphics
\usepackage{graphicx}

% short command to put a figure
\newcommand*{\putfig}[2][1]{%
    \includegraphics[width=#1\textwidth]{#2}
    }
\newcommand*{\ifmissing}[2][]{\DTLifnull{#2}{#1}{#2}}

% the file contents
\begin{filecontents*}[overwrite]{questions.csv}
question, answerline, hint1, hint2, figure
How much was it?, value here \rule{1cm}{1pt}, hint a, , \putfig{fig1}
How much is it now?, value here \rule{1cm}{1pt}, hint 1, hint 2
How much will it be later?, value here \rule{1cm}{1pt}, , ,\putfig[0.4]{fig2}
\end{filecontents*}

% load the database to the document
\DTLloaddb{problems}{questions.csv}

\begin{document}

\begin{itemize}

\DTLforeach{problems}{%
    \q=question, \a=answerline, \ha=hint1, \hb=hint2, \f=figure}
    {%
    % question
    \item \q
    
    % hints (if present)
    \ifmissing{\ha} \ifmissing{\hb}
    
    % figure (if present)
    \ifmissing[no figure b here]{\f}
    
    \a
    }

\end{itemize}
\end{document}

答案2

让我建议一个流程。

  1. 定义存储在 CSV 中的变量
  2. 创建一个 Python 脚本来生成 CSV。(或者可能是 JSON?)
  3. 使用 CSV 中任意一行的数据创建一个可用的 LaTeX 示例。此示例稍后将用作模板。
  4. 编写一个 Python 脚本,使用 csv 中的数据填充模板。
  5. 将完成的文本写入 .tex 文件 6 使用脚本运行 LaTeX。

作为一名教师,我几年前也做过类似的事情,创建了二次方程列表。我为自己的成就感到高兴,但最终,这些(不可计数的)例子中有多少将在学校过程中发挥作用?这种自动化真的需要吗?你打算把它们打印在纸上吗?也许使用 HTML + CSS + JavaScript + MathJaxx 的 Web 应用程序对你的学生更有价值。

相关内容