PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unerwünschter Seitenumbruch vor mdframe



marxlechen
29-06-2013, 15:40
Hallo,

Ich habe mir mit mdframed eine Umgebund gebastelt. Innherhalb dieser lasse ich mit parpic ein Bild umfließen. Falls ich dieses Bild mit einer Liste umfließen lassen möchte, nehme ich das paralist-paket her. Soweit alles gut.

Allerdings: Bei der Anwendung des paralist-Paktetes kommt es manchmal vor dem Frame zu einem unerwünschten Seitenumbruch, obwohl der Frame auf dieser Seite noch komplett Platz hätte. Komischerweise ist dies auch irgendwie abhängig von sonstigem Inhalt des Frames bzw. der Länge der paraliste, oder dem Restlichem Platz auf der Seite (sowohl weniger, als auch mehr führen zu anderen Ergebnissen)... kommt mir alles sehr spanisch vor. Lösungen? Ideen?

Hier die Definition meiner Umgebung:



\usepackage{tikz}
\usepackage[framemethod=default]{mdframed}
\usepackage{graphicx}
\usepackage{paralist}
\usepackage{picins}

%%%%%%%%%%%%%%%%%% fragenboxxxstyle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\mdfdefinestyle{fragenboxxxstyle}{
topline=true,
frametitleaboveskip=\dimexpr-\ht\strutbox\relax,
linewidth=2pt,
linecolor={black!50!white},
backgroundcolor={white},
fontcolor=black,
font={},
%
needspace=8cm,
%
innerleftmargin=3ex,
innerrightmargin=3ex,
innertopmargin=0ex,
innerbottommargin=3ex,
leftmargin=0ex,
rightmargin=0,
skipabove=3ex,
skipbelow=3ex
}

%%%%%%%%%%%%%%%%%% Frageboxxxumgebung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{fragenboxxx}[1][]{
\ifstrempty{#1}
{\mdfsetup{
frametitle={
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=black!50!white]
{\strut \textcolor{white}{\fragentext}};}}}
{\mdfsetup{
frametitle={
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=black!50!white]
{\strut \textcolor{white}{\fragentext:~#1}};}}}
\mdfsetup{style=fragenboxxxstyle
}
\begin{mdframed}[]\relax
\IfFileExists{bmvorlagen/logos/frage.pdf}{
\parpic{\includegraphics[width=1.8cm]{frage}}}
~
}
{
\end{mdframed}}

mechanicus
29-06-2013, 15:43
Ein komplettes Minimalbeispiel musst du schon bringen.

marxlechen
29-06-2013, 16:00
Minimalbeispiel ist schwierig, da der Fehler nicht in jeder Situation auftritt. Auch müsst ihr ein eigenes Bild laden (hab die Stelle mit einem Kommentar versehen). Aber hier die Umgebung lauffähig zum rumspielen...


\documentclass{article}

\usepackage{tikz}
\usepackage[framemethod=default]{mdframed}
\usepackage{graphicx}
\usepackage{paralist}
\usepackage{picins}


%%%%%%%%%%%%%%%%%% fragenboxxxstyle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mdfdefinestyle{fragenboxxxstyle}{
topline=true,
frametitleaboveskip=\dimexpr-\ht\strutbox\relax,
linewidth=2pt,
linecolor={black!50!white},
backgroundcolor={white},
fontcolor=black,
font={},
%
needspace=8cm,
%
innerleftmargin=3ex,
innerrightmargin=3ex,
innertopmargin=0ex,
innerbottommargin=3ex,
leftmargin=0ex,
rightmargin=0,
skipabove=3ex,
skipbelow=3ex
}

%%%%%%%%%%%%%%%%%% Frageboxxxumgebung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{fragenboxxx}{
\mdfsetup{
frametitle={
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=black!50!white]
{\strut \textcolor{white}{Weißt du die Antwort?}};}}
\mdfsetup{style=fragenboxxxstyle}
\begin{mdframed}[]\relax
\IfFileExists{bmvorlagen/logos/frage.pdf}{%HIER EIGENES BILD LADEN!!!!
\parpic{\includegraphics[width=1.8cm]{frage}}}
~
}
{
\end{mdframed}}

\begin{document}
\begin{fragenboxxx}
\begin{inparaenum}[1.)]
\item Bezieht man die hier eingeführten Spannungen auf die verformte oder auf die unverformte Querschnittsfläche?\vspace{\parskip}\\
\item Erklären Sie das Prinzip von \textit{de Saint Venant?}\vspace{\parskip}\\
\item Um wie viel verringert sich die Querschnittsfläche eines dünnen Stabes in
einem reinen Zugversuch, sofern dieser die Querdehnzahl von 0,3
besitzt, eine Längsdehnung von 1 erfährt und vor dem Zugversuch eine
Querschnittsfläche von 1 aufweist.\vspace{\parskip}\\
\item Erläutern Sie warum Schubspannungen in zwei senkrecht aufeinander stehenden Schnitten gleich groß sind.\vspace{\parskip}\\
\item Geben Sie die Beziehungen für Dehnungen in $y$-Richtung für einen reinen
Zugversuch in $x$-Richtung und einer gleichzeitigen Erwärmung $T$ an.\vspace{\parskip}\\
\item Welche Annahmen werden bei einem ebenen Formänderungszustand getroffen?\vspace{\parskip}\\
\item Begründen Sie, warum für $\frac{\partial v}{\partial x}=-\frac{\partial u}{\partial y}$
und gleichzeitig für $\frac{\partial u}{\partial x}=\frac{\partial v}{\partial y}=0$
keine Spannungen auftreten. \vspace{\parskip}\\
\item Welche Annahmen werden beim Zugversuch getroffen?\vspace{\parskip}\\
\item Wie viele Materialkenngrößen benötigen Sie zur Beschreibung eines linear elastischen Materials?\vspace{\parskip}\\
\item Was versteht man unter der Proportionalitätsgrenze beim Zugversuch?\vspace{\parskip}\\
\end{inparaenum}
\end{fragenboxxx}

\end{document}

mechanicus
29-06-2013, 16:15
Hi,

wenn du ein Bild brauchst, dann lade das Paket mwe. Es stellt alles nötige zur Verfügung.

In der Anleitung zu mdframed habe ich einen Hinweis zu picins aufgenommen. Das solltest du beachten.

Gruß
Marco

marxlechen
29-06-2013, 16:49
oh. den Hinweis habe ich übersehen.

Doch leider hilft er auch nicht um den Fehler zu beheben. Ich habe den Hack von dir eingefügt --> keine änderung

Dann habe ich das picins Packet völlig weggelassen --> keine änderung

???mhhh. Auch, wenn ich die inparaenum Umgebung weglassen und die Punkte einfach einzeln aufliste--> keine änderung

Der einzige Fall, in dem es funktioniert: wenn ich sowohl die picins-Umgebung, als auch die inparaenum Umgebung völlig weglasse...

Sonst gefällt mir dein packet im übrigen großartig... :)

Ach ja: Auch ohne den Hack funktioniert der Split eines Frames sehr gut. nue eben der Seitenubruch davor nicht...

marxlechen
29-06-2013, 17:11
Hier ein nun vollständig laufendes Minimalbeispiel mit bild und deinem Hack.


\documentclass{article}
\usepackage{tikz}
\usepackage[framemethod=default]{mdframed}
\usepackage{graphicx}
\usepackage{paralist}
\usepackage{picins}
\makeatletter
\let\@captype\@undefined
\def\newcaption{%
\begingroup%
\def\@captype{figure}%
\refstepcounter\@captype\@dblarg{\@newcaption\@cap type}%
\endgroup%
}
\makeatother
\usepackage{mwe}

%%%%%%%%%%%%%%%%%% fragenboxxxstyle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mdfdefinestyle{fragenboxxxstyle}{
topline=true,
frametitleaboveskip=\dimexpr-\ht\strutbox\relax,
linewidth=2pt,
linecolor={black!50!white},
backgroundcolor={white},
fontcolor=black,
font={},
%
needspace=8cm,
%
innerleftmargin=3ex,
innerrightmargin=3ex,
innertopmargin=0ex,
innerbottommargin=3ex,
leftmargin=0ex,
rightmargin=0,
skipabove=3ex,
skipbelow=3ex
}

%%%%%%%%%%%%%%%%%% Frageboxxxumgebung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{fragenboxxx}{
\mdfsetup{
frametitle={
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=black!50!white]
{\strut \textcolor{white}{Weißt du die Antwort?}};}}
\mdfsetup{style=fragenboxxxstyle}
\begin{mdframed}[]\relax
\parpic{\includegraphics[width=1.8cm]{example-image-a}}
~
}
{
\end{mdframed}}

\begin{document}
\begin{fragenboxxx}
\begin{inparaenum}[1.)]
\item Bezieht man die hier eingeführten Spannungen auf die verformte oder auf die unverformte Querschnittsfläche?\vspace{\parskip}\\
\item Erklären Sie das Prinzip von \textit{de Saint Venant?}\vspace{\parskip}\\
\item Um wie viel verringert sich die Querschnittsfläche eines dünnen Stabes in
einem reinen Zugversuch, sofern dieser die Querdehnzahl von 0,3
besitzt, eine Längsdehnung von 1 erfährt und vor dem Zugversuch eine
Querschnittsfläche von 1 aufweist.\vspace{\parskip}\\
\item Erläutern Sie warum Schubspannungen in zwei senkrecht aufeinander stehenden Schnitten gleich groß sind.\vspace{\parskip}\\
\item Geben Sie die Beziehungen für Dehnungen in $y$-Richtung für einen reinen
Zugversuch in $x$-Richtung und einer gleichzeitigen Erwärmung $T$ an.\vspace{\parskip}\\
\item Welche Annahmen werden bei einem ebenen Formänderungszustand getroffen?\vspace{\parskip}\\
\item Begründen Sie, warum für $\frac{\partial v}{\partial x}=-\frac{\partial u}{\partial y}$
und gleichzeitig für $\frac{\partial u}{\partial x}=\frac{\partial v}{\partial y}=0$
keine Spannungen auftreten. \vspace{\parskip}\\
\item Welche Annahmen werden beim Zugversuch getroffen?\vspace{\parskip}\\
\item Wie viele Materialkenngrößen benötigen Sie zur Beschreibung eines linear elastischen Materials?\vspace{\parskip}\\
\item Was versteht man unter der Proportionalitätsgrenze beim Zugversuch?\vspace{\parskip}\\
\end{inparaenum}
\end{fragenboxxx}

\end{document}

mechanicus
29-06-2013, 17:26
Hi,

also die Fragen der Box kann ich beantworten :rolleyes: :p Aber das hilft dir hier nicht. Was aber genau ist jetzt das Problem? Im Anhang findest du mein pdf.

Gruß
Marco

marxlechen
29-06-2013, 17:44
Ja, die Fragen kann ich auch beantworten. :) Was studierst du?

Ich hab mal zwei Seiten von der Orginaldatei hochgeladen, bei denen der Fehler auftritt. Auf der ersten Seite wäre eigentlich noch genug Platz, trotzdem wird die Fragenboxxx auf die nächste Seite gepackt.

mechanicus
29-06-2013, 17:58
Hi,

probiere mal bitte die nachstehende Definition. Ich habe auch erstmal needspace entfernt.


\documentclass{article}
\usepackage{tikz}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{graphicx}
\usepackage{paralist}
\usepackage{picins}
\makeatletter
\let\@captype\@undefined
\def\newcaption{%
\begingroup%
\def\@captype{figure}%
\refstepcounter\@captype\@dblarg{\@newcaption\@cap type}%
\endgroup%
}
\makeatother
\usepackage{mwe}

%%%%%%%%%%%%%%%%%% fragenboxxxstyle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mdfdefinestyle{fragenboxxxstyle}{
topline=true,
linewidth=2pt,
outerlinewidth=2ex,outerlinecolor=white,
linecolor={black!50!white},
fontcolor=black,
font={},
innerleftmargin=3ex,
innerrightmargin=3ex,
innertopmargin=3ex,
innerbottommargin=3ex,
leftmargin=-2ex,
rightmargin=-2ex,
skipabove=3ex,
skipbelow=3ex,
singleextra={\node[anchor=west,xshift=1cm,rectangle,fill=black!50!whi te,overlay]at (O|-P) {\strut{Weißt du die Antwort?}};},
firstextra={\node[anchor=west,xshift=1cm,rectangle,fill=black!50!whi te,overlay]at (O|-P) {\strut{Weißt du die Antwort?}};},
}

%%%%%%%%%%%%%%%%%% Frageboxxxumgebung %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{fragenboxxx}{%
\begin{mdframed}[style=fragenboxxxstyle]\relax%
\parpic{\includegraphics[width=1.8cm]{example-image-a}}
~
}
{
\end{mdframed}}
\usepackage{showframe}
\begin{document}
\blindtext\blindtext\blindtext
\begin{fragenboxxx}
\begin{inparaenum}[1.)]
\item Bezieht man die hier eingeführten Spannungen auf die verformte oder auf die unverformte Querschnittsfläche?\vspace{\parskip}\\
\item Erklären Sie das Prinzip von \textit{de Saint Venant?}\vspace{\parskip}\\
\item Um wie viel verringert sich die Querschnittsfläche eines dünnen Stabes in
einem reinen Zugversuch, sofern dieser die Querdehnzahl von 0,3
besitzt, eine Längsdehnung von 1 erfährt und vor dem Zugversuch eine
Querschnittsfläche von 1 aufweist.\vspace{\parskip}\\
\item Erläutern Sie warum Schubspannungen in zwei senkrecht aufeinander stehenden Schnitten gleich groß sind.\vspace{\parskip}\\
\item Geben Sie die Beziehungen für Dehnungen in $y$-Richtung für einen reinen
Zugversuch in $x$-Richtung und einer gleichzeitigen Erwärmung $T$ an.\vspace{\parskip}\\
\item Welche Annahmen werden bei einem ebenen Formänderungszustand getroffen?\vspace{\parskip}\\
\item Begründen Sie, warum für $\frac{\partial v}{\partial x}=-\frac{\partial u}{\partial y}$
und gleichzeitig für $\frac{\partial u}{\partial x}=\frac{\partial v}{\partial y}=0$
keine Spannungen auftreten. \vspace{\parskip}\\
\item Welche Annahmen werden beim Zugversuch getroffen?\vspace{\parskip}\\
\item Wie viele Materialkenngrößen benötigen Sie zur Beschreibung eines linear elastischen Materials?\vspace{\parskip}\\
\item Was versteht man unter der Proportionalitätsgrenze beim Zugversuch?\vspace{\parskip}\\
\end{inparaenum}
\end{fragenboxxx}

\end{document}

Studium ist schon ein paar Tage her :p Hatte damals aber technische Mechanik vertieft :D

Gruß
Marco

marxlechen
29-06-2013, 18:27
mmmhh!

Also deines funktioniert. Allerdings nichtmehr, wenn ich needspace dazu nehme.

Dafür funktioniert meine nun auch, wenn ich needspace weg nehme!!! (komisch: Ich dachte das hätte ich schon längst ausprobiert, habe es aber wohl ausversehen an einer anderen stelle(ich hab noch eine lampenboxxx) entfernt)

Es liegt also an needspace. Dies hat bei mir die einstellung 8cm. aber auf der Seite sollten ja locker 8 cm Platz sein. Per "trial and error" bin ich drauf gekommen, dass es erst bei needspace=3cm auf die gleiche Seite gesetzt wird. sehr komisch!

Bin auch grad schwer am überlegen, ob ich mechanik vertiefen soll:)

mechanicus
29-06-2013, 18:46
Also deines funktioniert. Allerdings nichtmehr, wenn ich needspace dazu nehme.

Eigentlich macht die Option nichts anderes als das gleichnamige Paket. :confused:




Bin auch grad schwer am überlegen, ob ich mechanik vertiefen soll:)
Gute Entscheidung. Man muss dann nichts praktisch machen, weil sowieso alles infinitesimal ist :D

Gruß
Marco

marxlechen
29-06-2013, 19:21
mhhh. Sehr schade. Eigentlich würde ich needspace schon gerne drin lassen.
Es funktioiert auch nicht, wenn ich \needspace{3cm} direkt in die umgebung schreibe. Es muss wohl also am needspace-paket liegen ()...

Also habe ich es mal mit \Needspace{} versucht. Und siehe da!, es funktioniert. Allerdings verstehe ich den Unterschied zu \needspace nicht... du?
ftp://ftp.fu-berlin.de/tex/CTAN/macros/latex/contrib/needspace/needspace.pdf

Was ich zusätzlich auch gerne haben würde wäre ein "needspace von untern", was sozusagen prüft, ob nur ein kleiner Teil auf der nächsten seite stehen würde und diese ggf. ändert...

viele lieben Dank, Max

mechanicus
29-06-2013, 19:27
Was ich zusätzlich auch gerne haben würde wäre ein "needspace von untern", was sozusagen prüft, ob nur ein kleiner Teil auf der nächsten seite stehen würde und diese ggf. ändert...
Wie ändern? natürlich kann man feststellen, wie groß der Abschnitt der letzten Seite ist, aber was genau soll dann passieren?

marxlechen
29-06-2013, 19:50
Was passieren sollte: Bei großen Boxen nichts und bei kleinen Boxen (Bsp ein 10cm box die in 8 und 2cm geteilt wird) alles zusammen auf die nächste Seite.

mechanicus
29-06-2013, 19:52
Was passieren sollte: Bei großen Boxen nichts und bei kleinen Boxen (Bsp ein 10cm box die in 8 und 2cm geteilt wird) alles zusammen auf die nächste Seite.
Verstehst du was den Unterschied von \needspace und \Needspace?
Dann hast du ein 8cm großes Loch -- Willst du das? Wenn ja, dann kannst du erstmal manuell die Option nobreak setzen.

marxlechen
29-06-2013, 19:56
Das will ich zwar auch nicht so richtig, aber lieber als ein nur 2cm langes Stückchien. Mit nobreak müsste ich jede Box einzeln betrachten, ginge das nicht innerhalb der umgebungsdef...., aber das ist mir nicht so wichtig...

Was ich lieber verstehen würde ist der Unterschied zwischen \needspace und \Needspace

mechanicus
29-06-2013, 20:38
Was ich lieber verstehen würde ist der Unterschied zwischen \needspace und \Needspace
\Needspace ist recht simple. Schaue dir einfach die Definition an dort siehst du folgendes:

\dimen@ii\pagegoal \advance\dimen@ii-\pagetotal
Die Zeile besagt, setze dimen@ii auf den freien Platz der Seite (fehlen noch ein paar Kleinigkeiten, aber fürs allgemeine ausreichen)

Im nächsten Schritt wird einfach nur vergleichen, ob deine gewünschter Platz dem vorhanden entspricht und ein `\break` eingefügt.

\needspace is etwas sensibler. Es nutzt die bereits vergebenen Strafpunkte.


\newcommand{\needspace}[1]{%
\begingroup
\setlength{\dimen@}{#1}%Zuweisung der Eingabe
\vskip\z@\@plus\dimen@%glue-Anteil auf Eingabe
\penalty -100\vskip\z@\@plus -\dimen@%Strafpunkte setzen und somit evtl einen Seitenumbruch
\vskip\dimen@%kompletten Abstand eingeben
\penalty 9999%so gut wie kein Seitenumbruch, aber falls nötig, wird er geacht
\vskip -\dimen@%zurück zum Ausgang.
\vskip\z@skip % hide the previous |\vskip| from |\addvspace|%
\endgroup
}

marxlechen
29-06-2013, 20:48
ah. vielen lieben Dank dir.

Vieleicht werde ich bei Gelegenheit an einem "needspace von unten" mich mal versuchen. sonst bin ich nun aber vollauf zufrieden.