PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C-Code einbinden



elektroniker
20-08-2012, 09:52
\lstset{language=C,alsolanguage=Matlab,frame=shado wbox,frameround=tftf,captionpos=b,tabsize=4,escape char=\$,
basicstyle=\scriptsize\ttfamily,
keywordstyle=\color{darkblue}\bfseries\ttfamily,
stringstyle=\ttfamily\color{darkred},
commentstyle=\itshape\color{darkgreen},
xleftmargin=.52cm,
xrightmargin=.52cm}





\begin{lstlisting}[caption={Orginal Quellcode},float=htb,label=code:hello_world]
//Das ist ein Kommentar
...
uart1_puts_p(PSTR("Serielle Ausgabe\r\n"));
...
\end{lstlisting}


Hallo Leute,
schön das es so ein Forum und vorallem Leute gibt die Anderen bei Ihren Problemchen helfen.
Ich habe ob den Code bei nmir eingebunden.
Ich versuche C-Code darzustellen. Im groben funktioniert das auch ganz gut.
Trotzdem habe ich zwei kleine Problemchen:
1) Ich habe mehrere Codesegmente die unterschiedlich lang sind. Passt eins nicht mehr auf die Seite wird es ganz ans ende des Dokumentes geheftet. Ich will es dann aber auf der nächsten seite haben. Mit \newpage komme ich da nicht weiter.
2) Der Style des C-Codes sieht echt gut aus. Ausser bei der uart-ausgabe (Serielle Ausgabe)wird das Leerzeichen mit so einem Leerzeichensymbol dargestellt, alle anderen Leerzeichen nicht.

Ich hoffe ihr könnt mir helfen.
Vielen Dank im vorraus.


Lieben Gruß
elekroniker

hakaze
20-08-2012, 10:00
Da du das Listing als float angibst, versucht Latex natürlich es gleiten zu lassen, bis auf eine Seite passt, auf der genug Platz ist. Wenn das Listing schon länger als eine Seite ist, sind solche Versuche logischerweise nicht erfolgreich. Dementsprechend wird es eben bis ans Ende des Dokuments durchgereicht.

tl;dr: Streiche die Option "float=htb", um das Listing am aktuellen Ort inklusive Seitenumbruch zu setzen.

elektroniker
20-08-2012, 10:04
Danke.
Das Problem ist schonmal gelöst.
Obwohl ich leider zugeben muss, das ich es nicht verstehe. der betreffende Code hat doch locker auf die letzte seite gepasst. Warum dann nicht auf eine seite in der mitte?
Sei es wie es ist. Wenn jetzt noch das Leerzeichenproblem gelöst wird, bin ich sehr zufrieden.

Aber wirklich 10000000000000 Dank für deine Hilfe

u_fischer
20-08-2012, 10:51
Warum dann nicht auf eine seite in der mitte?

Weil du die Platzierung auf htb beschränkt hast. h kann LaTeX nur nehmen, wenn der Float kleiner als \textfraktion ist, t wenn er kleiner als \topfraktion ist, und b wenn er kleiner als \bottomfraktion ist.

p aus der Liste zu nehmen ist halt keine gute Idee

http://www.tex.ac.uk/cgi-bin/texfaq2html?label=floats

elektroniker
20-08-2012, 12:36
Alles klar. Vielen Dank für die Erklärung

elektroniker
20-08-2012, 14:41
was ich vergessen habe zu sagen ist das dieser String rot dargestellt wird.
Hängt wohl damit zusammen:


stringstyle=\ttfamily\color{darkred},