PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Block-Umgebung in Verbindung mit align-Umgebung in Beamer



VK88
25-03-2010, 08:46
Hallo Forum,

ich habe folgendes Problem bei der Erstellung einer Präsentation mit Beamer:

\begin{frame}
\begin{block}{Test}
\begin{align}
x = {} & y\\
a = {} & b
\end{align}
\end{block}
\end{frame}

erzeugt über der ersten Zeile innerhalb der Block-Umgebung eine ungewollte Leerzeile. Zum Vergleich siehe die Alternative:

\begin{frame}
\begin{block}{Test}
\begin{equation}
x = y
\end{equation}
\begin{equation}
a = b
\end{equation}
\end{block}
\end{frame}

Warum erzeugt die align-Umgebung diese zusätzliche Leerzeile und wie kann ich das verhindern ohne Holzhackermethoden ala \vspace{...}, oder gibt es einen generellen Grund für dieses Verhalten?

Vielen Dank und viele Grüße
Mario

bobmalaria
25-03-2010, 11:12
\setlength{\abovedisplayskip}{0pt}

nebenwirkungen nicht ausgeschlossen :)

LuPi
25-03-2010, 12:27
Interessant. Wieso wirkt sich diese Einstellung bei align und equation unterschiedlich aus? Das scheint mir inkonsistent zu sein, denn diese Länge stellt doch allgemein den "Abstand zwischen Text und abgesetzter Formel" dar. Oder hat das einen speziellen Grund, der sich mir nicht erschließt?



\documentclass{scrartcl}
\usepackage{amsmath}
\begin{document}
\hrule
\begin{align}
x = {} & y\\
a = {} & b
\end{align}

\hrule
\begin{equation}
x = y
\end{equation}
\begin{equation}
a = b
\end{equation}

\setlength{\abovedisplayskip}{0pt}

\hrule
\begin{align}
x = {} & y\\
a = {} & b
\end{align}

\hrule
\begin{equation}
x = y
\end{equation}
\begin{equation}
a = b
\end{equation}

\end{document}

bene
06-02-2011, 21:30
sorry, wenn ich den Thread nochmal ausgrab, aber ich hatte genau das selbe Problem und bin hier drauf gestoßen. ich hab den Lösungsvorschlag bei mir versucht und \setlength{\abovedisplayskip}{0pt} in mein Dokument geschrieben, aber das hat nicht geholfen. Ich hab dann noch ewig weitergesucht woran das liegen konnte und hab dann eher durch Zufall selbst herausgefunden, dass der Befehl nach \begin{document} stehen muss, ich ihn vorher aber immer in die preample geschrieben hab.

Meine Frage jetzt: warum muss der Befehl nach \begin{document} ? ich dachte immer, so was kann ich auch in die preample schreiben. Gerade wenn ich etwas global ändern will, schreibe ich das in der Regel hier rein.

rais
07-02-2011, 23:54
Moin moin,

sorry, wenn ich den Thread nochmal ausgrab,

kein Problem, gerade für etwaige Erweiterungen bleiben die Beiträge ja offen, Afaik.

ich hab den Lösungsvorschlag bei mir versucht und \setlength{\abovedisplayskip}{0pt} in mein Dokument geschrieben, aber das hat nicht geholfen. Ich hab dann noch ewig weitergesucht woran das liegen konnte und hab dann eher durch Zufall selbst herausgefunden, dass der Befehl nach \begin{document} stehen muss, ich ihn vorher aber immer in die preample geschrieben hab.

Meine Frage jetzt: warum muss der Befehl nach \begin{document} ? ich dachte immer, so was kann ich auch in die preample schreiben. Gerade wenn ich etwas global ändern will, schreibe ich das in der Regel hier rein.
Nun ja, manche Dinge werden erst zu Dokumentbeginn aktiv, schau Dir vllt mal


\documentclass{article}
\usepackage{amsmath}
\typeout{+++ \string\abovedispalyskip: \the\abovedisplayskip}%<-- `+++' nur, damit Du es schneller in der .log wiederfindest;-)
\setlength\abovedisplayskip{3pc}
\typeout{+++ \string\abovedispalyskip: \the\abovedisplayskip}
\begin{document}
\typeout{+++ \string\abovedispalyskip: \the\abovedisplayskip}
\hrulefill
\begin{align}
c^2 &= a^2 + b^2\\
a &= \sqrt{c^2-b^2}
\end{align}
\end{document}

an. Ändere die Dokumentklasse zu scrartcl und schau Dir den/die Unterschied/e an. Ergänze dann vllt so etwas wie [fontsize=14pt] als Klassenoption und schau Dir wieder die Unterschiede an.

Wenn Du diesen \setlength nur in der Präambel haben willst, versuch es mit


\AtBeginDocument{%
\setlength\abovedisplayskip{...}%
}

MfG