von SqilliS » Fr 16. Nov 2012, 18:08
Danke bloodworks für deine Hinweise
Die Befehle keywordprefix, texcsstyle und literate beeinflussen sich wirklich erheblich.
Nach längerem probieren habe ich eine Kombination gefunden, die "funktioniert":
%%====Quellcodeauflistungen============%
\usepackage{listings}
\usepackage{color}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\lstset{
language=[LaTeX]TeX,
%%% %%%
keywordsprefix={\\}, % Schlüsselwort-Kürzel
keywordstyle=\color{blue}, % Schlüsselwort-Hervorhebung
morekeywords={\\}, % Backslash als Schlüsselwort
%%% %%%
commentstyle=\color{gray}, % Kommentar-Hervorhebung
emph={figure}, emphstyle=\color{cyan}, % Vervorhebung spezieller Befehle
%%% %%%
morestring=[d][\color{dkgreen}]{\$}, % Inline-Mathe hervorheben
%%% %%%
literate=%
{\\} { {\textcolor{blue}{\textbackslash}} }1% Backslash und
{\\\\}{ {{\textcolor{blue}{\textbackslash\textbackslash}}} }2% Doppel-Backslash hervorheben
}%
%============================%
Das Problem dieser Lösung ist jedoch, dass nach einem doppelten Backslash (manchmal) durch den 'keywordsprefix' das listings-Packet davon ausgeht, dass das folgende Wort hervorzuheben ist. (Auch, wenn dieses in einer neuen Zeile steht.)
Daher habe ich nicht 'keywordsprefix' verwendet, sondern 'texcsstyle'.
Durch diese Option wird, wie du bereits beschrieben hast, Backslashes "weggeschnitten", wodurch 'literate' nicht richtig arbeitet. Das Problem habe ich umgangen, indem ich den durch 'literate' definierten Zeichen einen '*' vorangestellt habe. Dieser muss dadurch allerdings im gelisteten Code hinzugefügt werden.
Das lauffähige Beispiel, das der Darstellung in TeXnicCenter in etwa entspricht, sieht wie folgt aus. (Ich habe noch die Hervorhebung von Inline-Mathe ergänzt ($a=b$).
\documentclass[
12pt, % Schriftgroesse 12pt
paper=a4, % Layout fuer Din A4
parskip=half,
german % deutsche Sprache, global
]{scrreprt}
\usepackage[T1]{fontenc} % T1-kodierte Schriften, korrekte Trennmuster für Worte mit Umlauten
\usepackage[utf8]{inputenc} % Input-Encodung: utf-8 -> -> Achtung: Beim >speichern unter...< Dialog auf ausgewählte Zeichencodierung achten (ANSI=[latin1])
\usepackage[ngerman]{babel} % neue Rechtschreibung
\usepackage{lmodern} % Schriftart an PDF-Erstellung anpassen und Suche darin (Umlauteproblem)
%%====Quellcodeauflistungen============%
\usepackage{listings}
\usepackage{color}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\lstset{
language=[LaTeX]TeX,
commentstyle=\color{gray}, % Kommentar-Hervorhebung
texcsstyle=*[1]\color{blue}, % LaTeX-Kommando-Hervorhebung
moretexcs=[1]{includegraphics},
%%% %%%
emph={figure}, emphstyle=\color{cyan}, % Vervorhebung spezieller Befehle
%%% %%%
morestring=[d][\color{dkgreen}]{\$}, % Inline-Mathe hervorheben
%%% %%%
literate= %
{ *\\\\ }{ { \textcolor{blue}{\textbackslash\textbackslash} } }2 % Spezieller Befehl (*\\) für die Hervorhebung des doppelten Backslashs
}%
%============================%
\begin{document}
\begin{lstlisting}
\begin{figure} % Kommentar
\centering
\includegraphics[width=1.00\textwidth]{IrgendeinBild}
\caption{Testbeschriftung}
\label{fig:IrgendeinBild}
\end{figure}
Ein Satz mit $Inline-Mathe$ und einem*\\
Zeilenumbruch usw.*\\
\end{lstlisting}
\end{document}
Das Ergebnis sieht wie folgt aus:
Bitte ergänzt mögliche Verbesserungen oder eine Möglichkeit, bei der im gelisteten LaTeX-Code Zeilenumbrüche nicht durch '*\\' ersetzt werden müssen.
VG SqilliS
Danke bloodworks für deine Hinweise :D
Die Befehle keywordprefix, texcsstyle und literate beeinflussen sich wirklich erheblich.
Nach längerem probieren habe ich eine Kombination gefunden, die "funktioniert":
[code]%%====Quellcodeauflistungen============%
\usepackage{listings}
\usepackage{color}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\lstset{
language=[LaTeX]TeX,
%%% %%%
keywordsprefix={\\}, % Schlüsselwort-Kürzel
keywordstyle=\color{blue}, % Schlüsselwort-Hervorhebung
morekeywords={\\}, % Backslash als Schlüsselwort
%%% %%%
commentstyle=\color{gray}, % Kommentar-Hervorhebung
emph={figure}, emphstyle=\color{cyan}, % Vervorhebung spezieller Befehle
%%% %%%
morestring=[d][\color{dkgreen}]{\$}, % Inline-Mathe hervorheben
%%% %%%
literate=%
{\\} { {\textcolor{blue}{\textbackslash}} }1% Backslash und
{\\\\}{ {{\textcolor{blue}{\textbackslash\textbackslash}}} }2% Doppel-Backslash hervorheben
}%
%============================%[/code]
Das Problem dieser Lösung ist jedoch, dass nach einem doppelten Backslash (manchmal) durch den 'keywordsprefix' das listings-Packet davon ausgeht, dass das folgende Wort hervorzuheben ist. (Auch, wenn dieses in einer neuen Zeile steht.)
Daher habe ich nicht 'keywordsprefix' verwendet, sondern 'texcsstyle'.
Durch diese Option wird, wie du bereits beschrieben hast, Backslashes "weggeschnitten", wodurch 'literate' nicht richtig arbeitet. Das Problem habe ich umgangen, indem ich den durch 'literate' definierten Zeichen einen '*' vorangestellt habe. Dieser muss dadurch allerdings im gelisteten Code hinzugefügt werden.
Das lauffähige Beispiel, das der Darstellung in TeXnicCenter in etwa entspricht, sieht wie folgt aus. (Ich habe noch die Hervorhebung von Inline-Mathe ergänzt ($a=b$).
[code]\documentclass[
12pt, % Schriftgroesse 12pt
paper=a4, % Layout fuer Din A4
parskip=half,
german % deutsche Sprache, global
]{scrreprt}
\usepackage[T1]{fontenc} % T1-kodierte Schriften, korrekte Trennmuster für Worte mit Umlauten
\usepackage[utf8]{inputenc} % Input-Encodung: utf-8 -> -> Achtung: Beim >speichern unter...< Dialog auf ausgewählte Zeichencodierung achten (ANSI=[latin1])
\usepackage[ngerman]{babel} % neue Rechtschreibung
\usepackage{lmodern} % Schriftart an PDF-Erstellung anpassen und Suche darin (Umlauteproblem)
%%====Quellcodeauflistungen============%
\usepackage{listings}
\usepackage{color}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\lstset{
language=[LaTeX]TeX,
commentstyle=\color{gray}, % Kommentar-Hervorhebung
texcsstyle=*[1]\color{blue}, % LaTeX-Kommando-Hervorhebung
moretexcs=[1]{includegraphics},
%%% %%%
emph={figure}, emphstyle=\color{cyan}, % Vervorhebung spezieller Befehle
%%% %%%
morestring=[d][\color{dkgreen}]{\$}, % Inline-Mathe hervorheben
%%% %%%
literate= %
{ *\\\\ }{ { \textcolor{blue}{\textbackslash\textbackslash} } }2 % Spezieller Befehl (*\\) für die Hervorhebung des doppelten Backslashs
}%
%============================%
\begin{document}
\begin{lstlisting}
\begin{figure} % Kommentar
\centering
\includegraphics[width=1.00\textwidth]{IrgendeinBild}
\caption{Testbeschriftung}
\label{fig:IrgendeinBild}
\end{figure}
Ein Satz mit $Inline-Mathe$ und einem*\\
Zeilenumbruch usw.*\\
\end{lstlisting}
\end{document}[/code]
Das Ergebnis sieht wie folgt aus:
[url=http://www.imgbox.de/][img]http://www.imgbox.de/users/public/images/gKnRzmZ0ki.png[/img][/url]
Bitte ergänzt mögliche Verbesserungen oder eine Möglichkeit, bei der im gelisteten LaTeX-Code Zeilenumbrüche nicht durch '*\\' ersetzt werden müssen.
VG SqilliS