Make code in LaTeX look *nice*

119,579

Solution 1

The listings package is quite nice and very flexible (e.g. different sizes for comments and code).

Solution 2

It turns out that lstlisting is able to format code nicely, but requires a lot of tweaking.

Wikibooks has a good example for the parameters you can tweak.

Solution 3

For simple document, I sometimes use verbatim, but listing is nice for big chunk of code.

Share:
119,579
Ed James
Author by

Ed James

Updated on July 08, 2022

Comments

  • Ed James
    Ed James almost 2 years

    I'm currently writing a project report, and to explain the slightly crazy un-intuitive code that I've used I need to put lots and lots of short excerpts of example code in.

    How I can get code into LaTeX that:

    • looks nice
    • doesn't go off the side of the page if the line's too long (list lstlisting or verbatim)
    • is preferably inline with the rest of the text

    EDITED (Figured I'd add the settings so people don't have to try and figure them out themselves (taken from wikibooks (link further down) and edited for niceness))

    Nice settings:

    \usepackage{color}
    \usepackage{listings}
    \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=1,                   % the step between two line-numbers. If it is 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
    }
    
    \begin{lstlisting}
    !!code!!
    \end{lstlisting}
    

    An example of these settings: