Anzeige:
Ergebnis 1 bis 10 von 10

Thema: lstlistings (Background) highliting/farbige Hintergrund Hervorhebung

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Thumbs up lstlistings (Background) highliting/farbige Hintergrund Hervorhebung

    Hi,

    ich habe mittels:
    Code:
    \lstdefinelanguage[use]{OCL}[decorative]{OCL}{
    morekeywords={association, constraints, isUndefined},
    keywordstyle=\color{blue}\bfseries, 
    morekeywords=[2]{role, between, self,}, 
    keywordstyle=[2] \color{magenta}, 
    }
    und

    Code:
    \lstinputlisting[name=USE, label=use, linerange={1-7}, backgroundcolor=\color{yellow}]{code/Mau-Mau.use}
    einige Codezitate eingebunden.

    Nun kenne ich die \colorbox bislang nur mit zwei Argumenten.
    Aber anscheinend funktioniert auch folgendes wunderbar!


    Code:
    keywordstyle=\color{blue}\colorbox{green}
    Gibt es noch mehr nette Möglichkeiten hervorzuheben?
    Etwas dezenter wäre nicht schlecht. Zumal ja auch nicht jeder Dokumente in Farbe ausdrucken kann habe ich diesbezüglich noch keine gute Idee.

    Grüße Oekel
    Geändert von Oekel (28-01-2013 um 12:44 Uhr) Grund: Rechtschreibung

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Unhappy weiße Linien...

    Zu früh gefreut

    Durch die farbigen Kästen wird nun der Zeilenabstand künstlich vergrößert.
    Dies führt wiederum dazu, dass lstlistings mit farbigen Hintergrund und Rahmen "Lücken" aufweisen.

    Gibt es eine anständige Lösung dies zu entfernen bzw. zu umgehen?

    (Siehe Anhang)

    Grüße Oekel

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.08.2006
    Beiträge
    192
    Schau mal hier und hier und hier.

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Cool Nicht so richtig...

    Zitat Zitat von Lilliane Beitrag anzeigen
    Schau mal hier und hier und hier.
    Leider alles nicht hilfreich, da mein Problem etwas anders ausschaut:

    Deren Streifen entstehen entweder durch zu große Zeilenziffern oder durch eine schlechte Darstellung des PDF-Readers.

    MEINE entstehen jedoch durch die zu großen colorboxen. Letzendlich schon ähnlich wie das Problem mit den Ziffern, denn beides lässt die Größe der Zeile wachsen und somit sind die Rahmenlinien zu klein berechnet worden.

    Nun gibt es meiner Auffassung nach nur 2 Möglichkeiten, dessen Umsetzung ich jedoch nicht kenne:

    1. die colorboxen kleiner machen
    2. die Berechnung des Rahmens irgendwie auf einer größeren Schrift berechnen lassen (faken)


    Gibt es dafür Vorschläge?

    Grüße Oekel

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

    kann es sein das um die box noch etwas gezeichnet wird und das dann den abstand erhoeht.

    vergleiche

    Code:
    \documentclass{article}
    
    \usepackage[]{xcolor}
    
    \begin{document}
     \noindent
    \colorbox{red}{bla}\\
    \setlength{\fboxsep}{0pt} %abstand um box =0
    \colorbox{red}{bla}\\
    \end{document}
    Mein Ball ist umgefallen

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Question

    Hi,

    also bei mir sehen die beiden Boxen tatsächlich anders aus.
    Jetzt frage ich mich natürlich, ob die obere nicht dem Normalfall entspricht?
    Und wo sähe ich denn, wie viel pt die normale \colorbox "drum herum" hat?

    Ich empfinde das gerade nicht als einleuchtend. Wenn es einen Abstand gibt, wieso kann dieser dann nicht mittels \colorbox[Parameter] eingestellt werden?

    Oder anders gefragt: was ändert mir
    Code:
    \setlength{\fboxsep}{0pt}
    noch alles im Code?

    Grüße Oekel

    PS: Hilfe!! Habe
    Code:
    \setlength{\fboxsep}{0pt}
    gerade Mal in die \lstdefinelanguage direkt vor \keywordstyle geschrieben. Und nun wirds wild, denn dort bewirkt dies genau das Gegenteil zum obigen Minibeispiel. Die Box wird noch größer! Oder um in LateX-Sprache zu bleiben "riesig"
    Geändert von Oekel (29-01-2013 um 10:33 Uhr) Grund: in lstdefinelanguage getestet

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Du solltest aufhören, Codeschnipsel zu schicken. Wenn du möchtest, dass dir jemand hilft, dann ermögliche es, indem du vollständige, kleine Testdokumente erstellst.

  8. #8
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Talking Minibeispiel

    Sorry.
    Hier zum selber Testen:
    Code:
    \documentclass{article}
    \usepackage{listings}
    \usepackage{color}
    \begin{document}
    \lstset{language=OCL, numbers=left, numberstyle=\tiny, numbersep=5pt, framexleftmargin=5mm, breaklines=true,
    keywordstyle=\bfseries\colorbox{green}, 
    keywordstyle=[2] \bfseries\colorbox{yellow},
    keywordstyle=[3] \bfseries\colorbox{red}}
    \begin{lstlisting}[linerange={1-7}, caption=Test, frame=single, frameround=ftft, linewidth=4cm, ]
    Dies ist Text ohne Keywords usw., etc. s.u. \dots
    context,pre,inv,post
    or,xor,and,not,implies,if,then,else,endif
    Und zwischendurch noch Mal etwas Text ohne Hervorhebungen. Man beachte den Zeilenabstand ohne Fehler und ohne Lücken im Rahmen
    Boolean,Integer,Real,String,Set,Sequence,Bag
     --some Comment
    \end{lstlisting}
    \end{document}

  9. #9
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Ein Problem dürfte sein, daß sich die \colorbox nach dem richtet, was in ihr ist.
    Das lässt dann die Ränder im gleichen Abstand zum Inhalt, aber wenn so ein Inhalt mal Unterlänge, mal Überlänge, mal weder noch oder gar beides aufweist ... vllt hilft Dir ein \strut:
    Code:
    \documentclass{article}
    \usepackage{listings}
    \usepackage{color}
    \newcommand*\mycolorbox[2]{%
      \begingroup
        \setlength\fboxsep{0pt}%
        \raisebox{0pt}[0pt][0pt]{\colorbox{#1}{\strut#2}}%
      \endgroup
    }
    \begin{document}
    \lstset{language=OCL, numbers=left, numberstyle=\tiny, numbersep=5pt, framexleftmargin=5mm, breaklines=true,
    keywordstyle=\bfseries\mycolorbox{green}, 
    keywordstyle=[2] \bfseries\mycolorbox{yellow},
    keywordstyle=[3] \bfseries\mycolorbox{red}}
    \begin{lstlisting}[linerange={1-7}, caption=Test, frame=single, frameround=ftft, linewidth=4cm, ]
    Dies ist Text ohne Keywords usw., etc. s.u. \dots
    context,pre,inv,post
    or,xor,and,not,implies,if,then,else,endif
    Und zwischendurch noch Mal etwas Text ohne Hervorhebungen. Man beachte den Zeilenabstand ohne Fehler und ohne Lücken im Rahmen
    Boolean,Integer,Real,String,Set,Sequence,Bag
     --some Comment
    \end{lstlisting}
    \end{document}
    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  10. #10
    Registrierter Benutzer
    Registriert seit
    24.01.2013
    Beiträge
    8

    Exclamation Gelöst

    Zitat Zitat von rais Beitrag anzeigen
    Ein Problem dürfte sein, daß sich die \colorbox nach dem richtet, was in ihr ist.
    ... vllt hilft Dir ein \strut:
    Danke! optisch nicht perfekt, da nun die farblichen Blöcke leicht ineinander ragen. Aber um weiten besser.

    Ich denke damit kann ich arbeiten.

    Grüße Oekel

Stichworte

Lesezeichen

Berechtigungen

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