Discussion:
Farbige Ovalbox mit Textfeld in Kopflinie evtl. mehrseitig
(zu alt für eine Antwort)
Axel Schlicht
2011-03-13 18:36:10 UTC
Permalink
Hallo
Wie erreiche ich Folgendes?
In einem normalen Text (also KEINE Präsentation) mit article, book bzw. den
entsprechenden KOMA-Klassen
mochte ich dies setzen:

-------( Text Text Text ) -------------------------
/ \
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
........................................................... % moglicher
Seitenumbruch
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
| xxxxxxxxx yyyyyyyyy | xxxxxxxxx yyyyyyyyy |
\_________________________________________________________/

und
--( Text Text Text )---------------------------------

Sprich: Eine
- (eventuell abgerundete) Box deren Außenbreite exakt der Textbreite
entspricht
- darin z.B. eine zweispaltige Tabelle UND
- in der oberen Linie soll (an einer bestimmten Stelle) eine
(wiederum eventuell abgerundete) invertierte Box stehen,
d.h. z.B. weiße Schrift auf schwarzem Hintergrund
+ in der zentriert irgend ein Text steht.
- Es kann erforderlich sein, den Hintergrund der großen Box einzufärben.
- Die Box kann so ungünstig stehen bzw. so lang sein, dass sie sich
über einen Seitenumbruch erstreckt

Im zweiten Beispiel benötige ich nur eine Linie mit eingefügter
invertierter (abgerundeter) Textbox, also
den oberen Teil der Box.

(Wer wissen will wo ich das herhabe: Die braunen Lateinlekturen von
Klett/ÖBV benutzen das für
ihre Vocabularia / Anmerkungen)

Die Einzelteile bereiten kein Problem, enzig
- das Einfügen der invertierten Box in der oberen Linie oder in die Linie
- das Ganze, auch bei gefärbtem Hintergrund notfalls auch über einen
Zeilenumbruch zu bekommen
- sowie eventuell die Randfarbe zu setzen
verwirrt mich

Box mit bunten R"andern und farbigem Hintergrund liefert \fcolorbox.
Nette abgerundete Boxen liefern \ovalbox und \Ovalbox etc.
Linien zeichnen ist auch kein Problem. (z.B. \rule}
Der Inhalt, hier eine zweispaltige Tabelle ist auch OK.

Das Problem ist nur die Box mit Rahmen, Rahmentext, Farbe(n) und über
Seitenumbrüche hinweg.

Kann man das mit reinem LaTeX schaffen? Oder benötigt man PS-Tricks bzw.
TikZ (ersteres des öfteren, letzteres noch nie benutzt)?

Bin für jede Hilfe dankbar.

Axel Schlicht
Moritz Carmesin
2011-03-13 19:53:56 UTC
Permalink
Hallo,

ich hatte mir mal was vor einiger Zeit mit framed und tikz gebastelt.

Da gibt es sicherlich einige Dinge die verbesserungswürdig sind, ab für
mich hat es funktioniert.

Grüße,

Moritz

%<------------------------------------------->%
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{ifthen}
\RequirePackage{tikz}
\RequirePackage{framed}
\RequirePackage{xcolor}

\usetikzlibrary{shapes,calc}

\tikzset{infobox/.style={rectangle,fill=infobox!50, rounded corners,
text justified}}

\definecolor{infobox}{rgb}{1,.75,.25}

\makeatletter

\newenvironment{infobox}[1][\empty]%
{\def\FrameCommand{\***@box{#1}}
\def\FirstFrameCommand{\***@boxT{#1}}
\def\MidFrameCommand{\***@boxM}
\def\LastFrameCommand{\***@boxL}
\MakeFramed{\FrameRestore}}
{\endMakeFramed}


\newcommand{\***@box}[3][]{
\setbox1=\vbox{\noindent #3}
\setbox3=\hbox{#2}
\setbox4=\hbox{}
\setbox2=\hbox{}
\ht2=\ht1\dp2=\dp1\wd2=\wd1
\ht4=\ht3\dp4=\dp3\wd4=\wd3
\begin{tikzpicture}
\node(box){\copy2};
\ifthenelse{\equal{#2}{\empty}}
{
\fill[infobox, sharp corners] (box.south east)[rounded
corners]--(box.north east) -- (box.north west)[sharp corners] --
(box.south west) --cycle;
\draw[rounded corners, very thick, draw=infobox] (box.south
east)--(box.north east) -- (box.north west) -- (box.south west) --cycle;
}
{
\node (titel) [text=black, anchor=south east] at (box.north east)
{\box4};

\fill[fill=infobox, sharp corners, draw=infobox, very
thick](box.north east)[rounded corners] -- (titel.north east) --
(titel.north west)%[sharp corners]
-- (titel.south west) -- ++(-1mm,0pt)[sharp corners] -- cycle;
\node at (titel.center)[anchor=center]{\box3};

\fill[infobox] (box.south east)[sharp corners]--(box.north
east)[rounded corners] -- (box.north west) -- (box.south west) --cycle;
\draw[rounded corners, draw=infobox, very thick] (box.south
east)[sharp corners]--(box.north east)[rounded corners] -- (box.north
west) -- (box.south west)--cycle;
}

\node at (box.center) [anchor=center, #1]{\box1};

\end{tikzpicture}
}

\newcommand{\***@boxT}[3][]{
\setbox1=\vbox{\noindent #3}
\setbox3=\hbox{#2}
\setbox4=\hbox{}
\setbox2=\hbox{}
\ht2=\ht1\dp2=\dp1\wd2=\wd1
\ht4=\ht3\dp4=\dp3\wd4=\wd3
\begin{tikzpicture}
\node(box){\copy2};
%Titelbox
\ifthenelse{\equal{#2}{\empty}}
{
\fill[infobox, sharp corners] (box.south east)[rounded
corners]--(box.north east) -- (box.north west)[sharp corners] --
(box.south west) --cycle;
\draw[rounded corners,very thick, draw=infobox] (box.south
east)--(box.north east) -- (box.north west) -- (box.south west);
}
{
\node (titel) [text=black, anchor=south east] at (box.north east)
{\box4};
\fill[fill=infobox, sharp corners, draw=infobox, very
thick](box.north east)[rounded corners] -- (titel.north east) --
(titel.north west)%[sharp corners]
-- (titel.south west) -- ++(-1mm,0pt)[sharp corners] -- cycle;

\node at (titel.center)[anchor=center]{\box3};

\fill[infobox, sharp corners] (box.south east)[sharp
corners]--(box.north east)[rounded corners] -- (box.north west)[sharp
corners] -- (box.south west) --cycle;
\draw[rounded corners, draw=infobox, very thick] (box.south
east)[sharp corners]--(box.north east)[rounded corners] -- (box.north
west) -- (box.south west);
}

\node at (box.center) [anchor=center, #1]{\box1};

\end{tikzpicture}
}

\newcommand{\***@boxL}[2][]{
\setbox1=\vbox{#2}
\setbox2=\hbox{}
\ht2=\ht1\dp2=\dp1\wd2=\wd1
\begin{tikzpicture}%[remember picture]
\node(box){\box2};
\fill[infobox] (box.north west)[rounded corners] -- (box.south west)
-- (box.south east)[sharp corners] -- (box.north east) --cycle;
\draw[draw=infobox, very thick] (box.north west)[rounded corners] --
(box.south west) -- (box.south east)[sharp corners] -- (box.north east);
\node at(box.center)[anchor=center]{\box1};
\end{tikzpicture}
}

\newcommand{\***@boxM}[2][]{
\begin{tikzpicture}
\node(box)[infobox, sharp corners, #1]{#2};
\draw[very thick, draw=infobox] (box.south east)--(box.north east);
\draw[very thick, draw=infobox] (box.south west)--(box.north west);
\end{tikzpicture}
}

\makeatother
\begin{document}

\begin{infobox}[Titel]
\begin{tabular}{cc}
blskdfk&sdfkljejrlkjf\\
efrgjelrjfj&wjljwlejrl
\end{tabular}

\Blindtext[10]
\end{infobox}

\end{document}
Axel Schlicht
2011-03-13 23:15:39 UTC
Permalink
Post by Moritz Carmesin
ich hatte mir mal was vor einiger Zeit mit framed und tikz gebastelt.
Hallo Moritz,

Danke für die schnelle Antwort.

Das werde ich mir mal - da ich noch nie mit TikZ gearbeitet habe - in aller
Ruhe reinziehen

Axel Schlicht

Loading...