Archiv verlassen und diese Seite im Standarddesign anzeigen : Kommentare zu lang in listings
Meine Kommentare in einem C-Programm sind zu lang.
Ich möchte sie aber nicht kürzen.
Mir ist es egal in welcher Schrift sie sind, Hauptsache sie passen in eine Zeile ohne über den Rand zu schreiben. Doch irgendwie schaffe ich das nicht.
Weiß jemand eine Lösung?
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage{listings}
\lstloadlanguages{C}
\lstset{language=C,commentstyle=\rmfamily\fontsize {10}{10}}
% ein weiteres Beispiel
%\lstset{language=C,commentstyle=\fontfamily{ptm}\ tiny\slshape}
\lstset{frame=single}
\begin{document}
Eine "`for"'-Schleife in C:
\begin{lstlisting}[keywordstyle=\textbf]
/** Dies ist ein kleiner Beispiel-Code *
* *
* Dieser Kommentar ist sehr lang und soll trotzdem in einer Zeile stehen. *
* *
* Noch mehr Kommentar *
* Und noch mehr Kommentar */
int sum = 0; // Summe
int i = 0; /* Schleifenvariable */
// Dieser Kommentar ist zu lang
for (i; i < 10; i++)<n; n="">
{ sum += a[i]; }
\end{lstlisting}
\end{document}<n; n=""></n;></n;>
Na ja, das Problem ist doch, dass man den Quelltext und die Kommentare viel kleiner machen müsste. Das sieht meiner Meinung nach suboptimal aus. Wird sicher über eine der vielen Einstellungen von listings gehen...
z.B. basicstyle=\scriptsize %Schrifteinstellungen einstellen
Ansonsten würde ich das Blatt mit dem Package pdflscape einfach aufs Querformat drehen oder ist das listing mit im Textfluss integriert?
Hoffe, das hilft...
Querformat fällt völlig aus. Das ganze soll im Textfluss sein.
basicstyle ändert den gesamten Code - ist auch nicht gewollt.
mit \scriptsize und auch \tiny habe ich schon rumexperimentiert:
Das Problem hierbei ist, dass die Schrift zwar kleiner wird, aber die Länge der Zeile kaum beeinflusst wird.
Ich bräuchte also etwas, dass die Buchstaben näher zusammen rückt.
Oder eine Schrift, die sehr schmal ist.
Es sind gerade mal 80 Zeichen. Die sollten doch irgendwie in eine Zeile gehen.
countbela666
31-03-2006, 14:36
Das Problem hierbei ist, dass die Schrift zwar kleiner wird, aber die Länge der Zeile kaum beeinflusst wird.Das liegt daran, dass per default fixe Spaltenbreiten genutzt werden (s. listings-Doku S. 18). So sollte es klappen:
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage{listings}
\lstloadlanguages{C}
\lstset{language=C,commentstyle=\tiny\rmfamily,col umns=flexible}
\lstset{frame=single}
\begin{document}
Eine "`for"'-Schleife in C:
\begin{lstlisting}[keywordstyle=\bfseries]
/** Dies ist ein kleiner Beispiel-Code *
* *
* Dieser Kommentar ist sehr lang und soll trotzdem in einer Zeile stehen. *
* *
* Noch mehr Kommentar *
* Und noch mehr Kommentar */
int sum = 0; // Summe
int i = 0; /* Schleifenvariable */
// Dieser Kommentar ist zu lang
for (i; i < 10; i++)
{ sum += a[i]; }
\end{lstlisting}
\end{document}Grüße,
Marcel
Danke,
das war's.
Ich nehme allerdings flexible anstatt fullflexible.
Die Korrektur im Header lautet damit folgenderweise:
\usepackage{listings}
\lstloadlanguages{C}
\lstset{language=C,commentstyle=\small,columns=fle xible}
Und sonst kann man Kommentare ja immer noch über mehrere Zeilen machen.
Mfg Bischi
Und sonst kann man Kommentare ja immer noch über mehrere Zeilen machen.Das schon, aber meine Programme sind nun mal so aufgebaut, dass Zeilen bis zu 80 Zeichen lang sind
Wenn ich nun einen Kommentar habe, der länger ist, weil ich zum Beispiel eine ganze Funktion beschreibe, dann habe ich mehrere Zeilen mit jeweils 80 Zeichen. Dies ist für Latex mit den Standard-Einstellungen zu lang und mal schnell sämtliche Kommentare umzuschreiben ist zu aufwendig
Für alle, die das selbe Problem haben, hier der komplette Code, wie er (vielleicht) in meine Diplomarbeit eingeht.
\documentclass[a4paper,12pt]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{color}
\title{C-Programmierung}
\author{Michael Dommel}
\date{31.03.2006}
\usepackage{listings}
\lstloadlanguages{C, Perl}
\lstset{
keywordstyle=\textbf, extendedchars=ture,
backgroundcolor=\color[gray]{0.9},
numbers=left, numberstyle=\scriptsize, stepnumber=2, numbersep=5pt,
xleftmargin=12pt, xrightmargin=12pt,
commentstyle=\small,columns=flexible,
showstringspaces=false}
\begin{document}
\maketitle
Ein kleines Beispiel mit einer "`for"'-Schleife geschrieben in C:
\begin{lstlisting}[language=C,firstnumber=1]
/** Dies ist ein kleiner Beispiel-Code *
* *
* Dieser Kommentar ist sehr lang und soll trotzdem in einer Zeile stehen. *
* *
* Noch mehr Kommentar *
* Und noch mehr Kommentar */
int sum = 0; /* Summe */
int i = 0; /* Schleifenvariable */
/*Dieser Kommentar ist zu lang*/
for (i; i<10; i++)<n; n="">
{
sum += a[i];
}
\end{lstlisting}
Ab hier steht der Abschnitt, der das Programm erklärt.
\end{document}
Der Programm-Code ist in einem rahmenlosen Kasten, der leicht grau eingefärbt ist </n;>und seitlich etwas hereingerückt ist.<n; n=""> Zu dem ist jede zweite Zeile mit einer Nummer auf der linken Seite markiert.
Edit: doppelt vorhandene Zeile im Code entfernt
</n;>
countbela666
31-03-2006, 19:11
Ich denke mal, bischi meinte mit seiner Anmerkung, dass du die Kommentarzeilen ja auch vom listings-Paket umbrechen lassen kannst (breaklines=true). Dazu musst du ja keine Änderungen an deinem Quellcode vornehmen.
Grüße,
Marcel
Das würde aber nicht so gut ausschauen, da ich bei großen Kommentaren in jeder Zeile links (Spalte 2) und rechts (Spalte 79) einen Stern mache.
Diese Regel würde dann völlig umgeworfen werden.
Das würde aber nicht so gut ausschauen, da ich bei großen Kommentaren in jeder Zeile links (Spalte 2) und rechts (Spalte 79) einen Stern mache.
Diese Regel würde dann völlig umgeworfen werden.
Was wiederum nicht toll aussieht, wenn nicht alle Buchstaben gleich gross sind ;)
MfG Bischi
Doch, denn die Sterne bleiben - zu meiner Verwunderung - schön in einer Reihe untereinander.
Beim Kommentar bin ich soweit zufrieden.
Jetzt bin ich allerdings dabei zu versuchen, dass columns=flexible nur beim Kommentar gültig ist und der eigentliche Code so ist, wie man es gewohnt ist.
philharmony
17-09-2009, 17:49
Der Beitrag ist zwar schon älter, aber ich habe ein ähnliches Problem, die Kommentare gehen über das Blatt hinaus. Da ich aber die Codezeilen sowieso in der Arbeit erläutere, müssen die Komentare eigentlich auch gar nicht erscheinen. Gibt es da ne Möglichkeit? commentstype=\color{white} geht nicht, weil der Quellcode grau hinterlegt ist, das blatt drumrum aber logischerweise Weiß.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.