\settowidth-Äquivalent für abgesetzte Formeln

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: \settowidth-Äquivalent für abgesetzte Formeln

\settowidth-Äquivalent für abgesetzte Formeln

von Hagbard Celine » Fr 17. Jun 2011, 00:03

Hallo zusammen,
ich bastle gerade an (Beamer-)Boxen, die sich in ihrer Breite dem Inhalt anpassen. Dafür muss ich die Breite des Inhalts bestimmen. Das ist solange kein Problem (mit \settowidth), bis ich abgesetzte Formeln im Inhalt habe. Dann bekomme ich den Fehler (obwohl immer noch das passiert, was ich möchte):
! You can't use `\eqno' in math mode.
Außerdem meckert TeX dann über fehlende $ um die Formel.
Mein Minimalbeispiel ist leider etwas lang, da ich einige Definitionen mit reinschreiben muss. Ich habe die Zeile, die den Fehler verursacht, markiert. Könnt ihr mir eine Alternative zu \settowidth an dieser Stelle sagen?
Ich habe auch noch ein minimaleres Beispiel, das zeigt, was falsch läuft, aber dort ist ein etwas anderer, aber ähnlicher Fehler.
Hier mein Minimalbeispiel:
\documentclass{beamer}
\usepackage{xifthen}


\newlength{\blockbreite}
\newlength{\tmpblockbreite}
\newlength{\fitblockbreite}
\newlength{\fitblocktitelbreite}
\newlength{\fitblocktextbreite}
\newlength{\tmptextwidth}

\setlength{\blockbreite}{\textwidth}
\setbeamercolor{block title}{bg=blue,fg=black}
\setbeamercolor{block body}{bg=red,fg=black}
\addtobeamertemplate{block begin}
{%
	\setlength{\tmptextwidth}{\textwidth}%
	\setlength{\textwidth}{\blockbreite}%
	\begin{center}%
		\begin{minipage}[c]{\textwidth}%
}
{}
\addtobeamertemplate{block end}
{}
{%
		\end{minipage}%
	\end{center}%
	\setlength{\textwidth}{\tmptextwidth}%
}

\newcommand{\fitblock}[2]	% ein Block, dessen Breite sich der Breite seines Inhalts (inkl. Überschrift) anpasst
{%
	\setlength{\tmpblockbreite}{\blockbreite}
	\settowidth{\fitblocktitelbreite}{\textbf{#1}}
	\settowidth{\fitblocktextbreite}{#2}	% Diese Zeile macht den Fehler
	\ifthenelse
		{\fitblocktextbreite > \fitblocktitelbreite}
		{\setlength{\fitblockbreite}{\fitblocktextbreite}}
		{\setlength{\fitblockbreite}{\fitblocktitelbreite}}
	\ifthenelse
		{\fitblockbreite > \textwidth}
		{\setlength{\fitblockbreite}{\textwidth}}
		{}
	\setlength{\blockbreite}{\fitblockbreite}
	\begin{block}{#1}
		#2
	\end{block}
	\setlength{\blockbreite}{\tmpblockbreite}
}

\begin{document}
\begin{frame}
	\fitblock{Titel}
	{%
		\begin{equation}
			a^2+b^2=c^2
		\end{equation}
	}
\end{frame}
\end{document}
Hier mein minimaleres Beispiel:
\documentclass{scrartcl}

\newlength{\testbreite}
\begin{document}
\settowidth{\testbreite}
{%
	\begin{equation}
		a^2+b^2=c^2
	\end{equation}
}
\end{document}
Ich hoffe, dass mir jemand helfen kann.

Nach oben