Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Abstand zwischen Zeilennummern und Code in Listing

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.08.2010
    Beiträge
    27

    Abstand zwischen Zeilennummern und Code in Listing

    Hallo,

    ich will ein bisschen Code in meinem Dokument vorstellen und habe mittels dem lstlisting Paket die Zeilennummerierung aktiviert. Ich will aber, dass mein Code nicht direkt nach der Zeilennummer beginnt, sondern vllt. etwas Abstand ist, also dass der Inhalt des Listings etwas weiter rechts beginnt. Mit \numbersep wird die Zeilennummer zwar verschoben, jedoch weiter nach außen, was nicht schön aussieht. Kennt jemand dazu einen Befehl?

    Hier ein Beispiel (welches komischerweise nicht kompilierbar ist. sieht jemand den fehler?
    Code:
    \documentclass[10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{listings}
    
    \begin{document}
    \lstdefinestyle{code}{language=Python, numbers=left, numberstyle=\tiny, numbersep=0pt, basicstyle=\ttfamily, keywordstyle=\color{black}\bfseries, commentstyle=\color{black}, stringstyle=\ttfamily, showstringspaces=false}
    
    \lstset{style=code, caption=\small{{Constructor of the random channel assignment algorithm.}}, captionpos=b, nolol=true, label=constructor, breaklines=true, firstline=10, lastline=15}
    \begin{lstlisting}
    def main():
        if a > b:
            a = 2*a
        else:
            a = a * a
    \end{lstlisting}
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von localghost
    Registriert seit
    01.11.2006
    Ort
    Braunschweig
    Beiträge
    3.413

    Weg damit

    Lass die Farben weg oder binde xcolor ein. Dir ist aber schon klar, dass Du explizit numbersep=0pt setzt? Lasse das einfach weg und sieh, was passiert.


    Thorsten
    Geändert von localghost (04-09-2011 um 20:21 Uhr)
    TeX und LaTeX, Fragen und Antworten – TeXwelt

    ¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
    ² System: openSUSE 13.1 (Linux 3.11.10), TeX Live 2013, TeXworks 0.5 (r1351)

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.08.2010
    Beiträge
    27
    Ich weiß, dass ich 0pt geschrieben hab. Dabei sieht es trotzdem nicht so toll aus. Ich benutze ein Dokument aus zwei Spalten und selbst mit 0pt sind die Nummern nicht mit in der Spalte. Außerdem ist dann der Abstand zwischen einer Nummer und einer Codezeile zu gering, das sieht nicht nur unleserlich aus, sondern auch hässlich.

    Auf dem folgenden Bild kann man das nochmal sehen: http://imageshack.us/photo/my-images...rmfoto1ph.png/

    Anmerkung: Farben nutze ich eh nicht, ist ein Zurückbleibsel aus einer Vorlage.

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.468
    Also das Minimalbeispiel sieht OK aus, wenn man numbersep=0pt weglässt. Dann ist der Abstand richtig.
    Für dein Spaltenproblem musst du wohl ein neues Beispiel machen, so lässt sich das nicht nachvollziehen.

  5. #5
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von missi Beitrag anzeigen
    ich will ein bisschen Code in meinem Dokument vorstellen und habe mittels dem lstlisting Paket die Zeilennummerierung aktiviert. Ich will aber, dass mein Code nicht direkt nach der Zeilennummer beginnt, sondern vllt. etwas Abstand ist, also dass der Inhalt des Listings etwas weiter rechts beginnt. Mit \numbersep wird die Zeilennummer zwar verschoben, jedoch weiter nach außen, was nicht schön aussieht. Kennt jemand dazu einen Befehl?
    was Du suchst, ist xleftmargin:
    Code:
    \documentclass[10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{listings,showframe}
    \newlength\myxleftmargin
    \newlength\mynumbersep
    \setlength\mynumbersep{10pt}%<--Abstand Zeilennummer-Code
    \settowidth\myxleftmargin{\tiny 88}%<--breiteste Zeilennummer
    \addtolength\myxleftmargin{\mynumbersep}
    \lstdefinestyle{code}{language=Python, numbers=left, numberstyle=\tiny,
    numbersep=\mynumbersep,
    xleftmargin=\myxleftmargin,
     basicstyle=\ttfamily, keywordstyle=\bfseries, stringstyle=\ttfamily, showstringspaces=false}
    \lstset{style=code, captionpos=b, nolol=true, breaklines=true}%, firstline=10, lastline=15<--?
    
    \begin{document}
    \begin{lstlisting}[caption={Constructor of the random channel assignment algorithm.}, label=constructor, firstnumber=8]
    def main():
        if a > b:
            a = 2*a
        else:
            a = a * a
    \end{lstlisting}
    \noindent foo
    \end{document}
    BTW: \small ist ein Schalter und erwartet keinen Parameter, also wenn überhaupt, dann {\small ...} statt \small{...}.

    BTW2: Was soll Dein firstline im \lstset bewirken?
    BTW2a: Du kannst diesen firstline ja mal in das optionale Argument zu lstlisting verschieben ...
    BTW2b: ...und wenn das Listing dann leer bleibt, verkleinere firstline z.B. auf 4.

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

Lesezeichen

Berechtigungen

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