Seite 1 von 1

Wie verwendet man geschweifte Klammern in \newenvironment?

Verfasst: Mi 15. Feb 2017, 08:54
von Rolli
Hallo, hoffentlich kann mir jemand sagen, wo mein Denkfehler ist.

Ich möchte eine "bunte Textbox" über die ganze Textbreite haben, mit mehrzeiligem zentrierten Text. Siehe Code - das funktioniert ganz prima genau so, wie ich mir das vorgestellt habe.

Nun das Problem: Das möchte ich an vielen Stellen in meinem Dokument verwenden und deswegen versuche ich, dafür eine neue eigene Umgebung zu definieren. Dabei bin ich auf das Problem gestoßen, dass die fcolorbox offenbar selbst in einer fcolorbox-Umgebung geschweifte Klammern um das, was sie darstellen soll, braucht. Allerdings habe ich als Inhalt der fcolorbox-Umgebung ja nicht simplen Text, sondern meine minibox, bei der ich die Textlänge ja richtig berechnen muss (\textwidth - 2*\fboxsep - 2*\fboxrule).

Wie bringe ich die öffnende und die schließende geschweifte Klammer in meine \newenvironment-Definition? So wie ich das versuche (maskieren mit \) geht es jedenfalls nicht.

Bin dankbar für jeden Tipp! LG, Rolli

\documentclass {scrbook}

\usepackage{xcolor}
\usepackage{calc}

\setlength{\fboxrule}{0.5mm}
\setlength{\fboxsep}{3mm}

\begin{document}

   % Die nächsten 6 Zeilen bewirken genau das, was ich will
   \begin{fcolorbox}{red}{yellow} {
      \begin{minipage}[c]{\textwidth-7mm} 
         \centering
         Lorem ipsum dolor sit amet, \\ consetetur sadipscing elitr.
      \end{minipage} }
   \end{fcolorbox}  
   
   % Die nächsten 3 Zeilen sind der Versuch, das in eine eigene Umgebung zu packen
   \newenvironment{myEnv}%
   {\begin{fcolorbox}{red}{white} \{ \begin{minipage}[c]{\textwidth-7mm} \centering}%
   {\end{minipage} \} \end{fcolorbox}}%
   
   % Meine Idee war, dass die nächsten 3 Zeilen dasselbe machen, wie die 6 Zeilen oben:
   \begin{myEnv}
      Lorem ipsum dolor sit amet, \\ consetetur sadipscing elitr.
   \end{myEnv}       
   
\end{document}

Verfasst: Mi 15. Feb 2017, 09:48
von Johannes_B
Schau dir mal das Paket tcolorbox an.

Verfasst: Mi 15. Feb 2017, 10:22
von u_fischer
\fcolorbox ist keine Umgebung. Dein Code funktioniert nur, weil \begin{fcolorbox} das gleiche tut wie \fcolorbox.

Ich würde auch empfehlen, tcolorbox zu benutzen. Abgesehen davon, wenn du derartige Inhalte für eine Box einsammeln willst, kannst du lrboxen oder das environ-Paket benutzen.



\documentclass {scrbook}

\usepackage{xcolor}
\usepackage{calc}

\setlength{\fboxrule}{0.5mm}
\setlength{\fboxsep}{3mm}

\begin{document}

 
   \fcolorbox{red}{yellow} {%
      \begin{minipage}[c]{\textwidth-7mm}
         \centering
         Lorem ipsum dolor sit amet, \\ consetetur sadipscing elitr.
      \end{minipage}}
   

  
   \newsavebox\mycolorbox
   \newenvironment{myEnv}
   {%
    \begin{lrbox}{\mycolorbox}%
    \begin{minipage}[c]{\textwidth-7mm} \centering
   }%
   {%
    \end{minipage}\end{lrbox}%
    \fcolorbox{red}{yellow}{\usebox\mycolorbox}%
   }

   % Meine Idee war, dass die nächsten 3 Zeilen dasselbe machen, wie die 6 Zeilen oben:
   \begin{myEnv}
      Lorem ipsum dolor sit amet, \\ consetetur sadipscing elitr.
   \end{myEnv}

\end{document}

Verfasst: Mi 15. Feb 2017, 14:15
von Rolli
Johannes_B: Danke Dir für den Tipp. Als ziemlicher Neuling kennt man halt nur einen Bruchteil der verfügbaren Pakete (ich arbeite seit 2 Wochen daran, eines meiner alten WORD-Skripten mit ca. 150 Seiten und hunderten mathematischen Formeln in LaTeX zu bringen und habe vor 2 Wochen zum ersten Mal "\begin{document}" auf meiner Tastatur eingegeben).

u_fischer: Danke Dir für die Erklärung. So ist es klar, dass das nicht funktionieren kann. Du hast mir eine schlaflose Nacht erspart!

Vielen Dank Euch nochmals - Rolli