Codezeile + Kommentar zu lang [listings], Anregungen

Tabellen und Grafiken erstellen und anordnen


icecoldkilla
Forum-Anfänger
Forum-Anfänger
Beiträge: 26
Registriert: So 27. Dez 2015, 16:16

Codezeile + Kommentar zu lang [listings], Anregungen

Beitrag von icecoldkilla »

Hi zusammen,

ich habe jetzt nicht das perfekt passende Unterforum gefunden, also schreibe ich mal hier rein. Wenns nicht passt, bitte verschieben.

Zum Problem:

Ich will C++-Code in mein Latex Dokument einbinden. Als wenn das nicht schon schwer genug wär habe ich nun ein Problem mit dem Design, vielleicht kann mir wer ja Anregungen geben.
Und zwar sind manche Codezeilen lang und/oder der Kommentar zu dieser Zeile ist sehr lang. Auf jeden Fall schaut der "Kommentartext" immer aus dem Codefenster hinaus, teilweise sogar über die Seite. Eine gedrehte Seite hat nur an wenigen Stellen Erfolg gebracht. Ausserdem habe ich nach langem googlen den Text jetzt etwas kleiner gekriegt, trotzdem besteht das Problem noch ab und zu. Was noch nicht optimal ausschaut ist, dass die Kommentare nicht bündig miteinander anfangen. Sicherlich machbar aber hat jetzt mal keine so hohe Priorität.
Lange Rede kurzer Sinn: Wie stelle ich meinen Code am schönsten dar?

Hier noch der LaTeX Code, ich weiß, kein Minimalbeispiel, aber damit lässt sich besser zeigen, was ich meine.
\documentclass[parskip=full]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[autostyle=true,german=quotes]{csquotes}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{listings}
\usepackage{float}
\usepackage{xcolor}
\usepackage{pdflscape}
\usepackage{textcomp}

\begin{document}	
\lstset{language=C++,
                basicstyle=\ttfamily,
                keywordstyle=\color{blue}\ttfamily,
                stringstyle=\color{red}\ttfamily,
                commentstyle=\small\color{teal}\ttfamily,
                columns=flexible,
                morecomment=[l][\color{magenta}]{\#}
}

\lstset{literate=%
	{Ö}{{\"O}}1
	{Ä}{{\"A}}1
	{Ü}{{\"U}}1
	{ß}{{\ss}}2
	{ü}{{\"u}}1
	{ä}{{\"a}}1
	{ö}{{\"o}}1
	{µ}{{\textmu}}1
}

\begin{landscape}
\begin{lstlisting}[frame=single, backgroundcolor=\color{yellow!10}, numbers=left, tabsize=2]
#include <avr/io.h>
#include <stdlib.h>
#include <math.h>
#define F_CPU 12000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#define BAUDRATE 57600
#define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 12UL))) - 1)

void setup();											// Unterfunktion, in der grundlegende Einstellungen vorgenommen werden
void timer_init();										// Interrupts initialisieren (wird nicht verwendet)
void adc_init();										// ADC initialisieren
void USART_init(void);									// USART initialisieren (wird nicht verwendet)
void USART_send( unsigned char data);					// Zeichen ausgeben
void USART_putstring(char* StringPtr);					// String ausgeben
void usart(int output);									// Integer in String umwandeln und ausgeben
void schalten();										// Unterfunktion zur zeitlich richtigen Beschaltung des MOSFETS
void lower_halfwave();									// Unterfunktion für die untere Halbwelle (Nulldurchgang detektieren, MOSFET schalten, steigende Flanke erkennen)
void comparator_init();									// Initialisierung für den Komparator (wird nicht verwendet)
void upper_halfwave();									// Unterfunktion für die obere Halbwelle (Spannungsmaximum finden und auslesen)
int adc();												// Unterfunktion ADC
int timing(double time);								// Unterfunktion zur Berechnung der Schaltzeit
double calculation();									// Unterfunktion zur Berechnung der prozentualen Überschreitung
double percentage_increase;								// Prozentuale Überschreitung des definierten Maximalwertes
double limit = 560;										// hier den Schwellenwert einstellen (512=2,5V), neu: 538
int schaltzeit = 0;										// Schaltzeit des MOSFETS (in µs)
int adc_value = 0;										// Variable für den aktuellen ADC Wert
int highvalue;											// Variable für den aktuellen ADC Maximalwert
int counter = 0;										// Counter für die sichere Erkennung des Spannungsmaximums
\end{lstlisting}
\end{landscape}
\end{document}

icecoldkilla
Forum-Anfänger
Forum-Anfänger
Beiträge: 26
Registriert: So 27. Dez 2015, 16:16

Beitrag von icecoldkilla »

PUSH! Jemand eine Idee?

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 809
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag von Beinschuss »

breaklines=true im lstset sollte den Umbruch hinbekommen.

icecoldkilla
Forum-Anfänger
Forum-Anfänger
Beiträge: 26
Registriert: So 27. Dez 2015, 16:16

Beitrag von icecoldkilla »

Beinschuss hat geschrieben:breaklines=true im lstset sollte den Umbruch hinbekommen.
Hey Beinschuss, vielen Dank. Genau das habe ich gesucht. Den Umgebrochenen Text habe ich dann mit Tabulatoren weiter nach hinten geschoben, damit der umgebrochene Kommentar nicht im Quellcode drinnensteht. Gibt es auf Latex bzw. Listings-Seite auch ne Erkennung wo Kommentare im Quellcode sind und wie mit diesem umgegangen wird?

Antworten