Seite 1 von 1

lstlisting in NewDocumentEnvironment

Verfasst: Di 25. Dez 2012, 17:57
von weltio2
Ich möchte Quellcodes durchnummerieren und ein Verzeichnis dafür anlegen.
Dazu habe ich folgendes gemacht:
    \documentclass{book}
    \usepackage{xparse,tocloft,listings}


    \newcommand{\codelist}{Codelist}
    \newlistof{code}{cod}{\codelist}
    \NewDocumentEnvironment{code}{m}
    {
            \begin{lstlisting}
            \refstepcounter{code}
            \addcontentsline{cod}{code}
            {\protect\numberline{\thechapter.\thecode}#1}\par
    }
    {\caption{#1}\end{lstlisting}}

    \begin{document}
    \begin{code}{Caption}
    Some Code
    \end{code}
    \listofcode

    \end{document}
So funktioniert das allerdings nicht, da ich folgendes bekomme:
! Missing \endcsname inserted.
<to be read again>
\global
l.17 \begin{code}{Caption}
Jemand ne Idee?

Re: lstlisting in NewDocumentEnvironment

Verfasst: Mi 26. Dez 2012, 00:51
von fitzz
Hi weltio2,
weltio2 hat geschrieben:Ich möchte Quellcodes durchnummerieren und ein Verzeichnis dafür anlegen.

[. . .]

Jemand ne Idee?
Ja, Handbuch von listings lesen Seiten 16 und 32f.

lg
Gerald

Re: lstlisting in NewDocumentEnvironment

Verfasst: Mi 26. Dez 2012, 00:52
von rais
Hallo,
weltio2 hat geschrieben:Ich möchte Quellcodes durchnummerieren und ein Verzeichnis dafür anlegen.
weltio2 hat geschrieben:
    \NewDocumentEnvironment{code}{m}
    {
            \begin{lstlisting}
            \refstepcounter{code}
            \addcontentsline{cod}{code}
            {\protect\numberline{\thechapter.\thecode}#1}\par
    }
    {\caption{#1}\end{lstlisting}}
Für eigene Umgebungen bietet das listings-Paket \lstnewenvironment an.
OTOH könntest Du das listings-Paket auch einfach anwenden, etwa
\documentclass{book}
\usepackage{listings}
\lstset{captionpos=b}
\renewcommand*\lstlistlistingname{Codelist}
\renewcommand*\lstlistingname{Code}
\begin{document}
\chapter{foo}
\begin{lstlisting}[caption=Caption]
Some Code
\end{lstlisting}
\lstlistoflistings
\end{document}
Frohes Fest
Rainer

Verfasst: Do 27. Dez 2012, 13:04
von weltio2
Hab das hier aus einem anderen Forum genommen:

    \documentclass{book}
    \usepackage{listings}

    \lstnewenvironment{code}[1]
      {%
        \lstset{
          float,caption=#1,
          basicstyle=\ttfamily,
          numbers=left,
          numberstyle=\footnotesize
        }%
      }
      {}

    \begin{document}

    \lstlistoflistings

    \begin{code}{Caption}
     Some Code
    \end{code}

    \begin{code}{Some Other Caption}
     more code
     on two lines
    \end{code}

    \end{document}