PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit listings paket beim einbinden von c code in latex



lightningboy
21-01-2008, 20:27
Hallo zusammen,
ich würde gerne c-source-code in mein latex dokument einbinden und habe bereits nachgelsen, das dieses wohl am besten mit dem listings paket geht.
ich habe es nun wie folgt versucht:

\usepackage{listings}
\lstset{language=C}

in den Header geschrieben und dann im text wie folgt:

\begin{lstlisting}

#include "struct.h"
void model(void)
/*************************************
Kommentar
************************************/

{

/***********************************
Kommentar
************************************/
D[1]=5.0;
boxkante_a[1]=1.0;
boxkante_b[1]=1.0;
p2b[1] = (D[1]*boxkante_a[1]*boxkante_b[1])/(boxkante_a[1]*boxkante_b[1]);
b2p[1] = (1/p2b[1]);
.
.
.

\end{lstlisting}




Beim Setzten erhalte ich aber nun folgende Fehlermeldungen:
- !Extra}, or forgotten $
- !Missing $ inserted
- Command \itshape invalid in math mode

mit denen ich leider nicht sehr viel anfangen kann.
Vielen Dank im Vorraus für eure Hilfe!

Mit besten Grüßen,
lb

Stefan_K
21-01-2008, 20:31
Hallo,

der Code, den Du zitiertest, ist nicht fehlerhaft, das Problem sollte woanders in Deinem Dokument liegen. Schau mal nach der Zeile, in welcher der Fehler angezeigt wird, oder poste ein vollständiges Minimalbeispiel.

Viele Grüße,

Stefan

lightningboy
21-01-2008, 20:46
mmh das ist komisch, ich habe das vorher beschriebene problem in einem größerem dokument. nun habe ich den code in einzelnes kleines dokument (siehe unten) geschrieben und es funktioniert wunderbar. ich habe dort aber die gleichen pakete geladen wie in dem großen dokument, daher verstehe ich nicht wo der fehler liegen könnte. die vorhin genannten fehlermeldungen zeigt der Setzer mir in jeder Zeile an wo er über den c code geht.

\documentclass[pdftex,a4paper] {scrreprt} % Koma-Skript-Klasse -> Float Umgebung
\usepackage{ngerman}
\usepackage{graphicx}
\usepackage{pxfonts}
\usepackage[applemac]{inputenc}
\usepackage{hyperref}
\usepackage{psfig}
\usepackage{listings}
\lstset{language=C}


\begin{document}
\begin{lstlisting}

#include "struct.h"
void model(void)
/*************************************
Kommentar
************************************/

{

/***********************************
Kommentar
************************************/
D[1]=5.0;
boxkante_a[1]=1.0;
boxkante_b[1]=1.0;
p2b[1] = (D[1]*boxkante_a[1]*boxkante_b[1])/(boxkante_a[1]*boxkante_b[1]);
b2p[1] = (1/p2b[1]);
.
.
.
\end{lstlisting
\end{document}

lightningboy
21-01-2008, 20:52
in dem großen dokument habe ich folgende aufteilung:
% Hauptdatei
\input{header}

\begin{document}
\include{titelseite}
\include{chapter_a}

\appendix
\include{anhang}

\bibliographystyle{geralpha}
\bibliography{literaturverzeichnis}
\end{document}




im "anhang" steht der c code:




\chapter{Anhang}

\section{Anhang Abbildungen}

\section{Anhang Code}

\subsection{model.c}

\begin{lstlisting}
#include "struct.h"


void model(void)
/*************************************
kommentar
************************************/


{

/***********************************
Kommentar
************************************/
D[1]=5.0;
boxkante_a[1]=1.0;
boxkante_b[1]=1.0;
p2b[1] = (D[1]*boxkante_a[1]*boxkante_b[1])/(boxkante_a[1]*boxkante_b[1]);
b2p[1] = (1/p2b[1]);

\end{lstlisting}

localghost
21-01-2008, 20:58
Das ist immer noch nicht wirklich hilfreich. Die Fehlermeldung sagt aber eigentlich schon aus, was nicht richtig funktioniert.

!Extra}, or forgotten $
!Missing $ inserted
Command \itshape invalid in math mode
Irgendwo wird der mathematische Modus begonnen, aber nicht wieder beendet. Die komplette Fehlermeldung sollte eigentlich auch die Zeilennummer nennen, in der dieser Fehler auftritt. Demnach befolgst Du am besten den Rat von Stefan_K und siehst dort mal nach.

lightningboy
21-01-2008, 21:05
Ich glaube ich weiß einigermaßen was passiert aber leider nicht warum. Beim Setzen erhalte ich in einer langen C Kommetar Box die Fehlermeldung "overfull hbox" und dann setzt er mir dort automatisch ein $ hin und beginnt den mathematischen Modus "!Missing $ inserted"...
warum nur tut er dies?
danke schonmal vielmals für die bisherige hilfe!

lightningboy
21-01-2008, 22:25
So nachdem ich die Zeilenlänge verkürzt habe bei den overfull meldungen klappt nun alles. gibt es vielleicht eine option für den listings befehl, so dass der Zeilenumbruch automatisch funktioniert?
gruß