Probleme beim Einbinden von Matlab Code in LaTeX

Schriftbild, Absätze und Auflistungen einstellen


steffn
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 28. Jul 2015, 10:40

Probleme beim Einbinden von Matlab Code in LaTeX

Beitrag von steffn »

Hallo zusammen,


habe jetzt schon einige male das Internet durchforstet und auch hier im Forum gesucht, aber leider keine passende Lösung für mein Problem gefunden.

Folgendes Problem: Ich möchte Matlab Code in mein LaTeX Dokument einbauen, das versuche ich über folgenden Befehl:
\lstinputlisting{Widderneuvariabel.m}
Das Problem ist, dass ich in meinem Code bei den Kommentaren zum Teil Hochzahlen verwendet habe, also ² ein per [Alt Gr]+[2]. Damit kommt LaTeX nicht klar und mit Unterstrichen anscheinend auch nicht so richtig.

Mein Dokument ist in ISO-8859-1 codiert. Habe auch mal UTF-8 probiert, aber das hat auch nicht funktioniert.

Auch mit dem m-Code Paket ging es nicht.


Hat jemand ne Idee, was ich tun könnte?
Benötigt ihr noch mehr Code Ausschnitte?


Vielen Dank schon mal!

Mfg,
Stefan

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: Probleme beim Einbinden von Matlab Code in LaTeX

Beitrag von u_fischer »

steffn hat geschrieben: Benötigt ihr noch mehr Code Ausschnitte?
Was würdest du brauchen, um das Problem vernünftig untersuchen zu können?

nixversteh
Forum-Meister
Forum-Meister
Beiträge: 561
Registriert: Di 10. Aug 2010, 09:47
Wohnort: Wrestedt

...

Beitrag von nixversteh »

Hallo Stefan,

schau mal hier: http://www.howtotex.com/tips-tricks/how ... documents/

Gruß

Martin

PS.: "Es tut mir leid, meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen." auf dein Problem bezogen lautet der zweite Satz: ":Sie müssen den Code einstellen"
Absence of evidence is not evidence of absence

steffn
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 28. Jul 2015, 10:40

Beitrag von steffn »

So, erstmal danke für die Antworten. Hatte gedacht, vielleicht reicht schon die Beschreibung meiner Vorgehensweise um etwas grundlegend falsches darin zu erkennen...
Aber stelle natürlich auch gerne den Code rein.
\documentclass[12pt,oneside,a4paper,openright]{report}
%---------------------------------------------------------------------
%-- Eigene Definitionen aus Datei mydefs.sty
%---------------------------------------------------------------------
\usepackage{mydefs}
\usepackage{siunitx}
\sisetup{
  locale = DE ,
  per-mode = symbol
}
\usepackage{listings}
\usepackage{hyperref}
\hypersetup{pdfborder={0 0 0}}
\usepackage[numbered,useliterate]{mcode}
\usepackage{tabularx}
\usepackage{dcolumn}
\usepackage{multirow}
\usepackage{amsmath}

\begin{document}

\appendix

\include{anhang_A}

\end{document}
Das ist jetzt ein Auszug aus der main.tex


Die anhang_A.tex sieht wie folgt aus:
%=====================================================================
\chapter{Anhang}
\label{chap:ergaenzungen}
%=====================================================================
Im Anhang findet ergänzender Inhalt Platz. Hierzu zählen beispielsweise Quellcode, Tabellen und Abbildungen.

Ein Quellcode kann in Auszügen mittels der ``listing''-Umgebung eingefügt werden. 


\begin{lstlisting}[caption=Beispielbeschriftung,label=lst:nr1]{}
use Math::Derivative qw(Derivative1 Derivative2);
@dydx=Derivative1(\@x,\@y);
@d2ydx2=Derivative2(\@x,\@y);
@d2ydx2=Derivative2(\@x,\@y,$yp0,$ypn);
\end{lstlisting}
Eine Referenz auf Quellcodeauszug \ref{lst:nr1} muss immer vorhanden sein.\\



This inline demo \mcode{for i=1:3, disp('cool'); end;} uses the \verb|\mcode{}| command.



\begin{lstlisting}
function []=plotten(vector3,Q_t,var1,delta_t,Amp,Zeit,T,Drossel,vector1,Q_neu,h_neu)

% Q_t=decimate(Q_t,10);
% vector3=decimate(vector3,10);

figure(7)
a=subplot(2,2,1);
plot(vector3,Q_t,'-')

\end{lstlisting}



\lstinputlisting{Widderneuvariabel.m}
Die oberen beiden listings werden problemlos angezeigt. Hatte es auch schon mal probiert den Code so wie die ersten beiden listings einzubinden, allerdings auch ohne Erfolg.

Habe noch einen Auszug aus der Matlab Datei inklusive den Fehlermeldungen vom TeX Editor als Screenshot angehängt.

So ich hoffe, mit den Code Auszügen lässt sich nun mehr mit dem Problem anfangen.

@Martin: Danke für den Link, hatte den Artikel davor schon gelesen. Allerdings bin ich dadurch leider nicht weiter gekommen
Dateianhänge
Screenshot TeXStudio, Auszug aus Matlab Code inklusive LaTeX Fehldermeldungen
Screenshot TeXStudio, Auszug aus Matlab Code inklusive LaTeX Fehldermeldungen
fehlermeldung_latex.jpg (404.68 KiB) 2881 mal betrachtet

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Seufz. Könntest du das Problem mit den Codeschnipeln (und nur denen) nachvollziehen? Du hast angeblich ein Problem mit einem ², aber da ist nirgendwo ein ² zu sehen.


Und warum lädt dein Code siunitx, tabularx, dcolumn, und benutzt Befehle wie \include, \chapter, \appendix. Hat das irgendwas mit deinem Problem zu tun?

nixversteh
Forum-Meister
Forum-Meister
Beiträge: 561
Registriert: Di 10. Aug 2010, 09:47
Wohnort: Wrestedt

...

Beitrag von nixversteh »

Stefan,
\usepackage{mydefs}
fehlt ...

Gruß

Martin
Absence of evidence is not evidence of absence

steffn
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Di 28. Jul 2015, 10:40

Beitrag von steffn »

im angehängten Screenshot ist ein Auszug des Matlab Codes und dort tauchen auch die ² auf. Da sieht man direkt die Fehlermeldungen dazu. Dachte daraus könnte man vielleicht Rückschlüsse auf das Problem ziehen.

Wie gesagt, ich vermute es hat eher mit ihm Matlab Code verwendeten Symbolen zu tun, die von LaTeX nicht dargestellt werden können und nicht unbedingt mit der Einbindung in mein Dokument.

ich probiers nochmal mit dem code: :)
\documentclass[12pt,oneside,a4paper,openright]{report}
\usepackage{listings}

\begin{document}

\begin{lstlisting}

%Erklärungen und Variablenbezeichnungen:
%{

Variablenbezeichnungen:

a: Wellenlaufgeschwindigkeit [m/s]
a_Ventil: Beschleunigung des Ventilkörbers [m/s²]
anzSchritte: Gibt an wie oft die Zeitschleife durchlaufen werden soll
%}
\end{lstlisting}

\end{document}

Das Ding ist allerdings, wenn ich das so in nem neuen Dokument teste, funktioniert es. Wenn ich es in die anhang_A mache nicht. Deshalb wollte ich möglichst viel aus meinem eigentlichen code posten.

Was genau soll ich posten, damit das Problem nachvollziehbar ist?


@Martin: das wird doch gleich als erstes Paket geladen?!

nixversteh
Forum-Meister
Forum-Meister
Beiträge: 561
Registriert: Di 10. Aug 2010, 09:47
Wohnort: Wrestedt

...

Beitrag von nixversteh »

Stefan, ja, ABBA: wir haben sie NICHT, deine Codeschnippsel ...

Gruß

Martin
Absence of evidence is not evidence of absence

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

im angehängten Screenshot ist ein Auszug des Matlab Codes und dort tauchen auch die ² auf. Da sieht man direkt die Fehlermeldungen dazu. Dachte daraus könnte man vielleicht Rückschlüsse auf das Problem ziehen.
Kann man schon. Aber warum soll ich die Zeit damit verbringen, über Experimente deine Kodierung und andere Einstellungen zu erraten, wenn du sie mit einem vernünftigen Beispiel einfach zeigen kannst?

steffn hat geschrieben: Das Ding ist allerdings, wenn ich das so in nem neuen Dokument teste, funktioniert es.
Nein. Das gibt zwar keine Fehler aber auch nicht den (wie auch immer) gewünschten Output.
Was genau soll ich posten, damit das Problem nachvollziehbar ist?
Genau das, was nötig ist, um es zu demonstrieren.

@Martin: das wird doch gleich als erstes Paket geladen?!
Eben. Und da wir das Paket nicht haben, können wir das Beispiel nicht kompilieren.
Zuletzt geändert von u_fischer am Di 28. Jul 2015, 15:39, insgesamt 1-mal geändert.

nixversteh
Forum-Meister
Forum-Meister
Beiträge: 561
Registriert: Di 10. Aug 2010, 09:47
Wohnort: Wrestedt

...

Beitrag von nixversteh »

Stefan,

so könnte in etwa dein Code aussehen:
\documentclass{scrreprt}
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\lstset{breakatwhitespace=false} %%<---this line added
\usepackage{xcolor}
% Farben für Matlab-Listings
\definecolor{hellgelb}{rgb}{1,1,0.85}     % Hintergrundfarbe
\definecolor{colKeys}{RGB}{0,0,255}       % blau
\definecolor{colIdentifier}{RGB}{0,0,0}	  % schwarz
\definecolor{colComments}{RGB}{34,139,34} % gruen
\definecolor{colString}{RGB}{160,32,240}  % violett

\lstset{%
    language=Matlab,%
    backgroundcolor={\color{hellgelb}},%
    basicstyle={\footnotesize\ttfamily},%
    breakautoindent=true,%
    breakindent=10pt,%
    breaklines=true,%
    captionpos=t,%
    columns=fixed,%
    commentstyle={\itshape\color{colComments}},%
    extendedchars=true,%
    float=hbp,%
    frame=single,%
    framerule=1pt,%
    identifierstyle={\color{colIdentifier}},%
    keywordstyle={\color{colKeys}},%
    numbers=left,%
    numbersep=1em,%
    numberstyle={\tiny\ttfamily},%
    showspaces=false,%
    showstringspaces=false,%
    stringstyle={\color{colString}},%
    tabsize=4,%
    xleftmargin=1em,%
    xrightmargin=1em%
}

\begin{document}
\textbf{Usage --- 3 ways}

1) This inline demo \mcode{for i=1:3, disp('cool'); end;} uses the \verb|\mcode{}| command.

2) The following is a block using the \verb|lstlisting| environment.
\begin{lstlisting}
for i = 1:3
	if i >= 5                % literate programming replacement
		disp('cool');       % comment with some §\mcommentfont\LaTeX in it: $\mcommentfont\pi x^2$§
	end
	[~,ind] = max(vec);
	x_last = x(1,end);
	v(end);
	really really long really really long really really long really really long really really long line % blaaaaaaaa
end
\end{lstlisting}
Note: Here, the package was loaded with the \verb|framed|, \verb|numbered|, \verb|autolinebreaks| and \verb|useliterate| options.  \textbf{Please see the top of mcode.sty for a detailed explanation of these options.}
\begin{lstlisting}[caption=Beispielbeschriftung,label=lst:nr1]{}
use Math::Derivative qw(Derivative1 Derivative2);
@dydx=Derivative1(\@x,\@y);
@d2ydx2=Derivative2(\@x,\@y);
@d2ydx2=Derivative2(\@x,\@y,$yp0,$ypn);
\end{lstlisting}
Eine Referenz auf Quellcodeauszug \ref{lst:nr1} muss immer vorhanden sein.\\
This inline demo \mcode{for i=1:3, disp('cool'); end;} uses the \verb|\mcode{}| command.
\begin{lstlisting}
function []=plotten(vector3,Q_t,var1,delta_t,Amp,Zeit,T,Drossel,vector1,Q_neu,h_neu)
% Q_t=decimate(Q_t,10);
% vector3=decimate(vector3,10);
figure(7)
a=subplot(2,2,1);
plot(vector3,Q_t,'-')
\end{lstlisting}
\end{document}
Gruß

Martin
Absence of evidence is not evidence of absence

Antworten