von Sörensen » Fr 24. Aug 2012, 11:04
Hallo,
nachdem ich nun mal ein paar Tage investiert habe, habe ich zwei mögliche Vorgehensweisen gefunden.
1. Eine ziemlich gepfuschte Lösung...
...
\floatstyle{plain}
\newfloat{ccode}{ht}{floc}[chapter]
\floatname{ccode}{C Quellcode}
\newcounter{ccodecounter}[chapter]
\setcounter{ccodecounter}{0}
...
\renewcommand*\lstlistingname{C-Quellcode}
\setcounter{lstlisting}{\value{ccodecounter}}
\stepcounter{ccodecounter}
\lstset{caption={prog1}}
\begin{lstlisting} [language=C, style=C, stepnumber=1]
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
\end{lstlisting}
\begin{ccode}
\captionlistentry{prog1}
\label{ccode:prog1}
\end{ccode}
...
Damit ist es möglich getrennte Verzeichnisse aufzubauen. Im Dokument wird die Listing-Umgebung genutzt und für die Verzeichnisse die float-Umgebung.
Für nur gedruckte Versionen bekomme ich damit genau das was, ich brauche.
Für die pdf habe ich das Problem, dass die Verlinkungen nicht passen. Ist auch klar, da keine eindeutige Zuordnung mehr möglich ist, da die gleiche Listing-Nummer mehrfach verwendet wird.
2. Dann habe ich rausbekommen, dass man sich auch eigene listing-Umgebungen definieren kann, was wohl die deutlich schönere Lösung ist.
...
\newcounter{oldlstlisting}
\newcounter{ccodecounter}[chapter]
\newcounter{bashcodecounter}[chapter]
\makeatletter
\lstnewenvironment{ccode}[2]{
\renewcommand\lstlistingname{C-Quellcode}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{ccodecounter}}
\lstset{
frame=tlbr,
xleftmargin=15mm,
framexleftmargin=15mm,
numbersep=5mm,
numbers=left,
stepnumber=5,
firstnumber=1,
captionpos=b,
tabsize=4,
breaklines=true,
#1
}
}{
\stepcounter{ccodecounter}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
\lstnewenvironment{bashcode}[2]{
\renewcommand\lstlistingname{Bash-Quellcode}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{bashcodecounter}}
\lstset{
language=Bash,
frame=tlbr,
xleftmargin=15mm,
framexleftmargin=15mm,
numbersep=5mm,
numbers=left,
stepnumber=5,
firstnumber=1,
captionpos=b,
tabsize=4,
breaklines=true,
#1
}
}{
\stepcounter{bashcodecounter}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
\makeatother
...
\cleardoublepage
\pdfbookmark[0]{Quellcodeverzeichnis}{loc}
\lstlistoflistings
...
\cleardoublepage
\chapter{Kapitel1} \label{chap:kap1}
\bild{plank1}{pic:plank1}
\tab{tab1}{tab:tab1}
\begin{ccode} {caption=prog1, label=ccode:prog1, stepnumber=1}
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
\end{ccode}
\blindtext
\blindtext
\blindtext
\blindtext
\begin{bashcode} {caption=prog1, label=bashcode:prog1, stepnumber=1}
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
\end{bashcode}
...
Leider habe ich noch nicht herausgefunden, wie man bei den eigenen Listing-Umgebungen getrennte Verzeichnisse (C-Quellcodeverzeichnis, Bash-Quellcodeverzeichnis) erstellen kann. Bis jetzt werden alle Quellcodes in einem Verzeichnis aufgelistet. Kann mir da jemand helfen?
Ebenso passen die Verlinkungen nicht. Eine google.de-Lösung ist den listing-Counter zu sichern. Das funktioniert aber nicht, da der gesicherte Counter schließlich nur hochgezählt, aber nicht verwendet wird.
Da es jetzt nichts mehr mit float zu tun hat, werde ich ein neues Thema aufmachen und dieses anschließend schließen...
Ich hoffe, dass mir noch jemand helfen kann...
Grüße,
Sören
Hallo,
nachdem ich nun mal ein paar Tage investiert habe, habe ich zwei mögliche Vorgehensweisen gefunden.
1. Eine ziemlich gepfuschte Lösung...
[code]
...
\floatstyle{plain}
\newfloat{ccode}{ht}{floc}[chapter]
\floatname{ccode}{C Quellcode}
\newcounter{ccodecounter}[chapter]
\setcounter{ccodecounter}{0}
...
\renewcommand*\lstlistingname{C-Quellcode}
\setcounter{lstlisting}{\value{ccodecounter}}
\stepcounter{ccodecounter}
\lstset{caption={prog1}}
\begin{lstlisting} [language=C, style=C, stepnumber=1]
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
\end{lstlisting}
\begin{ccode}
\captionlistentry{prog1}
\label{ccode:prog1}
\end{ccode}
...
[/code]
Damit ist es möglich getrennte Verzeichnisse aufzubauen. Im Dokument wird die Listing-Umgebung genutzt und für die Verzeichnisse die float-Umgebung.
Für nur gedruckte Versionen bekomme ich damit genau das was, ich brauche.
Für die pdf habe ich das Problem, dass die Verlinkungen nicht passen. Ist auch klar, da keine eindeutige Zuordnung mehr möglich ist, da die gleiche Listing-Nummer mehrfach verwendet wird.
2. Dann habe ich rausbekommen, dass man sich auch eigene listing-Umgebungen definieren kann, was wohl die deutlich schönere Lösung ist.
[code]
...
\newcounter{oldlstlisting}
\newcounter{ccodecounter}[chapter]
\newcounter{bashcodecounter}[chapter]
\makeatletter
\lstnewenvironment{ccode}[2]{
\renewcommand\lstlistingname{C-Quellcode}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{ccodecounter}}
\lstset{
frame=tlbr,
xleftmargin=15mm,
framexleftmargin=15mm,
numbersep=5mm,
numbers=left,
stepnumber=5,
firstnumber=1,
captionpos=b,
tabsize=4,
breaklines=true,
#1
}
}{
\stepcounter{ccodecounter}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
\lstnewenvironment{bashcode}[2]{
\renewcommand\lstlistingname{Bash-Quellcode}
\setcounter{oldlstlisting}{\value{lstlisting}}
\setcounter{lstlisting}{\value{bashcodecounter}}
\lstset{
language=Bash,
frame=tlbr,
xleftmargin=15mm,
framexleftmargin=15mm,
numbersep=5mm,
numbers=left,
stepnumber=5,
firstnumber=1,
captionpos=b,
tabsize=4,
breaklines=true,
#1
}
}{
\stepcounter{bashcodecounter}
\setcounter{lstlisting}{\value{oldlstlisting}}
}
\makeatother
...
\cleardoublepage
\pdfbookmark[0]{Quellcodeverzeichnis}{loc}
\lstlistoflistings
...
\cleardoublepage
\chapter{Kapitel1} \label{chap:kap1}
\bild{plank1}{pic:plank1}
\tab{tab1}{tab:tab1}
\begin{ccode} {caption=prog1, label=ccode:prog1, stepnumber=1}
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
\end{ccode}
\blindtext
\blindtext
\blindtext
\blindtext
\begin{bashcode} {caption=prog1, label=bashcode:prog1, stepnumber=1}
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
\end{bashcode}
...
[/code]
Leider habe ich noch nicht herausgefunden, wie man bei den eigenen Listing-Umgebungen getrennte Verzeichnisse (C-Quellcodeverzeichnis, Bash-Quellcodeverzeichnis) erstellen kann. Bis jetzt werden alle Quellcodes in einem Verzeichnis aufgelistet. Kann mir da jemand helfen?
Ebenso passen die Verlinkungen nicht. Eine google.de-Lösung ist den listing-Counter zu sichern. Das funktioniert aber nicht, da der gesicherte Counter schließlich nur hochgezählt, aber nicht verwendet wird.
Da es jetzt nichts mehr mit float zu tun hat, werde ich ein neues Thema aufmachen und dieses anschließend schließen...
Ich hoffe, dass mir noch jemand helfen kann...
Grüße,
Sören