Tell me more ×
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.

In my \lstset I have:

\lstset{
language=Java,                    % the language of the code
basicstyle=\sffamily\large,        % the size of the fonts that are used for the code
%numbers=left,                      % where to put the line-numbers
%numberstyle=\footnotesize,         % the size of the fonts that are used for the line-numbers
%stepnumber=1,                      % the step between two line-numbers. If it's 1, each line 
                                    % will be numbered
%numbersep=10pt,                      % how far the line-numbers are from the code
%backgroundcolor=\color{white},      % choose the background color. You must add \usepackage{color}
showspaces=false,                   % show spaces adding particular underscores
showstringspaces=false,           % underline spaces within strings
showtabs=false,                   % show tabs within strings adding particular underscores
frame=single,                      % adds a frame around the code
tabsize=2,                        % sets default tabsize to 2 spaces
captionpos=t,                     % sets the caption-position to bottom
breaklines=true,                  % sets automatic line breaking
breakatwhitespace=false,           % sets if automatic breaks should only happen at whitespace
%title=\lstname,                   % show the filename of files included with \lstinputlisting;
caption=grail.sablecc,             % also try caption instead of title
escapeinside={\%*}{*)},            % if you want to add a comment within your code
morekeywords={*,...}               % if you want to add more keywords to the set
}   

taken from a wikibook. The problem is that when the source code is really long and requires 2 or more pages, I would like that the frame would close on every page instead of having the bottom of the listing open. Is that possibile?

share|improve this question
You would have to manually break the listing by only showing enough lines (using, say, lastline=<n>). Then you can post the exact same listing on a subsequent page using a combination of firstline=<n+1>,lastline=<m>, etc. Browsing under the tag combination {listings} and {page-breaking} also provides some good ideas. – Werner Nov 12 '11 at 9:01
2  
Such an open box indicates that the listing will continue on the next page. As alternative you could choose a colored background instead of the frame. – Thorsten Donig Nov 12 '11 at 10:42

1 Answer

up vote 5 down vote accepted

The listings documentation describes this on page 54. In summary, listings does not support such frames by itself. The framed package is recommended instead:

\usepackage{framed}

. . .

\begin{framed}
\begin{lstlisting}
%or \lstinputlisting{…}
\end{lstlisting}
\end{framed}

There is also a similar, newer mdframed package which might be of interest.

share|improve this answer
@Andrew: mdframed doesn't support this feature yet. – Marco Daniel Nov 12 '11 at 10:57
@MarcoDaniel: Nice to know but odd. Isn't mdframed itself a modification of framed? – Andrey Vihrov Nov 12 '11 at 11:09
it is but my motivation to write the package was the missing support of opened environment on page breaks. That is the difference. – Marco Daniel Nov 12 '11 at 11:12

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.