1

I am using two packages - exercise and listings. I am trying to create an environment "codeAnswer" for answers specifically containing source code, so that i don't have to do -

\begin{Answer}
\begin{lstlisting}
<code answer>
\end{lstlisting}
\end{Answer}

But it doesn't work. Any help appreciated, as always :) Buggy code below:

\documentclass[11pt]{article}
\usepackage[answerdelayed]{exercise}
\usepackage{listings}

%need to fix
\newenvironment{codeAnswer}
{
    \begin{Answer}
    \begin{lstlisting}
}
{
    \end{lstlisting}
    \end{Answer}
}

\begin{document}

\begin{Exercise} 
What is 2 + 3?  
\end{Exercise}
\begin{Answer}
5   
\end{Answer}

\begin{Exercise}
Write a piece of code that divides 5 by 2 and stores in an integer $x$. 
\end{Exercise}


%Following commented part works fine
%\begin{Answer}
%\begin{lstlisting}
%int x = 5/2;   
%\end{lstlisting}   
%\end{Answer}

%FOLLOWING DOESN'T WORK
\begin{codeAnswer} 
int x = 5/2;    
\end{codeAnswer}

\shipoutAnswer
\end{document}
  • 3
    You should use \lstnewenvironment – egreg Jul 16 '17 at 10:20
  • hi @egreg, would it be possible for you to tweak my code using \lstnewenvironment? I tried the following but it didn't work: \lstnewenvironment{codeAnswer}{\begin{Answer}}{\end{Answer}} – gaurav gupta Jul 16 '17 at 11:39

1 Answers1

3

Use \lstnewenvironment, but with \Answer and \endAnswer:

\documentclass[11pt]{article}
\usepackage[answerdelayed]{exercise}
\usepackage{listings}

\lstnewenvironment{codeAnswer}[1][]
  {\Answer\lstset{#1}}
  {\endAnswer}

\begin{document}

\begin{Exercise}
What is 2 + 3?
\end{Exercise}
\begin{Answer}
5
\end{Answer}

\begin{Exercise}
Write a piece of code that divides 5 by 2 and stores in an integer $x$.
\end{Exercise}

\begin{codeAnswer}
int x = 5/2;
\end{codeAnswer}

\shipoutAnswer
\end{document}

You can use it also with

\begin{codeAnswer}[<options for lstlisting>]

enter image description here

egreg
  • 1,121,712