PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Breite von fcolorbox



flunch83
13-05-2008, 14:35
Hallo zusammen,

ich möchte eine grau hinterlegte Box mit Text einbinden. Dies tue ich mit dem Befehl \fcolorbox im Prinzip erfolgreich. Mein Problem ist allerdings, dass die Box eine feste Breite haben soll (0.48\textwidth). Bisher habe ich es mit einer zusätzlichen \parbox versucht:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

Problem: Das ganze ist breiter als 0.48\textwidth, da die colorbox offenbar noch innere Ränder hat, die zu der angegebenen Breite der parbox hinzukommen. Wie groß sind diese? Oder wie kann ich sie zu Null setzen?

Oder gibt es eine Möglichkeit, der fcolorbox direkt eine Breite zuzuweisen??

Danke und beste Grüße!

Sabrina.Dankers
13-05-2008, 14:42
Hallo,

binde das Paket calc ein und dann kannst du sie von deiner Längenabgabe einfach so abziehen: \parbox{0.48\textwidth-\fboxrule}{ oder \parbox{0.48\textwidth-2\fboxrule}{

Ich weiß ja nicht genau, ob du den Rand der fcolorbox mitzählen willst oder nicht.

LG Sabrina

Sabrina.Dankers
13-05-2008, 14:43
Hallo noch mal,

wahrscheinlich musst du noch \fboxsep abziehen, weil die Boxen noch einen Rand zum Text besitzen oder du du setzt diesen mit \setlength auf Null.

Sabrina.Dankers
13-05-2008, 14:48
Eine Frage noch. Wieso setzt du \noindent? Ist das nur einmalig? Oder schaltest du grundsätzlich die Absatzeinrückung so aus? Wenn du sie grundsätzlich nicht willst, dann binde stattdessen das Paket parskip oder wenn du eine KOMA-Klasse benutzt parskip als Option bei \documentclass ein.

flunch83
13-05-2008, 14:52
Danke schonmal! Funktioniert leider noch nicht so ganz...

Also, ich möchte eine grau hinterlegte Box von genau 0.48\textwidth Breite. Eine rein weiße Box mit dieser Breite habe ich hinbekommen wie folgt:

\noindent
\framebox[0.48\textwidth]{\parbox{0.48\textwidth}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

Auch die nun überarbeitete Version für eine äquivalente graue Box liefert einen zu breiten Kasten:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth-2\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

Der jetzt neue Zusatz -2\fboxrule scheint keine Wirkung zu haben, trotzdem ich im Header \usepackage{calc} stehen habe. Nach wie vor scheinen zur Breite der parbox von 0.48\textwidth interne Ränder der colorbox hinzuaddiert zu werden, so dass das ganze wesentlich breiter wird...

Sabrina.Dankers
13-05-2008, 14:59
Hallo,

versuch es mal mit \parbox{0.48\textwidth-2\fboxsep}{ statt
\parbox{0.48\textwidth-2\fboxrule}{

LG Sabrina

voss
13-05-2008, 15:00
Danke schonmal! Funktioniert leider noch nicht so ganz...

Also, ich möchte eine grau hinterlegte Box von genau 0.48\textwidth Breite. Eine rein weiße Box mit dieser Breite habe ich hinbekommen wie folgt:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth-2\fboxrule}{



\fcolorbox{black}{gray}{\parbox{0.48\textwidth-2\fboxsep-2\fboxrule}{

Herbert

Sabrina.Dankers
13-05-2008, 15:00
Also einen Unterschied müsstest du auf jeden Fall sehen. Mach mal mehrere Boxen untereinander, dann siehst du zumindest die Unterschiede. Vielleicht brauchst du auch ein Kombination aus beidem

\parbox{0.48\textwidth-2\fboxrule-2\fboxsep}{

Sabrina.Dankers
13-05-2008, 15:03
Also ich hab es jetzt mal ausgehend von deiner framebox ausprobiert. Und mit

\parbox{0.48\textwidth-3\fboxrule-3\fboxsep}{

müsste es deiner gewünschten Breite entsprechen. Allerdings ist mir auch noch nicht so ganz klar weshalb man es je dreimal abziehen muss. Aber so ist die Breite auf jeden Fall genau wie bei deiner framebox.

flunch83
13-05-2008, 15:03
\noindent setzte ich nur vor Boxen und vor dem jeweils ersten Absatz eines Kapitels/Abschnitts. Sonst will ich im Prinzip schon ein layout mit leicht eingerückten Absätzen.

Danke, wenn ich auch \fboxsep abziehe dann passt es! Nun bleiben noch zwei Fragen:

1) Gibt es auch eine Möglichkeit die Box unter dem Text zu zentrieren? Eine centering-Umgebung zeigt nämlich keine Wirkung bei mir.

2) Gibt es eigentlich auch andere (hellere) Grautöne? Wie setze ich dieses (z.B. entsprechend zu 20%-grau bei Word...)

Sabrina.Dankers
13-05-2008, 15:06
Hallo,

verwendest du xcolor. Wenn nicht dann binde es ein und dann geht es so Black!20

LG Sabrina

Sabrina.Dankers
13-05-2008, 15:07
Also bei mir geht es mit



\begin{center}
\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-3\fboxsep-3\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}
\end{center}

flunch83
13-05-2008, 15:12
Ja, mit XColor und dem entsprechenden Befehl funzt es - Vielen Dank!

Jetzt ist es aber doch wieder so, dass meine weiße Box

\noindent
\framebox[0.48\textwidth]{\parbox{0.48\textwidth}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

und die graue:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth-2.0\fboxsep-2.0\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

nicht prefekt gleich breit sind. Die farbige ist immernoch leicht breiter als 0.48\textwidth. Gibt es noch einen anderen Rand oder irgendeinen Wert, den ich abziehen muss? An der itemize-Umgebung liegt es definitiv nicht...

flunch83
13-05-2008, 15:14
Ja doch, wenn ich wie in Deinem letzten Beispiel die Parameter 3x abziehe ist die Breite perfekt...aber wieso 3x und nicht 2x??

Sabrina.Dankers
13-05-2008, 15:18
Tja, dazu kann ich leider nichts sagen. Ich weiß es einfach nicht. Ich hab das auch bloß ausprobiert.

flunch83
13-05-2008, 15:19
Naja, mir langt es so ja auch völlig...will ja nicht in Erbsenzählerei Wurzeln schlagen! ;-)

Also nochmal herzlichen Dank für die Hilfen!

voss
13-05-2008, 15:21
Also bei mir geht es mit



\begin{center}
\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-3\fboxsep-3\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}
\end{center}


das muss dir doch auffallen, dass da was faul ist; es kann doch nicht sein, dass
du 3 mal den Abstand und die Liniendicke hast ...


\noindent
\framebox[0.48\textwidth]{\parbox{0.48\textwidth-2.0\fboxsep-2.0\fboxrule}{%
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}}

und die graue:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth-2.0\fboxsep-2.0\fboxrule}{%
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}% unwichtig, aber prophylaktisch sinnvoll
}}

Herbert

Sabrina.Dankers
13-05-2008, 15:26
Hallo Herbert,

ich bin von seinem Beispiel mit der framebox ausgegangen und das war ursprünglich so:



\framebox[0.48\textwidth]{\parbox{0.48\textwidth}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}


Wenn man davon ausgeht dann ergibt die fcolorbox so wie ich es gesagt habe mit:



\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-3\fboxsep-3\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

dieselbe Breite wie die framebox. Und jetzt du!

flunch83
13-05-2008, 15:39
Ja eben, Sabrina hat Recht!

Beide Parameter nur zweimal abziehen liefert schlichtweg eine immernoch zu große Box. Erst mit 3x abziehen passt es (ziemlich genau, aber eben auch nicht exakt...). Natürlich ist das etwas gepfuscht...

Die Preisfrage ist nur, welchen Parameter wir bis jetzt nicht berücksichtigt haben bzw. warum die Colorbox so schlicht größer als 0.48\textwidth ist.

voss
13-05-2008, 15:51
Hallo Herbert,

ich bin von seinem Beispiel mit der framebox ausgegangen und das war ursprünglich so:



\framebox[0.48\textwidth]{\parbox{0.48\textwidth}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}


Wenn man davon ausgeht dann ergibt die fcolorbox so wie ich es gesagt habe mit:



\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-3\fboxsep-3\fboxrule}{
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}
}

dieselbe Breite wie die framebox. Und jetzt du!

Dann pack mal die fcolorboxen in eine Box und lass dir die Breiten anzeigen:

Diese

\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-2\fboxsep-2\fboxrule}{%

hat eine Breite von 200.76pt! Die folgende, also ohne das %-ZEichen

\fcolorbox{black}{Black!20}{\parbox{0.48\textwidth-3\fboxsep-3\fboxrule}{

aber nur eine Breite von 197.36pt. 0.48\textwidth-3\fboxsep-3\fboxrule sind aber
nur 190.56pt. Wo sind die 7pt geblieben? Verstanden?

Herbert

voss
13-05-2008, 16:03
Ja eben, Sabrina hat Recht!

Beide Parameter nur zweimal abziehen liefert schlichtweg eine immernoch zu große Box. Erst mit 3x abziehen passt es (ziemlich genau, aber eben auch nicht exakt...). Natürlich ist das etwas gepfuscht...

Die Preisfrage ist nur, welchen Parameter wir bis jetzt nicht berücksichtigt haben bzw. warum die Colorbox so schlicht größer als 0.48\textwidth ist.



\fcolorbox{black}{black!20}{\parbox{0.48\textwidth-2\fboxsep-2\fboxrule}{%
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}%
}}

Diese ist genau 0.48\textwidth breit ...

Herbert

Sabrina.Dankers
13-05-2008, 16:10
Hallo Herbert,

da hast du recht. Ich hab nicht geschaut wie breit die Boxen tatsächlich sind. Ich hab mich einfach nur an der eingangs gegebenen framebox orientiert ohne diese selber zu verändern.

LG Sabrina

flunch83
13-05-2008, 16:19
Ja prima, vielen Dank!
Letzte Frage: Da ich so eine Box im stets gleichen Layout mehrmals im Text verwenden möchte wäre es schön, den vertikalen Abstand zum umgebenden Fließtext einmal einstellen zu können (der Standard ist mir zu klein). Gibt es dafür einen Box-Parameter, oder muss ich jedes Mal vor und nach so einer Box ein vspace{...} setzen?

Sabrina.Dankers
13-05-2008, 16:21
Woran liegt es denn, dass man ohne Korrektur bei den beiden Boxen nicht die gleiche Breite erhält?



\framebox[0.48\textwidth]{\parbox{0.48\textwidth}{%
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
}}

und die graue:

\noindent
\fcolorbox{black}{gray}{\parbox{0.48\textwidth}{%
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}% unwichtig, aber prophylaktisch sinnvoll
}}


Aber mit Korrektur bei beiden Boxen schon?

Hat sich erledigt.

voss
13-05-2008, 16:45
Ja prima, vielen Dank!
Letzte Frage: Da ich so eine Box im stets gleichen Layout mehrmals im Text verwenden möchte wäre es schön, den vertikalen Abstand zum umgebenden Fließtext einmal einstellen zu können (der Standard ist mir zu klein). Gibt es dafür einen Box-Parameter, oder muss ich jedes Mal vor und nach so einer Box ein vspace{...} setzen?



\documentclass[12pt,a4paper,ngerman,parskip]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{babel}
\usepackage{lmodern}
\usepackage{calc,xcolor}
\pagestyle{empty}

\newsavebox\CBox
\newenvironment{ColorBox}[3][black]{%
\par\noindent
\def\RANDfarbe{#1}\def\HINTERGRUNDfarbe{#2}
\begin{lrbox}{\CBox}
\minipage{#3-2\fboxsep-2\fboxrule}%
}{%
\endminipage\end{lrbox}%
\fcolorbox{\RANDfarbe}{\HINTERGRUNDfarbe}{\usebox\ CBox}\par}


\begin{document}
foo
\begin{ColorBox}{yellow}{0.48\textwidth}
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
\end{ColorBox}
bar

foo

\begin{ColorBox}[blue]{magenta}{0.48\textwidth}
\begin{itemize}
\item Dies ist Fall 1
\item Dies ist Fall 2
\end{itemize}
\end{ColorBox}

bar

\end{document}

Herbert

flunch83
13-05-2008, 16:58
ahhh, sehr gut! Herzlichen Dank.

Da ich mit dieser Art der Vor-Definition noch nicht perfekt vertraut bin, noch eine Frage: Mit welchen Parametern kann ich denn den vertikalen Abstand zu dem Text vor und nach der Box steuern??

Danke und Gruß!

voss
13-05-2008, 17:02
Da ich mit dieser Art der Vor-Definition noch nicht perfekt vertraut bin, noch eine Frage: Mit welchen Parametern kann ich denn den vertikalen Abstand zu dem Text vor und nach der Box steuern??



\par\vspace{Länge}
\par\bigskip
\par\medskip
\par\smallskip

Die letzten drei können bei verschiedenen Dokumentenklassen auch unterschiedliche
Werte haben.

Herbert

flunch83
13-05-2008, 17:14
Mmh, immer wenn ein problemchen weg ist kommt ein neues. mit diesem Code



%
% Definition einer eigenen Color-Box
%
\newsavebox\CBox
\newenvironment{ColorBox}[3][black]{%
\par\vspace{0cm}\noindent\vspace{0cm}
\def\RANDfarbe{#1}\def\HINTERGRUNDfarbe{#2}
\begin{lrbox}{\CBox}
\minipage{#3-2\fboxsep-2\fboxrule}%
}{%
\endminipage\end{lrbox}%
\fcolorbox{\RANDfarbe}{\HINTERGRUNDfarbe}{\usebox\ CBox}\par}


ist es jetzt sehr praktisch, aber die Box wird, wenn so eingefügt, nicht exakt links hingesetzt sondern leicht nach rechts eingerückt - trotz \noindent. Allerdings auch wieder nicht so weit, wie sonst ein eingerückter Absatz. Eben nur ein wenig, aber definitiv nicht exakt linksbündig.

Kann ich eigentlich auch eine Vorgabe des Randes in Form von \setlength{\fboxsep}{0.25cm} in die Header-Definition einbauen um mir das dann auch bei jedem Aufruf zu sparen?

voss
13-05-2008, 17:22
ist es jetzt sehr praktisch, aber die Box wird, wenn so eingefügt, nicht exakt links hingesetzt sondern leicht nach rechts eingerückt - trotz \noindent. Allerdings auch wieder nicht so weit, wie sonst ein eingerückter Absatz. Eben nur ein wenig, aber definitiv nicht exakt linksbündig.

Kann ich eigentlich auch eine Vorgabe des Randes in Form von \setlength{\fboxsep}{0.25cm} in die Header-Definition einbauen um mir das dann auch bei jedem Aufruf zu sparen?

Immer dann, wenn etwas minimal eingerückt erscheint, ist es in der Regel ein
Leerzeichen, was man sich durch eine neue Zeile eingefangen hat; ein Zeilenumbruch
ist für TeX gleicheinem Leerzeichen. So auch hier, wo
ich im Eifer des Gefechts wieder mal ein %-Zeichen vergessen habe. Den Rand kannst
du beliebig setzen, musst es nur zweimal machen, da die beiden Teile der Umgebung
unabhängig vioneinander sind. Hier gezeigt für 40pt:


\newsavebox\CBox
\newenvironment{ColorBox}[3][black]{%
\par\noindent
\def\RANDfarbe{#1}\def\HINTERGRUNDfarbe{#2}%
\begin{lrbox}{\CBox}
\setlength\fboxsep{40pt}%
\minipage{#3-2\fboxsep-2\fboxrule}%
}{%
\endminipage\end{lrbox}%
\setlength\fboxsep{40pt}%
\fcolorbox{\RANDfarbe}{\HINTERGRUNDfarbe}{\usebox\ CBox}\par}

Herbert