lstlisting in NewDocumentEnvironment Thema ist als GELÖST markiert

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


weltio2

lstlisting in NewDocumentEnvironment

Beitrag 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?

fitzz
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Mi 31. Aug 2011, 22:56

Re: lstlisting in NewDocumentEnvironment

Beitrag 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
Zuletzt geändert von fitzz am Mi 26. Dez 2012, 00:56, insgesamt 1-mal geändert.

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: lstlisting in NewDocumentEnvironment

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

weltio2

Beitrag 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}

Antworten