Verschiedene Beschriftungen mit listing ?!

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: Verschiedene Beschriftungen mit listing ?!

Erweiterung auf mehrere eigene Sprachen ?

von manuel91bsb » So 11. Mai 2014, 17:50

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

von Holzbasti » Mo 21. Apr 2014, 19:18

Hallo Rainer,

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

Viele Grüße,
Basti

von rais » Mo 21. Apr 2014, 18:27

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

von Holzbasti » So 20. Apr 2014, 19:40

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

von KOMA » Di 2. Feb 2010, 09:49

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}

von Nybass » Mo 1. Feb 2010, 10:31

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

von KOMA » Mo 1. Feb 2010, 10:19

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}

Verschiedene Beschriftungen mit listing ?!

von Nybass » Mo 1. Feb 2010, 09:53

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

Nach oben