lstnewenvironment Prob mit Verzeich.Strukt. und pdf-Links

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: lstnewenvironment Prob mit Verzeich.Strukt. und pdf-Links

lstnewenvironment Prob mit Verzeich.Strukt. und pdf-Links

von Sörensen » Fr 24. Aug 2012, 11:25

Hallo zusammen,
ich habe ein Neues Thema aufgemacht, da sich die Thematik weg vom ursprünglichen Titel verlagert hat.
Der alte Thread ist:
http://www.golatex.de/viewtopic,p,40945.html#40945

Aktuell erstelle ich mehrere eigene Listingumgebungen, da ich C-Code und Bash-Code getrennt voneinander behandeln möchte. Leider kann ich bis jetzt nur ein Verzeichnis erstellen. Wie kann ich zwei, nach Codesorte unterscheidende Verzeichnisse erstellen?

Das zweite Problem ist die Nummerierung. Da ich chapter.code verwende, werden die Linknummern doppelt vergeben. Zum Beispiel 1.1 einmal für den ersten C-Code und einmal für den ersten Bash-Code im ersten Kapitel. Damit gehen die Verlinkungen schief. Wie kann man es einrichten, dass die Verlinkungen wieder eineindeutig behandelt werden?

"Kurzes Minimalbeispiel"
\listfiles
% Einstellen der Dokumentenklasse mit wichtigen Parametern
\documentclass[
12pt,							% Standartschriftgr��e 12pt
a4paper,					% Format A4
twoside,					% Zweiseitig
ngerman,					% Neue deutsche Rechtschreibung
headsepline=on,		% Einschalten der Kopfzeilentrennlinie (scheint nur angezeigt, wenn es eine Kopfzeile gibt.)
footsepline=on,		% Einschalten der Fu�zeilentrennlinie
plainfootsepline	% F�gt dem Seitenstill plain eine footsepline hinzu. (F�r Kapitelanfangsseiten.) Ben�tigt \usepackage [automark]{scrpage2} und den \pagestyle{scrheadings}
]{scrreprt}				% Dokumentenklasse

\usepackage{float}
\usepackage{listings}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[pdftex, demo]{graphicx}
\usepackage{pdfpages}
\usepackage[hyperfootnotes=false,colorlinks=true,linkcolor=black,citecolor=black,urlcolor=darkblue]{hyperref}
\usepackage{cite}
\usepackage[automark]{scrpage2}
\usepackage{setspace}
\onehalfspacing
\usepackage{blindtext}  

\pagestyle{scrheadings}		%Ben�tigt \usepackage [automark]{scrpage2}
\setheadsepline{1pt}
\setfootsepline{1pt}
\setlength{\textheight}{21cm}

%Um Beispielbilder einzufügen
\newcommand\bild[2]
{
\captionsetup{type=figure}
\fbox{\includegraphics[width=10cm,height=4cm]{plank}}
\caption{#1}
\label{#2}
}

%Um Beispielbilder einzufügen
\newcommand\tab[2]
{
\begin{table}[h!]
	\fbox{
		\begin{tabular}{ll}
	  	\textbf{Üb1}	& \textbf{Üb2}\\
	  	Text1					&	Text2\\
	  	Text3					&	Text4\\
	  	Text5					&	Text6\\
		\end{tabular}
	}
	\caption{#1}
	\label{#2}
\end{table}
}

%Zur Gestalltung der Captions
\usepackage[format=plain,indention=1cm,font=sf ,labelfont=bf, nooneline]{caption} 
\renewcommand{\captionfont}{\sffamily \slshape} 
\renewcommand{\captionlabelfont}{ \sffamily \slshape \bfseries   } 
\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}}	% Durchnummerierung der Abbildungen im Gesamtdokument
\renewcommand{\thetable}{\arabic{chapter}.\arabic{table}}	% Durchnummerierung der Tabellen im Gesamtdokument

\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

%%%%BEGIN%%%%
\begin{document}

\cleardoublepage
\pdfbookmark[0]{\contentsname}{toc}
\tableofcontents

\cleardoublepage
\pdfbookmark[0]{\listfigurename}{lof}
\listoffigures

\cleardoublepage
\pdfbookmark[0]{\listtablename}{lot}
\listoftables

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

Die Referenz auf den Bashcode 1 in Kapitel \ref{chap:kap1} verweist auf \ref{bashcode:prog1}.

Die Referenz auf den Bashcode 2 in Kapitel \ref{chap:kap2} verweist auf \ref{bashcode:prog2}.

Die Referenz auf den Bashcode 3 in Kapitel \ref{chap:kap2} verweist auf \ref{bashcode:prog3}.
\newline

Die Referenz auf den C Code 1 in Kapitel \ref{chap:kap1} verweist auf \ref{ccode:prog1}.

Die Referenz auf den C Code 2 in Kapitel \ref{chap:kap2} verweist auf \ref{ccode:prog2}.

Die Referenz auf den C Code 3 in Kapitel \ref{chap:kap2} verweist auf \ref{ccode:prog3}.

\blindtext
 
\cleardoublepage
\chapter{Kapitel2}	\label{chap:kap2}
\bild{plank2}{pic:plank2}
\tab{tab2}{tab:tab2}

\begin{ccode} {caption=prog2, label=ccode:prog2}
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
C-Code
\end{ccode}

\blindtext
\blindtext
\blindtext
\blindtext

\begin{bashcode} {caption=prog2, label=bashcode:prog2, stepnumber=1}
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
\end{bashcode}

Die Referenz auf den Bashcode 1 in Kapitel \ref{chap:kap1} verweist auf \ref{bashcode:prog1}.

Die Referenz auf den Bashcode 2 in Kapitel \ref{chap:kap2} verweist auf \ref{bashcode:prog2}.

Die Referenz auf den Bashcode 3 in Kapitel \ref{chap:kap2} verweist auf \ref{bashcode:prog3}.
\newline

Die Referenz auf den C Code 1 in Kapitel \ref{chap:kap1} verweist auf \ref{ccode:prog1}.

Die Referenz auf den C Code 2 in Kapitel \ref{chap:kap2} verweist auf \ref{ccode:prog2}.

Die Referenz auf den C Code 3 in Kapitel \ref{chap:kap2} verweist auf \ref{ccode:prog3}.

\blindtext

\begin{ccode} {caption=prog3, label=ccode:prog3, 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=prog3, label=bashcode:prog3, stepnumber=1}
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
BashSkript
\end{bashcode}

\end{document}
Hoffe es kann mir jemand weiterhelfen...
Grüße,
Sören

Nach oben