PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umrandung in \newenvironment



Scrattor
21-04-2009, 16:29
Ich habe mir eine kleine Umgebung gebastelt zur eindrücklicheren Darstellung von Problempunkten. Als hoffentlich lauffähiges Beispiel habe ich meine Bastelei angehängt. Nun wird allerdings die umrahmte Box über die gesamte Seitenbreite gezogen. Alle Versuche die Box in ihrer Breite á la \parbox usw. zu begrenzen sind bisher gescheitert. Es gibt ja etliche Möglichkeiten, nur hat bis jetzt nichts funktioniert.
Aber vielleicht weiß hier jemand Rat, wie ich dieses simple Problem löse.




\documentclass[pdftex,a4paper, 12pt]{scrbook}
\usepackage{xcolor}
\usepackage{framed}

\newenvironment{fshaded}{%
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}%
\MakeFramed {\FrameRestore}}%
{\endMakeFramed}

%----Zähler der Umgebungen
\newtheorem{Problem}{Problem}

%----neuer Befehl wird definiert
\newenvironment{problem}[1][]
{\definecolor{shadecolor}{rgb}{0.9,0.3,0.3}%
\definecolor{framecolor}{rgb}{0,0,0}%
\setlength{\fboxrule}{2pt}
\begin{fshaded}\begin{Problem}[#1]}{\end{Problem}\end{fshaded}}
\begin{document}

\begin{problem}[Unberechenbarkeit von Monstern]
TEST TEST TEST
\end{problem}

\begin{problem}[Unberechenbarkeit von roten Monstern]
TEST TEST TEST
\end{problem}


\begin{problem}[Unberechenbarkeit von blauen Monstern]
TEST TEST TEST
\end{problem}

\end{document}

MfG

Scrattor

mechanicus
21-04-2009, 16:40
Nun wird allerdings die umrahmte Box über die gesamte Seitenbreite gezogen.
Hallo,

wie breit soll die denn sein?

Gruß
Marco

Scrattor
21-04-2009, 17:29
Wär schön, wenn sich das dem jeweiligen Problempunkt anpassen ließe...

Ansonsten einfach 1/2 Seite. Das dürfte in den meisten Fällen genügen.

MfG

Marco alias Scrattor ;-)

Stefan_K
21-04-2009, 18:22
Hallo Marco,

hier ist eine Umprogrammierung der fshaded-Umgebung, so dass sie einen optionalen Parameter für die Länge versteht:

\newenvironment{fshaded}[1][\hsize]{%
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}%
\MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}
Du kannst sie wie bisher ohne Parameter verwenden, dann wird \hsize benutzt, oder Du rufst sie in der Weise auf:

\begin{fshaded}[.8\textwidth] ... \end{fshaded}
Stefan

Scrattor
21-04-2009, 20:35
Vielen Dank. Das sieht in jedem Fall nach einer fundierten Lösung aus. Allerdings bekomm ich bei Verwendung des folgenden Codes kein nennenswertes Ergebnis. Die Längenangabe wird lediglich in die Box eingefügt...


\documentclass[pdftex,a4paper, 12pt]{scrbook}
\usepackage{xcolor}
\usepackage{framed}

\newenvironment{fshaded}[1][\hsize]{%
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}%
\MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}}%
{\endMakeFramed}

%\newenvironment{fshaded}{%
%\def\FrameCommand{\fcolorbox{framecolor}{shadecol or}}%
%\MakeFramed {\FrameRestore}}%
%{\endMakeFramed}

%----Zähler der Umgebungen
\newtheorem{Problem}{Problem}

%----neuer Befehl wird definiert
\newenvironment{problem}[1][]
{\definecolor{shadecolor}{rgb}{0.9,0.3,0.3}%
\definecolor{framecolor}{rgb}{0,0,0}%
\setlength{\fboxrule}{2pt}
\begin{fshaded}\begin{Problem}[#1]}{\end{Problem}\end{fshaded}}
\begin{document}

\begin{problem}[Unberechenbarkeit von Monstern][60mm]
TEST TEST TEST
\end{problem}

\begin{problem}[Unberechenbarkeit von roten Monstern]
TEST TEST TEST
\end{problem}

\end{document}

Natürlich kann ich in der Zeile

\newenvironment{fshaded}[1][\hsize]
\hsize durch die gewünschte Breite ändern, bspw. 60mm. Allerdings führt es dann zu dem unerwünschten Ergebnis, dass ohne Zeilenumbruch über die Box hinaus geschrieben wird. Das ist in der ursprünglichen Version nicht der Fall. Der Fehler scheint in der Zeile
\MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}} zu stecken. Oder habe ich nur etwas übersehen?

MfG

Scrattor

Stefan_K
21-04-2009, 22:38
Hi Marco,

oben habe ich nur die Parameterbehandlung für fshaded definiert. Wenn Du die Breite auch als Parameter für die problem-Umgebung haben möchtest, muss sie auch dort definiert werden. Da schon ein optionaler Parameter vorhanden ist, geht nur ein Pflichtparameter:

\newenvironment{problem}[2][]
{\definecolor{shadecolor}{rgb}{0.9,0.3,0.3}%
\definecolor{framecolor}{rgb}{0,0,0}%
\setlength{\fboxrule}{2pt}
\begin{fshaded}[#2]\begin{Problem}[#1]}{\end{Problem}\end{fshaded}}
...
\begin{problem}[Unberechenbarkeit von Monstern]{60mm}
\end{problem}
Umgebrochen wird hier, nur nicht im Problemtitel.

Stefan

Scrattor
22-04-2009, 11:51
:o *schäm*

Achtung: Vor Inbetriebnahme des Mundewerkes, Gehirn einschalten.

Denn kaum hatte ich den Beitrag abgeschickt und nochmal drübergeschaut hab ich den Fehler entdeckt. Hab mich in meinem eigenen Quellcode nicht mehr zurecht gefunden... Vielleicht sollte ich da mal wieder aufräumen. ^^

In jedem Falle, danke ich dir Stefan! Nun läuft fast alles und ich kann weiterbasteln.

Vielen Dank und schönen Tag noch.

MfG

Scrattor