Das einbetten von Sourcecode-Elementen in LaTeX mittels \verb bzw. durch verbatim-Umgebungen ist eine recht unschöne Angelegenheit. Es kann zu Problemen mit den Zeilen- und Seitenumbrüchen kommen. Abhilfe schafft das Paket listings. Hier eine kleine Info, welche Settings ich gerade für meine Schulungsunterlagen verwende.
Im Kopf der LaTex Datei muss zunächst das Paket eingeladen und konfiguriert werden:
\usepackage{listings}
\lstset{numbers=left, numberstyle=\tiny, numbersep=5pt}
\lstset{language=Perl}
Dabei können zahlreiche aktuelle Sprachen als language definiert werden. Die dargestellten Parameter werden so von mir verwendet. Dabei gibt es natürlich auch noch viele andere Konfigurationsmöglichkeiten.
Nun gibt es drei Möglichkeiten Source-Code in das Dokument einzufügen:
- Als Code-Schnippsel im Fließtext
\lstinline|print "hello world"| - Als eigenständigen Sourcecode
\begin{lstlisting}{Name}
print "hello world";
\end{lstlisting} - Einbetten einer externen Source-Code-Datei
\lstinputlisting[frame=single,label=beispielcode,caption=Ein Beispiel]{beispiel.pl}
Dabei wird in der gezeichte Varaiante ein Syntaxhighlightning und eine Zeilennummerierung vorgenommen. Zusätzlich können relevante Code-Passagen z.B. farblich markiert werden.
Download listings aus dem CPAN
Dokumentation auf englisch, PDF-Format
Interessieren würde mich jetzt noch, wie man die Schriftgröße des Source-Codes verkleinern kann.
Schriftgrösse verkleinern:
\lstset{% general command to set parameter(s)
basicstyle=\small,
…
Dokumentation Seite 5.
Danke für den Tipp. Hat mir sehr bei meiner DPA geholfen.
Gruss Timo
Ich würde gerne Farben innerhalb der listing Umgebung für einzelne Begriffe verwenden, Syntaxhighlighting sozusagen. Leider scheint das nicht zu funktionieren, alles Markup wird als Markup gedruckt. Tipps?
In der oben verlinkten Dokumentation wird erklärt, wie man eigene Farben für bestimmte Wörter vergibt (Seite 17). Also nicht nur sozusagen, sondern richtiges SyntaxHighlighting. Dort ist auch ein Beispiel zu finden.
Danke für diesen grossartigen Kurztipp! auch meiner DA hilfts ungemein . . . .
Vielen Dank für die kurze und sehr gute Anleitung. Hilft mir sehr bei der DA 🙂
wunderbarer Tip hilft wirklich sehr gut 🙂
Hi Jan,
lustig, dass ich bei der Google-Suche von „latex code“ auf Dein Technik-Blog gestoßen bin. Hilft mir jedenfalls sehr weiter 🙂
Gruß
Alex
Any ideas how to include a ‚list of listings‘ at the end of my thesis? \listoflistings doesn’t work 🙁
found my solution
\lstlistoflistings
will work 🙂
Ich nutze auch das listings Package und binde damit eine externe PHP Datei ein aber das Listings Package bricht die Zeilen aus der PHP Datei nicht um und sie laufen über das Blatt hinaus. Kann mir da jmd weiterhelfen?
Versuche mich gerade am listings package.
Ich möchte per \lstinline PHP-Code einbinden. Sobald jedoch ein $ drin vorkommt, geht es schief. Wie kann ich sowas wie
\lstinline{str_replace(„.php“, „.html“, $url)}
lösen?
Das $-Zeichen leitet den Mathemodus ein. Versuch es mal mit einem Backslash zu entwerten. Also in deinem Beispiel würde das so aussehen: \lstinline{str_replace(„.php“, „.html“, \$url)}
Kleiner Hinweis am Rand: die URL zur Doku stimmt nicht mehr.
Hier die aktuelle URL:
ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/listings/listings.pdf
Ansonsten: Sehr hilfreiches Paket und die Zusammenfassung hier: Genial – genau richtig für den Praktikumsbericht.
Hi,
klasse Sache 🙂 vielen Dank… aber wie kann ich auf darauf Bezug nehmen? (also nen Querverweis mit Nummer)?
Das Packet hält sich nicht so richtig an den Rand.
Die Listings sind viel zu weit links …
Kennt jemand das Problem?
Hallo, ich bin bei der suche nach dem listings paket hier fündig geworden und finde die Dokumentation hier schonmal klasse. vorher habe ich mit dem befehl \begin{code}\begin{verbatim} gearbeitet… das hatte mir doxygen automatisch generiert. nun hab ich das beides durch nen begin{lstlisting} ersetzt.
mein problem ist es nur…früher sah die schrift einfach schöner aus 😀
kann mir jemand sagen wie ich es konfiguriert kriege das die schriftart so ist wie vorher? hab schon small und ttype genutzt als settings aber der erfolg sieht immer noch nicht so schoen aus wie vorher….kann mir da bitte jemand helfen?
lg jens
probiers mal mit \usepackage{courier} 😉
Moin.
Dieser Blog hat mir schon sehr viel geholfen, vllt ja noch mehr.
Ich benutze die lstlisting Umgebung und meine Listings gehen alle über die ganze Textbreite, ich möchte dir aber schmaller machen, weiß jemand wie das geht ?
Um das ganze in einer Beamer Präsentation zu benutzen, gehe ich wie folgt vor:
Funktioniert wohl erst ab Beamer 3.01.
Danke für die Ergänzung zur Nutzung von lstlisting und beamer in LaTeX!
Moin 🙂 ich habe das ganze jetzt auch erfolgreich genutzt (vielen Dank), jedoch steht links über dem Code im kompilierten PDF immer „numberstyle“. Wie kann ich das los werden?
Wunderbare Dokumentation..
habe bisher noch nichts besseres gefunden 😉
Danke
Hi,
gute Seite. Ich hoffe, dass mir hier jemand weiter helfen kann. Ich möchte innerhalb einer lstlisting Umgebung einen Verweis auf eine andere lstlisting Umgebung machen. Bsp:
Allerdings wird mir kein Verweis gebracht, sondern der Befehl „\ref{lstlsiting2}“ selber angezeigt. Vorschläge?
Gruß
Christian
Ich bette in einem Report externen Sourcecode nur teilweise (linerange) ein. Z.B. folgendermaßen:
\lstinputlisting[caption=Sourcecode\label{lst:Sourcecode},language=C,linerange={9-36},firstnumber=9]{SourceCode.c}
Wenn ich im nachhinein etwas am Sourcecode ändere, dann muss ich auch im Report den linerange wieder anpassen.
Gibt es eventuell eine Möglichkeit einen Tag im Sourcecode ein Start- und Ende-Label zu hinterlegen und sich dann dieses zu referenzieren? So dass im Report immer der Sourcecode vom Start- bis zum Ende-Label eingefügt wird.
Dadurch würde das lästige linerange-anpassen im Report entfallen.
Hallo
kann mir jemanden helfen, ich schreibe gerade mein Abschlussarbeit und hänge an folgenden Probelm.
ich benutze lstlisting für codedarestellung, aber ich die Quellen für mein Listing angeben, da ich es sich auf ein externen Dokumen bezieht.
bin dnakbar für jede Hilfe.
Danke! Ich hatte das mal verwendet, wusste aber nicht mehr welches Package das war… wunderhübsch!
Hey,
wie kann ich eigentlich für jede Zeile eine andere Hintergrundfarbe benutzen? Also quasi hell/dunkel abwechseln lassen, gerade bei längeren Auszügen sollte dass die Lesbarkeit nochmals erhöhen.
grüße
John S.
Hallo,
ich nutze auch das lstlisting, habe aber nun ein kleines Problem.
Mein Quellcode beinhaltet französische Anführungszeichen, auch Gillemots gennant (das ist so eine art doppelpfeil nach links, bzw. recht). Wenn ich das Zeichen so direkt in das Listing schreibe, bekomme ich nen Fehler… Wenn ich stattdessen die Latex-Befhele \flqq, \frqq verwende, werden die befehle angezeigt.. hat jmd eine Idee??
Danke! Ich hatte das mal verwendet, wusste aber nicht mehr welches Package das war… wunderhübsch!
Hallo,
ich habe folgende Frage: wie bringe ich lstlisting dazu, dass es mir das ==-Zeichen in C/C++ nicht zu einem langen =-Zeichen umwandelt?
Danke.
Hallo zusammen,
weiß vielleicht jemand ob es möglich ist die „listings“-umgebung so zu modifizieren dass die captions nicht mehr mit „Listing“ sondern mit einem äquivalenten deutschen Ausdruck benannt werden?
Gruß an alle
@helmut:
\renewcommand\lstlistlistingname{der neue name für das verzeichnis}
@dennis: bisschen spät, aber vielleicht hilft’s ja jemand anderem: das hört sich ganz so an, als hättest Du in \lstset{<key_1>=<value_1>, <key_2>=<value_2>, … , <key_n>=<value_n>} an der stelle vor numberstyle=<value> das komma vergessen.
Danke für den Eintrag, hat mir gut geholfen. =)
Hi, danke für das kurze und gut verständliche Tutorial, aber wie mache ich Sonderzeichen. Z.b. ü. Mit \“u funktioniert es leider nicht mehr.
@Phil:
Hast du es schon mal mit dem Inputencoding probiert, so dass du die Zeichen direkt eingeben kannst?
Beispielsweise mit \usepackage[latin1]{inputenc}
@Jan
Danke für den Tipp. Im Nachhinein habe ich mich nun für Highlight von Andre Simon entschieden. Die farbliche Markierung macht den Code noch besser lesbar als dies bei dem Paket listings möglich ist.
Hallo. Ich habe verschiedene Ansätze getestet um im Quellcode das $-Zeichen zu verwenden. Hat jemand eine Lösung dafür? Escapen klappt leider mit \$ nicht. Oder gibts eine Umgebung? Verbatim ist keine Lösung in diesem Fall. Danke.
Stefan
3 Jahre später: Das hier beschiebene „listings“ Paket hat keine Probleme mit „$“ Zeichen.
@Lukas: Danke für die Ergänzung!