Syntaxhervorhebung von LaTeX-Code in Listing-Umgebung

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: Syntaxhervorhebung von LaTeX-Code in Listing-Umgebung

von SqilliS » Mo 26. Nov 2012, 15:39

Hab das Minted-Paket jetzt unter Win7 und TexnicCenter laufen und es mach wirklich ein schönen Syntax-Highlighting.

Hatte etwas rumprobiert, hoffe es ist vollständig:

1. Python installieren (32-bit-Version): http://www.python.org/download/

2. setuptools installieren, um easy_install nutzen zu können: http://pypi.python.org/pypi/setuptools#files

3. Pygments mit easy_install installieren: Mit der Windows-Kommandazeile (cmd) und nicht der Python-Kommandozeile eingeben:
easy_install Pygments
(evtl. "c:\Python27\Scripts\" der Windows-Systemvariable PATH hinzufügen, damit es gefunden wird)

4. In TeXnicCenter Argumente für pdflatex hinzufügen: Ausgabeprofile definieren->"Argumente, die an den Compiler übergeben werden sollen": "-shell-escape" hinzugefügt.


Minimalbeispiel:
\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)


\usepackage{minted}
\usemintedstyle{autumn}

% weitere Styles
%\usemintedstyle{monokai}
%\usemintedstyle{manni}
%\usemintedstyle{rrt}
%\usemintedstyle{perldoc}
%\usemintedstyle{borland}
%\usemintedstyle{colorful}
%\usemintedstyle{default}
%\usemintedstyle{murphy}
%\usemintedstyle{vs}
%\usemintedstyle{trac}
%\usemintedstyle{tango}
%\usemintedstyle{fruity}
%\usemintedstyle{bw}
%\usemintedstyle{emacs}
%\usemintedstyle{vim}
%\usemintedstyle{pastie}
%\usemintedstyle{friendly}
%\usemintedstyle{native}

\begin{document}

\begin{minted}[tabsize=4,				% Anzahl Leerzeichen mit denen ein Tab-Einzug ersetzt wird
               frame=lines,
               framesep=2mm]{latex}

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

\end{document}
Ergebnis:
Bild

Es ist leider kein Style dabei, der dem des TeXnicCenters entspricht.
Wer dies geschafft hat oder weitere Anregungen geben kann, bitte posten.

VG SqilliS

Kleiner Helfer

von localghost » Mi 21. Nov 2012, 18:34

Besorge dir mal die setuptools. Damit sollte die Installation unter Windows via »easy_install« laut Anleitung von minted problemlos möglich sein.


Thorsten

von bloodworks » Mi 21. Nov 2012, 16:22

Ähm ja du hast wohl pyments nicht installiert oder es wird nicht gefunden.

Ich kann dir da leider auch net viel helfen, ausser eben den Rat ein vernünfgiges OS zu vernweden;) Ich denke der Installpath von pygments ist recht wichtig. Ich kenne keinen Weg den minted mitzuteilen, deshalb empfehle ich den zu wählen, den easy_install vorschlägt.

von SqilliS » Mi 21. Nov 2012, 15:53

Die Nutzung des minted-Paketes wäre traumhaft.

Hab es auch probiert ans Laufen zu bekommen.
Leider ist die Installation von Pygments unter Windows nicht trivial und hab es nicht hinbekommen.

Ich glaube der Punkt, an dem ich gescheitert bin ist, easy_install für die Python-Kommandozeile verfügbar zu machen, um
easy_install Pygments
zu nutzen.


Die Schritte die hoffentlich schon mal richtig waren sind:
- Python installieren (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi)
- In TeXnicCenter: Ausgabeprofile definieren->"Argumente, die an den Compiler übergeben werden sollen": "-shell-escape" hinzugefügt.

TeXnicCenter wirft mir jetzt natürlich die Fehlermeldung:
Package minted Error: You must have 'pygmentize' install to use this package.


Minimalbeispiel:
\documentclass{article}

\usepackage{minted}

\begin{document}

\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}

\end{document}

von bloodworks » Mi 21. Nov 2012, 11:03

Hi mit pygments http://pygments.org/ kann man sehr anspruchsvolle Highlighting Anfroderungen umsetzten. Das zugehörige LaTeX paket heißt minted.
texdoc minted

Ergänzung &

von SqilliS » Mi 21. Nov 2012, 10:54

Die Hervorhebung des &-Zeichens in Tabellen oder in der align-Umgebung kann durch das Definieren z. B. der Farbe mauve
\definecolor{mauve}{rgb}{0.58,0,0.82}
und durch folgenden weiteren Eintrag in literate erreicht werden:
\lstset{literate= %
%...
{\&}{ {\textcolor{mauve}{\&}}  }1
}

von SqilliS » Fr 16. Nov 2012, 18:08

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":
%%====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:
Bild


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

von bloodworks » Di 13. Nov 2012, 17:26

Hi ich sehe 2 Möglichkeiten: entweder du verwendest keywordprefix und texcsstyle oder du arbeistest mit liertate. Mit letzterem ist alles umsetzbar, du muss aber die keyword sebest definieren (irgendwie wird durch literate der shlash abgetrennt.) Ich würde es also so machen:
\lstset{ % Standarddefinitionen 
    language=[LaTeX]TeX,             % Programmiersprache 
        % Hervorhebung der LaTeX-Befehle 
      % keywordsprefix=\\,
    keywordstyle=\color{green},    
     %  texcsstyle=*\color{green},  
       stringstyle=\color{blue},   
%identifierstyle=\color{red},
% keyword style 
keywords={includegraphics,caption, begin, end, label},   % Weitere Schlüsselwörter 
    emph={figure}, emphstyle=\color{cyan},   
    literate={ $ }{ {{\color{red!50!black}\$} } }1% 
    {\\\\}{ {{\textcolor{blue}{\textbackslash\textbackslash}}}}1
     {\\}{ {{\textcolor{green}{\textbackslash}}}}1
     } 
PS: width=1.00\textwidth == width=\textwidth ;)

Syntaxhervorhebung von LaTeX-Code in Listing-Umgebung

von SqilliS » Di 13. Nov 2012, 16:36

Hallo zusammen,

was ich bereits herausgefunden habe:

Die Macro-Namen werden durch die Auswahl von
language=[LaTeX]TeX
erkannt.

Dabei wird jedoch das "\" vor den Macro-Namen nicht mit hervorgehoben.
Dies habe ich mit
texcsstyle=*\color{blue}
korrigiert.

Befehle wie "\includegraphics" müssen scheinbar von Hand hinzugefügt werden:
morekeywords={\includegraphics}

Das Problem ist, zusätzlich Befehle wie "\\" oder "$" hervorzuheben.

Wer kann mir helfen?

VfG SqilliS


Minimalbeispiel:
\documentclass[
   12pt,                % Schriftgroesse 12pt
   paper=a4,            % Layout fuer Din A4
   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}
 

\lstset{ % Standarddefinitionen
	language=[LaTeX]TeX,	          % Programmiersprache
  %%% %%%
  %texcsstyle=*\color{blue},				% Hervorhebung der LaTeX-Befehle
	keywordstyle=\color{green},          % keyword style
	morekeywords={\includegraphics},	% Weitere Schlüsselwörter
	emph={figure}, emphstyle=\color{cyan} 	% Vervorhebung spezieller Befehle	
}
%============================%


\begin{document}


\begin{lstlisting}				

\begin{figure}
	\centering
		\includegraphics[width=1.00\textwidth]{IrgendeinBild}
	\caption{Testbeschriftung}
	\label{fig:IrgendeinBild}
\end{figure}

Ein Satz mit $Inline-Mathe$ und einem\\ 
Zeilenumbruch

\end{lstlisting}


\end{document}
Ergebnis:
Bild

Nach oben