PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lstlistings (Background) highliting/farbige Hintergrund Hervorhebung



Oekel
28-01-2013, 13:43
Hi,

ich habe mittels:


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

und


\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!



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

Oekel
28-01-2013, 14:22
Zu früh gefreut :confused:

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

Lilliane
28-01-2013, 15:58
Schau mal hier (http://www.mrunix.de/forums/showthread.php?t=74562) und hier (http://www.mrunix.de/forums/showthread.php?t=74176) und hier (http://tex.stackexchange.com/questions/18303/listings-code-snippet-has-white-horizontal-lines-across-it).

Oekel
28-01-2013, 18:39
Schau mal hier (http://www.mrunix.de/forums/showthread.php?t=74562) und hier (http://www.mrunix.de/forums/showthread.php?t=74176) und hier (http://tex.stackexchange.com/questions/18303/listings-code-snippet-has-white-horizontal-lines-across-it).

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:


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


Gibt es dafür Vorschläge?

Grüße Oekel

bobmalaria
28-01-2013, 19:38
hi,

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

vergleiche


\documentclass{article}

\usepackage[]{xcolor}

\begin{document}
\noindent
\colorbox{red}{bla}\\
\setlength{\fboxsep}{0pt} %abstand um box =0
\colorbox{red}{bla}\\
\end{document}

Oekel
29-01-2013, 11:28
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
\setlength{\fboxsep}{0pt} noch alles im Code?

Grüße Oekel

PS: Hilfe!! Habe
\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"

u_fischer
29-01-2013, 11:46
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.

Oekel
29-01-2013, 13:57
Sorry.
Hier zum selber Testen:

\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}

rais
29-01-2013, 16:01
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:


\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

Oekel
29-01-2013, 16:27
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