我正在尝试answers
使用包创建包含多个子问题的问题(使用包)tasks
。每个问题都有一个解决方案,该解决方案将使用包的功能在文档末尾排版answers
。
我的问题是解决方案的编号不正确。
\documentclass{article}
\usepackage{answers}
\usepackage{tasks}
\Newassociation{solution}{Solution}{ans}
\newtheorem{exercise}{Exercise}[section]
\begin{document}
\Opensolutionfile{ans}[ans2]
\section{Exercises}
\begin{exercise}\label{xrc:one}
Exercise without tasks
\begin{solution}
Solution without tasks
\end{solution}
\end{exercise}
\begin{exercise}\label{xrc:two}
Statement of the second exercise
\begin{tasks}[counter-format= {tsk[a].) }, label-offset = {2em}, label-format ={\bfseries},label-width={1.5em}](3)
\task First task
\task Second task
\task Third task
\end{tasks}
\begin{solution}
Solutions to the second exercise
\end{solution}
\end{exercise}
\begin{exercise}\label{xrc:two}
Statement of the third exercise
\begin{tasks}[counter-format= {tsk[a].) }, label-offset = {2em}, label-format ={\bfseries},label-width={1.5em}](3)
\task First task
\task Second task
\task Third task
\task Fourth task
\task Fifth task
\task Sixth task
\end{tasks}
\begin{solution}
Solutions to the third exercise
\end{solution}
\end{exercise}
\Closesolutionfile{ans}
\section*{Solutions}\label{svar}
\input{ans2}
\end{document}
答案1
这不是与tasks
包直接相关的问题 –\refstepcounter{…}
在之前练习过的任何solution
环境都会导致同样的问题:
\documentclass{article}
\usepackage{answers}
\Newassociation{solution}{Solution}{ans}
\newtheorem{exercise}{Exercise}[section]
\newcounter{test}
\renewcommand\thetest{test:\arabic{test}}
\begin{document}
\Opensolutionfile{ans}[ans2]
\section{Exercises}
\begin{exercise}\label{xrc:one}
Exercise without \verb+\refstepcounter+
\begin{solution}
Solution without \verb+\refstepcounter+
\end{solution}
\end{exercise}
\begin{exercise}\label{xrc:two}
\refstepcounter{test}
Statement of the second exercise
\begin{solution}
Solutions to the second exercise
\end{solution}
\end{exercise}
\begin{exercise}\label{xrc:three}
Statement of the third exercise
\refstepcounter{test}
\begin{solution}
Solutions to the third exercise
\end{solution}
\end{exercise}
\Closesolutionfile{ans}
\section*{Solutions}\label{svar}
\input{ans2}
\end{document}
\@currentlabel
你可以通过再次设置练习编号来“修复”这个问题
\addtocounter{exercise}{-1}\refstepcounter{exercise}
直接在solution
环境之前。使用etoolbox
包及其,\AtBeginEnvironment
您甚至可以修复此问题,而不必在每个解决方案之前添加代码。添加
\usepackage{etoolbox}
\AtBeginEnvironment{solution}{\addtocounter{exercise}{-1}\refstepcounter{exercise}}
到你的序言(但\Newassociation{solution}{Solution}{ans}
当然是在之后)。