Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Listing Package und linerange ...

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74

    Listing Package und linerange ...

    Hallo,
    ich binde in meine LaTeX Dokumetation C Code ein, allerding möchte ich nur betimmte Zeilen des Codes einbinden .... das mache ich mit linerange

    also zb siht das ganze dann so aus :
    Code:
    \lstinputlisting[language=systemc,alsolanguage=c++,defaultdialect=gnu,linerange={100-128,200-205},showlines=false, backgroundcolor=\color{hellgrau},caption={Lieting bezeichnung},label =class_data_obj ]{header.h}

    die Zeilen werden auch wie gewünscht angezeigt, allerdings ist die zeilennummerierung durchgehend ... geginnt also bei 1 und zählt dann hoch .,..
    dadurch ist für den leser nicht erkennbar, das es sprünge im code gitb ?

    Gibt es eine Möglichkeit die Blöcke voneinander abzugrenzen ?
    Es würd schoen reichen die Zeilennummern mit 100-128 und dann wieder von 200-205 zu beschriften.

    Ich habe schon in der Beschreibung zum Litsting Package nachgeschaut
    Then, there are several ideas for the future. Some have already been stated as
    `to do’s; some came from other people and are stated below; some more are far
    from being implemented, e.g. linerange=[hinter i]{hline range listi} which prints
    all lines in the range and executes hinter i when omitting some code lines. The
    main problem here are frames and background colours; what should happen to
    them? In fact, the problem is how this can be coded. Another idea is to change
    the background colour (or the basic style) for particular code blocks. This, too, is
    not easy.
    Danke für Hinweise
    Chris

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    330
    Hallo Chris21,

    schau mal in ie doku von listings da gibt es bei mir, irgendwo unter 4.8 Line numbers
    -> \thelstnumbers ...

    juergen

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    hi,
    danke erstmal, aber so richtig schlau werde ich da nicht draus ...
    gitbs vielleicht noch ein weiteres beispiel ? .....
    hab schon gegoogelt aber nicht wirklich was gefunden ....

    Danke
    chris

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    Hi,

    also ich hab mir das angeschaut, aber ich denke du hast mich falsch verstanden.

    Ich möchte nicht ein Listing mit den Zeilennummern 1-100 und das folgende Listing mit den Zeilennummeer 145-150 beschriften,

    ich möchte in einem einzigen Listing die Zeilennummern 1-100 und 145-150 vergeben ......

    also soll innherhalb des lsistings so aussehen

    Listing 1
    ..
    ..
    99 code
    100 code
    145 blabla
    146 blabla
    ..
    ..

    da ich mit linerange innherhalb des listings schon zeilen rauschneide, durch die springende nummerierung von 100 zu 145 soll erkennbar sein, das inerhalb des listings ein paar codezeieln fehlen .......

    Falls jemand noch ein Tipp hat ....
    (Ich hab irgdwo von dem Pckage linum (o.ä.) gelesen, aber leider keine dokumentation gefunden) ......

    mir würde es auch reichen z.B. einen strich zwischen den zeilen 100 - 145 machen zu können ..... dachte mir ich kann das lsiting package irgendwo ein \hline reinpacken ..... aber leider hab ich von packages schreiben abolut keine ahnung .... falls jemand ein tutorial kennt wie man eigene packages schreibt wäre ein link nett .... danke

    Danke nochmals,

    Chris

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    Hi,
    hab das nochmal versucht und bin jetzt bischen dahintergestiegen.

    ich hab nun ein neuen counter angelegt {linec},
    der soll dann bei jedem sprung neu auf einen startwert gesetzt werden, deswegen das setcounter{linec}{startwert}

    \newcounter{linec}
    \renewcommand*\thelstnumber{\oldstylenums{\value{l inec}}}

    \lstinputlisting[language=systemc,alsolanguage=c++,defaultdialect=g nu,linerange={1\setcounter{linec}{1}-23,100\setcounter{linec}{100}-120},showlines=false, backgroundcolor=\color{hellgrau},caption={test}, label = test.cpp]{test.cpp}
    da kommen massenhaft fehler "missing number , treated as zero"
    vielleicht kann mir jemand ein hinweis geben ?

    Danke
    Chris

  6. #6
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    hi,

    ich kenne das listing paket nicht allzu genau, aber meines wissens kann man doch einen escape-parameter definieren welcher es erlaubt, "normale" befehle innerhalb der listing umgebung aufzurufen.

    vielleicht ist es möglich den befehl \thelstnumbers zwischen diese escape-characters zu schreiben um damit innerhalb einer umgebung verschiedene zeilennummern zu realisieren.


    EDIT: habs doch eben noch schnell probiert.
    Code:
    \begin{lstlisting}[firstnumber=1,escapechar=|]
    Private Sub Application_NewMail()
    |\setcounter{lstnumber}{5} \vspace{5em}|
        Dim Foldername As String
        Dim objIn As MAPIFolder
    der counter wird geändert und es wird ein abstand eingefügt. allerdings unterbricht dieser abstand den äußeren rahmen. sieht aber gar nicht so schlecht aus.
    du musst dann aber deine beide code-abschintte in getrennte dateien ablegen um diesen befehl zwischendrin aufzurufen

    gruß
    Geändert von bobmalaria (20-05-2007 um 12:02 Uhr)
    Mein Ball ist umgefallen

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    Hallo,
    danke erstmal dass du es dir angeschaut hast.
    irgendwie ist mir nicht ganz wohl dabei in meinen C Quelltext LaTeX Code zur Dokumentation einzubauen.
    (hab das schon mal gemacht wie in der doku beschrieben um auf einzelne zeilen zu referenzieren, aber wie gesagt .. da bin ich noch mal überlegen wie ich das in der endgültigen version handhaben soll)

    Natürlich könnte ich zwei verschiedene Versionen meines Quellcodes machen,
    aber das scheint mir irgendwie sinnlos ... immer alles doppelt ändern zu müssen.

    Ist es denn nicht möglich das bei dem aufruf einzubinden, etwa so:
    Code:
    \lstinputlisting[firstnumber=1,escapechar=|,language=systemc,alsolanguage=c++,defaultdialect=gnu,linerange={99-101,|\setcounter{lstnumber}{5} \vspace{5em}|,124-128},showlines=false, backgroundcolor=\color{hellgrau},caption={test},label =test]{test.h}
    also habs auch grad probiert .... so geht es nicht! .. aber vielleicht irgendwie so ähnlich ??

    Danke
    Chris

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    hey,
    jetzt hab ich mal in die /listings.dtx reingeschaut.
    ( hab einfach mel eine Datein geöffnet die ich unter http://www.ctan.org/tex-archive/macr...trib/listings/ gesehen habe)

    Also da steht ein Eintrag drinn:

    lstisaspect[experimental]{includerangemarker,rangebeginprefix,rangebeginsuf fix,rangeendprefix,rangeendsuffix,rangeprefix,rang esuffix}
    also hab ich einfach mal getestet und
    \lstinputlisting[language=systemc,alsolanguage=c++,defaultdialect=g nu,linerange={23-40,120-130},includerangemarker=true,showlines=false, backgroundcolor=\color{hellgrau},caption={SystemC} , label = test.cpp]{test.cpp}
    probiert, und es geht !! jetzt werden als zeilennummern 23, 24 usw bis 40 angezeigt, danach gehts mit zeile 120,121,usw bis 130 weiter !!!!

    Ich denk es hilft vielleicht mal dem ein oder anderen der das gleich sucht wie
    ich hier.

    Irgdwie kann man wohl auch noch mit

    }{\lstset{rangeprefix=\{\ ,rangesuffix=\ \}}}{}
    irgendwelche zeichen sezten mit denen man den code eingrenzt,
    steht aber auch in der oben genannten datei ( einfach nach includerangemarker suchen)

    Danke für die Unterstützung!

    Chris

  9. #9
    herbertwind
    Gast
    Ich verwende folgenes Codestück:
    Code:
     \lstinputlisting[frame=single,label=list:VSservice2,language={[Sharp]C},
     linerange={1-17,52-70},includerangemarker=true,showlines=false,
     caption=Sourcecode der Web-Service-Implementierung] 
     {sourcecode/NET/SimpleHotelService/SimpleHotelService.asmx.cs}
    Die Zeilen 18-51 werden richtigerweise nicht angezeigt, jedoch ist die Zeilennummerrierung bei den verbleibenden Zeilen durchgehend (1-36).
    Hat jemand eine Idee woran das liegt?

    Ich verwende Listings 1.4.
    Code:
    \usepackage{listings}
    \lstset{extendedchars=true}
    \lstset{numbers=left, numberstyle=\tiny, numbersep=5pt} 
    \lstset{language=XML,basicstyle=\scriptsize,breaklines=true}

  10. #10
    Registrierter Benutzer
    Registriert seit
    18.04.2007
    Ort
    Stuttgart
    Beiträge
    64
    Könntest du mal ein Minimalbeispiel posten, den wenn ich genau deine Code nehme, dann ist auch die Nummerierung von 18 bis 51 nicht vorhanden

  11. #11
    herbertwind
    Gast
    Hier ein vollständiges Beispiel, welches bei mir nicht richtig funktioniert:
    Code:
    \documentclass[a4paper,11pt,oneside]{book}
    
    \usepackage{listings}
    \lstset{extendedchars=true}
    \lstset{numbers=left, numberstyle=\tiny, numbersep=5pt} 
    \lstset{language=XML,basicstyle=\scriptsize,breaklines=true}
    
    \begin{document}
    
     \lstinputlisting[frame=single,label=list:VSservice2,language={[Sharp]C},
     linerange={1-17,52-70},includerangemarker=true,showlines=false,
     caption=Sourcecode der Web-Service-Implementierung] 
     {SimpleHotelService.asmx.cs} 
    
    \end{document}

  12. #12
    Registrierter Benutzer
    Registriert seit
    14.04.2006
    Beiträge
    74
    Hallo,
    ich glaube du musst ein älteres Listings Package installieren.
    Das hat mich ziemlich viele Nerven gekostet.
    Hier habe ich noch ein Thread dazu eröffnet :
    http://www.mrunix.de/forums/showthread.php?t=51051

    Die alten Sourcen habe ich letztendlich von meinem anderen PC, auf dem eine älter Version installiert war, und es funktioniert hat, kopiert.
    Dann habe ich es nach Möglichkeit 2 von sommerfee in dem Oben verlinkten Thread manuell installiert.

    Falls du es nirgendwo findest, kann ich dir die DAteien per Mail schicken.

    Irgendwie verstehe ich aber nicht warum so eine sinnvolle Funktion bei dem neuen Listing Package nicht mehr da ist, vielleicht weis es jemand von euch ?

    Chris

Lesezeichen

Berechtigungen

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