PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listings überschreitet Dokumentränder



schrauber79
13-10-2012, 23:28
Hallo,

mein Dokument hat fest definierte Randabstände.
Das listings-Packet (Syntaxhervorhebung für Sourcecodes), scheint diese Maße scheinbar konsequent zu ignorieren.

Hier ein lauffähiges Beispiel:



\documentclass[titlepage,11pt,paper=a4,listof=totoc]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage[includefoot,left=40mm,right=20mm,top=25mm,bottom=1 0mm]{geometry} %%includefoot Abstand ab Seitenzahl
\usepackage{graphicx}
\usepackage{listings} %sourcecodes
\usepackage{color}

\begin{document}
\section{\dotfill}
\definecolor{light-gray}{gray}{0.95}
\lstset{language=C, numbers=left, showstringspaces=false, frame=shadowbox, rulesepcolor=\color{light-gray}}

\begin{lstlisting}
void main(){
printf("`Hallo Welt!"'); //Ausgabe von Hallo Welt!
return 0;
}
\end{lstlisting}
\end{document}


Man sieht, wie die Zeilennummern des Sourcecodes nicht in einer Linie mit der Überschrift sind. Außerdem geht die Box rechts zu weit (die Punkte oben sollen den Randabstand verdeutlichen)

hakaze
14-10-2012, 00:28
So wie ich das verstehe, ist das das normale Verhalten von listings: der Quelltext darf die gesamte linewidth einnehmen, die Zeilennummern werden in den Randbereich (margin) gesetzt. Wenn du auch noch eine Box rundherum malen lässt, kommen zusätzlich noch der innere Abstand (zwischen Quelltext und Rahmen) und die Rahmenbreite hinzu.

Für's erste reicht es sicherlich, die Parameter xleftmargin und xrightmargin anzupassen. Zum Beispiel:
\lstset{language=C, numbers=left, showstringspaces=false, frame=shadowbox, rulesepcolor=\color{light-gray},xleftmargin=2em,xrightmargin=1mm}Näheres dazu findet sich in der Paket-Doku Abschnitt "4.10 Margins and line shape" und "4.11 Frames".

schrauber79
14-10-2012, 13:55
Danke hakaze. Das hat geholfen!