Seite 1 von 1

Zeilenumbruch in Listings kennzeichnen

Verfasst: Di 2. Aug 2011, 16:38
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

Verfasst: Di 2. Aug 2011, 22:01
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.

Verfasst: Mi 3. Aug 2011, 11:45
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.

Verfasst: Mi 3. Aug 2011, 11:57
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.

Verfasst: So 7. Aug 2011, 23:07
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.

Verfasst: So 11. Aug 2013, 08:04
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

Neues Symbol

Verfasst: Mo 11. Mai 2015, 18:43
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$}}}