längere Matlab-Codes in Latex einbinden

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: längere Matlab-Codes in Latex einbinden

von esdd » Di 25. Mär 2014, 12:06

Hast du dir den Code von Johannes richtig angesehen? Nur die kurzen Codestücken, die gleiten dürfen, gehören in die snippet Umgebung. Bei Listings, die einen Seitenumbruch enthalten sollen, darfst du diese nicht verwenden. Die Beschriftung setzt du in dem Fall mit \captionof{snippet}{...}

Den Befehl \counterwithin kannst du erst nach \usepackage{chngcntr} verwenden.

Das Problem mit den Nummern im Verzeichnis kannst du durch die Option listof=flat lösen:
\documentclass[12pt,titlepage,
  listof=totoc,listof=flat,
  bibliography=totoc,
  headsepline]{scrartcl}
Gruß
Elke

von waba » Di 25. Mär 2014, 11:57

Desweiteren habe ich noch das Problem Das im Code-Verzeichnis bei einer Beschriftung zum Beispiel 3.14 der Abstand zwischen den Ziffern und der Buchstaben der Beschriftung nicht groß genug ist und diese übereinander stehen...

von waba » Di 25. Mär 2014, 11:47

Meine Präambel sieht jetzt folgendermaßen aus:
\documentclass[a4paper,12pt,titlepage,german,liststotoc,bibtotoc,headsepline]{scrartcl}

\usepackage[ngerman]{babel} % deutsche Silbentrennung
\usepackage[utf8]{inputenc} % deutsche Umlaute
\usepackage{ucs}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
 
% ÜBERSCHRIFTEN, ABSTÄNDE, SEITENSTIL
\frenchspacing
\pagestyle{headings}
\usepackage[left=3.5cm, right=3cm, top=2.5cm, bottom=2.5cm]{geometry} % Seitenränder
\usepackage{xcolor}%Textfarbe
%\renewcommand*{\chapterheadstartvskip}{\vspace*{-0.5cm}} % Abstand der Kapitelüberschriften zum oberen Seitenrand reduziert um x
%\usepackage{lmodern} % neue verbesserte Schrifttypen von LaTex
\usepackage{float}%Gleitumgebung für Bilder

% DOKUMENT ZEILENABSTAND
\usepackage{setspace}
%\onehalfspacing

\usepackage{parskip} %Verhindert das Einrücken nach Zeilenabsatz

%MATHE 
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{listings} 
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode} % Matlabcode hinzufügen

\usepackage{tocbasic}
\DeclareNewTOC[% 
   type=snippet,% 
   types=snippets,% 
   float,%Damit kann das Listing gleiten 
   name=Matlab-Code,% 
   listname={Codeverzeichnis}% 
]{lol}%ListOfListings 
\lstloadlanguages{Matlab} 
\lstset{literate=%
  {Ö}{{\"O}}1
  {Ä}{{\"A}}1
  {Ü}{{\"U}}1
  {ß}{{\ss}}2
  {ü}{{\"u}}1
  {ä}{{\"a}}1
  {ö}{{\"o}}1
} % Umlaute in Matlabcode
%\counterwithin{snippet}{section} % Bildbeschriftung 1.1 ... 2.3 usw.

% ANDERES
\usepackage{blindtext}
\usepackage[numbers,square]{natbib} % zum Einbinden von .bib
\usepackage{url} % mit \url{} lassen sich Internetlinks mit Sonderzeichen darstellen
\usepackage{hyperref}
\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\ihead[\headmark]{\headmark} \ohead{Seite \pagemark}
\usepackage{eurosym}%Eurosymbol einfügen mit \EUR{Betrag}
\usepackage[printonlyused]{acronym}%Abkürzungsverzeichniss
\usepackage{csquotes}
\usepackage{chngcntr}

\counterwithin{figure}{section}  % Bildbeschriftung 1.1 ... 2.3 usw.

%\renewcaptionname{ngerman}{\contentsname}{Inhalt}
%\renewcaptionname{ngerman}{\listfigurename}{Abbildungen}
%\renewcaptionname{ngerman}{\listtablename}{Tabellen}
\renewcommand{\refname}{Literaturverzeichnis}
% ZITATE 

\bibliographystyle{natdin}
und meine Matlab-Codes sind jetzt so eingebunden:
\begin{snippet}[H]
\begin{lstlisting}
z = x + y
.
.
.
..
.
..
.
.
.
.
\end{lstlisting}
		\caption{Beispiel}
		\label{Beispiel}
\end{snippet}
Leider habe ich festgestellt das Seiten immernoch nicht umgebrochen werden. Liegt das evtl an dem verwendeten mcode.sty?
http://www.mathworks.com/matlabcentral/ ... ex-package

Falls ja was muss ich daran ändern

von esdd » Di 25. Mär 2014, 11:32

Bei mir funktioniert das, wenn ich in den Code von Johannes
\usepackage{chngcntr}
\counterwithin{snippet}{section}
einfüge.

Das Paket tocbasic wird von den KOMA-Script Klassen ohnehin verwendet. Du brauchst es deshalb nur dann explizit laden, wenn Du eine andere Dokumentenklasse nutzt.

Gruß
Elke

von waba » Di 25. Mär 2014, 11:14

ja das kommt dem schon sehr Nahe nur wie bringe ich noch folgenden Befehl unter?
\counterwithin{figure}{section} % Bildbeschriftung 1.1 ... 2.3 usw.
Wenn ich figure gegen snippet tausche kommt eine Fehlermeldung.

von Johannes_B » Di 25. Mär 2014, 10:36

In Gleitumgebungen darf grundsätzlich kein Seitenumbruch stattfinden. Also wird die Gleitumgebung nicht verwendet, und stattdessen \captionof{type}{Text} aus KOMA-script benutzt.

An dieser Stelle auch gleich die Definition eines neuen Verzeichnisses mit eigenen Eintragstypen. Nähere Informationen finden sich in der KOMA-Dokumentation.
\documentclass{scrartcl}
\usepackage{tocbasic}
\DeclareNewTOC[%
	type=snippet,%
	types=snippets,%
	float,%Damit kann das Listing gleiten
	name=Codeschnipsel,%
	listname={Liste der Codeschnipsel}%
]{lol}%ListOfListings
\usepackage{listings}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\begin{document}
\listofsnippets
\blindtext

\begin{snippet}
	\begin{lstlisting}
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	\end{lstlisting}
	\caption{bubbleSort}
\end{snippet}

\blindtext[2]
\begin{center}
	\begin{lstlisting}
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	  repeat     
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      /* if this pair is out of order */
      if A[i-1] > A[i] then
        /* swap them and remember something changed */
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
	\end{lstlisting}
	\captionof{snippet}{ein paar mal bubblesort}
\end{center}
\end{document}

längere Matlab-Codes in Latex einbinden

von waba » Di 25. Mär 2014, 10:19

Hallo,

ich binde Matlab-Codes mit Hilfe der mcode.sty Datei von Mathworks in meinen Latex-Text ein. Dies erledige ich dann mit folgendem Befehl:
\begin{figure} 
\begin{lstlisting} 
Matlab ist toll % und Latex auch 
\end{lstlisting} 
      \caption{Matlab ist toll} 
      \label{Mit} 
\end{figure}
Mein Problem ist nun das auf Grund der figure-Umgebung kein Seitenumbruch mehr vorhanden ist und somit längere Matlab-Codes nicht mehr komplett angezeigt werden. Sie werden dann bis zum Ende das Blattes und quasi darüber hinaus erstellt. Auf dem nächsten Blatt gehen sie dann aber nicht mehr weiter.

Wie kann ich nun eine Bildunterschrift und ein Label an den Code anhängen und dennoch den Seitenumbruch erhalten?

Viele Grüße

Nach oben