Settings for the listings package with Python
=============================================

:Author:    Günter Milde
:Contact:   milde@users.berlios.de
:Revision:  $Revision: 5534 $
:Date:      $Date: 2009-02-24$
:Copyright: © 2007, 2009 G. Milde,
            Released  without warranties or conditions of any kind
            under the terms of the Apache License, Version 2.0
            http://www.apache.org/licenses/LICENSE-2.0

To use this pass the
``--stylesheet=listings-python-options.sty --literal-block-env=lstlisting``
options to ``rst2latex.py``.

For full documentation see listings.pdf_.

Of course, we need to load the listings package itself::

  \RequirePackage{listings}

In a document with lots of lists and listings, separating paragraphs by
vertical seems appropriate::

  \RequirePackage{parskip}

Font settings
~~~~~~~~~~~~~

Textfont::

  % \RequirePackage{mathptmx} % Times
  \RequirePackage{mathpazo} % Palatino

We need a "rich" monospaced font. `txfonts`' typewriter font comes
with bold, slanted, and small-caps variants and without the problems of
`txfonts`' math fonts::

  \renewcommand{\ttdefault}{txtt}

Default language
~~~~~~~~~~~~~~~~
::

  %\lstset{language={}}

Highlight literal blocks as Python,
add missing keywords::

  \lstset{language=Python,
          morekeywords=[1]{yield}
  }

  % pre-load the language
  \lstloadlanguages{Python} %  comma separated list of languages


Style
~~~~~

Typeface settings::

  \lstset{
    basicstyle=\ttfamily,           % print whole listing in tt
    % basicstyle=\ttfamily\small,   % and, maybe small
    keywordstyle=\bfseries,
    % identifierstyle=\slshape,     % object names
    commentstyle=\rmfamily\itshape, % italic comments
    stringstyle=\slshape,           % strings
  }

Visible whitespace::

  \lstset{showstringspaces=false}  % no visible spaces in strings
  %\lstset{showspaces=true,
  %        showtabs=true,
  %        tab=\rightarrowfill}

Line numbers::

  %\lstset{numbers=left, numberstyle=\tiny, stepnumber=2, numbersep=5pt}

Frames around listings::

  %\lstset{frame=single}


Extended characters in listings::

  %extendedchars=true
  %extendedchars=false

Column alignment
~~~~~~~~~~~~~~~~

(for typesetting with variable width fonts)

``columns=[c|l|r] <alignment>``
  <alignment> in [fixed, flexible, spaceflexible, or fullflexible]
  The optional c, l, or r controls the horizontal orientation of smallest
  output units (keywords, identifiers, etc.).

  default: [c]fixed

``basewidth={fixed, flexible}``
  sets the width of a single character box for fixed and flexible column
  mode (both to the same value or individually).

  default: {0.6em,0.45em}

::

  \lstset{columns=fullflexible, basewidth={0.5em,0.4em}}

.. _listings.pdf:
   ftp://dante.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf
