Python mit lstlisting in Latex nicht kursiv in \newtheorem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dorooo
User
Beiträge: 10
Registriert: Dienstag 6. Januar 2009, 18:30

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
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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

Alternativ kannst Du auch pygments nutzen. Der Latex-Formatter nutzt eine verbatim-Umgebung, die eigentlich nicht kursiv gesetzt werden sollte.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Das Schöne an listings ist ja, daß es nicht verbatim ist. Kann pygments mit verbatim Farbe - mal neugierdehalber?
lunar

Ja. Pygments nutzt eine erweiterte verbatim-Umgebung.
dorooo
User
Beiträge: 10
Registriert: Dienstag 6. Januar 2009, 18:30

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?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
dorooo
User
Beiträge: 10
Registriert: Dienstag 6. Januar 2009, 18:30

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...
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ok, war ein Versuch wert.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Oh, gut, wenn jemand genau hinschaut! Danke.
dorooo
User
Beiträge: 10
Registriert: Dienstag 6. Januar 2009, 18:30

Danke, Rebecca, das war der entscheidende Hinweis! :D
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten