In einem Informationsdokument sollen zusätzliche Hinweise und Tipps in abgesetzten Kästen präsentiert werden. Um verschiedene Arten von Informationen unterscheiden zu können, und um das ganze visuell etwas aufzupeppen, sollen neben den Kästen kleine Symbolbildchen platziert werden. Nach einiger Suche bin ich auf diesen Post bei mrunix gestoßen, der mich auf die hilfreiche Idee gebracht hat, nicht lange mit verschiedenen Boxen rumzufummeln, sondern einfach alles über eine Tabelle zu lösen.
Nach ein paar Experimenten ist dann dieses ganz hübsche Ergebnis herausgekommen:
Die Icons sind (mal wieder) dem großartigen Tango-Projekt entnommen. Leider kommt poppler nicht ganz mit der Darstellung klar, wenn ich die SVG-Dateien in PDF konvertiere, daher habe ich mich dann doch für PNG entschieden.
Kurz noch etwas zur Implementierung: Wenn ich LaTeX-Code sehe, der über semantische Textauszeichnung hinausgeht, will ich am liebsten einfach nur weglaufen. (Der ganze Kram ist in der Regel noch verwirrender als Perl, finde ich.) Aber wenn man es etwas in seine Bestandteile zerlegt, kann man sich (manchmal) doch ganz gut zurechtfinden. Ich habe für meine Zwecke also folgenden Weg gewählt:
\newlength{\iconwidth}
\setlength{\iconwidth}{1cm}
\definecolor{boxheadcol}{gray}{.6}
\definecolor{boxcol}{gray}{.9}
\newenvironment{displaybox}[2]{%
\begin{center}
\setlength\arrayrulewidth{0.75pt}%
\arrayrulecolor{white}%
\renewcommand{\arraystretch}{1.3}%
\begin{tabular}{p{\iconwidth}p{\linewidth-4\tabcolsep-\iconwidth}}
\multirow{2}{*}{#2}&\cellcolor{boxheadcol}\textbf{\sffamily\color{white}#1} \\%
\hhline{~-}%
&\cellcolor{boxcol}%
}{%
\\
\end{tabular}
\end{center}%
}
\newenvironment{Tipp}{%
\begin{displaybox}{Tipp}{\includegraphics[width=\iconwidth]{icon-tipp}}}%
{\end{displaybox}}
\newenvironment{Hinweis}{%
\begin{displaybox}{Hinweis}{\includegraphics[width=\iconwidth]{icon-hinweis}}}%
{\end{displaybox}}Nach der Definition von ein paar Farben und Größen wird eine allgemeine Basis-Umgebung für die Kästen definiert. Letztlich werden dort auch nur die Tabellen-Parameter arrayrulewidth, arrayrulecolor und arraystretch angepasst und dann eine Tabelle mit entsprechend gefärbten Zellen erzeugt. Für die eigentlichen Kästen („Tipp“ und „Hinweis“) werden dann angepasste Umgebungen definiert, die die Überschrift und das Symbol setzen.
Das komplette Beispiel gibt es auch zum Herunterladen:
tipp.zip
Vielleicht kann ja jemand was damit anfangen.