Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Trying to use figure inside an Exercise environment (exercise.sty) gives me "LaTeX Error: Not in outer par mode."

Example:

\documentclass{article}

\usepackage[]{exercise}
\begin{document}

\begin{Exercise}[title={foo}, label=ex1]
A tough question.
\end{Exercise}

\begin{Answer}[ref={ex1}]
A smart answer.

\begin{figure}[htp]
   \centering
   \includegraphics[totalheight=0.2\textheight]{couetteFlowFig1.png}
   \label{fig:ex1}
\end{figure}
\end{Answer}

\end{document}

I see in Is it possible to use the figure environment with the standalone package? that there was a similar problem with a different package, and that limitation in the package was eventually handled. It appears the same limitation exists in the exercise environment. Is there a work around that allows for inclusion of a figure with that package, or a different way of including a figure when using this package?

share|improve this question
add comment

1 Answer 1

up vote 10 down vote accepted

There is no requirement to place an image (using \includegraphics, say) inside a figure environment. The figure environment is merely a floating placeholder. So, you can just put your image inside a center environment to centre it on the page, and even add a caption using \captionof from the caption package.

enter image description here

\documentclass{article}
\usepackage{caption}% http://ctan.org/pkg/caption
\usepackage{exercise}% http://ctan.org/pkg/exercise
\begin{document}

\begin{Exercise}[title={foo}, label=ex1]
A tough question.
\end{Exercise}

\begin{Answer}[ref={ex1}]
A smart answer.

\begin{center}
  %\includegraphics[totalheight=0.2\textheight]{couetteFlowFig1.png}
  \rule{150pt}{100pt} \par
  \captionof{figure}{This is a figure caption.}
  \label{fig:ex1}
\end{center}
\end{Answer}

\end{document}

In the above example, I've replaced the image with a rectangular block to simulate the image, but it will work with \includegraphics as well (for which you will require \usepackage{graphicx} - the graphicx package).

The problem originates from inserting figure inside Exercise. Or, more generally, a float inside a non-floating (or restrictive) environment. Therefore, removing the floating environment enables the compilation to succeed.

share|improve this answer
    
Martin scharrer has a new package called mwe now @ Werner. I like it as it will save me from typing all those details regarding rectangular block. –  Harish Kumar May 11 '12 at 5:54
1  
This gave me hypcap=true warnings (and odd link placement), but otherwise worked very nicely. I was able to avoid the hypcap and link placement issue by using an alternate caption syntax: \newcommand{\imageCentered}[4]{% \begin{center}% \captionsetup{type=figure}% \includegraphics[totalheight=#4\textheight]{#1}% \caption{#2}% \label{#3}% \end{center}% } –  Peeter Joot May 11 '12 at 6:08
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.