我想为我的学生创建一份练习和解决方案数学表。
我希望能够将每个练习和解决方案插入到一个部分中,例如:
\begin{exercise)
$(2x-3)^2-(3x+2)^2=$
\end{exercise)
\begin{solution)
$-(x+5)(5x-1)$
\end{solution)
并且能够在编译时获得这种渲染效果:
我看了一些包裹这里但我找不到我真正想要的东西。
你对我有什么建议吗?
答案1
这是可行的(语法不太符合要求,但是……)也付出了很多努力xsim
。
主要思想是:
- 为所需布局创建模板
- 使用相同的环境身体进行练习和使用参数
solution
作为练习环境选项的解决方案(而不是手动将其设置为每个练习的选项,也可以将其内置到模板中以便自动设置) - 创建快捷方式,以便
\IfInsideSolutionTF
仍然能够在练习和解决方案中使用不同的内容 - 设置
xsim
使用新模板
如果代码中有什么不清楚的地方,请询问。
\documentclass{article}
\usepackage[no-files]{xsim}
\usepackage{needspace}
\usepackage{tasks}
\DeclareExerciseEnvironmentTemplate{custom}{%
\par\vspace{\baselineskip}
\Needspace*{2\baselineskip}
\noindent\sffamily
\textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}%
\GetExercisePropertyT{subtitle}{\hspace{3em}{\small#1}}\par
\normalfont
}{}
\DeclareExerciseEnvironmentTemplate{flushright}{%
\begin{flushright}
\begin{minipage}{.4\linewidth}
\textsf{Solutions:}\par\normalfont
}{%
\end{minipage}%
\end{flushright}%
}
\xsimsetup{
exercise/within = section ,
exercise/template = custom ,
solution/template = flushright
}
\renewcommand*\theexercise{\thesection-\arabic{exercise}}
\newcommand\QA[2]{\IfInsideSolutionTF{#2}{#1}}
\begin{document}
\setcounter{section}{1}
\setcounter{exercise}{30}
\begin{exercise}[ID=one,solution,subtitle=Factorize as much as possible the following expressions.]
\begin{tasks}
\task \QA{$(2x-3)^2 - (3x-2)^2 =$}{$-(x+5)(5x-1)$}
\task \QA{$(x^2-25) - 2(5-x)(x+6) =$}{$(x+5)(3x-17)$}
\task \QA{$2x(x+2) + (x+1)^2 + 2 =$}{$3(x+1)^2$}
\end{tasks}
\end{exercise}
\printsolution{exercise}{one}
\end{document}