Seite 1 von 1

Verschiedene Beschriftungen mit listing ?!

Verfasst: Mo 1. Feb 2010, 09:53
von Nybass
Hallo zusammen,
ich schreibe gerade meine Diplomarbeit und habe erst vor einem Jahr mit Latex angefangen...
Ich möchte gerne zwei Code-Umgebungen verwenden mit unterschiedlichen Beschriftungen.

Ich habe folgendes Minimalbeispiel:
\documentclass[a4paper]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{color}											% für \definecolor

\usepackage{listings}
\usepackage{microtype} 									% Captions im Programmcode

\definecolor{red}{rgb}{1,0,0} 
\definecolor{darkgreen}{rgb}{0,0.392,0}
\definecolor{darkblue}{rgb}{0,0,0.75}

%*****************************
%* Captions der Codeumgebung *
%*****************************
\renewcommand{\lstlistingname}{Code}    % Listingname heisst nun Code

\makeatletter																
\AtBeginDocument{%												
\renewcommand*{\thelstlisting}{\arabic{section}.\arabic{lstlisting}}%		% Nummerierung: section.listing
\@addtoreset{lstlisting}{section}}
\makeatother

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{[ANSI]C}
\lstnewenvironment{CCode}[1][]
{ \microtypesetup{activate=false}       
	\lstset{
	language=[ANSI]C,
  basicstyle=\ttfamily,		
  basicstyle=\scriptsize,				
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},		
  stringstyle=\color{red},
  showstringspaces=false,  
	captionpos=b,
  frame=single,	
  numbers = left,
	#1}
}
{}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{HTML}
\lstnewenvironment{HTMLCode}[1][]
{ \microtypesetup{activate=false}
	\lstset{
	language=HTML,
  basicstyle=\ttfamily,											
  basicstyle=\scriptsize,			       
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},	
  stringstyle=\color{red},
  showstringspaces=false, 
	captionpos=b,               
  frame=single,		
  numbers = left,	
	#1}
}
{}


\begin{document}

\section{Kapitel}
\begin{CCode}[caption={Beschriftung1}, label=code:c]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html]
<img src="test.jpg">
\end{HTMLCode}


\end{document} 
Anstatt Code 1.1 und Code 1.2 wäre es schön, wenn folgendes rauskommen würde:
C-Code 1.1 und HTML-Code 1.1 oder zumindest
C-Code 1.1 und HTML-Code 1.2 wäre auch noch ok....

Ist so etwas möglich, sodass ich anstatt label und caption noch zusätzlich den "Namen" übergeben kann, so in der richtung
\begin{CCode}[name=C-Code, caption={Beschriftung1}, label=code:c]
\begin{HTMLCode}[name=HTML-Code, caption={Beschriftung1}, label=code:c]

Vielen Danke und Gruß
Timo

Verfasst: Mo 1. Feb 2010, 10:19
von KOMA
Wäre auch noch OK sollte so funktionieren:
\documentclass[a4paper]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{color}                                 % für \definecolor

\usepackage{listings}
\usepackage{microtype}                            % Captions im Programmcode

\definecolor{red}{rgb}{1,0,0}
\definecolor{darkgreen}{rgb}{0,0.392,0}
\definecolor{darkblue}{rgb}{0,0,0.75}

%*****************************
%* Captions der Codeumgebung *
%*****************************
\renewcommand{\lstlistingname}{Code}    % Listingname heisst nun Code

\makeatletter                                                
\AtBeginDocument{%                                    
\renewcommand*{\thelstlisting}{\arabic{section}.\arabic{lstlisting}}%      % Nummerierung: section.listing
\@addtoreset{lstlisting}{section}}
\makeatother

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{[ANSI]C}
\lstnewenvironment{CCode}[1][]{%
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{C-Code}%   
   \lstset{
   language=[ANSI]C,
  basicstyle=\ttfamily,      
  basicstyle=\scriptsize,            
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},      
  stringstyle=\color{red},
  showstringspaces=false,  
   captionpos=b,
  frame=single,  
  numbers = left,
   #1}%
}
{}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{HTML}
\lstnewenvironment{HTMLCode}[1][]{%
  \microtypesetup{activate=false}
  \renewcommand*{\lstlistingname}{HTML-Code}%   
   \lstset{
   language=HTML,
  basicstyle=\ttfamily,                                
  basicstyle=\scriptsize,                
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},  
  stringstyle=\color{red},
  showstringspaces=false,
   captionpos=b,              
  frame=single,      
  numbers = left,  
   #1}%
}
{}


\begin{document}

\section{Kapitel}
\begin{CCode}[caption={Beschriftung1}, label=code:c]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html]
<img src="test.jpg">
\end{HTMLCode}


\end{document}

Verfasst: Mo 1. Feb 2010, 10:31
von Nybass
Ja, wunderbar...
so klappt zumindest mal schon die zweite Variante!

Merci schon einmal,
vielleicht bekommt man ja auch noch die erste Variante hin, so dass man zwei unabhängige Listings verwenden kann um dann auch zwei Verzeichnisse erstellen zu können?

Gruß Timo

Verfasst: Di 2. Feb 2010, 09:49
von KOMA
Die erste Variante ist mit Hilfe von tocbasic (wird u. a. von scrartcl aber auch vom listings-Hack in scrhack geladen) auch nicht weiter schwierig:
\documentclass[a4paper]{scrartcl}

\usepackage{scrhack}% verbessert u.a. auch listings
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{color}                                 % für \definecolor

\usepackage{listings}
\usepackage{microtype}                            % Captions im Programmcode

\definecolor{red}{rgb}{1,0,0}
\definecolor{darkgreen}{rgb}{0,0.392,0}
\definecolor{darkblue}{rgb}{0,0,0.75}

%*****************************
%* Captions der Codeumgebung *
%*****************************
\renewcommand{\lstlistingname}{Code}    % Listingname heisst nun Code

\makeatletter                                                
\AtBeginDocument{%                                    
\renewcommand*{\thelstlisting}{\arabic{section}.\arabic{lstlisting}}%      % Nummerierung: section.listing
\@addtoreset{lstlisting}{section}}
\makeatother

% Ein zweites Verzeichnis für HTML-Code definieren (siehe Anleitung zu
% tocbasic im scrguide)
\addtotoclist[float]{loh}
\newcommand*{\listoflohname}{HTML-Code}% Titel des neuen Verzeichnisses
\newcommand*{\listofHTMLlistings}{\listoftoc{loh}}% Nur eine Abkürzung
% Jetzt brauchen wir noch einen eigenen Zähler für HTML-Code
\newcounter{HTMLcode}[section]
\renewcommand*{\theHTMLcode}{\arabic{section}.\arabic{HTMLcode}}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{[ANSI]C}
\lstnewenvironment{CCode}[1][]{%
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{C-Code}%  
   \lstset{
   language=[ANSI]C,
  basicstyle=\ttfamily,      
  basicstyle=\scriptsize,            
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},      
  stringstyle=\color{red},
  showstringspaces=false,  
   captionpos=b,
  frame=single,  
  numbers = left,
   #1}%
}
{}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{HTML}
\makeatletter
\lstnewenvironment{HTMLCode}[1][]{%
  \microtypesetup{activate=false}
  \renewcommand*{\lstlistingname}{HTML-Code}%
  % Einige Zeilen Code, damit listings den Zähler HTMLcode verwendet
  \let\thelstlisting\theHTMLcode
  \let\c@lstlisting\c@HTMLcode
  % Einige Zeilen Code, damit listings keinen Eintrag in lol, sondern einen in
  % loh vornimmt.
  \let\HTML@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \HTML@saved@addtocontents{loh}%
    }{%
      \HTML@saved@addtocontents{##1}%
    }%
  }%
  \lstset{
   language=HTML,
  basicstyle=\ttfamily,                                
  basicstyle=\scriptsize,                
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},  
  stringstyle=\color{red},
  showstringspaces=false,
   captionpos=b,              
  frame=single,      
  numbers = left,  
   #1}%
}
{}
\makeatother

\begin{document}

\lstlistoflistings
\listofHTMLlistings

\section{Kapitel}
\begin{CCode}[caption={Beschriftung1}, label=code:c]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html]
<img src="test.jpg">
\end{HTMLCode}

\begin{CCode}[caption={Beschriftung1}, label=code:c2]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html2]
<img src="test.jpg">
\end{HTMLCode}
\end{document}

Verfasst: So 20. Apr 2014, 19:40
von Holzbasti
Hallo,

ich weiß, der Thread ist schon etwas älter, aber ich habe trotzdem eine Frage zu diesem Thema, bzw. Problem.

So wie KOMA das beschrieben hat, habe ich es übertragen können und es funktioniert wunderbar. Meine Frage ist:
kann man auch den Befehl
\lstinputlisting{...}
neudefinieren, dass er, verständlicherweise mit verschiedenen Namen, auch für beide Umgebungen funktioniert, also bspw.:
\inputClisting{datei.c}
\inputHTMLlisting{datei.html}
Die Variante von oben weitergesponnen, nämlich unter
\let\thelstlisting\theHTMLcode 
das
\let\lstinputlisting\inputHTMLlisting
oder
\let\inputHTMLlisting\lstinputlisting
einzufügen, hat nicht funktioniert.

Vielleicht weiß einer von euch ja einen Rat diesbezüglich.

Danke!

Viele Grüße,
Basti

Verfasst: Mo 21. Apr 2014, 18:27
von rais
Holzbasti hat geschrieben: kann man auch den Befehl
\lstinputlisting{...}
neudefinieren, dass er, verständlicherweise mit verschiedenen Namen, auch für beide Umgebungen funktioniert, also bspw.:
\inputClisting{datei.c}
\inputHTMLlisting{datei.html}
Versuch mal
\documentclass[a4paper]{scrartcl}

\usepackage{scrhack}% verbessert u.a. auch listings
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{color}                                 % für \definecolor

\usepackage{listings}
\usepackage{microtype}                            % Captions im Programmcode

\definecolor{red}{rgb}{1,0,0}
\definecolor{darkgreen}{rgb}{0,0.392,0}
\definecolor{darkblue}{rgb}{0,0,0.75}

%*****************************
%* Captions der Codeumgebung *
%*****************************
\renewcommand{\lstlistingname}{Code}    % Listingname heisst nun Code

\makeatletter
\AtBeginDocument{%
  \renewcommand*{\thelstlisting}{\thesection.\arabic{lstlisting}}%      % Nummerierung: section.listing
  \@addtoreset{lstlisting}{section}%
  \let\c@Ccode\c@lstlisting
}%
\makeatother

% Ein zweites Verzeichnis für HTML-Code definieren (siehe Anleitung zu
% tocbasic im scrguide)
\addtotoclist[float]{loh}
\newcommand*{\listoflohname}{HTML-Code}% Titel des neuen Verzeichnisses
\newcommand*{\listofHTMLlistings}{\listoftoc{loh}}% Nur eine Abkürzung
% Jetzt brauchen wir noch einen eigenen Zähler für HTML-Code
\newcounter{HTMLcode}[section]
\renewcommand*{\theHTMLcode}{\thesection.\arabic{HTMLcode}}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\newif\iflistingwasHTML
\lstloadlanguages{[ANSI]C}
\lstdefinestyle{Cstyle}{%
   language=[ANSI]C,
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},
  stringstyle=\color{red},
  showstringspaces=false,
   captionpos=b,
  frame=single,
  numbers = left
}
\makeatletter
  \newcommand*\inputClisting{% Achtung: alles bis \lstinputlistng wirkt global!
    \microtypesetup{activate=false}%
    \renewcommand*{\lstlistingname}{C-Code}%
    \renewcommand\thelstlisting{\thesection.\arabic{lstlisting}}%
    \let\c@lstlisting\c@Ccode
    \iflistingwasHTML
      \renewcommand*\addtocontents{\HTML@saved@addtocontents}%
    \fi
    \listingwasHTMLfalse
    \lstset{style=Cstyle}%
    \lstinputlisting
  }
\makeatother
\lstnewenvironment{CCode}[1][]{%
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{C-Code}%  
   \lstset{style=Cstyle,
   #1}%
}
{}

%******************************
%* Umgebung fuer Programmcode *
%******************************
\lstloadlanguages{HTML}
\lstdefinestyle{HTMLstyle}{%
   language=HTML,
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},
  stringstyle=\color{red},
  showstringspaces=false,
   captionpos=b,
  frame=single,
  numbers = left
}
\makeatletter
\newcommand*\inputHTMLlisting{% Achtung: alles bis \lstinputlistng wirkt global!
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{HTML-Code}%
  \let\thelstlisting\theHTMLcode
  \let\c@lstlisting\c@HTMLcode
  \let\HTML@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \HTML@saved@addtocontents{loh}%
    }{%
      \HTML@saved@addtocontents{##1}%
    }%
  }%
  \lstset{style=HTMLstyle}%
  \listingwasHTMLtrue
  \lstinputlisting
}
\lstnewenvironment{HTMLCode}[1][]{%
  \microtypesetup{activate=false}
  \renewcommand*{\lstlistingname}{HTML-Code}%
  % Einige Zeilen Code, damit listings den Zähler HTMLcode verwendet
  \let\thelstlisting\theHTMLcode
  \let\c@lstlisting\c@HTMLcode
  % Einige Zeilen Code, damit listings keinen Eintrag in lol, sondern einen in
  % loh vornimmt.
  \let\HTML@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \HTML@saved@addtocontents{loh}%
    }{%
      \HTML@saved@addtocontents{##1}%
    }%
  }%
  \lstset{style=HTMLstyle,
   #1}%
}
{}
\makeatother
\begin{filecontents*}{test-a.html}
<tilte>HTML-Test</title>
\end{filecontents*}
\begin{filecontents*}{test-b.c}
#include <stdio.h>
\end{filecontents*}
\begin{document}

\lstlistoflistings
\listofHTMLlistings

\section{Kapitel}
\begin{CCode}[caption={Beschriftung1}, label=code:c]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html]
<img src="test.jpg">
\end{HTMLCode}

\begin{CCode}[caption={Beschriftung1}, label=code:c2]
int i;
i = 2;
\end{CCode}

\begin{HTMLCode}[caption={Beschriftung2}, label=code:html2]
<img src="test.jpg">
\end{HTMLCode}
\inputHTMLlisting[caption={HTML Test}]{test-a.html}
\inputClisting[caption={C Test}]{test-b.c}
\end{document}
Frohe Ostern
Rainer

Verfasst: Mo 21. Apr 2014, 19:18
von Holzbasti
Hallo Rainer,

vielen Dank für den Code, er tut genau das, was er soll.

Viele Grüße,
Basti

Erweiterung auf mehrere eigene Sprachen ?

Verfasst: So 11. Mai 2014, 17:50
von manuel91bsb
Hallo, ich habe den Code etwas erweiteret, sodass er mir mehrere Verzeichnisse für verschiedene eigene Sprachen macht. Da viel selbst definiert wurde ist das Beispiel nicht mehr wirklich minimal.
\documentclass[a4paper]{scrartcl}

\usepackage{scrhack}% verbessert u.a. auch listings
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{color}                                 % für \definecolor

\usepackage{listings}
\usepackage{microtype}                            % Captions im Programmcode

\definecolor{red}{rgb}{1,0,0}
\definecolor{darkgreen}{rgb}{0,0.392,0}
\definecolor{darkblue}{rgb}{0,0,0.75}


\lstdefinestyle{MatlabStyle}
{language=Matlab,
   morekeywords={break,case,catch,continue,else,elseif,end,for,function,
   global,if,otherwise,persistent,return,switch,try,while,ones,zeros},
   float=hbp,
   basicstyle=\ttfamily\small,
   identifierstyle=\color{colIdentifier},
   keywordstyle=\color{blue},
   commentstyle=\color{dkgreen},
   stringstyle=\color{dkgreen},
   columns=flexible,
   tabsize=2,
   frame=single,
   numbers=left,
   extendedchars=true,
   showspaces=false,
   numberstyle=\tiny\color{black},
   stepnumber=1,
   numbersep=10pt,
   showspaces=false,
   showstringspaces=false,
   breakautoindent=true}

\makeatletter
% Hook into listings
\lst@AddToHook{OutputOther}{\ProcessOther@silmeth}
% helper macro
\newcommand\ProcessOther@silmeth
{%
  \ifnum\lst@mode=\lst@Pmode%     % If we're in `Processing' mode...
    \def\lst@thestyle{\color{blue}}%  % ... redefine the style locally
  \fi%
}
\lstdefinelanguage{StructuredText}{
	%alsoletter={ =, ., ], [, ^, ;, (, ), +, -, *, /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, :=},
 	%moredelim = *[l][\processlcom@homebrew]{/},
%	alsoletter=0123456789,
	keywordstyle={[1]\color{blue}},
	keywordstyle={[2]\color{red}},
	morekeywords=[1]{FUNCTION, LREAL, END_VAR, VAR_INPUT, LN, SQRT, IF, THEN, ELSE, 
						PROGRAM, BOOL, OF, DINT, INT, TO, DO, END_IF, END_FOR, ARRAY, 
						ANY, FOR, VAR, FUNCTION_BLOCK, VAR_OUTPUT, SIN, COS, TAN, PI, PT1, ABS},
	morekeywords=[2]{FALSE, TRUE},
	morekeywords=[2]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
	literate=*{0}{{\textcolor{red}{0}}}{1}
				{1}{{\textcolor{red}{1}}}{1}
				{2}{{\textcolor{red}{2}}}{1}
				{3}{{\textcolor{red}{3}}}{1}
				{4}{{\textcolor{red}{4}}}{1}
				{5}{{\textcolor{red}{5}}}{1}
				{6}{{\textcolor{red}{6}}}{1}
				{7}{{\textcolor{red}{7}}}{1}
				{8}{{\textcolor{red}{8}}}{1}
				{9}{{\textcolor{red}{9}}}{1}
				{PT1}{{\textcolor{blue}{PT1}}}{1}
				{dL1}{{\textcolor{black}{dL1}}}{1}
				{rho0}{{\textcolor{black}{rho0}}}{1}
				{help1}{{\textcolor{black}{help1}}}{1}
				{help2}{{\textcolor{black}{help2}}}{1}
				{acosh1}{{\textcolor{black}{acosh1}}}{1}
				{acosh2}{{\textcolor{black}{acosh2}}}{1},				
	%otherkeywords={ ], [, ^, ;, := },
	morecomment=[l][\color{green}]{//},
	morecomment=[s][\color{green}]{/*}{*/},
	morecomment=[s][\color{green}]{(*}{*)},
	%moredelim=[s][\color{blue}]{(}{)},
	%moredelim=[s][\color{blue}]{[}{]},
	sensitive=true,
	morestring=[b]",
	deletekeywords={'},
	breaklines=true,
	numbersep=10pt,
}





\lstdefinestyle{StructuredTextStyle}{language=StructuredText}

%*****************************
%* Captions der Codeumgebung *
%*****************************
\renewcommand{\lstlistingname}{Code}    % Listingname heisst nun Code

\makeatletter
\AtBeginDocument{%
  \renewcommand*{\thelstlisting}{\thechapter.\arabic{lstlisting}}%      % Nummerierung: section.listing
  \@addtoreset{lstlisting}{section}%
  \let\c@Ccode\c@lstlisting
}%
\makeatother

% Ein zweites Verzeichnis für HTML-Code definieren (siehe Anleitung zu
% tocbasic im scrguide)
\addtotoclist[float]{loh}
\newcommand*{\listoflohname}{HTML-Code}% Titel des neuen Verzeichnisses
\newcommand*{\listofHTMLlistings}{\listoftoc{loh}}% Nur eine Abkürzung
% Jetzt brauchen wir noch einen eigenen Zähler für HTML-Code
\newcounter{HTMLcode}[section]
\renewcommand*{\theHTMLcode}{\thechapter.\arabic{HTMLcode}}


\addtotoclist[float]{lom}
\newcommand*{\listoflomname}{Matlab-Code}% Titel des neuen Verzeichnisses
\newcommand*{\listofMatlablistings}{\listoftoc{lom}}% Nur eine Abkürzung
% Jetzt brauchen wir noch einen eigenen Zähler für HTML-Code
\newcounter{Matlabcode}[section]
\renewcommand*{\theMatlabcode}{\thechapter.\arabic{Matlabcode}}


\addtotoclist[float]{los}
\newcommand*{\listoflosname}{Strukturierter Text}% Titel des neuen Verzeichnisses
\newcommand*{\listofStructuredTextlistings}{\listoftoc{los}}% Nur eine Abkürzung
% Jetzt brauchen wir noch einen eigenen Zähler für HTML-Code
\newcounter{StructuredTextcode}[section]
\renewcommand*{\theStructuredTextcode}{\thechapter.\arabic{StructuredTextcode}}%\thesection.{\arabic{StructuredTextcode}


%******************************
%* Umgebung fuer Programmcode *
%******************************
\newif\iflistingwasHTML
\lstloadlanguages{[ANSI]C}
\lstdefinestyle{Cstyle}{%
   language=[ANSI]C,
  basicstyle=\ttfamily,
  basicstyle=\scriptsize,
  keywordstyle=\color{darkblue},
  commentstyle=\color{darkgreen},
  stringstyle=\color{red},
  showstringspaces=false,
   captionpos=b,
  frame=single,
  numbers = left
}
\makeatletter
  \newcommand*\inputClisting{% Achtung: alles bis \lstinputlistng wirkt global!
    \microtypesetup{activate=false}%
    \renewcommand*{\lstlistingname}{C-Code}%
    \renewcommand\thelstlisting{\thechapter.\arabic{lstlisting}}%
    \let\c@lstlisting\c@Ccode
    \iflistingwasHTML
      \renewcommand*\addtocontents{\HTML@saved@addtocontents}%
    \fi
    \listingwasHTMLfalse
    \lstset{style=Cstyle}%
    \lstinputlisting
  }
\makeatother
\lstnewenvironment{CCode}[1][]{%
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{C-Code}%  
   \lstset{style=Cstyle,
   #1}%
}
{}

%******************************
%* Umgebung fuer Programmcode *
%******************************

\makeatletter
\newcommand*\inputMatlablisting{% Achtung: alles bis \lstinputlistng wirkt global!
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{Matlab-Code}%
  \let\thelstlisting\theMatlabcode
  \let\c@lstlisting\c@Matlabcode
  \let\Matlab@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \Matlab@saved@addtocontents{lom}%
    }{%
      \Matlab@saved@addtocontents{##1}%
    }%
  }%
  \lstset{MatlabStyle}%
  \listingwasMatlabtrue
  \lstinputlisting
}
\lstnewenvironment{MatlabCode}[1][]{%
  \microtypesetup{activate=false}
  \renewcommand*{\lstlistingname}{Matlab-Code}%
  % Einige Zeilen Code, damit listings den Zähler HTMLcode verwendet
  \let\thelstlisting\theMatlabcode
  \let\c@lstlisting\c@Matlabcode
  % Einige Zeilen Code, damit listings keinen Eintrag in lol, sondern einen in
  % loh vornimmt.
  \let\Matlab@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \Matlab@saved@addtocontents{lom}%
    }{%
      \Matlab@saved@addtocontents{##1}%
    }%
  }%
  \lstset{style=MatlabStyle, #1}%
}
{}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\makeatletter
\newcommand*\inputStructuredTextlisting{% Achtung: alles bis \lstinputlistng wirkt global!
  \microtypesetup{activate=false}%
  \renewcommand*{\lstlistingname}{Strukturierter Text}%
  \let\thelstlisting\theStructuredTextcode
  \let\c@lstlisting\c@StructuredTextcode
  \let\StructuredText@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \StructuredText@saved@addtocontents{lom}%
    }{%
      \StructuredText@saved@addtocontents{##1}%
    }%
  }%
  \lstset{StructuredTextStyle}%
  \listingwasStructuredTexttrue
  \lstinputlisting
}
\lstnewenvironment{StructuredTextCode}[1][]{%
  \microtypesetup{activate=false}
  \renewcommand*{\lstlistingname}{Strukturierter Text}%
  % Einige Zeilen Code, damit listings den Zähler HTMLcode verwendet
  \let\thelstlisting\theStructuredTextcode
  \let\c@lstlisting\c@StructuredTextcode
  % Einige Zeilen Code, damit listings keinen Eintrag in lol, sondern einen in
  % loh vornimmt.
  \let\StructuredText@saved@addtocontents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \ifstr{##1}{lol}{%
      \StructuredText@saved@addtocontents{los}%
    }{%
      \StructuredText@saved@addtocontents{##1}%
    }%
  }%
  \lstset{style=StructuredTextStyle, #1}%
}
{}
\makeatother
\begin{filecontents*}{test-a.html}
<tilte>HTML-Test</title>
\end{filecontents*}
\begin{filecontents*}{test-b.c}
#include <stdio.h>
\end{filecontents*}
\begin{document}

\lstlistoflistings
\listofHTMLlistings

\section{Kapitel}
\begin{CCode}[caption={Beschriftung1}, label=code:c]
int i;
i = 2;
\end{CCode}

\begin{MatlabCode}[caption={Beschriftung2}, label=code:html]
break
\end{MatlabCode}

\begin{StructuredTextCode}[caption={Beschriftung1}, label=code:c2]
A := B;
\end{StructuredTextCode}

\begin{MatlabCode}[caption={Beschriftung2}, label=code:html2]
break
\end{MatlabCode}
%\inputHTMLlisting[caption={HTML Test}]{test-a.html}
%\inputClisting[caption={C Test}]{test-b.c}
\end{document} 
Ich würde mich sehr über Verbesserungsvorschläge freuen, da ich nicht sehr viel Ahnung habe und momentan sehr viel probiere.

Gruß Manuel