text dropped after beginning of listing

For lengthy listings, leave the environment \begin and \end on their own lines. For short, in-line listings, use \lstinline (already defined). Here's an example of their usages:

enter image description here

\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listings
\lstset{basicstyle=\ttfamily,breaklines=true}
\begin{document}
\begin{lstlisting}
http://www.victim.com/cms/login.php?..
\end{lstlisting}
Some text and \lstinline!http://www.victim.com/cms/login.php?..! and some more text.
\end{document}

The listings documentation uses the following terminology (section 4.2 Typesetting listings, p 25-26):

  • Code snippets: \lstinline
  • Displayed code: lstlisting environment
  • Stand alone files: \lstinputlisting

Regarding the use of the displayed code lstlisting environment, it also states (p 26):

In contrast to the environment of the verbatim package, LaTeX code on the same line and after the end of environment is typeset respectively executed.

This allows you to use

\begin{lstlisting}
http://www.victim.com/cms/login.php?..\end{lstlisting}

but not

\begin{lstlisting}http://www.victim.com/cms/login.php?..
\end{lstlisting}

Regardless, I don't see the need to keep code listings and their enclosed environment definitions on the same line, so even the allowed use above could benefit from putting \end{lstlisting} on its own line.


The lstlisting environment ignores any text after \begin{lstlisting} on the same line, hence the warning.

There is even another pitfall that one must be aware of: A comment at the end of the line ending \begin{lstlisting}[…] extend the line as usual. Example:

\begin{lstlisting}[float=bp] % try to place at bottom of page for some reason
foo;
bar;
% baz;
\end{lstlisting}

prints

bar;
% baz;

The comment will be correctly parsed by latex and ignored by lstlistings (as the warning indicates). This might be the intended behaviour.

However, as the comment extends the line, the first line of the listing will also be ignored!

Instead, ensure that the \begin{lstlisting} command is not followed by any other character on that line - intermediate comments are allowed, though:

\begin{lstlisting}[
    float=bp % try to place at bottom of page for some reason
]
foo;
bar;
% baz;
\end{lstlisting}

(I am posting this as an answer because my reputation is not high enough to post comments.)

Tags:

Listings