假设,我正在为学生准备 SAT(实际上,这是我们国家的一些大型考试,而不是 SAT)编写一些讲义。我有几个.tex
文件,例如polynomial.tex
,,,,conic sections.tex
每个triangular functions.tex
文件对应一个章节。同时,“SAT”已经有 10 年或更长时间的测试了。我认为我应该创建几个像下面这样的文件
- 2018SAT问题.tex
- 2017SAT问题.tex
- 2016SAT试题.tex
- ...
例如2018SATquestions.tex
,我希望文档可以以某种方式构造如下:(当然它不能单独编译)
true or false
\item Can a polynomial be degree $0$?
\item Is $\tan x'=\sec x$?
\item Is $x^2+2y^2=4$ a circle?
...
Fill in blanks
\item How many real roots of $f(x)=x^5+x^3-1$? \rule[..][..]
\item $\sin(120^\circ)=$\rule[..][..]
\item The radius of $x^2+y^2=16$ is \rule[..][..].
...
现在,在我的 中polynomial.tex
,当我想包含 SAT 历史问题时,我只需使用命令,如\sat{2018}{torf}{1}
或\sat{2018TF1}
或\sat{2018}[tf][1]
,... 等等。在 中triangular functions.tex
,我只需使用命令,如\sat{2018}{finb}{2}
,等等。
那我该怎么做呢?有没有什么有用的包可以满足这种需要?或者有另一种巧妙的方法来维护测试?PS:我还担心\input{...}
(或类似命令)会包含整个 SAT 文件,从而降低编译速度,即使我只想包含一些问题中的一两个问题201xSATquestions.tex
。可以避免这样的问题吗?
答案1
当然,我不确定这是否是解决大量问题的好方法,但至少它是有效的。该memory
包允许您定义一个类似结构的变量,并在稍后获取其内容。我使用了exam
允许简单问题的类,请参阅文档以获得更多选项。我还擅自创建了一个该类\blank
带有可选宽度参数的命令。exam
已经有一个\fillin[correct anwser][optional width]
命令。
梅威瑟:
\documentclass{exam}
\usepackage{filecontents}
\usepackage{memory}
%\newcommand{\blank}[1][1cm]{\rule[-2pt]{#1}{0.4pt}} % Not needed
\begin{filecontents*}{SAT2018questions}
\newdata*{SAT}
\SAT[2018-1]={
\question[6]
True or false
\begin{parts}
\part Can a polynomial be degree $0$?
\part Is $\tan x'=\sec x$?
\part Is $x^2+2y^2=4$ a circle?
\end{parts}
}
\SAT[2018-2]={
\question[15]
Fill in blanks
\begin{parts}
\part How many real roots of $f(x)=x^5+x^3-1$? \fillin[][15pt]
\part $\sin(120^\circ)=$ \fillin
\part The radius of $x^2+y^2=16$ is \fillin[][3cm]
\end{parts}
}
\end{filecontents*}
\input{SAT2018questions}
\begin{document}
\begin{questions}
\SAT[2018-1]
\SAT[2018-2]
\end{questions}
\end{document}
结果如下: