I'm just writing on my master thesis and have a (specific) problem with lstlisting package in LaTeX.

I'm referring to the Random.class-file in Java and only want to print some specific line-ranges, which is working fine with following lines for Latex:

\lstinputlisting[linerange={62-62,78-81,475-479},breaklines=true,language=Java, caption=Excerpt of Source Code of \texttt{Random}-class, label=list:excerptRandomCode, basicstyle=\ttfamily\tiny, captionpos=b,numbers=left,tabsize=2,float=t]{RandomClass.java}

The only problem is now, that this doesn't print the actual line numbers. It's starts with line number 1 and stops with line number 10 (thus as many lines I refer to).

How can I say, that he also prints the lines as I mentioned in the linerange? And it would be nice, if I could add one empty line without any reference between my three excerpts of the code.

  • I am a bit late on this, however I think that it can be solved by a combination of adding the code I created for Creating line numbers in lstlisting. One could create a new environment or the equivalent which parses the linerange and in that way insert it consequitively.
    – nickpapior
    Commented Mar 17, 2012 at 11:03

1 Answer 1


The way to do it is to split into separate lstinputlisting commands and use firstnumber to set the line number of the first line for the given linerange. Here is an example of showing lines 2-6 and 9-11. This also provides you with an empty line in between. It should be possible to write a macro that generates the required lstinputlisting commands given a list of line ranges, but that should probably be a separate question as it is more related to macro processing than listings:

enter image description here


 public int nextInt(int n) {
     if (n<=0)
        throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long)next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val + (n-1) < 0);
     return val;

\lstdefinestyle{MyListStyle} {


  • This would be great of one could automate the sequence of linerange={...} ranges into a sequence of lstlistings.
    – Werner
    Commented Oct 5, 2011 at 17:02
  • This was also an idea I had, but I want to refer to his as a whole listing and not to three separate listings (that's why I labelled it with label=list:excerptRandomCode). I think there will be a problem, if I write this label to each listing. Or is there a way to make a \begin{caption?} ... \caption{text}\label{WholeListing}\end{caption?} around this list and refer then to the whole surrounding?
    – Markus G.
    Commented Oct 5, 2011 at 18:30
  • Wouldn't just captioning the last one work? Commented Oct 5, 2011 at 18:50
  • That would work, but now it happens that one of the listings appears on a different page.
    – Markus G.
    Commented Oct 5, 2011 at 19:13
  • Perhaps putting the listings in a float environment? Commented Oct 5, 2011 at 19:15

You must log in to answer this question.

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