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):
Außerdem meckert TeX dann über fehlende $ um die Formel.! You can't use `\eqno' in math mode.
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}
\documentclass{scrartcl} \newlength{\testbreite} \begin{document} \settowidth{\testbreite} {% \begin{equation} a^2+b^2=c^2 \end{equation} } \end{document}