I am very new to TeX.

My source code is in an external file, let's call it source.java, and I use \lstinputlisting{source.java}.

  1. How could I use only the lines 3-5 for my code listing? (and not the whole file?)

  2. How could I use only specific lines, e.g., line {1,3,7,12} in the code listing? (I would use this last example only to show the important lines while I still have a running program in source.java.)

  3. Could I do the same with the minted package?


1 Answer 1


2012-02-01: Updated to allow for adjustment of spacing between subsequent lines.

Here is a solution for the first two problems adapted from In listings, how to show referenced linenumbers instead of standard ascending linenumbers.


\ShowListingForLineNumber*[percentage]{<line number>}}{<file name>}


  • * adjust space above current line (optinal)
  • [percentage] = percentage of \baselineskip to leave above current line (optional, ignored if * is not used). If not specified this is defaults to be 1.0 meaning the entire spacing above is suppressed.
  • <line number>} is the line number of which the listing is to be printed
  • <file name> is the file name of the input file

enter image description here



\usepackage{xparse}% to define star variant of macro

 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} {
Showing line range 3-5:

Showing lines 1,3,7,12 (note that Line 7 is blank) with starred version between lines 1 and 3 to supress the space and the space before line 12 set to 50\% of the \verb|\baselineskip|:

\NewDocumentCommand{\ShowListingForLineNumber}{s O{1.0} m m}{
\ShowListingForLineNumber*{3}{foo.java}% supress space before
\ShowListingForLineNumber*[0.5]{7}{foo.java}% supress 50% of the space before
  • One Problem... the solution is really great. But to show single Lines, an additional Space is added in between the Lines, e.g., between the lines 1, 3, 12 there is a blank line each. In my paper this takes quite some additional Space and doesn't look nice...
    – mrsteve
    Commented Feb 1, 2012 at 21:22
  • You can add a \vspace{-\baselineskip} before a subsequent ShowListingForLineNumber. Let me know if that works for you. Commented Feb 1, 2012 at 21:44
  • @mrsteve: Updated solution to provide option for adjustment of interline spacing. Commented Feb 1, 2012 at 22:27

You must log in to answer this question.

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