Ich habe ein listing mit Code und möchte das keyword "include" highlighten. Allerdings weiß ich nicht, wie ich Latex sage, dass er das Keyword highlighten soll. Lediglich direkt am Listing funktioniert das mit Open in writeLaTeX
\documentclass[12pt,a4paper,titlepage]{scrartcl} \lstdefinestyle{mystyle}{ ....Hier funktioniert morekeywords={include} nicht } \lstset{style = mystyle} \begin{document} \begin{lstlisting}[language=ruby] include FooBar \end{lstlisting} \end{document} |
Sobald du mit dem optionalen Element eine Sprache wählst, wird der Standard dieser abgerufen. Du musst deinen eigenen Stil also daran anhängen. Da Code-Listings aber im Dokument einheitlich aussehen sollten, empfehle ich dir einen eigenen Stil für die jeweilige Sprache/Dialekt zu erstellen. Open in writeLaTeX
\documentclass{scrartcl} \usepackage{listings} \lstdefinestyle{mystyle}{ morekeywords={include} } \lstdefinestyle{meinRuby}{ language=ruby, morekeywords={include} } %\lstset{style = mystyle}%JB: Entweder global für alle folgenden \newcommand{\slice}{\par\noindent\vrule height0.1pt width\textwidth} \begin{document} %JB: Oder lokal für dieses Listing \begin{lstlisting}[language=ruby,style=mystyle] include FooBar \end{lstlisting} Sprache und Style \slice \begin{lstlisting}[style=meinRuby] include FooFoo \end{lstlisting} meinRuby \slice \lstset{style = mystyle} Nun gilt mystyle f\"ur alle folgenden Listings \begin{lstlisting} include Fifo \end{lstlisting} mystyle ist global gesetzt \slice \begin{lstlisting}[language={[LaTeX]TeX}] include FooFoo \section{} \end{lstlisting} Hier greift nun der LaTeX-Stil, include ist kein Keyword mehr \end{document} beantwortet 19 Aug '14, 14:35 Johannes Hallo, Johannes! Danke für die schnelle Antwort! Wenn ich deinen Code benutze, funktioniert das Highlighting wunderbar. Dann habe ich wohl irgendwo mist gebaut.
(19 Aug '14, 15:04)
bor44
Habe den "Fehler" gefunden. Ich habe die Sprache (language=ruby) nicht in mystyle angegeben, sondern direkt an den listings. Durch das späte festlegen der language kann ich vorher wohl keine keywords definieren?
(19 Aug '14, 15:12)
bor44
2
Ich finde, du solltest semantisch Arbeiten. Pack die Ruby-spezifischen sachen in einen Stil
(19 Aug '14, 15:27)
Johannes
1
Ich gehe übrigens in der Regel noch einen Schritt weiter und definiere mit gleich Umgebungen
(19 Aug '14, 19:46)
gast3
|
Hallo! Vorweg die Bitte, Minibeispiele so reinzustellen, daß man daran arbeiten und ausprobieren kann. ( PS: Ich habe ein paar Ergänzungen eingebaut, die zwar nicht zum Thema gehören, aber m.E. wichtig sind. Open in writeLaTeX
\documentclass[]{article} \usepackage[dvipsnames]{xcolor} \usepackage{listings} %================================= % Nummerierung nicht-auswählbar machen: \usepackage{accsupp} \newcommand{\noncopynumber}[1]{ \BeginAccSupp{method=escape,ActualText={}} #1 \EndAccSupp{}}% \lstset {numberstyle={\footnotesize\color{lightgray}\noncopynumber}, numbers=left, numbersep=1.5pt, columns=flexible, } %================================= \lstloadlanguages{Ruby} \lstset{% backgroundcolor=\color{yellow!50}, rulecolor=\color{lightgray}, frame=single, breaklines=true, basicstyle=\ttfamily\color{black}, commentstyle = \ttfamily\color{red}, keywordstyle=\ttfamily\color{blue}, stringstyle=\color{orange} }% %%%%%%%%% "include hervorheben" %%%%%%%%%% \lstset{emph={% include% },emphstyle={\color{red}\bfseries\underbar}% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \begin{lstlisting}[language=Ruby] #Ein Kommentar.... a = 5 puts b include ... def bar if foo \end{lstlisting} \end{document} beantwortet 19 Aug '14, 15:09 cis |