PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listing



adman
10-03-2005, 03:37
Hallo, ich versuche gerade Quellcode zu formatieren und habe zwei möglichkeiten

via lstlisting oder verbatim. Formatier ich den gleichen Code mit gleicher Fontgröße, so weißt die Ausgabe eine unterschiedliche Breite auf. Wieso und vor allem wie ist es möglich vor allem beim Listing die Abstände zwischen den einzelnen Buchstaben zu minimieren.

Danke

edico
10-03-2005, 06:08
listing und verbatim sind doch zwei unterschiedliche packages - warum also sollten sie zunächst dasselbe liefern?
verbatim kommt default-seitig mit ttfamily daher, was du in listings mit
\lstset{ language=java,
basicstyle=\ttfamily,
%basicstyle=\small}
einstellen kannst. Dann sollten in beiden outputs identische fonts stehen.
Die font Grösse kannst du ändern, damit auch relativ die Abstände, linebreaking kannst du machen ... alles bleibt sehr übersichtlich. Die Abstände zwischen den einzelnen Buchstaben sind je nach family sinnhaft, damit der Leser sich die Augen nicht verdirbt, in seinem Lesefluss nicht gehindert wird etc.
Dennoch - Abstände kannst du mit letterspacing regulieren, an sich für Sperrschrift gedacht.
s. auch http://www.texnik.de/layouts/letterspacing.phtml
Hier nochmal ein listings-Template, das du deinen besonderen Bedürfnissen anpassen kannst:
\documentclass{myCommonClass}
\usepackage{url}
% Configuration of file listings
\usepackage{listings}
\lstset{ language=java,
basicstyle=\ttfamily,
%basicstyle=\small
stringspaces=false,
commentstyle=\sffamily,
tabsize=3,
breaklines=true,
frame=trBL
}
\begin{document}
\lstinputlisting[labelstyle=\tiny,
labelstep=1,
label=lst:simplejava,
caption={Simple java application.},
belowcaptionskip=15pt,
captionpos=b]
{BasicWindowMonitor.java} %% der Text steht unter verbatim und muss als file ins workingdir
\begin{verbatim}
import java.awt.event.*;
import java.awt.Window;

public class BasicWindowMonitor extends WindowAdapter {

public void windowClosing(WindowEvent e) {
Window w = e.getWindow();
w.dispose();
}
}
\end{verbatim}
\end{document}
edico

adman
10-03-2005, 10:28
\begin{lstlisting}[
basicstyle=\small\ttfamily,%
numbers=left,%
stepnumber=1,%
numberstyle=\tiny,%
language=C++]
__gc struct Delegate_Wrapper
\end{lstlisting}

%fancyvrb
\begin{Verbatim}[fontsize=\small ,numbers=left]
__gc struct Delegate_Wrapper
\end{Verbatim}

Also beide verwenden ttfamily, allerdings ist der buchstabenabstand zwischen beiden unterschiedlich, die laufweite ist größer beim listing

edico
10-03-2005, 11:59
... ich versteh nicht, was du eigentlich willst.
Unterstellt, es gäbe keine Unterschiede, welchen Sinn hätte es, zwei Pakete in TeX vorzuhalten.
Dass du Unterschiede erhälst, liegt doch daran, dass du bei listings gem. seiner Zielrichtung, ein source code printer zu sein, die entsprechende language einstellen musst. Du verwendest fälscherlicherweise c++; nimm c, dann haste identische fonts.
Aber an sich finde ich die Debatte obsolet ...
edico