PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lstlisting - Bindestrich bekommt kein Highlighting im Quellcode



lukesky333
16-01-2013, 03:26
Hallo Leute,

ich schreibe an meiner Bachelor-Arbeit und möchte Source-Code darstellen. Dazu verwende ich "lstlisting" und das geht auch soweit super. ...wären da nicht 2 kleine Probleme:


Wenn im Quelltext ein "-" drin ist, dann bekommt dieser nicht das Higlighting wie der Rest. Warum ist das so und was kann ich dagegen machen?
Dann habe ich das Problem mit den waagerechten Strichen im Hintergrund, das hier schon oft angefragt wurde. Da scheint es ja keine einfache Lösung zu geben oder doch?


Na ich hoffe mir kann da wer weiterhelfen, viel Zeit hab ich nicht mehr. :D

Danke schon mal!!!

rstuby
16-01-2013, 07:42
1. keine Ahnung
2. meine mich zu erinnern, dass richtig auffällige weiße Zwischenstreifen dadurch vermieden werden können, dass man die Schriftgröße der Zeilennummern verringert (hofffe jemand weiß wie). Dann ist die Frage ob die restliche "Streifigkeit" auch im Druck sichtbar ist oder nur im Reader.

hakaze
16-01-2013, 09:23
zu 1. ohne Minimalbeispiel kann ich dazu keine Aussage machen, außer: es hängt von den von dir eingestellten Formatierungen ab.

zu 2. Hier ist es so wie rstuby schrieb: wenn die Schrift für numberstyle größer ist als im basicstyle, treten solche Linien auf.
Abhilfe:
- ersteres kleiner machen (Link zur Beschreibung auf tex.sx (http://tex.stackexchange.com/questions/18303/listings-code-snippet-has-white-horizontal-lines-across-it))
- Rahmen und Hintegrund von einem anderen Paket machen lassen (z.b. mdframed (http://www.ctan.org/pkg/mdframed))
- listings (http://www.ctan.org/pkg/listings) durch (zum Beispiel) minted (http://www.ctan.org/pkg/minted) ersetzen

lukesky333
16-01-2013, 09:54
Hier mal der Code auf das "Wichtigste" reduziert.

Das mit den Streifen tritt scheinbar nur bei unter 100% auf, damit werde ich wohl leben müssen. Allerdings die fehlenden Bindestriche im "Code", die muss man doch wiederholen können oder?

Vielleicht hat ja jemand von Euch den geschulten Blick... :)




% LaTeX-Vorlage Version 3.1, Juli 2011

\documentclass[a4paper,bibliography=totoc,oneside]{scrbook}
\usepackage{multicol}
\usepackage{longtable, lscape}
\usepackage{fancyvrb, listings}

\usepackage[usenames,dvipsnames,svgnames]{xcolor}

\lstset{ %
backgroundcolor=\color{Red}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\scriptsize\ttfamily, % footnotesize
belowcaptionskip=1\baselineskip,
breaklines=true,
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
captionpos=b, % sets the caption-position to bottom
deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
morekeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{Grey}, % the style that is used for the line-numbers
rulecolor=\color{Black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false,
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{DarkOrange}, % string literal style
tabsize=4, % sets default tabsize to 2 spaces
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
\lstdefinestyle{python}{
backgroundcolor=\color{WhiteSmoke},
commentstyle=\itshape\color{purple!40!black},
frame=single,
identifierstyle=\color{NavyBlue},
keywordstyle=\bfseries\color{green!40!black},
language=Python,
stringstyle=\color{orange},
xleftmargin=\parindent,
}
\lstdefinestyle{bash}{
backgroundcolor=\color{Black},
commentstyle=\itshape\color{Grey},
frame=L,
identifierstyle=\color{LightGray},
keywordstyle=\bfseries\color{Indigo},
language=bash,
morekeywords={rayk@bacnet01},
numbers=none,
stringstyle=\color{FireBrick},
xleftmargin=\parindent,
}
\usepackage{hyperref}

\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{amsmath,amssymb,amsfonts,amstext}

\usepackage{helvet}
\renewcommand{\familydefault}{cmss}

\usepackage[pdftex]{graphicx}
\usepackage{array}

\setlength{\textheight}{225mm}
\setlength{\textwidth}{1.05\textwidth}

\tolerance = 9999
\sloppy

\begin{document}

\lstset{escapechar=@,style=bash}
\begin{lstlisting}[caption=bash, label=lst:bash]
$ apt-get install apache2 libapache2-mod-php5 mysql-server
$ apt-get install nagios3 nagios-plugins ndoutils-nagios3-mysql nagios-nrpe-plugin
\end{lstlisting}
\label{code}

\end{document}

hakaze
16-01-2013, 10:11
Für die Bindestriche wird der basicstyle verwendet. Da du diesem für den bash-Stil keine extra-Farbe verpasst hast, ist er per default schwarz ;)

Das lässt sich einfach prüfen, indem du die Zeile für backgroundcolor im bash-Stil auskommentierst.

lukesky333
16-01-2013, 15:55
Ist das echt so, das der Bindestrich im Syntax-Highlighting einfach ignoriert wird? Man kann ja dann auch nicht jedes Mal die Farbe ändern wenn er mal im Kommentar steht, dann in einem Befehl oder einer Variablen.

Gibt es keine andere Lösung dafür?

hakaze
16-01-2013, 16:23
Ich denke, in Kommentaren werden keywords schlicht ignoriert (also wie der übrige Kommentar behandelt). Im übrigen legt die Bash-Definition des listings-Pakets fest, wie Bindestriche behandelt werden. Du bist frei darin, das zu ändern, z.b. über das Hinzufügen von apt-get und co. zu den morekeywords.

Was ist denn so schlimm daran, in deinem bash-Stil einfach noch eine Zeile für den basicstyle mit Farbe (z.b. \color{LightGray}) hinzufügen? Für die übrigen (string, keyword, identifier) ist es doch auch schon drin. Das würde ich eh' tun, weil sonst alle Zeichen/Worte, die nicht durch eine der anderen Kategorien abgedeckt werden, auch schwarz-auf-schwarz dargestellt werden.

lukesky333
31-01-2013, 23:42
Da ist nichts schlimm dran, ich hab das für's BASH-Highlighting so gelöst.

Allerdings habe ich so ein ähnliches, wenn nicht sogar schlimmeres Problem beim Highlighting für Python. Diesmal werden mir keinerlei Zeichen wie z.B. ".,()=" angezeigt. Hat das eine ähnliche Ursache?

Was ist prinzipiell der beste aber dennoch einfache Weg, um Code in LaTeX "bunt" zu machen?

lukesky333
02-02-2013, 13:35
Hat keiner einen Tip? Ich muss das Problem schnellstmöglich lösen, nächste Woche habe ich Abgabe meiner Bachelor-Arbeit...

hakaze
02-02-2013, 19:24
Da ist nichts schlimm dran, ich hab das für's BASH-Highlighting so gelöst.

Allerdings habe ich so ein ähnliches, wenn nicht sogar schlimmeres Problem beim Highlighting für Python. Diesmal werden mir keinerlei Zeichen wie z.B. ".,()=" angezeigt. Hat das eine ähnliche Ursache?

Was ist prinzipiell der beste aber dennoch einfache Weg, um Code in LaTeX "bunt" zu machen?
Wenn das immer noch der gleiche Code wie oben ist, würde ich auf Verdacht sagen: es ist das gleiche Problem. Setzte auch für python eine Farbe für den Basicstyle!

Als Alternative für Listings in bunt fällt mir noch minted (http://www.ctan.org/pkg/minted) ein.