Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Kommentare zu lang in listings

  1. #1
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308

    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?

    Code:
    \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++)
    { sum += a[i]; }
    \end{lstlisting}
    \end{document}
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.04.2005
    Beiträge
    120
    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...

  3. #3
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    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.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  4. #4
    Registrierter Benutzer Avatar von countbela666
    Registriert seit
    15.04.2005
    Ort
    Berlin
    Beiträge
    2.317
    Zitat Zitat von Caveman
    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:
    Code:
    \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,columns=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

    Listen to me children of the night, beyond the doors of darkness you will find
    a thousand worlds for you to see here, take my hand and follow me...

  5. #5
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Danke,
    das war's.

    Ich nehme allerdings flexible anstatt fullflexible.

    Die Korrektur im Header lautet damit folgenderweise:
    Code:
    \usepackage{listings}
    \lstloadlanguages{C}
    \lstset{language=C,commentstyle=\small,columns=flexible}
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  6. #6
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Und sonst kann man Kommentare ja immer noch über mehrere Zeilen machen.

    Mfg Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  7. #7
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308

    Lightbulb Lösung

    Zitat Zitat von 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.
    Code:
    \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++)
    {
      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 und seitlich etwas hereingerückt ist. Zu dem ist jede zweite Zeile mit einer Nummer auf der linken Seite markiert.

    Edit: doppelt vorhandene Zeile im Code entfernt
    Geändert von Caveman (01-04-2006 um 09:13 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  8. #8
    Registrierter Benutzer Avatar von countbela666
    Registriert seit
    15.04.2005
    Ort
    Berlin
    Beiträge
    2.317
    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

    Listen to me children of the night, beyond the doors of darkness you will find
    a thousand worlds for you to see here, take my hand and follow me...

  9. #9
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    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.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  10. #10
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von Caveman
    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

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  11. #11
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    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.
    Geändert von Caveman (01-04-2006 um 08:46 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  12. #12
    Registrierter Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    36
    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ß.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •