I found in How to use figure inside a exercise environment? that I can't use begin{figure} ... \end{figure} in an exercise environment. I also found situations where avoiding the use of such floats can cause other trouble (see: In memoir environment, the chapter heading placement gets messed up if a too big figure gets placed on next page).

The logical thing to do would be to have a programatically check for an Exercise or Answer environment, perhaps doing something like the following:

  IF I AM IN A FLOAT-UNSUPPORTED environment % ie: Answer or Exercise

The question How can I detect if I'm inside or outside of a float environment? does something similar, and using that idea I thought I might be able to use the \theExercise and \theAnswer counters, but it appears that their values can be non-zero even when not in these environments.

I imagine that it would be possible to set and clear a flag before and after using either of these environments respectively. Perhaps there is already such a flag already internally in the exercise.sty implementation.

Presuming this is possible, how would the pseudocode predication in the figure generation command above be modified to actually work?


2 Answers 2


figure and other floating environments give an error if they are inside any kind of box (as it stops them floating) so if \ifinner is true you don't want to float.

      non float version

      float version


You could use etoolbox's \AtBeginEnvironment to set a boolean to be true inside the Exercise and the Answer environment and then test inside your command for that boolean:



\newcommand*\test{\ifbool{InExerciseOrAnswer}{I'm in :)}{I'm not :(}}




enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .