PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gleitende Infobox von Text umflossen



rafael
20-10-2009, 11:12
ich möchte eine gleitende Infobox zaubern, die etwa ein Drittel der Textweite einnimmt. Ich müsste also wrapfigure und float kombinieren. Leider gelingt mir dies nicht.
Hier ist der Code mit float:

\documentclass{scrartcl}
\usepackage{float}
\floatstyle{boxed}
\newfloat{infobox}{tbp}{lop}[section]

\newcommand{\info}[2]{\begin{infobox}{\bfseries #1}\\#2\end{infobox}}

\begin{document}
\info{wert}{Inhalt}
\end{document}

Alternativ habe ich auch eine Lösung mit picins gefunden, wobei leider zwei nahegelegene Boxen übereinander überschrieben werden:

\documentclass{scrartcl}
\usepackage{picins}
\newcommand{\infobox}[2]{
\parpic(0.34\textwidth,0pt)[lf]{
\parbox[b]{0.32\textwidth}{
\bigskip {\bf #1} \small{{{\sffamily #2}}} \bigskip
}
}
\bigskip
}
\begin{document}
infobox{XSLT}{
XSLT is a stylesheet language that can parse XML files and transform them. The output will be another text file, possibly XML. It offers a lot of capabilities as it is a fully functional programming language.\\
Like XML, XSLT has also been specified by the W3C consortium.
}
\end{document}

edico
20-10-2009, 18:30
Vielleicht so



\documentclass[paper=a4,pagesize,10pt]{scrartcl}
\usepackage{lipsum}

%%% ---------------------------------------------
%%% wraptextureframe
%%% ---------------------------------------------
\usepackage{xcolor,calc,fancybox}
\usepackage{wrapfig}
% \wraptextureframe{Höhe_in_Zeilen}{Breite}{Text}
% #1 Hoehe (Anzahl der Zeilen) und fixe_Breite
% #2 Text

\newcommand{\wraptextureframe}[2]{%
\begin{wrapfigure}[#1]{r}{.3\textwidth}
\begin{Sbox}
\begin{minipage}{.3\textwidth-1em}
\small\slshape#2%
\end{minipage}
\end{Sbox}
\vskip-2ex%
\fcolorbox{blue}{gray!15}{\TheSbox}
\end{wrapfigure}%
}

\begin{document}
\lipsum[1]

\wraptextureframe{12}{%
Es folgt der Text, der in der Box abgebildet werden soll. Mal schauen. Das sollte schon ganz gut klappen. Aber fuer den Leser sind diese Boxen nicht gerade freundlich. Anders gesagt -- es ist und bleibt Spielerei und ge\-hoert wohl nicht zum serioesen Typesetting ...
}

\lipsum[2-4]
\end{document}


edico

rafael
21-10-2009, 11:44
Vielleicht so?

vielen Dank, fast so wie ich es haben wollte. Toll wäre natürlich, wenn die Länge der Box entsprechend ihres Inhalts automatisch angepasst wird, so dass nur noch der Text als Argument übermittelt wird.
Eine andere Frage: Wie sollten denn seriöse Textboxen realisiert werden?

Die Dokumente sind Skripte und bestehen größtenteils aus geordneten Gliederungen. Zusatzinformationen (zum Beispiel ein Exkurs, Begriffserklärung etc.), die die Struktur nicht stören sollen, werden deshalb erst mal in eine Box an den Rand verschoben. Sollte man das anders umsetzen?

rafael
21-10-2009, 15:02
Ich habe es mal modifiziert.
\wraptextureframe[hoehe]{Text}. Ohne optionalen Parameter wird die Höhe automatisch gesetzt.


\documentclass[paper=a4,pagesize,10pt]{scrartcl}
\usepackage{lipsum}

%%% ---------------------------------------------
%%% wraptextureframe
%%% ---------------------------------------------
\usepackage{xcolor,calc,fancybox}
\usepackage{wrapfig}
% \wraptextureframe[Höhe]{Text}
% #1 Hoehe
% #2 Text

\newcommand{\wraptextureframe}[2][]{%
\begin{wrapfigure}[#1]{r}{.3\textwidth}
\begin{Sbox}
\begin{minipage}{.3\textwidth-1em}
\small\slshape#2%
\end{minipage}
\end{Sbox}
\vskip-2ex%
\fcolorbox{blue}{gray!15}{\TheSbox}
\end{wrapfigure}%
}

\begin{document}
\lipsum[1]

\wraptextureframe{%
Es folgt der Text, der in der Box abgebildet werden soll. Mal schauen.
Das sollte schon ganz gut klappen. Aber fuer den Leser sind diese Boxen nicht gerade freundlich. Anders gesagt -- es ist und bleibt Spielerei und ge\-hoert wohl nicht zum serioesen Typesetting ...
}

\lipsum[2-4]
\end{document}

edico
22-10-2009, 08:52
Wenn du keinen Einfluss auf die Höhe haben willst, dann kannst du das Macro auch vereinfachen:



%%% ------------------------------------------------------------
%%% wraptextureframe mit automat. Hoehe (Boxlaenge/Zeilenanzahl)
%%% ------------------------------------------------------------
\usepackage{xcolor,calc,fancybox}
\usepackage{wrapfig}
% \wraptextureframe{Text}
% #1 Text
\newcommand{\wraptextureframe}[1]{%
\begin{wrapfigure}{r}{.3\textwidth}
\begin{Sbox}
\begin{minipage}{.3\textwidth-1em}
\small\slshape#1%
\end{minipage}
\end{Sbox}
\vskip-2ex%
\fcolorbox{blue}{gray!15}{\TheSbox}
\end{wrapfigure}%
}





Wie sollten denn seriöse Textboxen realisiert werden?

Es gibt keine seriösen oder unseriösen Textboxen, nur Autoren ;-)
Anders - an sich ist man als Autor gehalten, Leser-orientiert zu setzen. Jede Box unterbricht zunächst einmal den Lesefluss. Wenn der Inhalt einer Box wichtig ist, dann kann er auch schlicht und ergreifend im Verfolg der Textes platziert werden.
Aber - zugestanden - das kann gewollt sein.
Dennoch: In deinem Fall empfehle ich dir, sich mal mit der 'tufte-handout'-Klasse zu befassen - das ist ein hervorragend gesetzter Stil, der 'meinem' Anspruch einer Leseflüssigkeit nachkommt und durch breite Margins (also ungefähr die Breite deiner 30%-Box) reichlich Platz für Ergänzungen, Erläuterungen, Blöcke, Fussnoten, Bilder, Graphiken usw. bietet und damit die unsäglichen 'Umfliessen' von 'Irgendwas' unterbindet.

edico

rafael
26-10-2009, 17:49
Dennoch: In deinem Fall empfehle ich dir, sich mal mit der 'tufte-handout'-Klasse zu befassen - das ist ein hervorragend gesetzter Stil, der 'meinem' Anspruch einer Leseflüssigkeit nachkommt und durch breite Margins (also ungefähr die Breite deiner 30%-Box) reichlich Platz für Ergänzungen, Erläuterungen, Blöcke, Fussnoten, Bilder, Graphiken usw. bietet und damit die unsäglichen 'Umfliessen' von 'Irgendwas' unterbindet.
edico
Habe mir diese Klasse schon mal angeschaut. Ist eine gute Alternative, mal sehen, ob ich Sie noch verwende.
Danke für die Hinweise