von Klaus » Sa 7. Jan 2012, 14:30
Ich habe dazu nochmal eine Rückfrage.
Ich habe das obige Minimalbeispiel leicht modifiziert mit einem Satz vor und nach der Box:
\documentclass[a4paper,fontsize=11pt,ngerman]{scrartcl}
% Packages
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{xkeyval}
\usepackage{calc}
% new Commands
\newcommand*\TextColor{black}
\newcommand*\BackgroundColor{white}
\newcommand*\BorderColor{black}
\makeatletter
\define@choicekey{TextAlignment}{align}[\val\al]{right,left,center,block}{%
\ifcase\al\relax \raggedleft%
\or\raggedright%
\or\centering%
\or% Blocksatz
\fi}
\define@key{TextBox}{textcolor}{\renewcommand*\TextColor{#1}}
\define@key{TextBox}{background}{\renewcommand*\BackgroundColor{#1}}
\define@key{TextBox}{bordercolor}{\renewcommand*\BorderColor{#1}}
\define@key{TextBox}{border}{\setlength\fboxrule{#1}}
\define@key{TextBox}{bordersep}{\setlength\fboxsep{#1}}
\presetkeys{TextBox}{bordercolor=black,textcolor=black,background=white,%
border=0.8pt,bordersep=3pt}{}%
\presetkeys{TextAlignment}{align=block}{}%
\makeatother
\newcommand\framedtext[2][]{%
\begingroup%
\setkeys*{TextBox}{#1}%
\fcolorbox{\BorderColor}{\BackgroundColor}{%
\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}%
\setrmkeys{TextAlignment}%
\textcolor{\TextColor}{#2}%
\end{minipage}}%
\endgroup}%
\begin{document}
Hier steht davor Text.
\framedtext[align=center]{%
Hello World!%
}
Und hier danach
\end{document}
Was mich jetzt wundert, dass die Box diret in der gleichen Zeile begonnen wird, wo der erste Satz aufhört.
Also scheinbar impliziert die minipage-Umgebung keinen automatischen Zeilenumbruch, wie ich es z.B. von Mathematikumgebungen (displaymath, equation, usw.) gewohnt bin?
Wie kann ich das denn zusätzlich einbauen?
Muss ich dann in der Definition der fcolorbox noch ein linebreak (oder ein vspace{} ) vor und nach der Minipageumgebung einbauen, z.B. so:
\fcolorbox{\BorderColor}{\BackgroundColor}{%
\linebreak
\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}%
\setrmkeys{TextAlignment}%
\textcolor{\TextColor}{#2}%
\end{minipage}%
\linebreak}%
Gruß,
Klaus.
Ich habe dazu nochmal eine Rückfrage.
Ich habe das obige Minimalbeispiel leicht modifiziert mit einem Satz vor und nach der Box:
[code]
\documentclass[a4paper,fontsize=11pt,ngerman]{scrartcl}
% Packages
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{xkeyval}
\usepackage{calc}
% new Commands
\newcommand*\TextColor{black}
\newcommand*\BackgroundColor{white}
\newcommand*\BorderColor{black}
\makeatletter
\define@choicekey{TextAlignment}{align}[\val\al]{right,left,center,block}{%
\ifcase\al\relax \raggedleft%
\or\raggedright%
\or\centering%
\or% Blocksatz
\fi}
\define@key{TextBox}{textcolor}{\renewcommand*\TextColor{#1}}
\define@key{TextBox}{background}{\renewcommand*\BackgroundColor{#1}}
\define@key{TextBox}{bordercolor}{\renewcommand*\BorderColor{#1}}
\define@key{TextBox}{border}{\setlength\fboxrule{#1}}
\define@key{TextBox}{bordersep}{\setlength\fboxsep{#1}}
\presetkeys{TextBox}{bordercolor=black,textcolor=black,background=white,%
border=0.8pt,bordersep=3pt}{}%
\presetkeys{TextAlignment}{align=block}{}%
\makeatother
\newcommand\framedtext[2][]{%
\begingroup%
\setkeys*{TextBox}{#1}%
\fcolorbox{\BorderColor}{\BackgroundColor}{%
\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}%
\setrmkeys{TextAlignment}%
\textcolor{\TextColor}{#2}%
\end{minipage}}%
\endgroup}%
\begin{document}
Hier steht davor Text.
\framedtext[align=center]{%
Hello World!%
}
Und hier danach
\end{document}
[/code]
Was mich jetzt wundert, dass die Box diret in der gleichen Zeile begonnen wird, wo der erste Satz aufhört.
Also scheinbar impliziert die minipage-Umgebung keinen automatischen Zeilenumbruch, wie ich es z.B. von Mathematikumgebungen (displaymath, equation, usw.) gewohnt bin?
Wie kann ich das denn zusätzlich einbauen?
Muss ich dann in der Definition der fcolorbox noch ein linebreak (oder ein vspace{} ) vor und nach der Minipageumgebung einbauen, z.B. so:
[code]
\fcolorbox{\BorderColor}{\BackgroundColor}{%
\linebreak
\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}%
\setrmkeys{TextAlignment}%
\textcolor{\TextColor}{#2}%
\end{minipage}%
\linebreak}%
[/code]
Gruß,
Klaus.