TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying using minted to display some code in my document, but the code is long and spans over two pages, this works fine, however when I place my code inside

\begin{listing}
  \inputminted{java}{code/JavaCode.java}
  \caption{Some caption}
  \label{label1}
\end{listing}

Then my code doesn't show up and I get the warning:

LaTeX Warning: Float too large for page

I have tried using the option H in listing, but then the code shows in only one page and it doesn't fit so I only see a part of it.

I also tried with the code directly in the latex document ie:

\begin{listing}
  \begin{minted}{java} 
    Java code
  \end{minted}
  \caption{Some caption}
  \label{label1}
\end{listing}

But the same happens, any ideas?

share|improve this question
up vote 21 down vote accepted

As far as I know, this is a fundamental restriction of floats. You cannot use floats that span over more than one page so you need to remove the surrounding listing.

To make the caption still work, you can load the caption package and use the \captionof command instead of \caption:

\inputminted{java}{code/JavaCode.java}
\captionof{listing}{Some caption}

Now the caption should also appear in the \listoflistings. If you want to use a label here, you need to put it inside the \captionof command:

\captionof{listing}{Some caption\label{lst:some-label}}

See also: Question “Label and caption without float”.

share|improve this answer
    
Thanks! This works. Is there a way to also add a label so I can reference it from other part of my text? Also, if I use this, then then \listoflistings won't list my code right? – lander16 Mar 1 '11 at 20:05
    
@lander See updated answer. – Konrad Rudolph Mar 1 '11 at 20:16
    
Thanks. Everything is working now. – lander16 Mar 1 '11 at 20:17
1  
\captionof requires an environment so this does not work correctly, see my answer. – schlamar Apr 27 '12 at 8:43
    
@ms4py Is right. – Konrad Rudolph Apr 27 '12 at 8:51

The suggested and accepted answer does not work correctly as the \captionof command requires to be inside an environment. This is pointed out in the caption documentation. For example in my case there was no proper vertical space after the caption.

A proper solution is to define a new environment:

\newenvironment{code}{\captionsetup{type=listing}}{}

\begin{code}
\begin{minted}[frame=single]{py}
def my_func(x):
    print x
\end{minted}
\caption{My Func}
\label{lst:my_func}
\end{code}
share|improve this answer
2  
When I use this solution with \inputminted, page spanning breaks. – Stephen Bosch Sep 22 '13 at 14:55

Adapting the solution by @Konrad Rudolph to something that is simple and doesn't break anything:

\inputminted[linenos]{python}{code.py}
\begin{figure}[H]
    \caption{Hello.}
    \label{fig:foo}
\end{figure}

Of course, this is going to be named and listed as a Figure, but that's not a problem for me.

share|improve this answer
    
You don't need to use a figure float. If \captionof doesn't work for you (which, weird!) you can (and should) simply use a listing float environment. – Konrad Rudolph May 29 at 8:34
    
The \captionof appeared to work, until I noticed that the paragraphs don't start with the usual indentation (and are restored to normal when I removed the \captionof). The listing environment doesn't split over two pages (I haven't tried mdframed for breaking a listing environment, because according to tex.stackexchange.com/a/103471/8666, mdframed helps with breaking in the presence of a background color). – Ioannis Filippidis May 29 at 21:43
    
No floating environment breaks across pages. I meant using the "correct" environment to put the title in. – Konrad Rudolph May 29 at 21:53

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.