Seite 1 von 1

Python mit lstlisting in Latex nicht kursiv in \newtheorem

Verfasst: Montag 23. November 2009, 17:46
von dorooo
Hallo,

ich arbeite mit Latex und will Python Code einbinden. Das funktioniert auch schon mit z.B.

\begin{lstlisting}

Code: Alles auswählen

for i in xrange(0,5):
    print i
\end{lstlisting}

Mein Problem ist nun, wenn ich das ganze in einer kursiven Umgebung habe, also z.B. in einer Bemerkung:

\newtheorem{bem}[defin]{Bemerkung}

\begin{bem}
Kursiver Text
\begin{lstlisting}

Code: Alles auswählen

for i in xrange(0,5):
    print i
\end{lstlisting}
\end{bem}

Dann ist der Python Code, im Gegensatz zu sonst, auch kursiv geschrieben, wie der Text in der Bemerkung.

Ich habe bis jetzt das halbe Internet durchsucht und keine Lösung gefunden. Ich wäre sehr dankbar, wenn mir jemand helfen könnte.

Doro

Verfasst: Montag 23. November 2009, 17:52
von ms4py
Dir ist schon bewusst, dass das eine LaTeX-Frage ist und keine Python-Frage ;)

Warum nicht so?!

Code: Alles auswählen

\begin{bem}
Kursiver Text
\end{bem}
\begin{lstlisting}
for i in xrange(0,5):
    print i
\end{lstlisting}
 

Verfasst: Montag 23. November 2009, 17:56
von lunar
Alternativ kannst Du auch pygments nutzen. Der Latex-Formatter nutzt eine verbatim-Umgebung, die eigentlich nicht kursiv gesetzt werden sollte.

Verfasst: Montag 23. November 2009, 20:33
von CM
Das Schöne an listings ist ja, daß es nicht verbatim ist. Kann pygments mit verbatim Farbe - mal neugierdehalber?

Verfasst: Montag 23. November 2009, 20:44
von lunar
Ja. Pygments nutzt eine erweiterte verbatim-Umgebung.

Verfasst: Dienstag 24. November 2009, 13:24
von dorooo
Danke für die schnellen Antworten.

also zum Vorschlag von ice2k3 muss ich leider sagen, dass nach dem Code auch noch
Text kommt, also die Bemerkung noch nicht zu Ende ist. Sonst könnte man es selbstverständlich so machen!

Pygments kenne ich noch nicht und eigentlich bin ich mit listings sehr zufrieden.
Aber probieren kann ich das gerne mal.

Gibt es noch andere Vorschläge?

Verfasst: Dienstag 24. November 2009, 14:11
von CM
Was passiert, wenn Du für listings einen Style im header deklarierst, in dem explizit drin steht, was es für eine Schrift sein muß?

z. B. so

Dann natürlich so anfangen: \begin{lstlisting}[style=Python] - falls Du das nicht wissen solltest.

Ob es funktioniert, weiß ich nicht. Habe das gerade bei mir rauskopiert und leicht verändert - kann es aber nicht testen. Also: Ungetestet!

HTH
Christian

edit: LaTeX-Code ausgelagert

Verfasst: Dienstag 24. November 2009, 14:37
von dorooo
Das ganze ist in meine Bachelorarbeit integriert. Dafür habe ich eine Datei
Arbeit.sty ist der u.a. drin steht

%Einbinden von Quelltexten
\usepackage{listings}
\lstset{language=Python}
\lstset{basicstyle=\ttfamily\footnotesize}
\lstset{commentstyle=\slshape\footnotesize\color{grau}}

Also ist klar, dass wenn ich lstlistig benutze, dass dann automatisch Python verwendet wird. Und eigentlich sollte auch klar sein, dass eine "aufrechte" (=nicht kursive) Schrift
verwendet wird...

Verfasst: Dienstag 24. November 2009, 14:59
von CM
Ok, war ein Versuch wert.

Verfasst: Dienstag 24. November 2009, 15:57
von Rebecca
Und eigentlich sollte auch klar sein, dass eine "aufrechte" (=nicht kursive) Schrift verwendet wird...
Eben nicht. ttfamily ist doch nur die Schriftfamilie, die gibt es in verschiedenen Shapes, eben auch kursiv. Du kannst z.B. folgendes machen:

Code: Alles auswählen

\itshape

test

\begin{lstlisting}[basicstyle=\normalfont\ttfamily]
bla bla
\end{lstlisting}

test

Verfasst: Dienstag 24. November 2009, 16:07
von CM
Oh, gut, wenn jemand genau hinschaut! Danke.

Verfasst: Mittwoch 25. November 2009, 17:33
von dorooo
Danke, Rebecca, das war der entscheidende Hinweis! :D

Verfasst: Mittwoch 25. November 2009, 21:35
von Leonidas
lunar hat geschrieben:Alternativ kannst Du auch pygments nutzen. Der Latex-Formatter nutzt eine verbatim-Umgebung, die eigentlich nicht kursiv gesetzt werden sollte.
Ergänzend dazu: es gibt ein Makropaket für LaTeX dass pygments nutzt, heißt Texments und ist im CTAN zu finden. Ich finde das Highlighting von Pygments im Vergleich mit listings überragend und außerdem kommt da mit weniger Aufwand hübscher bunter Code zusammen, der sich auch prima in Folien mittels Beamer integriert.