Seite 1 von 1

Beamer- Klasse langen Matlabcode einbinden und Seitenumbruch

Verfasst: Di 22. Jan 2019, 08:34
von lizagliza
Hallo ihr Lieben,

Ich möchte in meinen Folien Matlab-Programme einbinden. Das ist grundlegend auch kein Problem:

Probleme macht mir, dass der Matlabcode zu lang ist sodass erunten "abfeschnitten" wird. kann man das entweder so anpassen, dass es auf einer Seite ist oder splitten um es auf 2 aufzuteilen?
\documentclass[11pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usetheme{Singapore}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\setbeamertemplate{theorems}[numbered]
\setbeamertemplate{section in toc}[sections numbered]

\definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue
\definecolor{mylilas}{RGB}{170,55,241}
\usepackage{listings}
\lstset{language=Matlab,%
	%basicstyle=\color{red},
	breaklines=true,%
	morekeywords={matlab2tikz},
	keywordstyle=\color{blue},%
	morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
	identifierstyle=\color{black},%
	stringstyle=\color{mylilas},
	commentstyle=\color{mygreen},%
	showstringspaces=false,%without this there will be a symbol in the places where there is a space
	numbers=left,%
	numberstyle={\tiny \color{black}},% size of the numbers
	numbersep=9pt, % this defines how far the numbers are from the text
	emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
	%emph=[2]{word1,word2}, emphstyle=[2]{style},    
}
\begin{document}
\begin{frame}
\lstinputlisting{p7.m}
\end{frame}
\end{document}
Gibt es auch hier eine Möglichkeit den Umbruch zu erzwingen? Da ich hier ja eine externe datei lade.

Link zum Matlabprogramm
https://people.maths.ox.ac.uk/trefethen/p7.m

Schönen Abend noch und vielen Dank
lisa

Verfasst: Di 22. Jan 2019, 09:06
von Gast
→ frame-Option allowframebreaks in der [d]beamer[/d]-Anleitung. Beispiel (ohne Notwendigkeit für eine externe Datei):
\documentclass[11pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usetheme{Singapore}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\setbeamertemplate{theorems}[numbered]
\setbeamertemplate{section in toc}[sections numbered]

\definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue
\definecolor{mylilas}{RGB}{170,55,241}
\usepackage{listings}
\lstset{language=Matlab,%
   %basicstyle=\color{red},
   breaklines=true,%
   morekeywords={matlab2tikz},
   keywordstyle=\color{blue},%
   morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
   identifierstyle=\color{black},%
   stringstyle=\color{mylilas},
   commentstyle=\color{mygreen},%
   showstringspaces=false,%without this there will be a symbol in the places where there is a space
   numbers=left,%
   numberstyle={\tiny \color{black}},% size of the numbers
   numbersep=9pt, % this defines how far the numbers are from the text
   emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
   %emph=[2]{word1,word2}, emphstyle=[2]{style},    
}
\begin{document}
\begin{frame}[allowframebreaks]
\lstinputlisting[{language=[La]TeX}]{\jobname.tex}% Bei Verwendung von v2.overleaf.org bitte hier den Dateiname der Hauptdatei, beispielsweise main.tex einsetzen.
\end{frame}
\end{document}

Verfasst: Di 22. Jan 2019, 13:04
von lizagliza
Das habe ich bereits versucht. Ändert aber leider nichts. :cry:

Eventuell sonst noch eine Idee? Habe ich irgendwo was falsch gemacht?



Vielen Dank

Verfasst: Di 22. Jan 2019, 13:41
von Gast
lizagliza hat geschrieben:Das habe ich bereits versucht.
Ist an deinem Beispiel aber nicht zu sehen?
lizagliza hat geschrieben:Habe ich irgendwo was falsch gemacht?
Ohne Minimalbeispiel, das zeigt, wie du versucht hast, den Vorschlag umzusetzen, ist das schwer zu sagen.

Hast du denn mal das gezeigte Beispiel bei dir ausprobiert? Wird bei dir dabei das Listing automatisch über mehrere Frames umbrochen?

Verfasst: Di 22. Jan 2019, 13:46
von Gast
Du kannst ein Listing übrigens auch manuell auf mehrere frames verteilen, indem du Option linerange verwendest. Siehe dazu die [d]listings[/d]-Anleitung.

Bei mir funktioniert es allerdings einwandfrei, wenn ich in deinem Beispiel
\begin{frame}
einfach nur durch
\begin{frame}[allowframebreaks]
ersetze. Jedoch würde ich empfehlen, Listing-frames immer fragile zu deklarieren. Siehe dazu die [d]beamer[/d]-Anleitung.

Verfasst: Di 22. Jan 2019, 17:21
von lizagliza
Hallöchen,

ich hab es nochmal probiert. Es funktioniert, aber erst nach dem 2. kompilieren.

Deswegen dachte ich vermutlich, dass es nicht funktioniert!

DANKE! :)