我正在尝试创建一个 TeX 格式的数学问题和答案数据库。这个想法是,一个简单的命令(例如)\getfromDB{101}
将从编号为 101 的问题的数据库中提取文本。解决方案应包含在问题的文本源中。因此,数据库中的典型条目是:
What is the answer? \solution{This is it!}
用户只需将\getfromDB{101}
文本放入他们喜欢的文档中:例如,在list
/ enumerate
/内,以他们想要的方式编号。现在,如果所有问题都是这样的,那么我认为有各种各样的选项和包可用,可以按照任何用户喜欢的方式theorem
重新定义宏。\solution
但有些问题分几个部分来回答:
This question has two parts:
\begin{parts}
\item Part one \solution{Part 1 answer}
\item Part two \solution{Part 2 answer}
\end{parts}
再次,这个想法是用户可以parts
按照自己喜欢的方式定义环境,但到目前为止,我还没有找到可以帮助适当重新定义\solution
宏的合适包。
我已经查看了以下软件包,但到目前为止我还不够聪明来解决我的问题:answers
和exsheets
。有人能给我指出合适的方向吗?
答案1
这并非完全使用数据库,而是exsheets
可以选择性地从外部文件中包含问题。问题可以指定 ID,并可以通过 ID 包含。假设您的外部文件如下所示:
% this is file questions-db.tex
% ID=1
\begin{question}[ID=1]
First question.
\begin{parts}
\item Part one
\item Part two
\end{parts}
\end{question}
\begin{solution}
The answer to the first question.
\begin{parts*}
\item Part one
\item Part two
\end{parts*}
\end{solution}
% ID=2
\begin{question}[ID=2]
Second question.
\end{question}
\begin{solution}
The answer to the second question.
\end{solution}
% ID=3
\begin{question}[ID=3]
Third question.
\end{question}
\begin{solution}
The answer to the third question.
\end{solution}
然后,您可以在主文档中使用这些问题,如下所示:
\documentclass{scrartcl}
\usepackage{exsheets}
\usepackage[inline]{enumitem}
\newlist{parts}{enumerate}{1}
\newlist{parts*}{enumerate*}{1}
\setlist[parts,parts*]{label=(\alph*)}
\begin{document}
\includequestions[IDs={1,3}]{questions-db.tex}
\printsolutions
\end{document}
不太清楚各个问题部分的问题出在哪里......
答案2
我通常会
\usepackage{versions}
...
\newboolean{ShowSolutions}
\setboolean{ShowSolutions}{false}
\ifthenelse{\boolean{ShowSolutions}}
{\includeversion{solution}}
{\excludeversion{solution}}
\begin{document}
question ?
\begin{solution}
the answer is...
\begin{solution}
next (sub) question ?
\begin{solution}
the answer is...
\end{solution}
ETC。
工作正常
答案3
似乎我找不到合适的包。一种解决方案是简单地将解决方案写入外部文件,然后在最后将其调用回来。我问过这个问题将枚举的值写入输出文件在那里可以找到适当的解决方案。