在 readarray 中自动化 csv 用于数学方程式工作表

在 readarray 中自动化 csv 用于数学方程式工作表

我在美国一所高中的融合课堂中与有特殊需要的学生一起工作(有特殊需要的学生融入普通教育课堂)。我试图为这些学生做很多支撑工作(提供其他普通教育学生可能不需要的支持)。下一个单元将是单项式的乘法。

我对 LATEX 的了解一直在增长,但作为一名教师,我没有太多的编程背景,但我正在努力学习,以便在创建代数工作表时节省时间。我一直在使用环境readarray获取带有数字和变量的 csv 文件,然后编译它们以创建格式化的单项式乘法解决方案,供我的学生使用。这是我一直在使用的 csv 文件(文件的名称是randomfile.csv因为我仍在测试它。这个文件在最终版本中会更长,可能有 20 个问题,而不仅仅是 3 个,它被格式化为 3D 数组):

coefficientA,variableA,exponentA,variableB,exponentB
-7,x,7,y,8
3,x,9,y,8
-21,x,16,y,16
%,,,,
coefficientA,variableA,exponentA,variableB,exponentB
7,x,8,y,9
2,x,1,y,6
14,x,9,y,15
%,,,,
coefficientA,variableA,exponentA,variableB,exponentB
-9,x,2,y,9
10,x,2,y,8
-90,x,4,y,17

然后我将 CSV 文件导入到这个 tex 文件中:

\documentclass{article}
\usepackage{readarray}
\usepackage{amsmath}
\usepackage{import}

\readarraysepchar{,} 
\readdef{randomfile.csv}\dataC
\readarray*\dataC\threeD[-,\nrows,\ncols]

\newcommand{\rf}[0]{ %
\threeD
}

\begin{document}
\begin{enumerate} 

\item Sample Problem 1

\begin{align}
(\rf[1,2,1]         \rf[1,2,2]^\rf[1,2,3]       \rf[1,2,4]^{\rf[1,2,5]})
(\rf[1,3,1]         \rf[1,3,2]^\rf[1,3,3]       \rf[1,3,4]^{\rf[1,3,5]}) 
&= 
(\rf[1,2,1]             \cdot   \rf[1,3,1])
(\rf[1,2,2]^\rf[1,2,3]  \cdot   \rf[1,3,2]^\rf[1,3,3])  
(\rf[1,2,4]^{\rf[1,2,5]}    \cdot       \rf[1,3,4]^{\rf[1,3,5]})
\\
&= (\rf[1,4,1])
(\rf[1,2,2]^{\rf[1,2,3] \; + \; \rf[1,3,3]})
(\rf[1,2,4]^{\rf[1,2,5] \; + \; \rf[1,3,5]})
\\
&= (\rf[1,4,1])
\rf[1,4,2]^{\rf[1,4,3]}
\rf[1,4,4]^{\rf[1,4,5]}
\end{align}

\item Sample Problem 2

\begin{align}
(\rf[2,2,1]         \rf[2,2,2]^\rf[2,2,3]       \rf[2,2,4]^{\rf[2,2,5]})
(\rf[2,3,1]         \rf[2,3,2]^\rf[2,3,3]       \rf[2,3,4]^{\rf[2,3,5]}) 
&= 
(\rf[2,2,1]             \cdot   \rf[2,3,1])
(\rf[2,2,2]^\rf[2,2,3]  \cdot   \rf[2,3,2]^\rf[2,3,3])  
(\rf[2,2,4]^{\rf[2,2,5]}    \cdot       \rf[2,3,4]^{\rf[2,3,5]})
\\
&= (\rf[2,4,1])
(\rf[2,2,2]^{\rf[2,2,3] \; + \; \rf[2,3,3]})
(\rf[2,2,4]^{\rf[2,2,5] \; + \; \rf[2,3,5]})
\\
&= (\rf[2,4,1])
\rf[2,4,2]^{\rf[2,4,3]}
\rf[2,4,4]^{\rf[2,4,5]}
\end{align}

\end{enumerate}
\end{document}

最终输出为:

tex 文件的输出

我想尝试弄清楚两件事:

  1. 我希望能够创建第一个问题,然后将每个后续问题称为基于第一个问题的迭代。基本上,我稍后会创建一个包含大约 20 个基于不同参数的问题的 excel 文件,然后将不同版本保存到 csv,这样我就可以拥有不同的难度级别。我知道我可以在tabular带有 csv 文件的环境中迭代表格,csvreader因为我在今年早些时候曾出于其他目的做过类似的事情,但我不知道在这种情况下如何做,因为我正在做一个方程而不是一个表格。
  2. 这是最好的方法吗?有人有什么更优雅的建议吗?作为一个新手,我正在尝试学习更多的包或更好的方法来定义变量,以减少我的工作量。我将在代数课程的后期将此模板用于其他工作表(用于添加多项式、因式分解二次方程等)。

答案1

我可能遗漏了一些东西,但这是否朝着正确的方向发展?它定义了一个产生问题的命令,并在循环中使用它。

\documentclass{article}
\usepackage{readarray}
\usepackage{amsmath}
\usepackage{import}

\readarraysepchar{,} 
\readdef{randomfile.csv}\dataC
\readarray*\dataC\threeD[-,\nrows,\ncols]

\newcommand{\rf}[0]{ %
\threeD
}
\newcounter{iloop}
\newcommand\SampleProblem[1]{\begin{align}
(\rf[#1,2,1]         \rf[#1,2,2]^\rf[#1,2,3]       \rf[#1,2,4]^{\rf[#1,2,5]})
(\rf[#1,3,1]         \rf[#1,3,2]^\rf[#1,3,3]       \rf[#1,3,4]^{\rf[#1,3,5]}) 
&= 
(\rf[#1,2,1]             \cdot   \rf[#1,3,1])
(\rf[#1,2,2]^\rf[#1,2,3]  \cdot   \rf[#1,3,2]^\rf[#1,3,3])  
(\rf[#1,2,4]^{\rf[#1,2,5]}    \cdot       \rf[#1,3,4]^{\rf[#1,3,5]})
\\
&= (\rf[#1,4,1])
(\rf[#1,2,2]^{\rf[#1,2,3] \; + \; \rf[#1,3,3]})
(\rf[#1,2,4]^{\rf[#1,2,5] \; + \; \rf[#1,3,5]})
\\
&= (\rf[#1,4,1])
\rf[#1,4,2]^{\rf[#1,4,3]}
\rf[#1,4,4]^{\rf[#1,4,5]}
\end{align}}
\begin{document}
\begin{enumerate}\setcounter{iloop}{0} 
\loop\stepcounter{iloop}
\item Sample Problem \number\value{iloop}
\SampleProblem{\number\value{iloop}}
\ifnum\value{iloop}<3
\repeat
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容