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}