Piktogramm in Tabelle

Tabellen und Grafiken erstellen und anordnen


Laser-Axel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 3. Apr 2014, 11:52
Wohnort: Aachen

Piktogramm in Tabelle

Beitrag von Laser-Axel »

Hallo,

ich möchte hier gerne unsere Anleitungen in der Firma von word auf LaTeX /LyX umstellen.
Jetzt hakt es an einer ganz simplen Stelle. Ich brauche einen festen Kasten mit einem senkrechten Querstrich drin (z.B. Tabelle 1x2). Links vom Strich dann z.B ein Pictogramm wie Achtung Laser und rechts dann beispielsweise der Text "Wenn die Abdeckung ..."

Wesentlich ist dabei, dass der Kasten immer die gleichen Abmessungen hat der Text aber immer ein anderer sein kann und auch noch mehrzeilig sein kann. Versuche mit SCfigure waren nicht sonderlich erfolgreich, da ich den Einheitskasten um die mehrzeilige Caption nicht hinkriege und die Caption auch breiter sein müsste als das Bild.
Naheliegend erschien mir eine Tabelle, was auch bis auf die vertikale Ausrichtung in den Zellen fast funktioniert.
\begin{table}
\begin{tabular}{|p{3cm}|p{6cm}|}
	\hline
	\includegraphics[width=2.7cm]{logos-pics/achtung} & Wenn die Abdeckung aufgeflext wird, kann Laserstrahlung austreten. Gefahr ernster Augenschäden. Also, beser unterlassen\\
	\hline
\end{tabular}
\end{table}
Jetzt ist aber die erste Zeile des Textes bündig mit der Unterkante des Pictogramms und das Piktogramm übermalt einen Teil der oberen Begrenzung :-(
Sprich, unter dem Pictogramm und über dem Text ist noch Freiraum.
Basteleien wie
~\newline\includegraphics[width=2.7cm]{logos-pics/achtung} & ~\newline Wenn die Abdeckung aufgeflext wird, kann Laserstrahlung austreten. Gefahr ernster Augenschäden. Also, beser unterlassen!\\
machen das ganze zwar besser. Insbesondere fängt die zweite Zelle dann auch wieder oben an. Allerdings ist es eben nicht vertikal in die Zelle zentriert. Und wenn man solche Basteleien benutzt, kann man eigentlich auch gleich bei word bleiben :-)

Das Ergebnis ist nicht LyX-spezifisch. Miktex-Texworks tut genau das selbe

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Verwende m-Spalten statt der p-Spalten. Den Text in der relativ schmalen Spalte setzt du besser linksbündig. Das \raisebox hat nur die Aufgabe oberhalb der Abbildung etwas Platz einzufügen.
\documentclass{scrartcl}
\usepackage{selinput} 
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage{graphicx}
\usepackage{array}
\usepackage{ragged2e}
\usepackage{mwe} % für Beispielbild
\begin{document}
\begin{table} 
\begin{tabular}{|>{\Centering}m{3cm}|>{\RaggedRight}m{6cm}|} 
    \hline 
    \raisebox{0pt}[\dimexpr\height+\dp\strutbox\relax]{\includegraphics[width=2.7cm]{example-image}} 
    & Wenn die Abdeckung aufgeflext wird, kann Laserstrahlung austreten. 
      Gefahr ernster Augenschäden. Also, beser unterlassen\\ 
    \hline 
\end{tabular} 
\end{table}
\end{document}
Gruß
Elke


PS: Bitte mache immer ein vollständigesMinimalbeispiel.

Laser-Axel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 3. Apr 2014, 11:52
Wohnort: Aachen

Funktioniert, aber nicht ganz verstanden

Beitrag von Laser-Axel »

Danke erstmal. Das Funktioniert.
Allerdings habe ich diesen raisebox-Befehl nicht ganz verstanden. Ich habe auch keine vollständige und aktuelle Doku gefunden. Über eine Erläuterung wäre ich sehr dankbar.
erste Option {0pt} heißt kein Offset nach oben oder unten.
[\dimexpr\height+\dp\strutbox\relax] ist die erste von zwei möglichen weiteren Optionen, die die Höhe der Box festlegt.
Alles zwischen \dimexpr und \relax wird arithmetisch ausgewertet. Und da geht es nun los. Was macht LaTeX aus dem Ausdruck und was hat das \strutbox da zu suchen?

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

\height ist die Höhe des Argumentes von \raisebox. Damit das Bild nicht oben an der Linie klebt, füge ich noch die Tiefe einer \strutbox hinzu. Eine Erklärung dazu findest du unter Was macht der Befehl \strut? auf www.texwelt. de.

Gruß
Elke

Laser-Axel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 3. Apr 2014, 11:52
Wohnort: Aachen

Beitrag von Laser-Axel »

Hallo,

bin ich zu blöd? Liegt es daran, dass Freitagnachmittag ist? Hänge ich noch zu sehr an der Grammatik von C++ fest?
Auf die gelinkte Erklärung bin ich über google auch schon gestoßen. Ich bring es leider trotzdem nicht ganz zusammen.
Was mir fehlt ist der Ablauf, wie LaTeX diese Argumente zusammenfügt und auswertet. Bei Programmiersprachen wie C, C++, bash usw. kommt man mit verhältnismäßig geringem Aufwand zu einer Erklärung, was und in welcher Reihenfolge mit dem Code passiert bis er endgültig verarbeitet wird. In den diversen verstreuten Dokus zu LaTeX habe ich bisher nur recht spezielle Beispiele gefunden.

Was ich verstehe bzw. meine zu verstehen ist folgendes.
"\height+\dp" ist Höhe plus Tiefe dessen was in den nächsten geschweiften Klammern kommt. Das von "\dimexpr" und "\relax" ausgewertet, wäre dann so etwas wie die Gesamthöhe der folgenden Grafik in irgendeiner Höheneinheit. Soweit fände ich das noch einigermaßen einleuchtend.
"\strutbox" ist doch aber quasi das gleiche??
Und diese Ausdrücke "\height+\dp" und "\strutbox" stehen aber nun einfach nebeneinander ohne "+", "-" oder "*". Was tut das "\dimexpr"-"\relax"-Paar nun mit dieser Aneinanderreihung, um die arithmetisch auszuwerten?

schönes Wochenende
Axel

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Mit \height greifst du auf die Höhe des Boxinhaltes (also deines Bildes) zu. Der äquivalente Befehl für die Tiefe wäre \depth. Die Tiefe des Bildes ist hier aber 0pt.

Bei \dp\strutbox wird dagegen die Tiefe der \strutbox ermittelt, d.h. \strutbox ist das Argument für \dp. Die Tiefe der \strutbox beträgt 0.3 des aktuell gültigen \baselineskip. Der äquivalente Befehl für die Höhe einer Box wäre übrigens \ht gefolgt von dem Namen der Box, deren Höhe ermittelt werden soll.

Mit dem \raisebox{0pt}[\dimexpr\height+\dp\strutbox]{...} wird vorgegeben, dass die Abbildung zwar nicht verschoben werden soll, aber statt der tatsächlichen Höhe \height des Boxinhaltes wird der um \dp\strutbox vergrößerte Wert als Boxhöhe verwendet.

Gruß
Elke

Laser-Axel
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 3. Apr 2014, 11:52
Wohnort: Aachen

Beitrag von Laser-Axel »

Hi,

Verstanden.
Danke für die Erklärung.

Gruß
Axel

Antworten