Zeilenumbruch in Listings kennzeichnen

Schriftbild, Absätze und Auflistungen einstellen


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Zeilenumbruch in Listings kennzeichnen

Beitrag von Bartman »

Hallo,

zunächst mein Minimalbeispiel:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{listings}

\begin{document}

\lstset{%
	language=Python,
	basicstyle=\ttfamily,
	breaklines=true, 		      %% Zeilen umbrechen
	prebreak={\carriagereturn},  %% Vor Zeilenumbruch Zeichen setzen
	breakautoindent=true         %% umbrochene Zeilen einrücken
}
\begin{lstlisting}
zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
zweierpotenzen = [2 ** n for n in zahlen]
\end{lstlisting}

\end{document}
Die Liste dient nur der Veranschaulichung meiner Absicht. Normalerweise würde man in Python solche Listen mithilfe der Funktion range erzeugen.

Ich habe etwas herumgesucht, aber den Befehl \carriagereturn, welchen Herr Schlosser in seinem Latex-Buch verwendet, scheint es nicht zu geben. Kennt jemand von euch den erwähnten Befehl und falls nein, wie ließe sich meine Absicht stattdessen umsetzen?

Gruß

Bartman

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Der Befehl \carriagereturn ist im Paket dingbat, wenn das geladen ist, funktionierts, sieht imho aber bescheiden aus, da zumindest bei mir der Font ersetzt wird.

Ich habe für meine Zwecke $\hookleftarrow$ verwendet und fand, dass das gar nicht so schlecht aussieht.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Xenara hat geschrieben:Der Befehl \carriagereturn ist im Paket dingbat, wenn das geladen ist, funktionierts, sieht imho aber bescheiden aus, da zumindest bei mir der Font ersetzt wird.
Mit dem Paket dingbat erhalte ich zwar das gewünschte Ergebnis in meinem PDF, dafür gibt es aber beim Erzeugen mit pdfLaTeX folgende Warnungen.
LaTeX Font Warning: Font shape `U/ark/bx/n' undefined
(Font) using `U/ark/m/n' instead on input line 19.

LaTeX Font Warning: Some font shapes were not available, defaults substituted.
\begin{lstlisting}
zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
zweierpotenzen = [2 ** n for n in zahlen]   # Zeile 19
\end{lstlisting}
Xenara hat geschrieben:Ich habe für meine Zwecke $\hookleftarrow$ verwendet und fand, dass das gar nicht so schlecht aussieht.
Die Ersetzung von \carriagereturn durch $\hookleftarrow$ in meinem Minimalbeispiel führt bei mir zu einem Fehler.
! Improper discretionary list.
\lst@@discretionary ...t@spacekern \lst@prebreak }
{\llap {\lsthk@EveryLine \...
l.17 zahlen
= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18...
Die Verwendung des Befehls außerhalb der lstlisting-Umgebung gelang dagegen ohne Probleme.

Xenara
Forum-Meister
Forum-Meister
Beiträge: 682
Registriert: Mi 25. Nov 2009, 09:41

Beitrag von Xenara »

Ups, dann hatte die mbox in meiner alten Vorlage doch ihren Grund, sorry :oops:
So muss die Definition mit \hookleftarrow aussehen:
\lstset{% 
   language=Python, 
   basicstyle=\ttfamily, 
   breaklines=true,             %% Zeilen umbrechen 
   prebreak={\mbox{$\hookleftarrow$}},  %% Vor Zeilenumbruch Zeichen setzen 
   breakautoindent=true         %% umbrochene Zeilen einrücken 
} 
Die Warnung mit dingbat bekomme ich auch, ich weiss allerdings nicht, was es wirklich damit auf sich hat.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

@Xenara

Entschuldige mein verspätetes Lebenszeichen.

Die von dir empfohlene Zusammenarbeit der Befehle \mbox und \hookleftarrow klappt nun bei mir ohne Fehler oder Warnungen, allerdings gefällt mir das von \carriagereturn erzeugte Zeichen irgendwie besser. Falls ich demnächst dennoch den Grund für die Warnungen ermittle, werde ich ihn hier angeben.

jschlosser
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: So 13. Feb 2011, 20:55
Wohnort: Augsburg
Kontaktdaten:

Beitrag von jschlosser »

Nachdem ich mein Buch derzeit auf MacTeX portiere und dort dingbat nicht standardmäßig vorhanden ist, stieß ich auf dasselbe Problem. Nachdem ich mir verschiedene Zeichen angesehen habe, verwende ich nun
{\rotatebox[origin=c]{270}{$\curvearrowright$}}
Benötigt nur das amssymb-Pakte und graphicx.

So werde ich es auch in der 5. Auflage empfehlen.

Viele Grüße
Joachim
---
Lernen Sie mit meinem Buch: Wissenschaftliche Arbeiten schreiben mit LaTeX
http://www.latexbuch.de

Gast

Neues Symbol

Beitrag von Gast »

Moin, nachdem ich auf das gleiche Problem gestoßen bin, habe ich mir folgendes Symbol zusammengebaut:
prebreak={\raisebox{-1.5mm}[0mm][-1.5mm]{\rotatebox[origin=c]{270}{$\curvearrowright$}}}

Antworten