Werbung:

Jans Technik-Blog

Gebloggt wird, was technisch bewegt

Werbung: Jetzt bei Amazon versandkostenfrei Blu-ray bestellen bestellen

« SARE feiert einjähriges Bestehen | Main | Open Business Club »

Source Code in LaTeX Dokumente einbetten

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:

  1. Als Code-Schnippsel im Fließtext
    \lstinline|print "hello world"|
  2. Als eigenständigen Sourcecode
    \begin{lstlisting}[caption=Beispielcode]{Name}
    print "hello world";
    \end{lstlisting}
  3. 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

Werbung:

Geschrieben von
Jan Theofel
am 31.10.2004
um 23:58 Uhr

Permalink

Abgelegt unter TeX / LaTeX

40 Kommentare

 

TrackBacks für »Source Code in LaTeX Dokumente einbetten«

TrackBack URL: http://www.theofel.de/mt-cgi/mt-tb.cgi/1157

40 Kommentare zu »Source Code in LaTeX Dokumente einbetten«

Interessieren würde mich jetzt noch, wie man die Schriftgröße des Source-Codes verkleinern kann.

1 | Jan Helber | 8.02.2006 um 9:58

Schriftgrösse verkleinern: \lstset{% general command to set parameter(s) basicstyle=\small, ... Dokumentation Seite 5.

2 | Frank Schwichtenberg | 21.03.2006 um 18:24

Danke für den Tipp. Hat mir sehr bei meiner DPA geholfen. Gruss Timo

3 | Timo Meinen | 27.04.2006 um 17:28

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?

4 | Gizmo | 28.05.2006 um 23:01

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.

5 | Tillmann Rendel | 6.07.2006 um 23:53

Danke für diesen grossartigen Kurztipp! auch meiner DA hilfts ungemein . . . .

6 | Johannes | 16.07.2006 um 22:24

Vielen Dank für die kurze und sehr gute Anleitung. Hilft mir sehr bei der DA :)

7 | Mark Ross | 2.08.2006 um 12:05

wunderbarer Tip hilft wirklich sehr gut :-)

8 | Fabian | 29.08.2006 um 12:19

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

9 | Alex Schmitt | 16.10.2006 um 10:14

Any ideas how to include a 'list of listings' at the end of my thesis? \listoflistings doesn't work :(

10 | Kerstin | 16.02.2007 um 23:26

found my solution \lstlistoflistings will work :)

11 | Kerstin | 18.02.2007 um 19:52

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?

12 | andreas | 11.03.2007 um 1:22

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?

13 | Petra | 2.04.2007 um 15:30

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)}

14 | Jan Theofel | 3.04.2007 um 21:57

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.

15 | Kai | 3.05.2007 um 9:08

Hi, klasse Sache :-) vielen Dank... aber wie kann ich auf darauf Bezug nehmen? (also nen Querverweis mit Nummer)?

16 | Sebastian | 25.06.2007 um 21:55

Das Packet hält sich nicht so richtig an den Rand. Die Listings sind viel zu weit links ... Kennt jemand das Problem?

17 | Jan | 14.08.2007 um 11:44

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 :D 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

18 | Jens | 20.09.2007 um 11:37

probiers mal mit \usepackage{courier} ;)

19 | CPU-designer | 13.01.2008 um 23:18

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 ?

20 | Christian | 29.01.2008 um 8:14

Um das ganze in einer Beamer Präsentation zu benutzen, gehe ich wie folgt vor:

\begin{frame}[fragile]
\begin{lstlisting}
print({n in {2..N} | forall m in {2..n - 1} | n mod m > 0});
\end{lstlisting}
\end{frame}

Funktioniert wohl erst ab Beamer 3.01.

21 | Jan Schultze | 3.04.2008 um 19:01

Danke für die Ergänzung zur Nutzung von lstlisting und beamer in LaTeX!

22 | Jan Theofel | 3.04.2008 um 21:16

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?

23 | Dennis | 21.04.2008 um 18:38

Wunderbare Dokumentation..
habe bisher noch nichts besseres gefunden ;)

Danke

24 | Antje | 24.04.2008 um 8:38

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:

\begin{lstlisting}[caption={Quelltext}, label=lstlisting1]
blah
\ref{lstlsiting2}
\end{lstlisting}

Allerdings wird mir kein Verweis gebracht, sondern der Befehl "\ref{lstlsiting2}" selber angezeigt. Vorschläge?

Gruß
Christian

25 | Christian | 8.05.2008 um 13:13

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.

26 | Jan | 12.05.2008 um 9:13

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.

27 | Cheikh | 10.07.2008 um 18:27

Danke! Ich hatte das mal verwendet, wusste aber nicht mehr welches Package das war... wunderhübsch!

28 | Olaf | 15.04.2009 um 18:14

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.

29 | John | 27.04.2009 um 17:35

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??

30 | Coopar | 17.06.2009 um 9:49

Danke! Ich hatte das mal verwendet, wusste aber nicht mehr welches Package das war... wunderhübsch!

31 | Ein Leser schreibt: | 20.06.2009 um 2:09

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.

32 | Viktor | 26.06.2009 um 14:35

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

33 | Helmut | 5.08.2009 um 14:17

@helmut: \renewcommand\lstlistlistingname{der neue name für das verzeichnis}

34 | jutzin | 11.08.2009 um 17:26

@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.

35 | jutzin | 11.08.2009 um 17:31

Danke für den Eintrag, hat mir gut geholfen. =)

36 | Benny | 2.09.2009 um 12:08

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.

37 | Phil | 4.09.2009 um 11:24

@Phil:

Hast du es schon mal mit dem Inputencoding probiert, so dass du die Zeichen direkt eingeben kannst?

Beispielsweise mit \usepackage[latin1]{inputenc}

38 | Jan Theofel | 6.09.2009 um 9:31

@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.

39 | Phil | 8.09.2009 um 15:59

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

40 | Stefan | 25.02.2010 um 13:34

Schreib bitte Deine Meinung:

Kommentare werden moderiert und erscheinen daher ggf. zeitverzögert. Bitte nur themenbezogene Kommentare abgeben die sich auf diesen Eintrag beziehen.

ACHTUNG: Es gilt meine Anti-SPAM-Policy! Werbende Kommentare und SEO-Linkspam werden nicht freigeschaltet. Statt dessen sende ich eine Beschwerde an den Profiteur der Werbung.
Bei persönlichen Meinungen bitte keine Links zu kommerziellen Projekten sonder zu eurer privaten Seite.

Werbung:

Dompteur der Bits

Dompteur der Bits: Jan Theofel

Cross-Blog-Adventskalender 2011

Abonnieren?

Meine Beiträge kannst du regelmäßig per RSS-Feedlesen.

Auf Twitter findest du meine kurzen Notizen des Tages:
TwitterCounter for @jantheofel

Werbung:

Aktueller Monat

So Mo Di Mi Do Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Werbung

Amazon

Jans Technik-Blog © 2004 - 2011 by Jan Theofel - Impressum - Datenschutz