11

When using lstlisting, my displayed code is sent back on the top of my page. I would like to have the same kind of option as:

\begin{figure}[h]
...
\end{figure}

ie having displayed my code exactly where I put it in my latex code.

My current code for lstlisting is as follow:

\begin{lstlisting}[float,style=Bash,caption={toto.bash},label=lst:logging]
...
\end{lstlisting}

Thanks!

Second question: How to display lstlisting on 2 followed pages, when the code is too long?

1 Answer 1

8

Don't use figure environment. Generally you don't need to use figure as listings provides a float option by itself. But for your case, you shouldn't use that either (as you do not want floating). The following code works as you wanted:

\documentclass{article}
\usepackage{listings}
\usepackage{lipsum}
\begin{document}
\lipsum[1-4]
\begin{lstlisting}[caption=Listing,language=c,escapechar=+] %% don't use float option here
+{public void}+ Method () {
  try {
    .. Original code
    .. After returning
  }
  catch (...) {
    .. After throwing
  }
  finally {
    .. After
  }
}
\end{lstlisting}
\end{document}

enter image description here

As you can see, the code runs in to second page as well.

2
  • You were right! It comes from the float. Thank you for your help, fast and helpful. Have a nice day!
    – user23710
    Commented Jan 6, 2013 at 10:54
  • 2
    And what to do if you want to have the listing at a particular location, but want to avoid that it gets split over different pages?
    – MaVe
    Commented Jul 18, 2014 at 13:19

You must log in to answer this question.

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