PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigenes "Infobox"-Environment - warum funktioniert es nicht?



Special_K
06-09-2005, 15:04
Ich möchte eine Umgebung erstellen, die mir etwas wie eine "Infobox" darstellt, wie man sie oft in Lehrbüchern sieht. Das ganze funktioniert auch ganz gut mit folgendem Code:

\begin{center}
\colorbox{darkgray}{
\begin{minipage}{.90\textwidth}
\textcolor{white}{\large\textsc{Infobox}}
\end{minipage}
}\\
\colorbox{gray}{
\begin{minipage}{.90\textwidth}
Hier steht der Text für die Infobox
\end{minipage}
}
\end{center}

Damit ich nicht jedesmal die ganzen Anweisungen schreiben muss, möchte ich eine neue Umgebung definieren, die den Text automatisch in eine solche Infobox stellt. hier mein Versuch:

\newenvironment{infobox}{%
\begin{center}
\colorbox{darkgray}{
\begin{minipage}{.90\textwidth}
\textcolor{white}{\large\textsc{Infobox}}
\end{minipage}
}\\
\colorbox{gray}{%
\begin{minipage}{.90\textwidth}
}
{
\end{minipage}
}
\end{center}
}

Nachher soll man mit \begin{infobox} ...Text... \end{infobox} einfach die Umgebung aufrufen können. Leider funktioniert meine Umgebung nicht, am wahrscheinlichsten wegen der colorbox um die zweite minipage-Umgebung. Wie kann ich dieses Problem lösen? Hat jemand einen Vorschlag oder gibt's ein Paket das mir diese Arbeit abnimmt?

pospiech
06-09-2005, 18:38
Im LaTeX Begleiter ist für dein Problem ein Code Beispiel.
Nutzt die savebox und usebox Anweisungen.

Matthias

Special_K
07-09-2005, 09:01
Danke für die Antwort. Leider habe ich den LaTeX-Begleiter nicht. Ich hab's jetzt mal mit einer lrbox-Umgebung probiert:

\newsavebox{\infocontainer}
\newenvironment{infobox}{

\begin{center}
\colorbox{darkgray}{
\begin{minipage}{.90\textwidth}
\textcolor{white}{\large\textsc{Infobox}}
\end{minipage}
}
\begin{lrbox}{\infocontainer}
}
{

\end{lrbox}
\colorbox{gray}{
\begin{minipage}{.90\textwidth}
\usebox{\infocontainer}
\end{minipage}
}
\end{center}
}

Das funktioniert eigentlich ganz gut. Da die lrbox aber die Umgebungsform für eine sbox ist und daher wie eine mbox funktioniert werden die Zeilen nicht umgebrochen. Gibt es für die \savebox eine Umgebunsform? Das Problem ist, soweit ich es bis jetzt verstanden habe, dass LaTeX offene Klammern im Definitionsbeginn, welche im Definitionsende der Umgebung geschlossen werden, einfach nicht mag, daher wäre eine Umgebung ganz hilfreich.

Special_K
07-09-2005, 10:04
Für alle die es interessiert: ich habe mit der Sbox-Umgebung des fancybox-Pakets eine Lösung gefunden, die funktioniert. Meine Infobox-Umgebung sieht jetzt folgendermaßen aus:

\newenvironment{infobox}[1][Infobox]{

\begin{center}
\begin{Sbox}
\begin{minipage}{.9\textwidth}
\textcolor{white}{\large\textsc{#1}}
\end{minipage}
\end{Sbox}
\colorbox{darkgray}{\TheSbox}
\begin{Sbox}
\begin{minipage}{.9\textwidth}
}
{

\end{minipage}
\end{Sbox}
\colorbox{gray}{\TheSbox}
\end{center}
}

Mit einem optionalen Parameter kann man die Überschrift von Default "Infobox" auf alles mögliche ändern.

edico
07-09-2005, 10:47
.. oder eventuell mit tabular so:
%
\documentclass[12pt]{report}
\usepackage{color}
\definecolor{mygreen}{rgb}{.71,.785,.73}
\definecolor{myyellow}{rgb}{1.,1,.7}
\usepackage[table]{xcolor}

%---| ibox |------------------------------------------------------------------
\newenvironment{ibox}[2]{%
\begin{center}%
\begin{tabular}{p{\textwidth}}%
\rowcolor{mygreen}\color{white}\large\textsc{#1}\\ %
\rowcolor{myyellow}#2%
}{%
\end{tabular}%
\end{center}%
}%
%-----------------------------------------------------------------------------

\begin{document}
\begin{ibox}{InfoBox}
Und hier steht der Text, der sich unendlich ueber die Zeilen erstreckt und immer noch kein Ende findet, weiter fliesst und dann langsam aus der Puste kommt \dots
\end{ibox}

\begin{ibox}{IBox}
Und hier steht der Text, der sich unendlich ueber die Zeilen erstreckt und immer noch kein Ende findet, weiter fliesst und dann langsam aus der Puste kommt \dots
\end{ibox}

\end{document}
%
edico