Math book: how to write Exercise and Answers

Here is a solution with exercise package.

Its option answerdelayed allows you to print the answer where you want with \shipoutAnswer.

lastexercise means that if you don't put anything as answer reference, the Answer environment is referred to the previous exercise. However, I have also put \begin{Answer}[ref={...}], in this way you can move the code for the answers where you want, but you have to keep the order. For how I have created the code for the first answer of the chapter (to print CHAPTER ... in the final list), you also have to write it within the relative chapter.

Moreover, To have CHAPTER ... printed in the final answer list, you have to set \setboolean{firstanswerofthechapter}{true} at the beginning and \setboolean{firstanswerofthechapter}{false} at the end of the first answer of a chapter (maybe there's a smartest way to do it but it's above my level of knowledge).

Eventually, if you need horizontal lists you have to use tasks environment, otherwise the ordinary \Question is enough I put an example of both in my MWE.

Edit: I've changed the numbering as required by the OP in comment.

If you want the roman numbers begin from i. in the second question, just remove the [resume=true] option.

Second edit: To have the list of the second exercise correctly aligned, you have to use aligned instead of align*. Since these are systems, maybe it's better to put a curly bracket before, like here in Ex. 2.2:

\documentclass{book}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{multicol}

\usepackage{ifthen}
\newboolean{firstanswerofthechapter}  

\usepackage{xcolor}
\colorlet{lightcyan}{cyan!40!white}

\usepackage{chngcntr}
\usepackage{stackengine}

\usepackage{tasks}
\newlength{\longestlabel}
\settowidth{\longestlabel}{\bfseries viii.}
\settasks{counter-format={tsk[r].}, label-format={\bfseries}, label-width=\longestlabel,
    item-indent=0pt, label-offset=2pt, column-sep={10pt}}

\usepackage[lastexercise,answerdelayed]{exercise}
\counterwithin{Exercise}{chapter}
\counterwithin{Answer}{chapter}
\renewcounter{Exercise}[chapter]
\newcommand{\QuestionNB}{\bfseries\arabic{Question}.\ }
\renewcommand{\ExerciseName}{EXERCISES}
\renewcommand{\ExerciseHeader}{\noindent\def\stackalignment{l}% code from https://tex.stackexchange.com/a/195118/101651
    \stackunder[0pt]{\colorbox{cyan}{\textcolor{white}{\textbf{\LARGE\ExerciseHeaderNB\;\large\ExerciseName}}}}{\textcolor{lightcyan}{\rule{\linewidth}{2pt}}}\medskip}
\renewcommand{\AnswerName}{Exercises}
\renewcommand{\AnswerHeader}{\ifthenelse{\boolean{firstanswerofthechapter}}%
    {\bigskip\noindent\textcolor{cyan}{\textbf{CHAPTER \thechapter}}\newline\newline%
        \noindent\bfseries\emph{\textcolor{cyan}{\AnswerName\ \ExerciseHeaderNB, page %
                \pageref{\AnswerRef}}}\smallskip}
    {\noindent\bfseries\emph{\textcolor{cyan}{\AnswerName\ \ExerciseHeaderNB, page \pageref{\AnswerRef}}}\smallskip}}
\setlength{\QuestionIndent}{16pt}

\begin{document}
    \chapter{First}

    \begin{Exercise}\label{EX11}
        \vspace{-\baselineskip}% <-- You don't need this line of code if there's some text here
        \Question In problem \ref{EX11-1-i}-\ref{EX11-1-iii}, determine whether the given differential equation is separable  
        \begin{tasks}(2)
            \task\label{EX11-1-i} $\frac{dy}{dx}-\sin{(x+y)}=0$     
            \task $\frac{dy}{dx}=4y^2-3y+1$ 
            \task\label{EX11-1-iii} $\frac{ds}{dt}=t\ln{(s^{2t})}+8t^2$ 
        \end{tasks}
        \Question In problem \ref{EX11-2-iv}-\ref{EX11-2-viii}, solve the equation 
        \begin{tasks}[resume=true](2)
            \task\label{EX11-2-iv} $\frac{dx}{dt}=3xt^2$
            \task $y^{-1}dy+ye^{\cos{x}}\sin{x}dx=0$
            \task $(x+xy^2)dx+ye^{\cos{x}}\sin{x}dx=0$
            \task\label{EX11-2-viii} $\frac{dy}{dt} = \frac{y}{t+1} + 4t^2 +  4t$, $\quad$ $y(1) = 10$
        \end{tasks}
    \end{Exercise}
    \setboolean{firstanswerofthechapter}{true}
    \begin{multicols}{2}
        \begin{Answer}[ref={EX11}]
            \Question 
            \begin{tasks}
                \task This is a solution of Ex 1
                \task This is a solution of Ex 2 
                \task This is a solution of Ex 3 
            \end{tasks} 
            \Question 
            \begin{tasks}[resume=true]
                \task This is a solution of Ex 4
                \task This is a solution of Ex 5 
                \task This is a solution of Ex 6 
                \task This is a solution of Ex 7 
            \end{tasks} 
        \end{Answer}
    \end{multicols}
    \setboolean{firstanswerofthechapter}{false}

    \begin{Exercise}\label{EX12}
        Another exercise. 
        \Question If you don't need a horizontal list, you can simply use \verb|\Question|
    \end{Exercise}
    \begin{multicols}{2}
        \begin{Answer}[ref={EX12}]
            \Question This is a solution of Ex 1
        \end{Answer}
    \end{multicols}

    \chapter{Second}

    \begin{Exercise}\label{EX21}
        \vspace{-\baselineskip}% <-- You don't need this line of code if there's some text here
        \Question Eight systems of differential equations and five direction fields are given below.  Determine the system that corresponds to each direction field and sketch the solution curves that correspond to the initial conditions $(x_0, y_0) = (0,1)$ and $(x_0, y_0) = (1,-1)$.
        \begin{tasks}(3)
            \task $\begin{aligned}
            \frac{dx}{dt} & = -x \\     
            \frac{dy}{dt} & = y-1
            \end{aligned}$
            \task $\begin{aligned}
            \frac{dx}{dt} & = x^2 - 1 \\        
            \frac{dy}{dt} & = y
            \end{aligned}$
            \task $\begin{aligned}
            \frac{dx}{dt} & = x+2y \\
            \frac{dy}{dt} & = -y
            \end{aligned}$
            \task $\begin{aligned}
            \frac{dx}{dt} & = 2x \\
            \frac{dy}{dt} & =  y
            \end{aligned}$
            \task $\begin{aligned}
            \frac{dx}{dt} & = x \\
            \frac{dy}{dt}  & = 2y
            \end{aligned}$ 
            \task$\begin{aligned}
            \frac{dx}{dt} & = x-1 \\
            \frac{dy}{dt} & = -y
            \end{aligned}$
            \task$\begin{aligned}
            \frac{dx}{dt} & = x^2-1 \\
            \frac{dy}{dt} & = -y
            \end{aligned}$        
            \task $\begin{aligned}
            \frac{dx}{dt} & = x- 2y \\
            \frac{dy}{dt} & =  -y
            \end{aligned}$
        \end{tasks}
    \end{Exercise}
    \setboolean{firstanswerofthechapter}{true}
    \begin{multicols}{2}
        \begin{Answer}[ref={EX21}]
            \Question 
            \begin{tasks}
                \task This is a solution of Ex 1
                \task This is a solution of Ex 2 
                \task This is a solution of Ex 3 
                \task This is a solution of Ex 4 
                \task This is a solution of Ex 5 
                \task This is a solution of Ex 6 
                \task This is a solution of Ex 7 
                \task This is a solution of Ex 8 
            \end{tasks}
        \end{Answer}
    \end{multicols}
    \setboolean{firstanswerofthechapter}{false}
    \newpage        
    \begin{Exercise}\label{EX22}
        Since these are systems, maybe it's better to put the \verb|aligned| enviroment within  \verb|\left\{| and \verb|\right.|: 
        \Question Eight systems of differential equations and five direction fields are given below.  Determine the system that corresponds to each direction field and sketch the solution curves that correspond to the initial conditions $(x_0, y_0) = (0,1)$ and $(x_0, y_0) = (1,-1)$.
        \begin{tasks}(3)
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = -x \\     
            \frac{dy}{dt} & = y-1
            \end{aligned}\right.$
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = x^2 - 1 \\        
            \frac{dy}{dt} & = y
            \end{aligned}\right.$
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = x+2y \\
            \frac{dy}{dt} & = -y
            \end{aligned}\right.$
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = 2x \\
            \frac{dy}{dt} & =  y
            \end{aligned}\right.$
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = x \\
            \frac{dy}{dt}  & = 2y
            \end{aligned}\right.$ 
            \task$\left\{\begin{aligned}
            \frac{dx}{dt} & = x-1 \\
            \frac{dy}{dt} & = -y
            \end{aligned}\right.$
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = x^2-1 \\
            \frac{dy}{dt} & = -y
            \end{aligned}\right.$        
            \task $\left\{\begin{aligned}
            \frac{dx}{dt} & = x- 2y \\
            \frac{dy}{dt} & =  -y
            \end{aligned}\right.$
        \end{tasks}
    \end{Exercise}
    \begin{multicols}{2}
        \begin{Answer}[ref={EX22}]
            \Question 
            \begin{tasks}
                \task This is a solution of Ex 1
                \task This is a solution of Ex 2 
                \task This is a solution of Ex 3 
                \task This is a solution of Ex 4 
                \task This is a solution of Ex 5 
                \task This is a solution of Ex 6 
                \task This is a solution of Ex 7 
                \task This is a solution of Ex 8 
            \end{tasks}
        \end{Answer}
    \end{multicols}

    \chapter{Answer to all problems}

    \begin{multicols}{2}\raggedcolumns
        \shipoutAnswer
    \end{multicols}

\end{document}

enter image description here

enter image description here

enter image description here enter image description here


  • Following this answer, I used the newfile package to write the solutions to a separate file and read them in afterwards. The import lines are:

    \newoutputstream{solutions}
    \openoutputfile{\jobname.solutions}{solutions}
    \addtostream{solutions}{...}
    \closeoutputstream{solutions}
    \input{\jobname.solutions}
    
  • I defined two counters: exblock and exquestion. exblock counts the "exercises" sections, while exquestion counts the questions within an exercise. Through these, I can give unique labels to each question.

  • An exercise section starts with the \exheader command. This macro includes a call of \section! After \exheader, you can type questions within an exercises environment using the \question macro. It takes two arguments: the question and the solution.

    \exheader{}
    \begin{exercises}
        \question{Question}{Answer}
    \end{exercises}
    
  • At the end, call the macro \printsolutions to print the solutions to the exercises of all the chapters.

Here is the full code:

\documentclass{book}

\usepackage{newfile}
\usepackage{amsmath}
\usepackage{xifthen}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{lipsum}

\setlength{\parindent}{0pt}

\newoutputstream{solutions}
\openoutputfile{\jobname.solutions}{solutions}
\newcounter{exblock}
\newcounter{exquestion}
\newcounter{exsubquestion}
\newlist{questionlist}{enumerate}{1}
\newlist{solutionlist}{enumerate}{1}
\newlist{subquestionlist}{enumerate*}{1}
\newlist{subsolutionlist}{enumerate*}{1}
\setlist[questionlist,solutionlist]{label=\arabic*.}
\setlist[subquestionlist,subsolutionlist]{label=(\alph*),itemjoin={},before=~}
\newcommand{\exheader}{%
    \ifthenelse{\value{exblock}>0}{\addtostream{solutions}{\noexpand\end{solutionlist}}}{}%
    \refstepcounter{exblock}%
    \setcounter{exquestion}{0}%
    \section{Exercises}%
    \label{ex.\arabic{exblock}}%
    \addtostream{solutions}{\noexpand\paragraph{Exercises \noexpand\ref{ex.\arabic{exblock}}, page \noexpand\pageref{ex.\arabic{exblock}}}}%
    \addtostream{solutions}{\noexpand\begin{solutionlist}}%
}
\newcommand{\printsolutions}{%
    \ifthenelse{\value{exblock}>0}{\addtostream{solutions}{\noexpand\end{solutionlist}}}{}%
    \closeoutputstream{solutions}%
    \input{\jobname.solutions}%
}
\newenvironment{exercises}[1][]{%
    \begin{questionlist}[start=\value{exquestion}+1, #1]%
}{%
    \end{questionlist}%
}
\newenvironment{exercisescol}[2][]{%
    \begin{multicols}{#2}%
    \begin{questionlist}[start=\value{exquestion}+1, #1]%
}{%
    \end{questionlist}%
    \end{multicols}%
}
\newcommand{\question}[2]{%
    \refstepcounter{exquestion}%
    \label{ex.\arabic{exblock}.\arabic{exquestion}}%
    \item #1%
    \addtostream{solutions}{\noexpand\item[\noexpand\ref{ex.\arabic{exblock}.\arabic{exquestion}}.] #2}%
}
\newenvironment{subquestions}[1][]{%
    \refstepcounter{exquestion}%
    \label{ex.\arabic{exblock}.\arabic{exquestion}}%
    \setcounter{exsubquestion}{0}%
    \addtostream{solutions}{\noexpand\item[\noexpand\ref{ex.\arabic{exblock}.\arabic{exquestion}}.]\noexpand\begin{subsolutionlist}}%
    \item #1%
    \begin{subquestionlist}%
}{%
    \end{subquestionlist}%
    \addtostream{solutions}{\noexpand\end{subsolutionlist}}
}
\newcommand{\subquestion}[2]{%
    \refstepcounter{exsubquestion}%
    \item #1%
    \addtostream{solutions}{\noexpand\item #2}%
}


\setlist*[questionlist]{font=\bfseries}
\setlist*[solutionlist]{noitemsep,font=\bfseries}
\setlist*[subquestionlist]{font=\bfseries}
\setlist*[subsolutionlist]{noitemsep,font=\bfseries,itemjoin={\\},before={}}

\begin{document}

\chapter{Antidifferentiation}

\section{Introduction}
\lipsum[1-4]

\exheader
Find the indicated integral.
\begin{exercisescol}[noitemsep]{2}
    \question{$\int\sqrt{x}dx$}{$\tfrac{2}{3}x\sqrt{x}+C$}
    \question{$\int3e^xdx$}{$3e^x+C$}
    \question{$\int(3x^2-\sqrt{5x}+2)dx$}{$x^3-\tfrac{2}{3}x\sqrt{5x}+2x+C$}
    \question{$\int(\tfrac{1}{2x}-\tfrac{2}{x^2}+\tfrac{3}{\sqrt{x}})dx$}{$\tfrac{1}{2}\ln|x|+\tfrac{2}{x}+6\sqrt{x}+C$}
\end{exercisescol}
Now some more complicated questions:
\begin{exercises}
    \question{Find the function $f$ whose tangent has slope $x^3-\tfrac{2}{x^2}+2$ for each value of $x$ and whose graph passes through the point $(1,3)$.}{$f(x)=\tfrac{1}{4}x^4+\tfrac{2}{x}+2x-\tfrac{5}{4}$}
    \begin{subquestions}[Suppose a car supplies a constant deceleration of $A$ meters per second squared. If it is traveling at 90 kilometers per hour when the brakes are applied, its stopping distance is 50 meters.]
        \subquestion{What is $A$?}{$A=6.25$}
        \subquestion{What would the stopping distance have been if the car had been traveling at only 54 kilometers per hour when the brakes were applied?}{42 meters}
    \end{subquestions}
\end{exercises}

\chapter{Integration by Substitution}

\section{Method}
\lipsum[5-6]

\section{Examples}
\lipsum[7-9]

\exheader
Find the indicated integral.
\begin{exercises}
    \question{$\int(2x+6)^5dx$}{$\tfrac{1}{12}(2x+6)^6+C$}
    \question{$\int xe^{x^2}dx$}{$\tfrac{1}{2}e^{x^2}+C$}
\end{exercises}

\chapter{Appendix}

\section{Solutions}

\printsolutions

\end{document}

enter image description here

Further features:

  • The exercises environment continues the question numbering properly, even if you interrupt it to write a hint or so.
  • The exercises environment can take as an optional argument any enumitem option (like noitemsep) that you want to pass on to the enumerate environment that contains the questions. To set global options for the questions or solutions, use \setlist*[questionlist]{...} and \setlist*[solutionlist]{...}, respectively.
  • You can replace the exercises environment by an exercisescol environment that takes a number as argument and calls the multicol environment to put the questions into columns.
  • You can replace the \question macro by a subquestions environment and fill it with \subquestion macros (that work the same way as \question). subquestions takes as optional argument a hint that is printed before the first subquestion (only in question, not in solution):

    \begin{subquestions}[Some introductory remarks]
        \subquestion{First part}{First solution}
        \subquestion{Second part}{Second solution}
    \end{subquestions}
    
  • Use \usepackage{hyperref} if you want to include links of the solutions back to the questions.