Programmcode einbinden

Schriftbild, Absätze und Auflistungen einstellen


Bastian
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Do 16. Jul 2009, 18:47

Programmcode einbinden

Beitrag von Bastian »

Hallo zusammen!

Ich möchte ein paar Zeilen Programmcode in meiner Arbeit anzeigen. Habe dazu hier schon einiges gefunden, so das ich zu folgendem Minimalbeispiel komme:
\documentclass[12pt,a4paper]{scrreprt}

\usepackage{float}
\floatstyle{ruled}
\newfloat{program}{h}{lop}[chapter]
\floatname{program}{Kode}

\begin{document}

\chapter{Kapitel1}

Hier etwas Kode \ref{prog:01}.

\begin{program} 
\begin{verbatim}
function D_FZVr1 = fcn(D_FZV0,a_xo,k_Er)

if (a_xo > 0)
    D_FZVr1=1;  % Extrem schlauer Kommentar

else
    D_FZVr1=-1; % nicht weniger schlauer Kommentar

end;
\end{verbatim}
\caption{Etwas Programcode}
\label{prog:01}
\end{program}

\end{document}
Jetzt wünsche ich mir noch, dass die Kommentare (hintern dem %-Zeichen) auch als solche gekennzeichnet sind, z.B. in einer anderen Farbe. Bei "if" und "else" wäre eine Farbe auch ganz schick, geht das?

Zudem würde ich gern die Zeilen nummerieren, um mich im Text einfacher darauf zu beziehen. Gibt es dafür einen einfachen Weg?

Und zu guter letzt, etwas was im Beispiel nicht erkennbar ist:
Ich verwende das float Paket erst jetzt für den Programmcode. Seit ich es eingefügt habe, bekomme ich zu jeder Abbildung eine Warnung:
l.42
pdfTeX warning (ext4): destination with the same identifier (name{figure.1
.1}) has been already used, duplicate ignored

\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
Hängt das eventuell mit [liststotoc] zusammen? Bin für Anregungen dankbar...


Danke für eure Hilfe! Denke ich muss und werde dieses Forum im Vorwort meiner DA erwähnen :-)

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

Warum nimmst du nicht das Listings Paket?
Das kann alles was du willstftp://ftp.tex.ac.uk/tex-archive/macros/ ... stings.pdf

Zeilenummern, Keywords belibige Kommentarzeichen, zich Programmiersprachen etc. Und du sparst dir das anlegen einer Float mit float.

Bastian
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Do 16. Jul 2009, 18:47

Beitrag von Bastian »

selten so ein schlechte Dokumentation gesehen...

Aber vielen Dank für den Hinweis, das Paket schein echt die optimale Lösung zu sein.

DonCube
Forum-Guru
Forum-Guru
Beiträge: 291
Registriert: So 29. Jun 2008, 21:17
Wohnort: Bocholt

Beitrag von DonCube »

Hi Bastian,
Aber einmal eingearbeitet ist das Paket echt praktisch. Habe es selbst auch schon oft verwendet.

Gruß
DonCube

PS: Status anpassen.
Schau mal hier rein goLaTeX-Wiki, und gaaaanz wichtig Minimalbeispiel

Bastian
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Do 16. Jul 2009, 18:47

Beitrag von Bastian »

Habe doch noch mal eine Rückfrage.

Die Listings werden zwar korrekt durchgezählt, aber bei der referenzierung haut was nicht hin... es erscheint nur die Kapitelnummer.
\documentclass[12pt,a4paper]{scrreprt}

\usepackage{listings}
\lstloadlanguages{Matlab,C}
\lstset{% general command to set parameter(s)
basicstyle=\sffamily\footnotesize, % print whole listing small
keywordstyle=\sffamily\footnotesize\bfseries, % ubold black keywords
identifierstyle=, % nothing happens
commentstyle=\sffamily\footnotesize\slshape, % green comments
stringstyle=\sffamily\footnotesize, % typewriter type for strings
showstringspaces=false, % no special string spaces
numbers=left, 
numberstyle=\sffamily\footnotesize, 
stepnumber=1, 
numbersep=10pt,
showspaces=false,
showtabs=false,
frame=lines,
morecomment=[l]{\%},
float=htbp,
numberbychapter=true
}

\begin{document}

\chapter{Kapitel1}

Hier etwas Kode \ref{lst:DFZVf1}.

\begin{lstlisting}[float, caption=Berechnung]
function D_FZVf1 = fcn(D_FZV0,a_xo,k_Ef)
\end{lstlisting}
\label{lst:DFZVf1}

\subsubsection{Unterabschnitt}

Hier noch etwas Kode \ref{lst:DFZVf2}.

\begin{lstlisting}[float, caption=Berechnung]
function D_FZVf1 = fcn(D_FZV0,a_xo,k_Ef)
\end{lstlisting}
\label{lst:DFZVf2}

\chapter{Kapitel2}

Hier noch etwas Kode \ref{lst:DFZVf3}.

\begin{lstlisting}[float, caption=Berechnung]
function D_FZVf1 = fcn(D_FZV0,a_xo,k_Ef)
\end{lstlisting}
\label{lst:DFZVf3}

\end{document}
Und noch eine Bitte: Ich möchte als Kategorie nicht "Listing" sonder "Kode" oder ähnliches... nur wie???

Finde es auch hässlich, dass die horizontalen Linien nicht bis zu den Zeilennummern gehen, aber das kann man wohl nicht ändern...

Danke und Grüße!

Benutzeravatar
bloodworks
Moderator
Moderator
Beiträge: 1425
Registriert: Mo 19. Jan 2009, 10:52
Wohnort: /dev/null

Beitrag von bloodworks »

\renewcommand{\lstlistingname}{Dein Name}
Du musst das label in der Float bzw der Umgebung haben. Bei Listing geht dsa so
 \begin{lstlisting}[label=blablabla,caption=......]

Bastian
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Do 16. Jul 2009, 18:47

Beitrag von Bastian »

Dank ... Dank ... immer wieder Dank!

Lea1602

Problem beim einbinden von tcl code aus einer Datei

Beitrag von Lea1602 »

Hallo zusammen,

ich habe ein Problem beim einbinden von meinem tcl Code. Ich benutze Latex und TexnicCenter für meine Abschlussarbeit.
Das Problem ist das mir zwar der Abschnitt, in welchem der Code stehen soll angezeigt wird und auch die Zeilennummerierung anzeigt allerdings ist das Fenster sonst leer :shock:
Zum einbinden benutze ich das usepackage listnigs und setze mit listset den Rahmen.

 
\usepackage{listings} % um Quelltext von Dateien einzubinden
\usepackage{color}
\definecolor{leichtgrau}{gray}{.90}

\lstset{
frame={tb}, 
backgroundcolor=\color{leichtgrau}, 
language={tcl}, 
showstringspaces=false, 
basicstyle=\ttfamily\small, 
keywordstyle=\color{red}, 
commentstyle=\color{blue}, 
stringstyle=\color{green}, 
numbers={left},
numberstyle={\normalsize},
numbersep={3pt},
stepnumber={1}
}

damit binde ich die Datei ein
\lstinputlisting {Dateien/b.tcl}
ich hoffe mir kann jemand Helfen weil ich echt zwerzeifel

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Mach doch dafür am besten ein neues Thema nur für dich auf, Platz haben wir hier ja reichlich.

Auch ein Minimalbeispiel wäre nicht schlecht um der Ursache auf den Grund zu gehen.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Antworten