Take the 2-minute tour ×
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.

I don't get page numbers of sections in the table of content correctly when I use the package lstlisting. I'm using the documentclass article. I need to use this class, not report.

Any ideas how this can be fixed?

share|improve this question

migrated from stackoverflow.com Jan 6 '12 at 11:31

This question came from our site for professional and enthusiast programmers.

    
Did you run latex a few times? –  Kerrek SB Jan 6 '12 at 3:04
    
I don't understand your question. I make sure I'm not overrunning Latex. I close everything then try. –  stupidity Jan 6 '12 at 4:32
    
Have a look at tex.stackexchange.com/questions/38802/… –  lockstep Jan 6 '12 at 11:36
    
In order to get the correct page numbers, a couple of LaTeX runs are needed. –  egreg Jan 6 '12 at 11:37
2  
Information contained within the Table of Contents is extracted from a file that is created after you run latex. As such, it usually takes (at least) two separate runs in order for the entries to be there and correct. If this is not the case, edit your post and include a minimal working example (MWE) that illustrates your problem. –  Werner Jan 6 '12 at 18:46

1 Answer 1

up vote 2 down vote accepted

Based on the comments I suspect that you are not running latex enough times. Compiling the example below the first time produces:

enter image description here

But upon subsequent run (assuming that you do not delete the temporary files that are generated upon the first run) you get:

enter image description here

\documentclass{article}
\usepackage{listings}
\usepackage{lipsum}% for dummy text


\usepackage{filecontents}

\begin{filecontents*}{foo.java}
 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;
 }
\end{filecontents*}


\begin{document}
\tableofcontents\newpage
\section{First Section}
\lipsum[1-7]

\lstinputlisting{foo.java}

\section{Second Section}
\lipsum[8-12]
\end{document}
share|improve this answer
1  
Thanks all for the comments. I use Latexian for Mac. I figured that it runs 2 times by default. I changed it to 3 times, and that took care of the issue. –  stupidity Jan 7 '12 at 1:24

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.