Probleme mit Code-listing !Missing \endgroup inserted

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Kanudl
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Sa 11. Okt 2014, 22:26
Wohnort: Lakefield

Probleme mit Code-listing !Missing \endgroup inserted

Beitrag von Kanudl »

Servus zusammen,

ich habe ein kleines Problem und komme einfach nicht weiter.
In meiner Präambel habe ich 2 definelistings:
\usepackage{listings}
\usepackage{color}
 
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{bashcode}{rgb}{0,0,0}
\definecolor{backcolour}{rgb}{0.9,0.9,0.9}


\lstdefinestyle{bash}
{
	columns=flexible,
	showstringspaces=false,
	basicstyle=\footnotesize\ttfamily,
	frame=single,
	frameround=tttt	
}


\lstdefinestyle{python}
{
	language=python,
    backgroundcolor=\color{backcolour},   
    commentstyle=\color{codegreen},
    keywordstyle=\color{magenta},
    numberstyle=\tiny\color{codegray},
    stringstyle=\color{codepurple},
    basicstyle=\footnotesize\ttfamily,
    breakatwhitespace=false,         
    breaklines=true,                 
    captionpos=b,                    
    keepspaces=true,                 
    numbers=left,                    
    numbersep=5pt,                  
    showspaces=false,                
    showstringspaces=false,
    showtabs=false,                  
    tabsize=2
}

Anschließend versuche ich die Konventionen in einer Tabelle zu erläutern:
\begin{table}[h]
	\begin{tabular}{p{0.25\textwidth}|p{0.75\textwidth}}
	\textbf{Konventionen} 	& 	\textbf{Beschreibung}			\\\hline\hline
	\texttt{0x1234} 		&	Diese Schreibweise kennzeichnet Eingaben, Namen, Adressen oder zeigt Ausgaben.	\\\hline
	"{}cd ..." 				&	Diese Schreibweise kennzeichnet einen Programmcode	\\\hline
	\Ctrl + \keystroke{a}	&	Zeigt Tastenkombinationen an.	\\\hline
	\emph{Highlighted} Text	&	Hervorgehobener Text weist auf wichtige Dinge hin oder dient als Kommentar im Programmcode oder Eingaben.	\\\hline
\begin{lstlisting}[style=python]
import numpy as np
def incmatrix(genl1,genl2):
    return M
\end{lstlisting}				&	Stellt den Programmcode dar	\\\hline
	\end{tabular}\normalsize
\caption{Text-Konventionen}	
\label{table:Text-Konventionen}
\end{table}
Und erhalte anschließend den Fehler:
! Missing \endgroup inserted.

Wenn ich aber zusätzlich ein
\lstset[style=python]
in die Präambel einfüge funktioniert es, jedoch vermischt er dann die definestyles. D. h. ich habe die festgelegten Parameter von definestyle bash in Kombination mit definestyle python.

Gibt es eine Möglichkeit das lstset blockweise einzufügen, also bei Bedarf, wenn ich einen Codeblock einfüge? Oder kann man einfach 2 lstset einfügen, die dann getrennt funktionieren?

Nachtrag:
I've inserted something that you may have forgotten.
(See the <inserted text> above.)
With luck, this will get me unwedged. But if you
really didn't forget anything, try typing `2' now; then
my insertion and my current dilemma will both disappear.
! Missing \endgroup inserted.

Kommt als Fehlermeldung hinzu.

Ebenfalls muss ich die Zeile
\begin{lstlisting}[style=python]
auf
\begin{lstlisting}
ändern.

Hier ist es dann seltsam. Habe ich kein lstset funktioniert nur definestyle bash und der Code in der Tabelle wird unformatiert als Listing dargestellt und überschneidet einfach die Zeilen in der Tabelle "Konventionen".
Füge ich lstset[style=python] ein, erhalte ich den Code formatiert, allerdings gemischt mit der bash-Formatierung.

Danke und Gruß vorab.


:shock:

Kanudl
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Sa 11. Okt 2014, 22:26
Wohnort: Lakefield

Beitrag von Kanudl »

Manchmal ist LaTex doch ein Hu*enkind. Warum es jetzt mit einer Klammer klappt, ist mir echt ein Rätsel. Zuvor hat es ja auch ohne geklappt...

Also editierte ich folgende Zeile in meiner Konventionstabelle:
{\begin{lstlisting}[style=python]
import numpy as np
def incmatrix(genl1,genl2):
    return M \end{lstlisting}	}
Die Klammern vor \begin und nach \end haben die Lösung gebracht.

Falls jemand ein listing in einer Tabelle (listing in table) machen möchte, dann einfach Klammern setzen und that´s it.

cheers

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Ich geb dir einen Tipp: Geh die Sache langsam an, in der Ruhe liegt die Kraft. LaTeX läuft seit vielen Jahren für viele Menschen sehr stabil. Du kannst also davon ausgehen, dass du irgendwo nen Tippfehler oder nen Denkfehler drin hast.

Sowas kannst du dann beheben, wenn du den Code Stück für Stück auskommentierst um die Ursache einzugrenzen. Ein ausführliche Anleitung zum Vorgehen findest du auf TeXwelt.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Kanudl
Forum-Anfänger
Forum-Anfänger
Beiträge: 16
Registriert: Sa 11. Okt 2014, 22:26
Wohnort: Lakefield

Beitrag von Kanudl »

:D

Danke, manchmal steigert man sich doch etwas rein und verbringt Stunden damit, in LaTex einen Fehler zu suchen ^^

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Das Problem ist "numbers=left" im Pythonstil. Intern wird dort ein Befehl benutzt, der & zur Trennung von Argumenten benutzt und durch die & in deiner Tabelle kommt der durcheinander. Deine Methode, das Listing durch Klammern zu schützen, ist da völlig richtig.

Antworten