views:

1881

answers:

5

Hello,

I have some code I write inside the verbatim environment. Sometimes, the lines are too long and the generated pdf looks ugly - the text row passes over the right margin. What can I do to automatically break these long lines? Is there anything better than the verbatim env?

Thanks, Lucian

+7  A: 

Can you just use a fixed-width font, e.g. \texttt{}? If you require something more sophisticated, try the moreverb, listings, or algorithmicx packages.

Zach Scrivena
+2  A: 

You could try a pretty-printing package like LGrind. Otherwise you will have to manually break the lines.

ConcernedOfTunbridgeWells
+10  A: 

Of course, you have the wonderful "listings" package for that. It supports (if you want) even pretty printing of a lot of source code languages, as well as a "smart breaking" of long lines depending on the language being displayed.

Diego Sevilla
+1  A: 

You might also be interested in the fancyvrb package.

bluebrother
+2  A: 

I'd strongly advise making use of the listings package for that. It will format code nicely, and supports a large number of languages (See Pg12), and is effectively used in three ways:

  1. Inline snippets are included using the \lstinline!int x = 0;! command
  2. Typed code blocks, within the lstlisting environment, such as the following

    \begin{lstlisting}
    for i:=maxint to 0 do
    begin
    { do nothing }
    end;
    \end{lstlisting}
    
  3. Imported code blocks where code is embedded in a document directly from a source-code file, using, for example, \lstinputlisting{source.py}

There are many, many options that can be configured with this package to, for example, wrap lines and include line numbers, and full details can be found in the package documentation, but a good basic setup is provided in the wikibook entry:

\lstset{ %
language=C,                     % choose the language of the code
basicstyle=\footnotesize,       % the size of the fonts that are used for the code
numbers=left,                   % where to put the line-numbers
numberstyle=\footnotesize,      % the size of the fonts that are used for the line-numbers
stepnumber=2,                   % the step between two line-numbers. If it's 1 each line will be numbered
numbersep=5pt,                  % how far the line-numbers are from the code
backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
showspaces=false,               % show spaces adding particular underscores
showstringspaces=false,         % underline spaces within strings
showtabs=false,                 % show tabs within strings adding particular underscores
frame=single,                  % adds a frame around the code
tabsize=2,                    % sets default tabsize to 2 spaces
captionpos=b,                   % sets the caption-position to bottom
breaklines=true,                % sets automatic line breaking
breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
escapeinside={\%*}{*)}          % if you want to add a comment within your code
}
Edd