Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Stil Definition für listings wird nicht/fehlerhaft umgesetzt

39 views
Skip to first unread message

Matthias Pospiech

unread,
Aug 10, 2011, 7:24:53 AM8/10/11
to
Ich möchte das unten dargestellte Matlab Beispiel besser formatieren. Es
enthält keine Schlüssewörter der Sprache, dafür sollen Klammern ()[] und
Operatoren *,+,/ hervorgehoben werden.

Leider wird morkeywords aber vollständig ignoriert und bei otherkeywords
das ')' ignoriert, sofern 'breaklines=true' definiert ist.

Hier ein kurzes Beispiel für das fehlerhafte Verhalten:

---->
\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage{textcomp}

\usepackage[dvipsnames]{xcolor}
\usepackage{listings}

\definecolor{lstMatlabcommencolor}{rgb}{0.0,0.5,0.0}
\definecolor{lstMatlabkeywordcolor}{rgb}{0.0,0.0,1.0}
\definecolor{lstMatlabstringcolor}{rgb}{0.0,0.5,0.0}
\definecolor{lstbackgroundcolor}{rgb}{1.0,1.0,1.0}
\definecolor{lstMatlabKeyTwo}{rgb}{0.0,0.0,0.75}


% define styling of listings
\lstdefinestyle{lstStyleMatlab}{%
language=Matlab,
keywordstyle=\color{lstMatlabkeywordcolor},
keywordstyle=[2]\color{lstMatlabKeyTwo},
commentstyle=\color{lstMatlabcommencolor},
stringstyle=\color{lstMatlabstringcolor},
morekeywords=[2]{[, ],*, +}, % add list of missing keywords
otherkeywords={(,)}
}%

\lstset{%
,style=lstStyleMatlab
,basicstyle=\small\ttfamily
,breaklines=true}
\lstloadlanguages{Matlab}

\begin{document}

\begin{lstlisting}[]
% y(1) = pump power
% y(2) = signal power

dydt(1)=[-y(1)*Gamma_p*N_ion*(D*y(2)+sigma_a_p/tau)/(F*y(1)+G*y(2)+1/tau)-alfa_p*y(1)];
\end{lstlisting}

\end{document}
<-----

Die Version von listings ist

listings.sty 2007/02/22 1.4 (Carsten Heinz)
lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
listings.cfg 2007/02/22 1.4 listings configuration
lstlang1.sty 2004/09/05 1.3 listings language file

(aus texlive 2011)

Matthias

Matthias Pospiech

unread,
Sep 7, 2011, 4:31:49 AM9/7/11
to
Am 10.08.2011 13:24, schrieb Matthias Pospiech:
> Ich mᅵchte das unten dargestellte Matlab Beispiel besser formatieren. Es
> enthᅵlt keine Schlᅵssewᅵrter der Sprache, dafᅵr sollen Klammern ()[] und
> Operatoren *,+,/ hervorgehoben werden.
>
> Leider wird morkeywords aber vollstᅵndig ignoriert und bei otherkeywords

> das ')' ignoriert, sofern 'breaklines=true' definiert ist.
>
...

falls hier keine eine Lᅵsung parat hat wᅵsste ich gerne an welche Gruppe
ich mich stattdessen wenden sollte.

Derzeit habe ich wieder ein Problem mit listings. Ein zusᅵtzliches Wort
bei den keywords

\lstdefinestyle{latexStyle}{
... language = [LaTeX]TeX,
morekeywords={printbibliography},
}
\lstset{style=latexStyle}

wird ignoriert.

Heiko Oberdiek

unread,
Sep 7, 2011, 7:13:17 AM9/7/11
to
Matthias Pospiech <matth...@gmx.de> wrote:

> Derzeit habe ich wieder ein Problem mit listings. Ein zus�tzliches Wort


> bei den keywords
>
> \lstdefinestyle{latexStyle}{
> ... language = [LaTeX]TeX,
> morekeywords={printbibliography},
> }
> \lstset{style=latexStyle}

Im Listings-Verzeichnis TDS:tex/latex/listings/ findet sich die
Definition f�r LaTeX in lstlang3.sty. Dort werden die
"Schl�sselw�rter" via moretexcs definiert. Daher w�rde ich
statt "morekeywords" erstmal "moretexcs" probieren.

--
Heiko Oberdiek

Matthias Pospiech

unread,
Sep 7, 2011, 7:27:16 AM9/7/11
to
Damit funktioniert es, allerdings hatte ich zu�tzlich den Fehler,
dass ich die Sprache und nicht den Stil als option geladen habe:

falsch:
\begin{lstlisting}[language={[LaTeX]TeX}]
...
\end{lstlisting}

richtig:
\begin{lstlisting}[style=latexStyle]
...
\end{lstlisting}

jetzt funktioniert es.


Marco Daniel

unread,
Sep 7, 2011, 7:45:07 AM9/7/11
to
Hi,

mit moretexcs werden Anweisungen deklariert. Daher ist die Variante von
Heiko besser.

Hier ein Beispiel von Herbert Vo�:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled=0.82]{beramono}
\usepackage{listings,xcolor}
\begin{document}

\begin{lstlisting}[basicstyle=\small\ttfamily,language={[LaTeX]TeX},
texcsstyle=*\color{red}\bfseries,
keywordstyle=\color{blue}\bfseries,
morekeywords=alignat,moretexcs=intertext]
\begin{alignat*}{4}
y &= -4 &+ 3 &+4 &-7 \\
y &= &+ 3 & &-7 \\
\intertext{Therefore}
a &= b &d &= cccc &e &= d \\
a &= bbbb &d &= c &e &= d
\end{alignat*}
\end{lstlisting}

\end{document}

Gru�
Marco

0 new messages