使用数据工具从表中获取特定项目并打印

使用数据工具从表中获取特定项目并打印

我正在使用 datatool 加载一个 csv 表。学生姓名在该表中(第一列是名字,第二列是姓氏),我想在试卷上打印这些姓名。在一个相关问题中,我问如何在每次考试中打印学生证号码。我喜欢以类似的方式打印每次考试中从表格中获取的姓名。我的第一种方法(我只想打印任意值)看起来像这样,但不幸的是不起作用:

\documentclass[
  paper=A4,
  fontsize=10pt
]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{multido}
\usepackage{datatool}

\pagestyle{empty}

\newcounter{studentidcounter}
\setcounter{studentidcounter}{1}
\newcommand{\studentid}{%
  \ifnum\thestudentidcounter<10\relax%
  0\thestudentidcounter\else%
  \thestudentidcounter\fi%
}

\DTLsetdelimiter{,}
\DTLloaddb[noheader=true]{members}{members.csv}

\DTLgetvalue{\studentsurname}{members}{1}{2}
\DTLgetvalue{\studentlastname}{members}{1}{1}

\newcommand{\studentname}[2]{#1 #2}

\begin{document}

\show\studentsurname

\multido{\nx = 1+1}{3}{  
  \input{examMain.tex}
  \clearpage
  %----------------------------------------------------------------------
  % Uncomment next lines if exam has an odd number of pages.
%   \newpage
%   \mbox{}
%   \newpage
  %----------------------------------------------------------------------
  \stepcounter{studentidcounter}%
  \setcounter{equation}{0}
}

\end{document}

那么我如何才能实现在 multido 中迭代表格?我需要某种可以在 examMain.tex 中使用的宏来访问学生的全名?

members.cvs 的一个可能示例如下

Name1, FirstName1
Name2, FirstName2
Name3, FirstName3

答案1

使用\DTLforeach

\begin{filecontents*}{students.csv}
firstname,lastname
FirstName1,LastName1
FirstName2,LastName2
FirstName3,LastName3
\end{filecontents*}

\begin{filecontents*}{\jobname-exam.tex}
\noindent Student ID = \fbox{\studentid}\quad
\studentfirstname\ \studentlastname

\bigskip

Solve the equation $x-1=0$.
\end{filecontents*}

\documentclass{article}
\usepackage{datatool}

\pagestyle{empty}

\newcounter{studentidcounter}
\newcommand{\studentid}{%
  \ifnum\thestudentidcounter<10 0\fi
  \thestudentidcounter}

\DTLsetdelimiter{,}
\DTLloaddb{students}{students.csv}

\begin{document}

\DTLforeach{students}
  {\studentfirstname=firstname,\studentlastname=lastname}
  {\stepcounter{studentidcounter}
   \input{\jobname-exam.tex}
   %\clearpage
   \par\bigskip\hrule\bigskip % just not to produce many pages
  }

\end{document}

在此处输入图片描述

相关内容