# Footnotes in solution environment of exam package

Two years ago I found this solution for including footnotes in the solution environment of the exam package:

https://tex.stackexchange.com/a/392622/96422

This answer propose to use the footnote package, and it works perfectly, but it has a problem: when the answer option is removed, the footnote still appears in the document, as you can see modifying the same example given in the referenced answer:

\documentclass[12pt]{exam}

\usepackage{footnote}
\makesavenoteenv{solution}

\begin{document}
\begin{questions}

\question
Some question
\begin{solution}
Text\footnote{Some footnote that must not appear when answers option is
removed}
\end{solution}

\end{questions}
\end{document}


That means that you have to comment out each footnote to set up an exam without solutions. I would like the footnotes in the solutions to only show when answers options is given.

## 1 Answer

I have found a solution using other commands in footnote package: \savenotes and \spewnotes. They enclose a group where the footnotes are saved and executed at the end. They can be used only when answers are being printed with the boolean \ifprintanswers defined by exam class:

\documentclass[12pt,answers]{exam}
%\documentclass[12pt]{exam}

\usepackage{footnote}
%\makesavenoteenv{solution}

\begin{document}
\begin{questions}

\question
Some question
\ifprintanswers
\savenotes
\fi
\begin{solution}
Text\footnote{Some footnote that must not appear when answers option is
removed}
\end{solution}
\ifprintanswers
\spewnotes
\fi

\end{questions}
\end{document}


It may be worthy to redefine the TheSolution enviroment of the exam package to include those commands (based on the original code of exam.cls):

\makeatletter
\renewenvironment{TheSolution}%
{%
\savenotes%
\vspace{\parskip}%
% If we don't set \leftskip and \rightskip to 0pt, then if we
% appear inside of an \uplevel command we'd have indentation
% inside of the solution box:
\leftskip=0pt
\rightskip=0pt
% If the user said \unframedsolutions, then both
% \if@framedsolutions and \if@shadedsolutions are false:
\if@framedsolutions
% We'll use the default \exam@FrameCommand
\else
\if@shadedsolutions
\def\exam@FrameCommand{\colorbox{SolutionColor}}%
\else
% It's \unframedsolutions:
\def\exam@FrameCommand{}%
\fi
\fi
\exam@MakeFramed{\advance\hsize-\exam@width}%
\solutiontitle
\ignorespaces
}%
{%
\unskip
\endexam@MakeFramed
\spewnotes
}%
\makeatother


A possible problem is that if footnotes are used in the question statements, there will be jumps in the numbering of those footnotes when the answers are not printed.

• Use symbols? († ‡ ⸸ ⸶ ⸷).
– Oni
Jun 9 at 20:38